Лабораторная работа 2. Работа с дисковой подсистемой Linux

Основа: методичка RESDS. Рабочая среда — Ubuntu Server 24.04 LTS.

Цель

Вы научитесь размечать диск, создавать файловые системы и работать с LVM.

Задачи

  1. Определите отдельный учебный диск и создайте разметку MBR.
  2. Создайте ext4 и XFS, проверьте монтирование.
  3. Замените MBR на GPT и создайте LVM.
  4. Измените размер логического тома и файловой системы.
  5. Настройте fstab, проверьте ошибку и сохранение файла после перезагрузки.

Рабочее окружение

Потребуются навыки ЛБ0, Ubuntu-ВМ, её консоль и отдельный пустой виртуальный диск 10 GiB. Все команды выполняйте в ВМ. Системный диск, физические диски компьютера и общие каталоги гипервизора не используйте. Перед работой сделайте снимок ВМ; время выполнения запишите в отчёте.

command -v fdisk parted mkfs.ext4 mkfs.xfs pvcreate
findmnt -no SOURCE /
lsblk -o NAME,PATH,SIZE,TYPE,FSTYPE,MOUNTPOINTS
ls -l /dev/disk/by-id/

Задание 1. Проверка диска и разметка MBR

1. Найдите новый пустой диск в lsblk. Если есть устойчивая ссылка /dev/disk/by-id/, используйте её. Присвойте переменной путь своего диска:

read -r -p 'Путь отдельного пустого диска 10 GiB: ' DISK
DISK=$(readlink -f -- "$DISK")
sudo bash ~/labs-mag/local/disk-check.sh "$DISK"

Сценарий только читает состояние диска. Вам нужен целый диск ровно 10 GiB без разделов, файловой системы, точек монтирования и связей с системным диском. Если проверка не прошла, не обходите её и не удаляйте чужие данные — подключите новый пустой диск. Даже после успешной проверки сверьте выбранное устройство с настройками гипервизора.

2. Запустите редактор разделов:

sudo fdisk "$DISK"

Внутри fdisk выполните:

  1. o — новая таблица DOS (MBR).
  2. n, p, 1, Enter, +1G — primary-раздел 1 GiB.
  3. n, e, 2, Enter, +5G — extended-контейнер 5 GiB.
  4. Три раза n, l, Enter: размеры +1G, +1G, +2G — logical-разделы.
  5. p — проверьте таблицу; w — запишите.

Если диалог отличается, пользуйтесь m и читайте вопросы. q выходит без записи. Файловую систему на extended-разделе не создавайте.

3. Обновите сведения ядра и определите имена разделов:

sudo partprobe "$DISK"
sudo udevadm settle
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS "$DISK"
PREFIX="$DISK"
case "$DISK" in *[0-9]) PREFIX="${DISK}p" ;; esac
P1="${PREFIX}1"
P5="${PREFIX}5"

Для /dev/sdb раздел будет /dev/sdb1, для /dev/nvme0n1 — /dev/nvme0n1p1. Сверьте P1 и P5 с выводом lsblk до форматирования. Переменные действуют только в текущей оболочке.

Задание 2. Файловые системы

1. Создайте ext4 на первом primary-разделе, XFS на первом logical-разделе:

sudo mkfs.ext4 "$P1"
sudo mkfs.xfs "$P5"
sudo mkdir -p /mnt/lab2-ext4 /mnt/lab2-xfs
sudo mount "$P1" /mnt/lab2-ext4
sudo mount "$P5" /mnt/lab2-xfs
printf 'ext4\n' | sudo tee /mnt/lab2-ext4/test
printf 'xfs\n' | sudo tee /mnt/lab2-xfs/test
df -hT /mnt/lab2-ext4 /mnt/lab2-xfs
findmnt /mnt/lab2-ext4

Сравните размер раздела и доступное место. Объясните, где хранятся служебные данные файловой системы.

2. Выйдите из точек монтирования, размонтируйте оба раздела:

cd ~
sudo umount /mnt/lab2-ext4
sudo umount /mnt/lab2-xfs
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINTS "$DISK"

Следующее задание уничтожает только что созданные учебные файловые системы. Сначала сохраните их содержимое в отчёт. Проверьте echo "$DISK" и размер выбранного диска ещё раз. На этом этапе disk-check.sh закономерно откажет: диск уже размечен вами.

Задание 3. GPT и LVM

1. Удалите подписи собственных файловых систем, затем замените таблицу:

sudo wipefs -a "$P1" "$P5"
sudo fdisk "$DISK"

В fdisk: g — GPT; n, 1, Enter, +4G; n, 2, Enter, +4G. Для обоих разделов командой t выберите тип Linux LVM (название/код посмотрите через L). Выполните p, сверьте диск и запишите w.

sudo partprobe "$DISK"
sudo udevadm settle
P1="${PREFIX}1"
P2="${PREFIX}2"
lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS "$DISK"
sudo vgs

Группа labvg должна отсутствовать. При совпадении имени остановитесь и согласуйте другое имя, не удаляя существующую группу.

