Монтирование дисков

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

Монтирование в Linux

В Linux все файлы и папки организованы в единое дерево, которое начинается с корневого каталога /. В отличие от Windows, где каждый диск имеет свою букву (C:, D:), в Linux новые устройства подключаются в свободные папки этого дерева.

Чтобы получить доступ к файлам на новом диске или сетевом хранилище, его нужно привязать к одной из папок. Эта операция называется монтированием, а папка — точкой монтирования. Например, если смонтировать USB-флэшку в папку /mnt/storage, все файлы с флэшки будут видны в этой папке.

../_images/linux_faq_diskmount.png

Способы монтирования

Есть несколько способов монтирования:

  • Подключить диск вручную — для разового доступа: скопировать файлы, проверить диск. После перезагрузки подключение исчезнет.

  • Настроить автоматическое подключение с помощью конфигурационного файл fstab — для постоянной работы, диск будет подключаться при каждой загрузке.

  • Объединить диски в пул (LVM) — если одного диска мало, можно объединить несколько дисков в один том.

Если у вас Ubuntu 22.04 или Astra Linux

Ubuntu 22.04+

Современная Ubuntu использует подсистему инициализации systemd. При записи строки в fstab systemd создает виртуальные файлы конфигурации .mount.

Если вам нужна нестандартная конфигурация и знакомы с устройством systemd-юнитов, вместо fstab можно создать статический юнит монтирования вручную — например, /etc/systemd/system/mnt-data.mount.

[Unit]
Description=Mount Data Storage
After=network-online.target

[Mount]
What=/dev/sdb1
Where=/mnt/data
Type=ext4
Options=defaults,nofail

[Install]
WantedBy=multi-user.target

Astra Linux Special Edition

Astra Linux Special Edition, особенно в режиме Смоленск, использует мандатное разграничение доступа и контроль целостности. Система должна разрешить работу с диском на уровне безопасности.

При монтировании учитывайте:

  • Тип файловой системы ext4-parsec — Astra использует модифицированную ext4, которая хранит мандатные метки безопасности во внутренних структурах служебных записей файловой системы inode. В обычной ext4 таких полей нет, поэтому при создании ФС на новом диске используйте средства Astra. Иначе метки безопасности храниться не будут, при доступе к файлам система или откажет в доступе, или нарушит правила безопасности.

  • Права доступа — если диск монтируется для СУБД, права на точку монтирования должны принадлежать системному пользователю базы:

sudo chown -R postgres:postgres /var/lib/postgresql
  • Блокировки — из-за мандатного разграничения попытка смонтировать внешний носитель без флага мандатного контекста может запретить чтение файлов обычными пользователями, даже если в Unix-правах стоит 777. Используйте опции монтирования Astra Linux в fstab.

Ручное монтирование

Подходит для разового доступа к диску. После перезагрузки подключение исчезнет.

Предположим, был подключен новый диск, который распознан системой как /dev/sdb.

  1. Найдите диск и его UUID.

UUID — уникальный идентификатор, который создается при форматировании. Он не меняется при перестановке дисков, поэтому в настройках лучше указывать именно его.

sudo lsblk -f

или

sudo blkid
  1. Создайте точку монтирования — это папка, в которую будет «проецироваться» диск.

sudo mkdir -p /mnt/data
  1. Отформатируйте диск: если на диске еще нет файловой системы, создайте ее.

Внимание

Форматирование уничтожит все данные на диске.

sudo mkfs.ext4 /dev/sdb1

где sdb1 — имя раздела.

  1. Подключите диск:

sudo mount -t ext4 /dev/sdb1 /mnt/data

После этого файлы диска будут доступны в папке /mnt/data.

Автоматическое монтирование

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

Чтобы смонтировать диск, пропишите настройки монтирования в файле /etc/fstab. Файл /etc/fstab (File Systems Table) — это файл, в котором хранятся настройки монтирования дисков и разделов. Система читает его при загрузке и автоматически подключает все прописанные в нем устройства. Файл состоит из шести полей, каждое поле отвечает за определенный параметр монтирования.

../_images/linux_faq_diskmount-1.png

Пример строки:

UUID=d4ac2a08-7c9a-4c4b-8780-1b1b5c5ae8e9 /var/lib/postgresql ext4 rw,nofail 0 2

Запись означает, что устройство с UUID d4ac2a08-7c9a-4c4b-8780-1b1b5c5ae8e9 будет смонтировано в каталог /var/lib/postgresql автоматически при загрузке. Тип файловой системы — ext4. Опции монтирования — rw,nofail: чтение и запись, система загрузится, даже если диск отключен. Резервные копии создаваться не будут. Проверка целостности ФС будет выполняться после корневой ФС.

Примечание

Используете Ubuntu 22.04+ или Astra Linux? Сначала прочтите это


  • Device — указывает путь к устройству: например, /dev/sda, /dev/hda, /dev/sr0, /dev/sdb1 — или уникальный идентификатор UUID.

