- Как монтировать и размонтировать файловые системы в Linux
- Как вывести список подключенных файловых систем
- Монтирование файловой системы
- Монтирование файловой системы с помощью / etc / fstab
- Установка USB-накопителя
- Монтирование файлов ISO
- Монтирование NFS
- Отключение файловой системы
- Ленивое отключение
- Размонтировать принудительно
- Выводы
- Как перемонтировать разделы?
- Удаленная замена корневой ФС в GNU/linux
- Задачи
- Прежде чем начать
- Решение
Как монтировать и размонтировать файловые системы в Linux
В операционных системах Linux и UNIX вы можете использовать команду mount для подключения (монтирования) файловых систем и съемных устройств, таких как флэш-накопители USB, в определенной точке монтирования в дереве каталогов.
Команда umount отсоединяет (размонтирует) смонтированную файловую систему от дерева каталогов.
В этом руководстве мы рассмотрим основы подключения и отключения различных файловых систем с помощью команд mount и umount .
Как вывести список подключенных файловых систем
При использовании без аргументов команда mount отобразит все подключенные в данный момент файловые системы:
По умолчанию вывод будет включать все файловые системы, включая виртуальные, такие как cgroup, sysfs и другие. Каждая строка содержит информацию об имени устройства, каталоге, в который оно смонтировано, типе файловой системы и параметрах монтирования в следующей форме:
Чтобы отобразить только определенные файловые системы, используйте параметр -t .
Например, чтобы распечатать только разделы ext4, которые вы должны использовать:
Монтирование файловой системы
Чтобы смонтировать файловую систему в указанном месте (точке монтирования), используйте команду mount в следующей форме:
После присоединения файловой системы точка монтирования становится корневым каталогом смонтированной файловой системы.
Например, чтобы смонтировать файловую систему /dev/sdb1 каталог /mnt/media вы должны использовать:
Обычно при монтировании устройства с общей файловой системой, такой как ext4 или xfs команда mount автоматически определяет тип файловой системы. Однако некоторые файловые системы не распознаются и требуют явного указания.
Используйте параметр -t чтобы указать тип файловой системы:
Чтобы указать дополнительные параметры монтирования , используйте параметр -o :
Несколько вариантов могут быть представлены в виде списка, разделенного запятыми (не вставляйте пробел после запятой).
Вы можете получить список всех вариантов монтирования, набрав в терминале man mount .
Монтирование файловой системы с помощью / etc / fstab
Предоставляя только один параметр (каталог или устройство) команде mount , она будет читать содержимое файла конфигурации /etc/fstab чтобы проверить, указана ли указанная файловая система в списке или нет.
Если /etc/fstab содержит информацию о данной файловой системе, команда mount использует значение другого параметра и параметры монтирования, указанные в fstab .
Файл /etc/fstab содержит список записей в следующем виде:
Используйте команду mount в одной из следующих форм, чтобы присоединить файловую систему, указанную в /etc/fstab :
Установка USB-накопителя
В большинстве современных дистрибутивов Linux, таких как Ubuntu, USB-накопители автоматически монтируются, когда вы их вставляете, но иногда вам может потребоваться вручную смонтировать диск.
Чтобы вручную подключить USB-устройство, выполните следующие действия:
Создайте точку монтирования:
Предполагая, что USB-накопитель использует устройство /dev/sdd1 вы можете /dev/sdd1 его к каталогу /media/usb , набрав:
Чтобы узнать тип устройства и файловой системы, вы можете использовать любую из следующих команд:
Чтобы смонтировать USB-накопители в формате exFAT, установите бесплатный модуль и инструменты FUSE exFAT .
Монтирование файлов ISO
Вы можете смонтировать файл ISO с помощью устройства loop, которое представляет собой специальное псевдоустройство, которое делает файл доступным как блочное устройство.
Начните с создания точки монтирования, это может быть любое место, которое вы хотите:
Подключите ISO-файл к точке монтирования, введя следующую команду:
Не забудьте заменить /path/to/image.iso путем к вашему файлу ISO.
Монтирование NFS
Чтобы смонтировать общий ресурс NFS, в вашей системе должен быть установлен клиентский пакет NFS.
Установите клиент NFS в Ubuntu и Debian:
Установите клиент NFS на CentOS и Fedora:
Выполните следующие действия, чтобы смонтировать удаленный каталог NFS в вашей системе:
Создайте каталог, который будет точкой монтирования для удаленной файловой системы:
Как правило, вам нужно автоматически монтировать удаленный общий ресурс NFS при загрузке. Для этого откройте файл /etc/fstab текстовом редакторе :
Добавьте в файл следующую строку, заменив remote.server:/dir IP-адресом сервера NFS или именем хоста и экспортированным каталогом:
Подключите общий ресурс NFS, выполнив следующую команду:
Отключение файловой системы
Чтобы отсоединить смонтированную файловую систему, используйте команду umount после которой укажите либо каталог, в котором она была смонтирована (точка монтирования), либо имя устройства:
Если файловая система используется, команда umount не сможет отсоединить файловую систему. В таких ситуациях вы можете использовать команду fuser чтобы узнать, какие процессы обращаются к файловой системе:
Как только вы определите процессы, вы можете остановить их и размонтировать файловую систему.
Ленивое отключение
Используйте параметр -l ( —lazy ), чтобы отключить занятую файловую систему, как только она больше не будет занята.
Размонтировать принудительно
Используйте параметр -f ( —force ), чтобы принудительно размонтировать. Этот параметр обычно используется для отключения недоступной системы NFS.
Обычно не рекомендуется принудительное отключение, так как это может повредить данные в файловой системе.
Выводы
К настоящему времени вы должны хорошо понимать, как использовать команду mount для присоединения различных файловых систем к вашему дереву каталогов и отсоединения монтирования с помощью команды umount .
Чтобы узнать больше о параметрах команд mount и umount , см. Соответствующие страницы руководства.
Источник
Как перемонтировать разделы?
У меня /home смонтирована на /dev/sdb1. А я хочу /home смонтировать на /dev/sda.
Значит в fstab, прописываю для /home UUID от /dev/sda? Потом мне каким то образом нужно на sda перетащить все что было на sdb1, а как мне это сделать?
А я хочу /home смонтировать на /dev/sda.
Стоять, бояться! А система то у тебя где?
PS: Не «перемонтировать», а «перенести».
Чтобы перенести файлы, старый подключи командой mount в, например, /mnt
Потом копируешь рутом.
Для начала посмотреть бы sudo fdisk -l с разъяснением что где и что куда.
Прям на /dev/sda ? Без разделов? Чем дальше в лес, тем больше дров. Стоять! Бояться! Выведи нам размётку, пока не сотворил чего нехорошего:
И заверни этот вывод в [code][/code], чтобы мы смогли его нормально прочесть.
Очень хорошо. Теперь посмотрим как все примонтировано:
Вот теперь картинка гораздо яснее. (И тема обозвана неверно, как я и говорил).
Ты хочешь не изменить точку монтирования «хомяка», а тупо перенести его на /dev/sda1. Для этого надо знать размер «хомяка» и место в корне:
Это было бы деействительно тупо , но направление верное. Для корня весь хард на 240 гигов жирновато 🙂
Это было бы деействительно тупо , но направление верное.
Чёто меня занесло.
У тебя «хомяк» — 258G, свободного места в корне — 198G. Зачищай «хомяк» (переноси всё что ни попадя куда-нибудь), иначе ничего не получится.
Удалил все снимки таймшифта, я.диск и прочих место пожератилей, «хомяк» в 6.4гб теперь. Но вопрос всё остаётся открытым, необходимо заранее перенести всё или после того изменю точку монтирования «хомяка»?
Но вопрос всё остаётся открытым, необходимо заранее перенести всё или после того изменю точку монтирования «хомяка»?
Вопрос неверный вообще!
Никакую точку монтирования ты менять не будешь, ты её удалишь (закоментируешь в fstab). При этом «хомяк» у тебя будет в двух экземплярах (в корне «/» и на «/dev/sdb1», бекап так сказать).
Теперь надо сделать выбор:
- Сработать с livecd(флешка) (оптимально, сохраняется нэт);
- Изменить параметры загрузки (boot,grub,single).
Источник
Удаленная замена корневой ФС в GNU/linux
Иногда мне приходится сталкиваться с заменой корневой файловой системы. Имея загрузочный диск и доступ к серверу, это не сложно. Однако, я хочу поделиться опытом замены корневой ФС удаленно, через ssh, без перезагрузки.
Причины для замены коневой ФС бывают разные:
- перевод / в LVM
- перевод / в mdraid
- замена типа файловой системы (ext3 => btrfs)
- уменьшение размера ФС (resize2fs)
В качестве примера, я буду перемещать корневую ФС из /dev/sda2 в LVM
Описание буду проводить на примере gentoo GNU/linux.
Данный способ был проверен мной также и на debian GNU/linux.
Сразу оговорюсь, что не смотря на то, что у меня ни разу не было потери данных при этой операции, резервное копирование никто не отменял!
Есть удаленный сервер, размещенный в датацентре.
В моем случае, это будет хост система, с запущенными виртуальными машинами KVM.
Жесткий диск /dev/sda, где находится корневая ФС, разбит на три msdos раздела:
- sda1 200Мб /boot
- sda2 2Гб /
- sda3 197Гб LVM
Задачи
Прежде чем начать
— Мне понадобится утилита lsof. Необходимо установить ее до начала работ.
— Нужно понимать, что в процессе решения задачи нам потребуется перезапустить все процессы на сервере.
— Важно! Я пишу эту статью для тех, кто уже знаком с LVM и понимает, что при загрузке ядро не сможет самостоятельно замонтировать / без помощи initramfs!
Решение
1. Создаем новый логический том в LVM
Том будет размером 3Гб и называться root
lvcreate -L 3g -n root sys
2. Создаем папки для монтирования
mkdir /mnt/oldroot /mnt/newroot
3. Готовимся к перемонтированию старой корневой ФС / в режиме readonly
Это нужно для того, чтобы скопировать старую корневую ФС в новое место в консистентном состоянии.
Но сама ФС, скорее всего, сейчас используется процессами для записи данных.
3.1. Проверяем удаленные файлы
lsof / | grep ‘ DEL \|delete’
Если такие файлы нашлись, то процессы нужно перезапустить или остановить.
У меня такие файлы есть. Они возникли из-за того, что недавно были обновлены пакеты net-misc/openssh и sys-fs/lvm2
3.2. Перезапускаем и/или останавливаем процессы с удаленными файлами
В моем случае я перезапускаю sshd и завершаю dmeventd
/etc/init.d/sshd restart
3.3. Убеждаемся, что нет больше удаленных файлов
lsof / | grep ‘ DEL \|delete’
Убедились.
3.4. Проверяем открытые на запись файлы
lsof / | grep -v ‘ \(mem\|txt\|rtd\|cwd\) ‘
Смотрим на файлы, у которых режим открытия (колонка FD) содержит одну из букв: uUwW
В моем случае я не вижу проблем остановить все эти сервисы на время перемещения.
В вашем случае, решайте сами.
3.5. Останавливаем процессы, которые держат открытые файлы
/etc/init.d/rsyslog stop
3.6. Убеждаемся, что нет больше открытых на запись файлов
lsof / | grep -v ‘ \(mem\|txt\|rtd\|cwd\) ‘
3.7. Размонтируем все loop устройства
В моем случае я размонтирую squashfs файловую систему в /usr/portage
umount /usr/portage
3.8. Размонтируем ФС типа nfs, cifs, fuse и aufs
В моем случае таких нет.
3.9. Смотрим файловые (unix) сокеты
netstat —unix -a |grep ‘/\|Path$’
При переносе корневой ФС эти сокеты перестанут быть связанными со своими приложениями.
Это решается:
— предварительной остановкой этих приложений (рекомендуется)
— перезапуском этих приложений после подмены корневой ФС
Меня не пугает потеря связи с приложениями через эти сокеты.
4. Перемонтируем корневую ФС / в режим readonly
mount -n -o remount,ro /
Если все успешно, то команда завершится тихо.
Если же появится строка «mount: / is busy», то корневая ФС все еще занята. Возвращайтесь к пункту 3 и проверяйте. Возможно вы что-то забыли.
Не исключаю, что я тоже мог что-то не предусмотреть, но на данном этапе, если вам не удается этот шаг, то дальше двигаться нельзя. Вы еще ничего не успели изменить. Просто возвращайте в работу остановленные процессы.
Если же у вас все прошло успешно, то движемся дальше.
5. Резервное копирование (опционально)
Сейчас для этого самое время.
Для себя я не вижу в этом необходимости, т.к. после всей операции в качестве резервной копии останется старый раздел sda2.
Кроме того, у меня настроено ежедневное резервное копирование всех разделов хост системы и всех виртуальных машин.
6. Копируем корневую ФС с устройства sda2 в LVM том root
dd if=/dev/sda2 of=/dev/sys/root bs=8M
7. Изменяем размер ФС
7.1. Первоначально проверяем ФС на ошибки
fsck -fC /dev/sys/root
fsck from util-linux 2.20.1
7.2. Производим изменение размера ФС
В нашем случае, мы увеличиваем ФС до размеров LVM тома.
resize2fs -p /dev/sys/root
8. Монтируем копию
mount -n /dev/sys/root /mnt/newroot
9. Подменяем корневую ФС
Это то, ради чего я все это затеял.
С этого момента наступает опасное время.
Важно: После подмены корневой ФС, если произойдет обрыв SSH сессии, то система не сможет установить новое соединение!
Подменяем ФС:
cd /mnt/newroot
Важно выполнить именно эти две команды в том виде, в котором они написаны, чтобы избежать блокировок из-за текущей рабочей папки (cwd).
После этой команды, том /dev/sys/root встанет на место /, а раздел sda2 сменит точку монтирования в /mnt/oldroot. При этом все другие замонтированные ФС тоже сменят точку монтирования. Например, файловая система /dev переместится в /mnt/oldroot/dev.
10. Возврщаем точки монтирования всех остальных ФС (кроме старой корневой ФС)
Переносим стандартные ФС, которые есть у большинства:
mount -n —move /mnt/oldroot/proc /proc
mount -n —move /mnt/oldroot/dev /dev
mount -n —move /mnt/oldroot/sys /sys
Теперь можно смотреть в /proc/mounts, что еще нужно вернуть на место
cat /proc/mounts |grep oldroot
В моем примере, я переношу
mount -n —move /mnt/oldroot/lib64/rc/init.d /lib64/rc/init.d
mount -n —move /mnt/oldroot/var/distfiles /var/distfiles
mount -n —move /mnt/oldroot/var/db /var/db
С этого момента вы вне опасности. Новые SSH сессии должны успешно открываться.
11. Перезапускаем приложения с новой корневой ФС
11.1. Смотрим, файлы процессов
lsof /mnt/oldroot
Видим, что все процессы запущены со старой корневой ФС.
11.2. Начинаем перезапускать системные процессы
Я рекомендую в первую очередь:
/etc/init.d/udev restart
/etc/init.d/sshd restart
11.3. Открываем вторую ssh сессию на сервер
Если вход успешен, то первую сессию нужно завершить, для того чтобы закрыть старую оболочку bash и форк старой sshd.
смотрим lsof /mnt/oldroot
все sshd процессы, запущенные со старой корневой ФС должны исчезнуть.
11.4. Необычные процессы.
Перезапускаем agetty и init
С agetty (или другими *tty) все просто:
killall agetty
Не стоит бояться, init их перезапустит
Cам init перезапускаем командой
telinit u
11.5. Монтируем файловые системы, отключенные ранее
Я монтирую squashfs в /usr/portage
mount /usr/portage
11.6. Запускаем остановленные ранее сервисы
В моем случае я запускаю:
/etc/init.d/rsyslog start
11.7. Продолжаем перезапускать сервисы
смотрим lsof /mnt/oldroot, и перезапускаем, что осталось
/etc/init.d/ntpd restart
/etc/init.d/radvd restart
/etc/init.d/smartd restart
/etc/init.d/dnsmasq restart
В том числе, я перезапускаю виртуальные машины, которые все это время спокойно работали.
Более того, теперь уже нет особой надобности торопиться.
Мы перезапускаем сервисы, только чтобы размонтировать старую корневую ФС.
/etc/init.d/kvm.204 restart
/etc/init.d/kvm.205 restart
/etc/init.d/kvm.206 restart
12. Операции после подмены корневой ФС
12.1. Не забываем изменить fstab
Я пользуюсь метками LABEL=, поэтому ничего не меняю
12.2. Размонтируем старую корневую ФС
umount /mnt/oldroot
rmdir /mnt/oldroot /mnt/newroot
Она больше никем не используется
Для тех, кто хочет сохранить старую корневую ФС, я рекомендую поменять у нее LABEL и UUID, чтобы она не путала загрузчик.
tune2fs -L oldroot -U $(uuidgen) /dev/sda2
Для себя, я больше не вижу необходимости в старой ФС. Удаляю.
wipefs /dev/sda2 -o 0x438
12.3. Не забываем добавить/изменить initramfs, при переходе на LVM
12.4. Не забываем переконфигурировать загрузчик
В моем случае это grub2
Устанавливаем загрузчик на sda
grub2-install —no-floppy /dev/sda
Источник