Содержание
Теория
Если вы сделали разметку GPT, то для GRUB нужно место куда записать тот код, который он при разметке в MBR записывает на первый трек за MBR. Этот раздел называется/имеет тип Bios boot (это бинарный раздел - его никак не нужно форматировать) и нужен он в варианте, когда вы ставите ОС в режиме загрузки через BIOS.
Если вы ставите ОС в режиме загрузки через UEFI, то тогда вам Bios boot раздел не нужен, а нужен вам системный раздел для самого UEFI - это будет тип раздела EFS и он должен быть отформатирован в FAT32.
Теперь вариант с MBR: В режиме совместимости с BIOS никаких дополнительных разделов не нужно - создаете только разделы под ОС. Если вы хотите при разметке MBR поставить ОС в режиме загрузки через UEFI, то вам нужен EFS раздел (FAT32) и более того, во многих руководствах его требуют сделать обязательно первым разделом.
Вам нужно четко усвоить - MBR и GPT - разные разметки диска. BIOS и UEFI - разные режимы загрузки компьютера. Они друг от друга практически не зависят, и это дает 4 варианта реализации (хотя не все из них стандартны и рекомендуются). Наиболее логично при UEFI использовать GPT разбивку с EFS разделом, а при MBR проще и надежнее ставить ОС в режиме загрузки BIOS.
Тип раздела вы можете выбрать при установке при ручной разбивке диска - там при создании раздела нужно выбрать нужный тип.
Загрузчик
UEFI systems need to contain a small partition with a mount point of /boot/efi/ containing an EFI System Partition file system. Its recommended size is 200 MiB, which is also the default value for automatic partitioning.
Тайм-аут в 30 сек. при раположении /boot на LVM
Если разметить диск на 2 раздела - EFS и LVM без выделения отдельного /boot, то при запуске системы в загрузочном меню будет тайм-аут в 30 сек, который нельзя поменять параметром GRUB_TIMEOUT в /etc/default/grub. Сделано это специально, потому что in some cases a user can't access boot menu. grub can't write to lvm or btrfs.
If a boot fails, grub can't record it to LVM or btrfs, so there is an unlikely chance that you won't be able to get to grub menu for the safe mode, etc.
This can be fixed by setting
GRUB_RECORDFAIL_TIMEOUT=0
in /etc/default/grub followed by sudo update-grub command.
if you are sure you'll be able to access UEFI settings. If not quite sure, set it to 5, or 10.
Раздел SWAP
Примерная рекомендация по размеру
Amount of RAM in the system | Recommended swap space | Recommended swap space if allowing for hibernation |
---|---|---|
less than 2 GB | 2 times the amount of RAM | 3 times the amount of RAM |
2 GB - 8 GB | Equal to the amount of RAM | 2 times the amount of RAM |
8 GB - 64 GB | 4GB to 0.5 times the amount of RAM | 1.5 times the amount of RAM |
more than 64 GB | workload dependent (at least 4GB) | hibernation not recommended |
Создавать ли swap на LVM, а не на обычном разделе - скорее да, чем нет, т. к. его размер можно там поменять. В целом - не совсем ясно.
В современных ОС вместо раздела создаётся файл - это гибче и удобнее.
Можно совмещать и раздел, и файл в одной системе.
Удаление раздела SWAP
To remove a swap volume group (assuming /dev/VolGroup00/LogVol02 is the swap volume you want to remove):
# Disable swapping for the associated logical volume: swapoff -v /dev/VolGroup00/LogVol02 # Remove the LVM2 logical volume of size 512 MB: lvremove /dev/VolGroup00/LogVol02 # Remove the following entry from the /etc/fstab file: /dev/VolGroup00/LogVol02 swap swap defaults 0 0
To test if the logical volume size was successfully removed, use cat /proc/swaps or free to inspect the swap space.
Создание файла SWAP
# создаётся файл определённого размера fallocate -l 1G /swapfile # если команды fallocate в системе нет, то dd if=/dev/zero of=/swapfile bs=1024 count=1048576 # права chmod 600 /swapfile # сделать файл свопом mkswap /swapfile # включить swapon /swapfile # добавить в автомонтирование echo '/swapfile swap swap defaults 0 0' >> /etc/fstab # Проверка swapon --show free -h
Приоритет использования свопа (swappiness)
Значение от 0 до 100, стандартно 60. Меньшее значение - меньшее использование свопа, бывает нужно на серверах.
# Посмотреть текущее значение cat /proc/sys/vm/swappiness 60 # Задать новое значение sysctl vm.swappiness=10 # Сделать это значение постоянным (чтобы пережило перезагрузку) echo 'vm.swappiness=10' >> /etc/sysctl.conf
Удаление своп-файла
# выключить swapoff -v /swapfile # Удалить строку /swapfile swap swap defaults 0 0 из файла /etc/fstab. # Удалить сам файл rm /swapfile
Создать разделы для установки системы
Подразумевается, что система ставится на UEFI, таблицей разделов будет GPT, а системные разделы будут на LVM.
В Hyper-V безопасная загрузка включена, выбран пункт «Центр сертификации Microsoft UEFI».
Примерная структура:
- ESP (200-550 МБ) - /dev/sda1, монтируется в /boot/efi, этот раздел указывается для установки загрузчика.
- boot (>=1GB) - /dev/sda2, монтируется в /boot
- LVM (остальное место) - /dev/sda3, на нём структура LVM: PV, VG и 2 LV - swap и root (монтируется в /).
LVM PV создаётся на весь /dev/sda3, VG - тоже, а при создании LV надо оставить место в конце, чтобы потом была возможность создания снапшотов (а снапшот - это тоже LV).
parted # Диск помечается как GPT mktable gpt # Создаётся раздел ESP (Системный раздел EFI) mkpart fat32 0% 200 MB # Имя раздела name 1 ESP # Флаг esp set 1 esp on
mkfs.fat -F32 /dev/sda1
The resulting partition is not properly aligned for best performance
Если жёстко указывать начало и конец разделов, например, в мегабайтах, то parted предупреждает:
Warning: The resulting partition is not properly aligned for best performance.
Крайне рекомендуется не игнорировать это предупреждение, а делать разделы выровненными по секторам, используя проценты. Кто-то упражняется с секторами, но это неудобно:
1. Get the alignment parameters for your array (remember to replace sdb with the name of your device as seen by the kernel).
cat /sys/block/sdb/queue/optimal_io_size 1048576 cat /sys/block/sdb/queue/minimum_io_size 262144 cat /sys/block/sdb/alignment_offset 0 cat /sys/block/sdb/queue/physical_block_size 512
2. Add optimal_io_size to alignment_offset and divide the result by physical_block_size. In my case this was (1048576 + 0) / 512 = 2048.
3.This number is the sector at which the partition should start. Your new parted command should look like
mkpart primary 2048s 100%
The trailing ‘s’ is important: it tells parted that you’re talking about sectors, not bytes or megabytes.
4. If all went well, the partition will have been created with no warnings. You can check the alignment thusly (replacing ‘1’ with the partition number if necessary):
align-check optimal 1 1 aligned
https://rainbow.chard.org/2013/01/30/how-to-align-partitions-for-best-performance-using-parted/
Размер ESP-раздела
The minimum size of this partition is 100 MB, and must be formatted using the FAT32 file format.
For Advanced Format 4K Native drives (4-KB-per-sector) drives, the minimum size is 260 MB, due to a limitation of the FAT32 file format. The minimum partition size of FAT32 drives is calculated as sector size (4KB) x 65527 = 256 MB.
Advanced Format 512e drives are not affected by this limitation, because their emulated sector size is 512 bytes. 512 bytes x 65527 = 32 MB, which is less than the 100 MB minimum size for this partition.
What is the absolute minimum size a UEFI partition can be?
The author of gdisk suggests 550 MiB.
As per the Arch Linux forum, to avoid potential problems with some EFIs, ESP size should be at least 512 MiB. 550 MiB is recommended to avoid MiB/MB confusion and accidentally creating FAT16.
So, most common size guideline for EFI System Partition is between 100 MB to 550 MB. One of the reason behind this is it is difficult to resize later as it is the first partition on the drive. EFI partition may contain languages, fonts, BIOS firmware, other firmware related staffs. There are some firmware/software that are installed into the the EFI partition instead of the data drive. And there are some that want the capability in the future to add things into ESP.
As it may be difficult to enlarge the size in case it is needed later and the Hard Disk size now a days is larger, a big number of size like 100 MB or 550 MB is recommended for ESP. But in general case, it uses only some Kilo Bytes of space.
LVM
Logical Volume Manager или lvm — это система управления логическими дисками на одном или нескольких физических дисках без переразметки физических дисков. LVM позволяет изменять размеры дисков, перемещать их без остановки процессов или размонтирования файловых систем. То есть, lvm даёт возможность добавить ещё диск или расширить существующие lvm разделы на лету. Преимущества использования логических дисков под управлением lvm перед разделами физического диска:
- Изменение размера: можно расширить или уменьшить раздел lvm без форматирования логических дисков.
- Расширяемость пространства: lvm позволяет увеличить доступное пространство, добавляя новые физические диски в пул lvm.
- Зеркалирование данных: lvm позволяет вести запись на несколько дисков одновременно, благодаря чему повышается производительность работы системы и появляется возможность дублировать данные на несколько логических дисков.
- Резервное копирование: lvm позволяет «заморозить» логический диск во время работы системы и сделать копию.
- Читаемые имена: логическим разделам можно давать любые понятные имена, что позволит легко понимать предназначение раздела.
У LVM три уровня:
- Физический том (Physical Volume, PV), это нижний уровень, который создаётся либо непосредственно на дисках, либо на разделах (например, /dev/sda2).
- Группа физических томов (Volume Group, VG)
- Логические тома (Logical Volume, LV), где уже создаётся файловая система, и именно они монтируются при установке системы в разные каталоги типа /, /home, /var и т. п.
Получение информации
# Найти диски LVM lvmdiskscan # Инфо о дисках ls -l /dev/disk/by-id # есть ещё by-uuid, by-path и т. д. # Инфо о файловой системе на LV file -s /dev/vg0/root # Инфо о файловой системе df -T # Размер раздела swap (например, /dev/sda5) fdisk -l /dev/sda5 # Информация о PV, VG и LV pvdisplay vgdisplay lvdisplay # Сжатая сводка о них же pvs vgs lvs # Обращаться к LVM томам можно двумя способами, самый простой - по имени устройства группы томов: /dev/debian-lvm-vg/home # Либо через виртуальные устройства (слэш заменяется на дефис, а дефис - на двойной дефис): /dev/mapper/debian--lvm--vg-home # Список блочных устройств lsblk
Создание раздела
# Создать физические тома из дисков (все данные на них будут удалены) pvcreate /dev/sdb /dev/sdd # Создать группу из физических томов vgcreate lvm-vg /dev/sdb /dev/sdd # Создать логический том с линейным отображением (указав желаемый размер тома 10 ГБ) lvcreate -n myvolume1 -L 10G lvm-vg # Вариант с указанием относительных значений в процентах от емкости группы томов # lvcreate -n myvolume1 -l 60%VG lvm-vg # Вариант с указанием относительных значений в процентах от свободного пространства # (новый логический том myvolume2 на оставшемся свободном пространстве в группе томов lvm-vg). lvcreate -n myvolume2 -l 100%FREE lvm-vg # Создание тома с чередующимся отображением # lvcreate -n myvolume3 -l 100%FREE -i 2 lvm-vg # Созданные разделы нужно отформатировать и смонтировать. # Формат в ext4: mkfs.ext4 /dev/lvm-vg/myvolume1 # Монтирование в /mydata mkdir /mydata # /etc/fstab /dev/mapper/lvm--vg-myvolume1 /mydata ext4 defaults 0 2 # или /dev/lvm-vg/myvolume1 /mydata ext4 defaults 0 2 # или UUID=cc0b7e49-3381-4dfb-9772-3184c7026bd8 /mydata ext4 defaults 0 2 # выяснить UUID # blkid /dev/lvm-vg/myvolume1 # Смонтировать без перезагрузки ОС mount -a
Увеличение раздела
# Добавить новый физический том: pvcreate /dev/sdb # Включить его в группу vgextend lvm-vg /dev/sdb # Расширить логический том (на 50% от доступного свободного места в группе) lvextend -l +50%FREE /dev/debian-lvm-vg/home # Расширить файловую систему resize2fs /dev/debian-lvm-vg/home # Можно скомбинировать расширение логического тома и файловой системы lvextend -l +50%FREE -r /dev/debian-lvm-vg/home # В некоторых случаях требуется расширить логический том на вполне определенные физические диски, для этого следует явно их указать в команде расширения: lvextend -l +5118 /dev/debian-lvm-vg/home /dev/sdb # Указанная команда расширит логический том home на 5118 экстентов с физического тома /dev/sdb. # Перед выполнением команды следует убедиться, что выбранный том содержит нужное количество свободного пространства, # поэтому наиболее удобно использовать свободные экстенты, точное количество которых мы всегда можем узнать получив информацию об указанном физическом томе.
Уменьшение раздела
В первую очередь всегда уменьшается размер файловой системы, а только затем содержащего ее логического тома, при этом размер тома должен быть больше или равен размеру содержащейся в нем файловой системы. В противном случае произойдет ее разрушение с потерей данных. Лучше всего оперировать абсолютными значениями в байтах, нежели относительными в процентах, так как при малейшей ошибке вы рискуете потерять все свои данные.
Работать можно только с отмонтированными разделами.
# Прежде всего уменьшим размер файловой системы раздела /home, в нашем случае до 10 ГБ: resize2fs /dev/debian-lvm-vg/home 10G # Затем уменьшим до такого же размера логический том: lvreduce -L 10G /dev/debian-lvm-vg/home # Комбинированный вариант, точный размер lvreduce -r -L 10G /dev/debian-lvm-vg/home # Уменьшить на 512MB от текущего размера lvreduce -r -L -512M /dev/debian-lvm-vg/home # Уменьшить PV (если это вообще нужно) pvresize --setphysicalvolumesize 40G /dev/sdb1 # После этого VG уменьшится соответственно.
Литература
LVM для начинающих. Часть 1. Общие вопросы
LVM для начинающих. Часть 2. Основы управления томами
The LVM Logical Volume Manager (Red Hat)
Проблемы
Partition does not start on physical sector boundary
/dev/sda1 * 63 1448577023 724288480+ 83 Linux Partition 1 does not start on physical sector boundary.
Backup all important data first, and then use Gparted to move the partition so that it starts at 4096-byte sector; setting the start boundary at 1 MiB is an easy way to do it.
https://askubuntu.com/questions/156994/partition-does-not-start-on-physical-sector-boundary
Компьютер грузится только если подключен монитор
Надо подкрутить GRUB, отключив графический терминал.
sudo sed -i '/GRUB_TERMINAL=/c GRUB_TERMINAL=console' /etc/default/grub sudo update-grub
Система не ставится, не может разметить диск
Очистить всю разметку диска, удалить все разделы и т. п.
wipefs -a /dev/sda # или sfdisk --delete /dev/sda