UUID генерируется утилитами mkfs при создании файловой системы. Посмотреть UUID устройств можно командой blkid:

sudo blkid

Пример записи с UUID:

UUID="550e8400-e29b-41d4-a716-446655440000" /home ext4 rw,auto 0 2
  • Mount Point — папка, в которой будет доступна файловая система устройства.

  • FS Type — тип файловой системы; чаще всего вам придется иметь дело с ext4 — файловой системой по умолчанию для большинства дистрибутивов Linux. Могут встречаться ntfs и vfat от Microsoft.

  • Options — в этом поле указываются дополнительные параметры монтирования. Основные из них:

    • defaults — стандартный набор опций: чтение и запись, автоподключение при загрузке и т. д.;

    • rw — чтение и запись;

    • nofail — если диска нет, система загрузится без него. Без этой опции отсутствующий диск может помешать загрузке.

  • Dump — используется утилитой dump для создания резервных копий:

    • 0 — не создает резервную копию,

    • 1 — создает резервную копию.

Внимание

Всегда указывайте 0.

  • Pass — проверка диска с помощью утилиты fsck. Возможные значения:

    • Pass — проверка диска с помощью утилиты fsck. Возможные значения:

    • 0 — проверка отключена. Для btrfs всегда указывайте 0, даже если она используется как корневая;

    • 1 — только для корневой ФС с точкой монтирования /;

    • 2–9 — порядок проверки остальных разделов; можно дублировать: несколько разделов с одинаковым номером проверяются одновременно.


Завершение автоматического монтирования

Внимание

Никогда не перезагружайте сервер сразу после редактирования /etc/fstab.

Перед перезагрузкой обязательно выполните:

sudo mount -a

Эта команда принудительно монтирует все, что указано в fstab. Если ошибок нет, команда завершится без вывода. Если ошибка есть, исправьте ее до перезагрузки.

Объединение дисков (LVM)

Подходит, если нужно:

  • объединить несколько физических дисков в один виртуальный;

  • увеличить разделы без перезагрузки;

  • делать мгновенные снимки (снапшоты).

LVM (Logical Volume Manager) — это слой между физическими накопителями и операционной системой. Он позволяет собрать несколько дисков в общий пул и нарезать из него виртуальные тома.

../_images/linux_faq_diskmount-1.png

При обычном монтировании файловая система жестко привязана к физическому разделу: изменить размер или объединить диски сложно. LVM создает слой абстракции над «железом». Благодаря этому вы можете легко расширять тома, распределять данные по разным дискам и создавать снапшоты прямо на работающей системе.

../_images/linux_faq_diskmount.png
  1. Инициализируйте диски как физические тома — LVM (Physical Volumes):

sudo pvcreate /dev/sdb1 /dev/sdc1
  1. Объедините их в группу томов (Volume Group) с именем vg21:

sudo vgcreate vg21 /dev/sdb1 /dev/sdc1
  1. Создайте логический том (Logical Volume) с именем lv21 на всю емкость группы:

sudo lvcreate -n lv21 -l +100%FREE vg21
  1. Создайте файловую систему и примонтируйте том:

sudo mkfs.ext4 /dev/vg21/lv21
sudo mount /dev/vg21/lv21 /mnt/lvm_data

Работа с дисками

Увеличение разделов

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

vgextend vg21 /dev/sdd1
lvextend -l +100%FREE /dev/vg21/lv21

Для файловой системы ext4 выполните:

resize2fs /dev/vg21/lv21

Для XFS:

xfs_growfs /mnt/lvm_data

Уменьшение диска

Уменьшить том в LVM сложнее: нужно размонтировать ФС и обязательно проверить целостность через e2fsck, иначе можно потерять данные. XFS уменьшение не поддерживает.

Перенос дисков

Чтобы перенести LVM на другой сервер, деактивируйте и экспортируйте группу:

vgchange -an vg21 && vgexport vg21

На новом сервере:

pvscan && vgimport vg21 && vgchange -ay vg21

Адресация в fstab для LVM-устройств

Для LVM-устройств указывайте прямой путь /dev/vg21/lv21 или псевдоним /dev/mapper/vg21-lv21 вместо UUID. Это нагляднее и снижает риск ошибок.

Если сервер не загружается после правки fstab

Если после добавления диска в fstab система зависает при загрузке или уходит в аварийную консоль (режим Emergency/Recovery):

  1. В аварийной консоли введите пароль root.

  2. Корень монтируется в режиме только чтение. Перемонтируйте его в режим записи:

mount -o remount,rw /
  1. Откройте файл:

nano /etc/fstab
  1. Закомментируйте ошибочную строку или добавьте опцию nofail в четвертую колонку.

  2. Сохраните изменения и перезагрузите сервер:

reboot