В этой заметке я опишу процесс разметки диска в Linux. Для этого я буду использовать консольную утилиту fdisk
и набор программ из пакета lvm2
. В качестве рабочей среды я использовал Debian LiveCD, но вы можете использовать любой удобный для вас дистрибутив.
Для удобства обслуживания я выполню разметку диска в Linux на основе lvm разделов. Использование lvm дает нам гибкость в обслуживании системы. При желании мы можем с легкостью изменить размер, удалить или добавить новые разделы. Отдельно следует упомянуть возможность создавать снапшоты.
В процессе разметки диска я выделю один lvm раздел для установки системы, и расскажу как создать еще два раздела под swap и хранение данных. Что касается меня, из-за ограниченного размера диска в VPS я буду использовать только один раздел.
Перед тем как начать разметку диска в Linux, необходимо определиться с именем устройства и его файловой структурой. Для этого выполните команду df
:
root@rescue:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 10320184 599852 9196264 7% / udev 10240 0 10240 0% /dev tmpfs 201216 144 201072 1% /run /dev/vda1 10320184 599852 9196264 7% / tmpfs 5120 0 5120 0% /run/lock tmpfs 402420 0 402420 0% /run/shm /dev/vdb1 10320184 894980 8985080 10% /mnt/vdb1
Из листинга выше видно, что в моем случае я буду работать с устройством /dev/vdb1
, которое смонтировано в каталог /mnt/vdb1
. Следует отметить, что имя диска vdb1
, которое используется у меня, зависит от конкретной системы и может отличаться.
Чтобы выполнить разметку диска в fdisk
, а затем создать на нем lvm разделы, нам необходимо сначала размонтировать файловую систему диска:
umount /mnt/vdb1
Чтобы просмотреть таблицу разделов vdb1
, выполните команду fdisk -l
аналогично примеру ниже:
root@rescue:~# fdisk -l /dev/vdb Disk /dev/vdb: 10.7 GB, 10737418240 bytes 2 heads, 17 sectors/track, 616809 cylinders, total 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/vdb1 2048 20971519 10484736 83 Linux
Запускаем fdisk
, в качестве параметра укажите свой диск:
fdisk /dev/vdb
Введите m
для просмотра списка команд:
root@rescue:~# fdisk /dev/vdb Command (m for help): m Command action a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)
Удаляем уделам старую таблицу разделов и создаем один раздел под lvm:
root@rescue:~# fdisk /dev/vdb Command (m for help): d Selected partition 1 Command (m for help): n Partition type: p primary (0 primary, 0 extended, 4 free) e extended Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-20971519, default 2048): Using default value 2048 Last sector, +sectors or +size{K,M,G} (2048-20971519, default 20971519): Using default value 20971519 Command (m for help): a Partition number (1-4): 1 Command (m for help): t Selected partition 1 Hex code (type L to list codes): 8e Changed system type of partition 1 to 8e (Linux LVM) Command (m for help): p Disk /dev/vdb: 10.7 GB, 10737418240 bytes 2 heads, 17 sectors/track, 616809 cylinders, total 20971520 sectors Units = sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disk identifier: 0x00000000 Device Boot Start End Blocks Id System /dev/vdb1 * 2048 20971519 10484736 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. Syncing disks.
Далее опишу последовательности моих действий в fdisk
. Перед тем как выполнить разметку, мы сначала полностью удаляем все существующие разделы на диске. Для этого введите d
, а затем укажите номер раздела. Команду повторяем до полного удаления всех логических разделов на диске.
Нажмите n
чтобы создать раздел в fdisk
и укажите тип раздела p
. Я создаю один большой логический раздел под lvm, поэтому я использую весь доступный объем диска. На запрос указать первый и последний сектор просто жмем Enter
.
Далее в fdisk
нажимаем a
и указываем номер раздела 1
чтобы сделать раздел загрузочным. Затем жмем t
и вводим 8e
для того чтобы изменить тип раздела на lvm.
В заключение введите команду p
и проверьте правильность изменений сделанных в процессе разметки диска. Если все в порядке, жмем w
чтобы записать изменения на диск.
Далее нам необходимо создать lvm внутри нашего раздела. В случае отсутствия в системе пакета lvm2
, выполните его установку.
Создаем физический том внутри созданного ранее раздела:
pvcreate /dev/vdb1
Создаем группу томов с именем vg1
:
vgcreate vg1 /dev/vdb1
Чтобы вывести информацию о группе томов, выполните команду:
vgdisplay vg1
Далее создадим логический том для установки системы, swap, home:
lvcreate -n root -L 10G vg1 lvcreate -n swap -L 4G vg1 lvcreate -n home -L 100G vg1
Названия томов root, swap, home и их размер можете менять по своему усмотрению. Для просмотра свободного пространства внутри группы томов используйте команду vgdisplay vg1
. Если понадобится изменить размер тома lvm просто выполните команду:
lvextend -L -10G /dev/vg1/home lvextend -L +10G /dev/vg1/root
Форматируем разделы в файловой системе ext4:
mkfs.ext4 /dev/vg1/root mkfs.ext4 /dev/vg1/home
Для lvm раздела, который будет использоваться под swap необходимо выполнить команду:
mkswap /dev/vg1/swap
На этом разметка диска в Linux закончена.