Лабораторная работа 2. Работа с дисковой подсистемой Linux
Основа: методичка RESDS. Рабочая среда — Ubuntu Server 24.04 LTS.
Цель
Вы научитесь размечать диск, создавать файловые системы и работать с LVM.
Задачи
- Определите отдельный учебный диск и создайте разметку MBR.
- Создайте ext4 и XFS, проверьте монтирование.
- Замените MBR на GPT и создайте LVM.
- Измените размер логического тома и файловой системы.
- Настройте
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 выполните:
o— новая таблица DOS (MBR).n,p,1, Enter,+1G— primary-раздел 1 GiB.n,e,2, Enter,+5G— extended-контейнер 5 GiB.- Три раза
n,l, Enter: размеры+1G,+1G,+2G— logical-разделы. 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 22. Размонтируйте и проверьте конфигурацию:
sudo umount /mnt/lab2-ext4
sudo systemctl daemon-reload
sudo findmnt --verify --verbose
sudo mount -a
findmnt /mnt/lab2-ext4
cat /mnt/lab2-ext4/testnofail позволяет ВМ загрузиться при ошибке монтирования учебного диска. После загрузки проверьте, что диск действительно смонтирован: выполните findmnt и прочитайте файл test.
3. В своей новой строке временно замените UUID на несуществующий. Не перезагружайте ВМ. Повторите findmnt --verify --verbose, найдите ошибочную строку и верните правильный UUID. Повторите проверки из пункта 2. Если файл испорчен, восстановите его из копии, затем внесите свою строку заново.
sudo cp -a /etc/fstab.before-lab2 /etc/fstab4. Только после исправления выполните 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 и проверку файла после загрузки. Не подставляйте вывод с другого компьютера.
- Чем MBR отличается от GPT? Зачем нужен extended-раздел?
- Чем размер LV отличается от размера файловой системы?
- Почему UUID удобнее имени
/dev/sdXвfstab? - Почему нельзя уменьшить 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. Системный диск сохраните.