Работа с дисками: fdisk, parted, LVM, mount, fstab

TIP

Эта статья — часть серии Linux administration, посвящённой самостоятельному администрированию Linux, Self-Hosting и DevOps. Управление дисками — фундаментальная часть администрирования. Независимо от того, добавляете ли вы SSD к домашнему серверу или настраиваете хранилище в облаке, понимание разделов, файловых систем и монтирования критически важно.

📌 О чём эта статья?

Когда вы добавляете новый диск, расширяете корневую файловую систему или настраиваете отказоустойчивое хранилище, вам нужно уметь:

  • Создавать и управлять разделами
  • Форматировать диски
  • Монтировать и автоматически подключать файловые системы
  • Использовать LVM для гибкого управления пространством

В этой статье мы разберём:

  • Как использовать fdisk и parted для разметки дисков
  • Что такое LVM и зачем он нужен
  • Как монтировать диски вручную и автоматически через fstab
  • Практические примеры: добавление диска, расширение LV, настройка /home на отдельном разделе

WARNING

Операции с дисками могут привести к потере данных. Всегда делайте бэкап перед изменениями.


🧩 Основы: как Linux видит диски?

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

В Linux диски представлены как устройства в /dev/:

  • /dev/sda, /dev/sdb — SATA/SCSI/USB диски
  • /dev/nvme0n1 — NVMe SSD
  • /dev/vda — виртуальные диски (KVM, cloud)

Разделы:

  • /dev/sda1, /dev/sda2 — разделы на диске
  • /dev/nvme0n1p1 — раздел на NVMe

INFO

Используйте lsblk или fdisk -l для просмотра всех дисков и разделов.


🔧 fdisk — классический инструмент разметки

fdisk — это классическая программа для разметки жесткого диска в Linux. Она позволяет выполнять низкоуровневые операции с дисковыми устройствами, такие как создание, изменение и удаление разделов.

🔹 Просмотр диска

sudo fdisk -l /dev/sda

🔹 Интерактивный режим

sudo fdisk /dev/sda

Команды внутри fdisk:

  • p — показать текущие разделы
  • n — создать новый раздел
  • d — удалить
  • t — изменить тип раздела (например, 8e — Linux LVM)
  • w — записать изменения и выйти
  • q — выйти без сохранения

WARNING

w применяет изменения навсегда. Будьте осторожны!


🛠️ parted — современная альтернатива с поддержкой GPT

parted — это более современный редактор разделов, который позволяет задавать размеры разделов, а не только начало и конец диапазона блоков. GParted (GNOME Partition Manager) — это графический интерфейс для parted и других команд управления файловыми системами.

Info

  • parted работает с GPT (GUID Partition Table), что необходимо для дисков > 2 ТБ.
  • Изменения, внесенные с помощью parted, применяются немедленно, в отличие от fdisk, где их нужно подтверждать.

🔹 Просмотр

sudo parted /dev/sda print

🔹 Создание раздела

sudo parted /dev/sda mklabel gpt
sudo parted /dev/sda mkpart primary ext4 0% 100%

🔹 Изменение размера

sudo parted /dev/sda resizepart 1 50GB

INFO

parted поддерживает точные размеры и работает напрямую с GPT.
Источник: GNU Parted Manual


💾 Форматирование: создание файловой системы

После создания раздела его нужно отформатировать.

Поддерживаемые ФС:

  • ext4 — стандарт для Linux
  • xfs — высокая производительность
  • btrfs — продвинутые функции (снапшоты, сжатие)
  • swap — раздел подкачки

Команды:

sudo mkfs.ext4 /dev/sda1
sudo mkfs.xfs /dev/sda1
sudo mkswap /dev/sda2
sudo swapon /dev/sda2

TIP

Всегда проверяйте, что делаете: lsblk и blkid помогут избежать ошибок.


🔌 mount — ручное монтирование

mount подключает файловую систему к определённой точке в иерархии.

🔹 Основные команды

sudo mkdir /mnt/data
sudo mount /dev/sda1 /mnt/data

🔹 Просмотр смонтированных ФС

mount                  # Все смонтированные
mount | grep sda       # Только sda
findmnt /mnt/data      # Где смонтировано

🔹 Отмонтирование

sudo umount /mnt/data

WARNING

Не отключайте диск, пока он используется (umount: target is busy).


📂 /etc/fstab — автоматическое монтирование при загрузке

Файл /etc/fstab определяет, какие файловые системы монтировать при старте.

🔹 Формат строки:

<устройство> <точка_монтирования> <тип_ФС> <опции> <dump> <pass>

Пример:

# <file system>        <mount point>  <type>  <options>                  <dump>  <pass>
UUID=1234-5678          /boot          vfat    defaults,noatime           0       2
/dev/sda1              /data          ext4    defaults,noatime           0       0
/dev/sdb1              /backup        xfs     defaults,noatime,barrier=1 0       0
tmpfs                  /tmp           tmpfs   defaults,noatime,size=2G   0       0

🔹 Объяснение полей

ПолеОписание
УстройствоМожно использовать UUID, LABEL, /dev/sdX
Точка монтированияДиректория, должна существовать
Тип ФСext4, xfs, btrfs, swap и др.
Опцииdefaults, noatime, ro, noexec и др.
dumpРезерв: 0 — не резервировать
passПорядок проверки fsck: 0 — не проверять, 1 — корень, 2 — остальные

INFO

Используйте UUID вместо /dev/sdX — порядок дисков может меняться.
Получить UUID: blkid или lsblk -f


🔄 LVM — Logical Volume Manager

LVM — это дополнительный уровень абстракции над аппаратными средствами, который позволяет объединять несколько дисков в один логический диск, а затем разбивать его так, как необходимо. Это обеспечивает большую гибкость в управлении дисковым пространством.

  • Назначение: более гибкое и эффективное управление дисковым пространством, позволяющее увеличивать, уменьшать и перемещать логические тома без необходимости переформатирования всего диска.
  • Уровни абстракции LVM:
    • Физические тома (PV - Physical Volume): это разделы или целые неразмеченные диски, которые LVM может использовать. Создаются командой pvcreate.
    • Группы томов (VG - Volume Group): физические тома объединяются в группу, создавая единый пул дискового пространства. Создаются командой vgcreate.
    • Логические тома (LV - Logical Volume): это разделы внутри группы томов, которые можно отформатировать в любую файловую систему и использовать как обычные разделы. Создаются командой lvcreate.
  • Совместимость с загрузчиками: GRUB2 нормально загружается с LVM, но устаревший GRUB требует создания отдельного раздела /boot за пределами LVM.
  • Пример использования: объединение нескольких небольших дисков в один диск большего размера, расширение дискового пространства виртуального сервера.

LVM — это гибкая система управления дисками, позволяющая:

  • Объединять несколько дисков в один пул
  • Создавать логические тома (LV) произвольного размера
  • Изменять размер томов “на лету”
  • Делать снапшоты

🔹 Архитектура LVM

Физические диски (PV) → Группа томов (VG) → Логические тома (LV)

🔹 Шаг 1: Создание Physical Volume (PV)

sudo pvcreate /dev/sdb /dev/sdc

Проверка:

sudo pvs
sudo pvdisplay

🔹 Шаг 2: Создание Volume Group (VG)

sudo vgcreate vg_data /dev/sdb /dev/sdc

Проверка:

sudo vgs
sudo vgdisplay

🔹 Шаг 3: Создание Logical Volume (LV)

sudo lvcreate -L 50G -n lv_home vg_data

Форматирование и монтирование:

sudo mkfs.ext4 /dev/vg_data/lv_home
sudo mkdir /home_new
sudo mount /dev/vg_data/lv_home /home_new

🔹 Расширение логического тома

# Увеличить на 10 ГБ
sudo lvextend -L +10G /dev/vg_data/lv_home
 
# Расширить ФС (для ext4)
sudo resize2fs /dev/vg_data/lv_home
 
# Для xfs
sudo xfs_growfs /mount/point

🔹 Снапшоты (Snapshot)

Создание снапшота:

sudo lvcreate -L 10G -s -n snap_home /dev/vg_data/lv_home

Полезно для:

  • Бэкапа “на лету”
  • Тестирования изменений

INFO

Снапшоты требуют свободного места в VG.


🧪 Практические примеры

Пример 1: Добавление нового диска для /home

# 1. Создать раздел
sudo fdisk /dev/sdb
 
# 2. Форматировать
sudo mkfs.ext4 /dev/sdb1
 
# 3. Создать точку монтирования
sudo mkdir /mnt/newhome
sudo mount /dev/sdb1 /mnt/newhome
 
# 4. Скопировать данные
sudo rsync -avxHAX /home/ /mnt/newhome/
 
# 5. Обновить /etc/fstab
echo "UUID=$(blkid -s UUID -o value /dev/sdb1) /home ext4 defaults,noatime 0 2" | sudo tee -a /etc/fstab
 
# 6. Перемонтировать
sudo umount /mnt/newhome
sudo mount /home

Пример 2: Расширение корневого раздела с LVM

# Добавить новый диск
sudo pvcreate /dev/sdd
sudo vgextend vg_root /dev/sdd
 
# Увеличить LV
sudo lvextend -l +100%FREE /dev/vg_root/lv_root
 
# Расширить ФС
sudo resize2fs /dev/vg_root/lv_root

⚠️ Лучшие практики

WARNING

Следуйте этим правилам, чтобы избежать катастроф.

  1. Используйте UUID в fstab, а не /dev/sdX.
  2. Всегда проверяйте fstab перед перезагрузкой:
    sudo mount -o remount /
  3. Не монтируйте noauto в критичные точки (/, /boot).
  4. Используйте noatime для производительности.
  5. LVM — отличный выбор для гибкости, но требует понимания.
  6. Тестируйте fstab в live-среде, если боитесь потерять доступ.

📊 Полезные команды диагностики

lsblk                    # Древовидный вывод всех блочных устройств
blkid                    # UUID и типы ФС
df -h                    # Свободное место
mount                    # Смонтированные ФС
sudo fdisk -l            # Список дисков
sudo pvs / vgs / lvs     # Состояние LVM
systemctl daemon-reload  # После изменения fstab (иногда требуется)

✅ Заключение

Теперь вы можете:

  • Размечать диски с fdisk и parted
  • Форматировать и монтировать файловые системы
  • Автоматизировать монтирование через fstab
  • Использовать LVM для гибкого управления дисками
  • Диагностировать и исправлять проблемы с дисками

QUOTE

“Хороший администратор не боится дисков. Он их понимает.”