Как перемонтировать корневую файловую систему linux

Обновлено: 30.06.2024

Можно ли ПЕРЕмонтировать разделы на работающей системе

Для новичков как вообще в Linux, так и в конкретной теме, к которой относится вопрос.

Модератор: Bizdelnick

Можно ли ПЕРЕмонтировать разделы на работающей системе

Интерисует перенос некоторых разделов второго уровня на SDHC карту, как только она появится.
Возможно ли такое без переустановки системы?

Ну, и шо тут неясного?
Например. При установке системы монтирую /home на раздел на основном носителе (SSD\HDD)
Потом приобретаю SDHC карту, кою пихаю в кард ридер на стационар.
После этого стоит задача:
1) Перемонтировать /home на эту карточку
2) Присоединить освободившееся место на основном носителе, например к разделу, куда примонтирован /

ЗЫ ответ такой, какой вопрос.

монтирую /home на раздел на основном носителе (SSD\HDD)

Это полная ерунда.
/home - это каталог. В контексте процедуры монтирования - /home является точкой монтирования.
Так вот, фраза "монтирую вот такую точку монтирования на раздел" является ахинеей.
Монтировать можно какое-то блочное устройство/раздел/партицию/образ/т.д. -> в какую-то некую точку монтирования.
А то, что пишете Вы, полная ерунда.

Разбираться в Вашей технически безграмотной ерунде желающий пока не наблюдается.
Вам рекомендуется сделать из этого выводы и начать с чтения книжек из серии "Linux для чайников", чтобы разобраться что такое монтирование и как оно работает.
А потом задавать осмысленный и внятный вопрос, который можно будет понять и попытаться Вам помочь с его решением.

Написана полная ерунда.
См. выше.

2) Присоединить освободившееся место на основном носителе, например к разделу, куда примонтирован / Очередная ерунда.
/ - он не может быть никуда примонтирован, ни к какому разделу.
Он сам является точкой монтирования.
См. выше. / - он не может быть никуда примонтирован, ни к какому разделу.
фигасе новость. если к порядку следования слов не придираться - то таки / вполне монтируем. / - он не может быть никуда примонтирован, ни к какому разделу.
фигасе новость. если к порядку следования слов не придираться - то таки / вполне монтируем.

А ты сам попробуй и проверь =)

по теме: да, возможно. командами umount и mount

фигасе новость. если к порядку следования слов не придираться - то таки / вполне монтируем.

/ не монтируют, а монтируют на него.
Гудвин такой крутой, неразбирающегося человека на место поставил. Мой кумир теперь. =)

понятно. просто думал, что /, /home и т.п. это типа ссылок на соответсвующий физический раздел на диске.

Brainsburn
спасибо.
я так понял, что дело сводится до обьединения двух праймери разделов в один без потери даных.

freewood
))) у нас когда-то тема в школе была:
типа "десятикласник пятикласника попустил")))))))))

Goodvin, на самом деле, зачем так гнобить новичка? Всё-таки вопрос задан в соответствующем разделе.
Например. При установке системы монтирую /home на раздел на основном носителе (SSD\HDD)
Потом приобретаю SDHC карту, кою пихаю в кард ридер на стационар.
После этого стоит задача:
1) Перемонтировать /home на эту карточку
2) Присоединить освободившееся место на основном носителе, например к разделу, куда примонтирован /

Насчёт того, к чему придрались:
монтируют раздел/образ в директорию/папку, например, монтирование /dev/sda1 в /home.
После того как вы покупаете соответствующую карту (не слышал о таких, но специфики, я думаю, никакой не будет, если она является обычным носителем информации) делаете следующее:
1. монтируете карту в какую-либо директорию
2. копируете всю информацию из /home в директорию, куда примонтировали карточку. Внимание! Необходимо проследить сохранение прав доступа.
3. отмонтируете карточку.
4. правите /etc/fstab так, чтобы в /home монтировался не старый раздел, а карточка
5. производите махинации по удалению бывшего раздела с /home и присоединению освободившегося места к разделу с корневой файловой системой (это уже отдельная песня, зависит от разбивки жёсткого диска на разделы, поищите по форуму, обсуждалось не раз в этом разделе) Эти махинации необходимо производить на отмонтированных разделах, то есть с LiveCD, либо с другого установленного Linux, если имеется.

Подводный камень: при загрузке системы нужно чтобы карточка определялась системой до того, как происходит монтирование разделов.

image


Иногда мне приходится сталкиваться с заменой корневой файловой системы. Имея загрузочный диск и доступ к серверу, это не сложно. Однако, я хочу поделиться опытом замены корневой ФС удаленно, через ssh, без перезагрузки.

  • перевод / в LVM
  • перевод / в mdraid
  • замена типа файловой системы (ext3 => btrfs)
  • уменьшение размера ФС (resize2fs)

Сразу оговорюсь, что не смотря на то, что у меня ни разу не было потери данных при этой операции, резервное копирование никто не отменял!

Дано

Есть удаленный сервер, размещенный в датацентре.
В моем случае, это будет хост система, с запущенными виртуальными машинами KVM.

  • sda1 200Мб /boot
  • sda2 2Гб /
  • sda3 197Гб LVM

Задачи

  1. Переместить корневую ФС с раздела /dev/sda2 в LVM в логический том «root» группы «sys» (/dev/mapper/sys-root)
  2. Увеличить размер корневой ФС с 2 Гб до 3Гб