2. Создайте physical volumes, volume group и logical volumes:

sudo pvcreate "$P1" "$P2"
sudo vgcreate labvg "$P1" "$P2"
sudo lvcreate -L 1G -n ext4 labvg
sudo lvcreate -L 1G -n xfs labvg
sudo mkfs.ext4 /dev/labvg/ext4
sudo mkfs.xfs /dev/labvg/xfs
sudo mount /dev/labvg/ext4 /mnt/lab2-ext4
sudo mount /dev/labvg/xfs /mnt/lab2-xfs
printf 'saved after reboot\n' | sudo tee /mnt/lab2-ext4/test
sudo pvs
sudo vgs
sudo lvs

Нарисуйте цепочку «диск → раздел → PV → VG → LV → файловая система».

Задание 4. Изменение размера

1. Расширьте оба тома до 2 GiB, затем файловые системы:

sudo lvextend -L 2G /dev/labvg/ext4
sudo resize2fs /dev/labvg/ext4
sudo lvextend -L 2G /dev/labvg/xfs
sudo xfs_growfs /mnt/lab2-xfs
sudo lvs
df -hT /mnt/lab2-ext4 /mnt/lab2-xfs

Объясните, почему одного lvextend недостаточно и почему для XFS передаётся точка монтирования.

2. Уменьшите ext4 до 1536 MiB. Сначала размонтируйте файловую систему, затем проверьте её:

sudo umount /mnt/lab2-ext4
sudo e2fsck -f /dev/labvg/ext4
sudo lvreduce --resizefs -L 1536M /dev/labvg/ext4
sudo mount /dev/labvg/ext4 /mnt/lab2-ext4
cat /mnt/lab2-ext4/test

Продолжайте, только если не осталось неисправленных ошибок e2fsck. --resizefs уменьшает ФС перед сокращением LV. XFS штатно не уменьшается; сокращение её LV повредит данные. Такой опыт не выполняйте.

Задание 5. Автомонтирование и неисправность

1. Сохраните резервную копию и получите UUID ext4:

sudo cp -a /etc/fstab /etc/fstab.before-lab2
sudo blkid /dev/labvg/ext4
sudo vi /etc/fstab

Добавьте строку, подставив UUID из своей ВМ:

UUID=ВАШ_UUID /mnt/lab2-ext4 ext4 defaults,nofail 0 2

2. Размонтируйте и проверьте конфигурацию:

sudo umount /mnt/lab2-ext4
sudo systemctl daemon-reload
sudo findmnt --verify --verbose
sudo mount -a
findmnt /mnt/lab2-ext4
cat /mnt/lab2-ext4/test

nofail позволяет ВМ загрузиться при ошибке монтирования учебного диска. После загрузки проверьте, что диск действительно смонтирован: выполните findmnt и прочитайте файл test.

3. В своей новой строке временно замените UUID на несуществующий. Не перезагружайте ВМ. Повторите findmnt --verify --verbose, найдите ошибочную строку и верните правильный UUID. Повторите проверки из пункта 2. Если файл испорчен, восстановите его из копии, затем внесите свою строку заново.

sudo cp -a /etc/fstab.before-lab2 /etc/fstab

4. Только после исправления выполните sudo reboot. После загрузки откройте консоль ВМ и снова проверьте findmnt /mnt/lab2-ext4 и содержимое test. Если загрузка остановилась на ошибке монтирования, через консоль гипервизора войдите в recovery shell, выполните mount -o remount,rw /, восстановите копию fstab, проверьте findmnt --verify --verbose и перезагрузите ВМ.

Самостоятельное задание и отчёт

Самостоятельно увеличьте ext4 LV ещё на 256 MiB. До выполнения укажите, из какого свободного пространства берётся место и какие команды нужны. Приложите обе таблицы разделов, pvs/vgs/lvs, размеры ФС, ошибку UUID и проверку файла после загрузки. Не подставляйте вывод с другого компьютера.

  1. Чем MBR отличается от GPT? Зачем нужен extended-раздел?
  2. Чем размер LV отличается от размера файловой системы?
  3. Почему UUID удобнее имени /dev/sdX в fstab?
  4. Почему нельзя уменьшить LV до уменьшения файловой системы?

Сохранение и завершение

Сохраните отчёт. В /etc/fstab удалите только добавленную строку, проверьте findmnt --verify --verbose, выполните systemctl daemon-reload. Размонтируйте обе ФС. Если хотите повторить работу, сверьтесь с pvs и удалите только свои LV, VG и PV:

sudo umount /mnt/lab2-ext4
if mountpoint -q /mnt/lab2-xfs; then sudo umount /mnt/lab2-xfs; fi
sudo lvremove /dev/labvg/ext4 /dev/labvg/xfs
sudo vgremove labvg

После перезагрузки заново определите DISK, P1, P2 по lsblk; не полагайтесь на старое имя диска. Выполните pvremove только для этих двух учебных разделов. Чтобы начать работу с чистого диска, выключите ВМ и замените только учебный диск новым пустым диском на 10 GiB. Системный диск сохраните.