Разметка диска в Linux

Дата: 23.02.2016Метки:

В этой заметке я опишу процесс разметки диска в 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 закончена.