Разметка диска для Linux сервера предстваляет собой выделение партиций. Партиция — выделенная часть диска, на которой создается своя файловая система. Партиция или раздел монтируется и форматируется отдельно.
На разных партициях могут существовать разные файловые системы. Основное преимущество — разделение. На веб-сервере в отдельный раздел часто выносят логи. Если логи разростуться — они займут весь выделенный им раздел, но в корне место не закончится. Сервер продолжит работать.
Для разметки можно использовать утилиту parted
Посмотреть список партиций
parted -l
Model: ATA QEMU HARDDISK (scsi)
Disk /dev/sda: 268MB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1573kB 268MB 267MB primary ext4 boot
Model: Virtio Block Device (virtblk)
Disk /dev/vda: 10,7GB
Sector size (logical/physical): 512B/512B
Partition Table: loop
Disk Flags:
Number Start End Size File system Flags
1 0,00B 10,7GB 10,7GB ext4
Здесь в раздела — 2 диска, один из которых является загрзуочным и содержит ядро с загрузчиком.
Что и куда смонтировано можно посмотреть выполнив mount просто или df
df -h
Filesystem Size Used Avail Use% Mounted on
udev 487M 0 487M 0% /dev
tmpfs 101M 14M 87M 14% /run
/dev/vda 9,9G 3,2G 6,2G 34% /
/dev/vda смонитирован в корень.
Стандартная таблица разделов MBR (DOS partition table)
Самые первые секторы раздела содержат код, который сообщает BIOS о том, что нужно загружаться с этого раздела. Также здесь находится таблица разделов, указывающая BIOS какие разделы созданы.
Современные дистрибутивы используют таблицк разделов GUID (globally unique identifiers или GPT) , вместо BIOS они использут UEFI
GPT
- позволяет работать с разделами объемом больше 2TB
- первые 512 байт содержат MBR (для обратной совместимости)
MBR
- может занимать весь объем или 2 Тб
- 128 байт каждой партиции содержат hexdump
parted -l не показывает swap раздел поскольку он не монтируется.
Как создать партиции
Для некорневого раздела!
Отмонтируем
unmount /dev/sdb
Переходим в parted для раздела
parted /dev/sdb
Вывести список партиций
p
Вывести помощь по утилите
help
Задать единицы измерения — мегабайты
unit mib
Удалить существующие разделы (по номеру в списке)
rm 1
Теперь создание нового раздела
mktable
Тип
msdos
Подтверждение
yes
Снова список партиций
p
Для gpt аналогичная последовательность
mktable
Тип таблицы разделов
gpt
Подтверждение
yes
Показать неразмеченное и доступное пространство
print free
Единицы измерения
unit mib
Создать раздел
mkpart
Имя
test1
Тип ФС
fat32
Может быть vfat
Начальный сектор (утилита выводит подсказки на всех этапах)
1mib
Конечный сектор
1025mib
Далее следующий раздел, он начнется с 1025 Мб. Моно указывать все в одну строку
mkpart test2 ext4 1025mib 1926mib
Монтировать нужно отдельно позже
Просмотрим список
parted -l
Далее создаем файловую систему на разделах
mkfs.ext4 /dev/sdb2
Создаем точку монтирования и монтируем
mkdir /mount/1
mount -t ext4 /dev/sdb2 /mount/1
В /mount/1 должен появиться каталог lost+found
ls -la /mount/1
С MBR процесс немного отличается
Есть 3 типа таблицы:
primary (содержит фаловые системы, до 4 штук)
extended (содержит логические разделы, до 1 штук)
logical (содержит фаловые системы, до 15 штук)
Также начинаем с диска
parted /dev/sdb
Единицы измерения
unit mib
Смотрим неразмеченное пространство
print free
Будем разботать с msdos
mkpart
Создаем primary раздел
primary
Указыаем тип файловой сисемы
fat32
Начальный сектор
0
Конечный
1024
Подтверждаем выбор
То же самое в одну строку для следующего раздела типа extended
mkpart extended 1024mib 1927mib
Посмотреть список
p
Свободное неразмеченное пространство
print free
Создаем логический том на расширенном (extended)
mkpart logical 1024mib 1025mib
Логические партиции (их номера) начинаются с 5.
Разметка диска для Linux сервера на этом завершена.
Поверх разделов при разметке диска можно создавать lvm
Разметка диска для Linux с использованием lvm начинается также
Задаем мегабайты
unit mib
Тип таблицы gpt
mktable gpt
Смотрим неразмеченное пространство
print free
Создаем партицию
mkpart flushc ext4 0 477mib
Для нее указываем, что будет использоваться lvm
set 1 lvm on
1 — номер раздела
Добавляем физическое устройство
pvcreate /dev/sdd1
Включаем его в vg
vgcreate vg0 /dev/sdd1 /dev/sdc1
Смотрим volume group-ы
vgdisplay
Теперь размер можно менять динамически
Расширить
vgextend vg0 /dev/sdg1
Сузить
vgreduce vg0 /dev/sdg1
И сздавать поверх lv
vgdisplay vg0
Выделим 1 Гб
lvcreate -L 1gib vg0 -n lv0
Список vg
vgdisplay
Список lv
lvdisplay
Посмотреть все LVs
lvdisplay /dev/vg0/lv0
parted -l покажет, что файловые системы не созданы
ФС ext 4 может расширяться на ходу и уменьшаться в отмонтированном состоянии
Создаем ФС ext4
mkfs.ext4 /dev/vg0/lv0
mount -t ext4 /dev/vg0/lv0 /mount/mountpoint
Как и ранее ожидаем увидеть lost+found
ls -la /mount/mountpoint
df -h покажет раздел в /mount/mountpoint
Его можно расширять
lvextend /dev/vg0/lv0 -L +1gib
И потом растягивать ФС
resize2fs /dev/vg0/lv0
!Уменьшение размера в обратном порядке
1) сначала файловую систему
2) потом volume
Отмонтируем
unmount /dev/vg0/lv0
Проверяем
e2fsck -f /dev/vg0/lv0
Далее уменьшаем ФС
resize2fs /dev/vg0/lv0 1G
Смотрим список lv
lvdisplay /dev/vg0/lv0
Уменьшаем объем
lvreduce /dev/vg0/lv0 -L -1gib
Теперь можно монтировать снова
mount -t ext4 /dev/vg0/lv0 /mount/mountpoint
Также можно перенести LV в другой PV
pvmove -n lv0 /dev/sdb1
Уменьшить
vgreduce /dev/vg0 /dev/sdb1
Или удалить
pvremove /dev/sdb1
Подробнее о LVM