Урок по треку Linux 7 мин

Диски, файловые системы и LVM за 7 минут

df и du, inode, монтирование и fstab, удалённый, но открытый файл, LVM и расширение раздела.

«Кончилось место на диске» это одна из самых частых аварий. На собесе проверяют, умеешь ли ты быстро найти, кто съел место, понимаешь ли разницу между df и du и знаешь ли, как расширить раздел без простоя.

Устройства и разделы

lsblk                 # дерево: диски, разделы, LVM, точки монтирования
lsblk -f              # плюс тип ФС и UUID
blkid                 # UUID и типы
fdisk -l              # таблицы разделов

Имена: /dev/sda, /dev/sdb для SATA/SCSI и большинства облачных дисков, /dev/nvme0n1 и разделы /dev/nvme0n1p1 для NVMe, /dev/vda для virtio. Имена могут поменяться между загрузками, поэтому в конфигах используют UUID.

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

mount /dev/sdb1 /data
mount | grep /data          # или findmnt /data
umount /data

Постоянное монтирование описывают в /etc/fstab:

UUID=3f1c...  /data  ext4  defaults,noatime,nofail  0  2

Колонки: что, куда, тип ФС, опции, dump, порядок fsck. nofail не даёт системе зависнуть при загрузке, если диска нет (важно для облачных томов). После правки проверь: mount -a или findmnt --verify. Ошибка в fstab может сделать сервер незагружаемым.

umount ругается target is busy, если кто-то держит файлы: найти виновника помогут lsof +f -- /data или fuser -vm /data.

Файловые системы

  • ext4: надёжный стандарт, умеет расширяться онлайн, уменьшаться только отмонтированной.
  • XFS: по умолчанию в RHEL, хороша для больших файлов и параллельной записи, расширяется онлайн, уменьшить нельзя.
  • Btrfs, ZFS: снапшоты, контрольные суммы, сжатие.
  • tmpfs: в памяти, например /run, /dev/shm.

Журналирование защищает метаданные при внезапном отключении питания: после сбоя не нужен долгий полный fsck.

df против du

df -h          # место на смонтированных ФС
df -i          # inode
du -sh /var/*  # сколько занимают каталоги
du -xh / --max-depth=1 | sort -h   # не переходить на другие ФС

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

  1. Удалённый, но открытый файл. Удалили 20-гигабайтный лог, а процесс продолжает в него писать. Имени нет, du его не видит, но inode жив, и df показывает занятое место. Найти: lsof +L1 или lsof | grep deleted. Лечение: перезапустить процесс или обнулить через его дескриптор: : > /proc/<pid>/fd/<N>.
  2. Файлы под точкой монтирования. Писали в /data, когда диск не был смонтирован, потом смонтировали поверх. Старые файлы занимают место на корневой ФС, но их не видно.
  3. Зарезервированные блоки ext4 (5% для root) и метаданные.

Чтобы лог не съедал диск, используют logrotate с copytruncate или сигналом процессу, а не rm.

LVM

Logical Volume Manager добавляет слой между дисками и файловыми системами:

  • PV (physical volume): диск или раздел, отданный LVM (pvcreate /dev/sdb).
  • VG (volume group): пул из одного или нескольких PV (vgcreate data /dev/sdb).
  • LV (logical volume): «раздел» из пула, на нём ФС (lvcreate -n pg -L 50G data).

Главный плюс: тома можно расширять на лету и добавлять диски в пул. Расширение без простоя:

pvcreate /dev/sdc                 # новый диск
vgextend data /dev/sdc            # добавить в пул
lvextend -r -L +100G /dev/data/pg # расширить том и ФС сразу (-r)

Без -r ФС растягивают отдельно: resize2fs для ext4, xfs_growfs для XFS (по точке монтирования). Если в облаке увеличили сам диск, сначала расширяют раздел (growpart /dev/sda 1) и PV (pvresize).

Ещё LVM умеет снапшоты (copy-on-write): удобно для консистентного бэкапа, но снапшот замедляет запись и может переполниться.

RAID кратко

  • RAID 0: чередование, скорость, никакой защиты.
  • RAID 1: зеркало, переживает потерю диска.
  • RAID 5/6: чётность, переживает 1 или 2 диска, медленная запись и долгий ребилд.
  • RAID 10: зеркала плюс чередование, частый выбор для баз.

RAID не бэкап: удалённый файл удалится на всех дисках.

Частые ошибки

  • rm большого лога, который держит процесс: место не освобождается.
  • Ошибка в fstab без nofail и без проверки: сервер не грузится.
  • Устройство в fstab по имени /dev/sdb1 вместо UUID.
  • du -sh / без -x: обход /proc и сетевых ФС.
  • Попытка уменьшить XFS.

Что спросят на собесе

  • Диск заполнен: как найти, что съело место.
  • Почему df и du показывают разное.
  • Что такое LVM и как расширить раздел без простоя.
  • Зачем UUID и nofail в fstab.
  • Чем RAID отличается от бэкапа.

Закрепите за 5 минут

После урока в тренажёре 3-5 проверочных вопросов, дальше модуль уходит в повторения.