Вопрос или проблема
Я извлек /usr в том LVM, который монтируется через /etc/fstab на Ubuntu 12.04.
В основном у меня закончилось место на точке монтирования /, и LVM не был установлен, когда я получил этот сервер, поэтому /dev/sda1 монтируется в /.
Но я переживаю, что могут возникнуть проблемы при перезагрузке, если какой-то двоичный файл в /usr будет вызван до того, как тома из /etc/fstab будут смонтированы.
У вас есть какие-либо идеи, может ли это произойти? И окажусь ли я в безвыходной ситуации в этом случае?
Большое спасибо!
Согласно иерархии файловой системы Linux /usr
должен содержать приложения “пользовательского уровня”, а не системные компоненты, необходимые для загрузки системы; он может даже быть общим каталогом, например, по NFS.
Бинарные файлы, необходимые для загрузки до монтирования /usr
, должны быть размещены в /bin
, /sbin
и /lib
.
Ответ или решение
Конечно, давайте подробно рассмотрим вопрос, связанный с использованием каталога /usr
и его взаимодействием с файловой системой, определенной в /etc/fstab
, на примере системы Ubuntu 12.04.
Теория
Рассмотрим основные принципы работы системы при ее загрузке. В Unix-подобных системах, к которым относится и Ubuntu, загрузка проходит в несколько этапов. Сначала BIOS или UEFI загружает загрузочную программу (возможно, GRUB), которая, в свою очередь, загружает ядро операционной системы. После инициализации ядра запускается root файловая система, которая монтируется изначально в режиме «только для чтения» (read-only).
На этом этапе критически важные системные каталоги — /bin
, /sbin
, и /lib
— должны быть доступны, так как они содержат бинарные файлы и библиотеки, необходимые для первоначального запуска системы. Каталог /usr
в идеале не должен содержать ничего, что требуется до монтирования других разделов, определенных в /etc/fstab
, поскольку он может быть расположен на отдельной файловой системе.
Файловая система, описанная в /etc/fstab
, монтируется позже, в процессе загрузки, благодаря утилитам типа mount
. Эти утилиты и прочие системные биты должны быть доступны до монтирования /usr
, иначе возникнут ошибки, поскольку их бинарники могут находиться в /bin
или /sbin
.
Пример
Предположим, что на вашей системе Ubuntu 12.04 корневая файловая система (/) не имеет достаточного пространства для размещения каталога /usr
, и поэтому вы решили переместить его на LVM-раздел. Этот раздел затем монтируется по аналогии с конфигурацией в /etc/fstab
. Однако если какие-то бинарные файлы или скрипты из /usr
потребуются до того, как этот раздел будет смонтирован, это может привести к сбоям при загрузке.
Так, например, если какой-то издания mount
, которую ваша система пытается вызвать до монтирования /usr, находится внутри /usr/bin или /usr/sbin, могут возникнуть проблемы. Чтобы это предотвратить, все критически важные утилиты и пакеты, необходимые в процессе загрузки системы, должны быть оставлены в /bin
или /sbin
.
Применение
С учетом вышеописанного, лучшее решение для вас, как администратора системы, будет следующее:
-
Анализ и Планирование: Проверьте, какие конкретные бинарные файлы и библиотеки вы перемещаете в
/usr
. Убедитесь, что они не требуются до монтирования/usr
. Вам необходимо тщательно перепроверить содержимое/etc/fstab
, чтобы убедиться в правильности приоритетности монтирования. -
Настройка Загрузки: Возможно, рассмотрите возможность использования initramfs, которое позволяет включать дополнительные модули и библиотеки, необходимые для монтирования файловых систем до загрузки основной системы. Initramfs — это временная файловая система, которую ядро загружает перед основной root файловой системой.
-
Тестирование и Резервное Копирование: Прежде чем вносить изменения в продуктивную систему, протестируйте на тестовой машине. Не забудьте также о необходимости регулярного резервного копирования ваших данных, особенно если вы вносите значительные изменения в файловую систему.
-
Альтернативы: Если перемещение
/usr
вызывает значительные логистические или технические проблемы, вы можете рассмотреть возможность увеличения основного раздела с помощью LVM, распределив его пространство более гибким образом.
Таким образом, подготавливаясь к использованию /usr
на отдельной LVM-разделе, вы не только решаете проблему дефицита места, но и одновременно минимизируете риск возникновения сбоев при загрузке системы. Это требует тщательного планирования и осмотрительных действий, что является неотъемлемой частью поддержки и администрирования операционных систем.