Несколько лет назад для добавления нового диска в Федору и маунта его в отдельную папку я плясал с бубном несколько часов. Сейчас все немного упростилось.
Добавить отдельный диск, сделать отдельную точку монтирования и примапить туда этот диск — сейчас это 5 команд и все готово. Мне было интересно расширить LV (Logical Volume), на котором уже установлена Ubuntu 22.04 на лету, не перегружая систему. Вот как это делается.
Сначала термины:
Volume Group (VG) — это высокоуровневый контейнер, содержащий один или несколько логических и физических томов.
Physical Volume (PV) — представляет собой запоминающее устройство, такое как диск или другой носитель данных.
Logical Volume (LV) — эквивалентен разделу диска и, как и раздел диска, может содержать файловую систему.
Physical Extent (PE) — Каждый физический объем (PV) делится на блоки одинакового размера, известные как physical extents.
Теперь практика.
Смотрим что у нас есть:
1 | vgdisplay |
У нас есть Volume Group с именем ubuntu-vg, с размером physical extent равным 4.00MiB и в общей сложности имеется около 930 Гб для логических томов (Logical Volume).
Смотрим имеющиеся LV
1 | lvdisplay |
Теперь нужно понять на каких физических устройствах у нас расположен этот Logical Volume
1 | pvdisplay |
Этой информации достаточно, добавляем и расширяем. У меня остался диск на 4 Тб, который некоторое время использовался для видеоархивов в Windows. Я его подключил. И теперь снова выполняем команду:
1 | pvdisplay |
Да, если на диске осталась хоть какая-то файловая система или разделы — лучше сразу удалить. Иначе получим ошибку типа 'Cannot use /dev/sdb: device is partitioned'. Нужно выполнить команду fdisk /dev/sdb , затем набрать команду 'd' (delete) и после этого команду 'w' (write).
Теперь пробуем перевести диск в режим physical volume:
1 | pvcreate /dev/sdb |
Если в ответ получили ошибку, что то типа 'Device /dev/sdb excluded by a filter' или опять же 'Cannot use /dev/sdb: device is partitioned' — нужно вычистить диск командой:
1 | wipefs -all /dev/sdb |
В ответ получим:
1 2 3 4 | /dev/sdb: 8 bytes were erased at offset 0x00000200 (gpt): 45 46 49 20 50 41 52 54 /dev/sdb: 8 bytes were erased at offset 0x3a3817d5e00 (gpt): 45 46 49 20 50 41 52 54 /dev/sdb: 2 bytes were erased at offset 0x000001fe (PMBR): 55 aa /dev/sdb: calling ioctl to re-read partition table: Success |
И теперь снова
1 | pvcreate /dev/sdb |
Получим сообщение:
1 | Physical volume "/dev/sdb" successfully created. |
Теперь смотрим что получилось:
1 | pvdisplay |
Physical volume создан, нужно добавить его в нашу группу — ubuntu-vg , делается это командой:
1 | vgextend ubuntu-vg /dev/sdb |
В ответ получим:
1 | Volume group "ubuntu-vg" successfully extended |
Добавили в группу и теперь осталось расширить на него наш Logical Volume. Я для примера расширю на все имеющиеся 3.6 Тб, делается это командой:
1 | lvextend -L+3.6T /dev/ubuntu-vg/ubuntu-lv |
Немного погодя в ответ получим:
1 2 3 | Rounding size to boundary between physical extents: 3.60 TiB. Size of logical volume ubuntu-vg/ubuntu-lv changed from 929.00 GiB (237824 extents) to <4.51 TiB (1181543 extents). Logical volume ubuntu-vg/ubuntu-lv successfully resized. |
Теперь у нас стало на 4 Тб больше места. И это заняло всего несколько минут. Система спокойно продолжала работать. После этого я лишь хотел перегрузить железо полностью и посмотреть как система загрузится.
Всем добра!