Прежде чем начать

— Мне понадобится утилита 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

/etc/init.d/dmeventd stop

3.3. Убеждаемся, что нет больше удаленных файлов
lsof / | grep ' DEL \|delete'
Убедились.

3.4. Проверяем открытые на запись файлы

lsof / | grep -v ' \(mem\|txt\|rtd\|cwd\) '

Смотрим на файлы, у которых режим открытия (колонка FD) содержит одну из букв: uUwW
В моем случае я не вижу проблем остановить все эти сервисы на время перемещения.
В вашем случае, решайте сами.

3.5. Останавливаем процессы, которые держат открытые файлы
/etc/init.d/rsyslog stop

/etc/init.d/snmpd stop

/etc/init.d/vixie-cron 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

/etc/init.d/snmpd start

/etc/init.d/vixie-cron 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

В операционных системах 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 , см. Соответствующие страницы руководства.

fsck (проверка файловой системы) - это утилита командной строки, которая позволяет выполнять проверки согласованности и интерактивное исправление в одной или нескольких файловых системах Linux. Он использует программы, специфичные для типа файловой системы, которую он проверяет.

Вы можете использовать fsck команду для восстановления поврежденных файловых систем в ситуациях, когда система не загружается или раздел не может быть смонтирован.

Как пользоваться fsck

Команда fsck принимает следующую общую форму:

Только root или пользователи с sudo привилегиями могут очистить буфер.

Если FILESYSTEM в качестве аргумента указано no , fsck проверяются устройства, указанные в fstab файле.

Никогда не запускайте fsck на смонтированных разделах, так как это может повредить файловую систему. Прежде чем пытаться проверить или восстановить файловые системы, всегда делайте unmount это сначала.

Команда fsck является оберткой для различных контроллеров файловой системы Linux ( fsck.* ) и принимает различные параметры в зависимости от типа файловой системы.

Проверьте справочные страницы для получения дополнительной информации о конкретном контролере. Например, чтобы просмотреть доступные параметры fsck.ext4 , введите:


Восстановление поврежденной файловой системы

Простейший вариант использования fsck команды - восстановить поврежденную файловую систему ext3 или ext4 без полномочий root.

Если вы не знаете имя устройства, использовать fdisk , df или любой другой инструмент , чтобы найти его.

Запустите fsck для восстановления файловой системы:

После восстановления файловой системы смонтируйте раздел:


Восстановление корневой файловой системы

fsck не может проверить корневую файловую систему на работающей машине, потому что она не может быть размонтирована.

Если вы хотите проверить или восстановить корневую файловую систему, у вас есть несколько вариантов в вашем распоряжении. Вы можете настроить fsck запуск при загрузке, загрузить систему в режиме восстановления или использовать live CD.

Для запуска fsck в режиме восстановления:

  1. Войдите в меню загрузки и выберите «Дополнительные параметры»
  2. Выберите режим восстановления и затем «fsck».
  3. Когда будет предложено перемонтировать корневую файловую систему, выберите «Да».
  4. После этого возобновите нормальную загрузку.

Чтобы запустить fsck из живого дистрибутива:

Загрузите дистрибутив в режиме реального времени.

Используйте fdisk или, parted чтобы найти имя корневого раздела.

Откройте терминал и запустите:

После этого перезагрузите дистрибутив и загрузите вашу систему.


Проверьте файловые системы при загрузке

В большинстве дистрибутивов Linux fsck запускается во время загрузки, если файловая система помечена как грязная или после определенного количества загрузок или времени.

Чтобы увидеть текущий счетчик монтирования, проверить номер частоты, интервал проверки и время последней проверки для определенного раздела, используйте tune2fs инструмент:

  • «Максимальное количество монтирований» - это количество монтирований, после которых будет проверяться файловая система. Значение 0 или -1 означает, что fsck никогда не будет работать.
  • «Интервал проверки» - это максимальное время между двумя проверками файловой системы.

Если, например, вы хотите запускать fsck после каждых 25 загрузок (монтирования), введите:


Вы также можете установить максимальное время между двумя проверками. Например, чтобы установить один месяц, вы должны выполнить:


Чтобы заставить fsck работать во время загрузки на дистрибутивах SystemD, передайте следующие параметры загрузки ядра:

В старых дистрибутивах fsck будет работать при загрузке, если /forcefsck файл присутствует:


fstab Параметры

fstab это файл конфигурации, который сообщает системе, как и где монтировать разделы.

/etc/fstab Файл содержит список записей в следующем виде:

Последний, шестой столбец ( [PASS] ) - это параметр, который контролирует порядок, в котором проверки файловой системы выполняются во время перезагрузки.

  • 0 - Не проверяй.
  • 1 - Файловые системы должны проверяться первыми и по одному за раз.
  • 2 - Все остальные файловые системы, которые проверяются позже и, возможно, параллельно.


Корневая файловая система должна иметь значение 1 , а все остальные файловые системы, которые вы хотите проверить, должны иметь значение 2 .


Вывод

fsck является инструментом командной строки для проверки и при необходимости восстановления файловых систем Linux

Чтобы узнать больше о fsck команде, посетите страницу руководства fsck или введите man fsck свой терминал.

Читайте также: