Handbook:AMD64/Blocks/Disks/ru
Таблица разделов
Несмотря на то, что теоретически возможно использовать неразбитый диск целиком для размещения системы Linux (например, для создании btrfs RAID), этого почти никогда не случается на практике. Наоборот, блочные устройства диска разбиваются на меньшие, более удобные для обращения, блочные устройства. В системах amd64 они называются разделами. В настоящее время есть две стандартных технологии разметки дисков: MBR (которую ещё иногда называют DOS disklabel) и GPT; оба подхода тесно связаны с двумя типами загрузки системы: загрузка через legacy BIOS и UEFI.
GUID Partition Table (GPT)
GUID Partition Table (GPT, таблица разделов GUID, также может называться GPT disklabel) использует 64-битные идентификаторы разделов. Место, в котором хранится информация о разделах, также гораздо больше, чем 512 байт таблицы разделов MBR (DOS disklabel), что означает, что нет почти никаких ограничений на количество разделов для диска с GPT. Также максимальный размер раздела был значительно увеличен (почти 8 ЗиБ — да, зебибайт).
Когда программным интерфейсом системы между операционной системой и прошивкой является UEFI (вместо BIOS), GPT является почти обязательным, так как с DOS disklabel будут возникать проблемы совместимости.
Также GPT использует контрольные суммы и избыточность. Он содержит контрольные суммы CRC32 для обнаружения ошибок в заголовке и таблице разделов. У GPT есть резервная таблица в конце диска. Её можно использовать для восстановления первичной таблицы GPT, которая располагается в начале диска.
Есть несколько предостережений относительно использования GPT:
- GPT на компьютерах с BIOS будет работать, но его невозможно будет использовать при двойной загрузке совместно с операционной системой Microsoft Windows, которая попытается загрузиться в UEFI-режиме, если обнаружит разметку разделов GPT.
- Некоторые сбойные (старые) прошивки материнских карт настроены на загрузку в режиме BIOS/CSM/legacy, что может также привести проблемам при загрузке с GPT-разделов.
Master boot record (MBR) или загрузочный сектор DOS
Загрузочный сектор Master boot record (также известный как загрузочный сектор DOS или DOS disklabel) впервые появился в PC DOS 2.x, выпущенном в 1983 году. MBR использует 32-битные идентификаторы для определения начала сектора и длины раздела и поддерживает три типа разделов: основные, расширенные и логические. Информация о расположении основных разделов хранится в самой главной загрузочной записи — очень небольшом (обычно 512 байт) месте в самом начале диска. Из-за её небольшого размера поддерживаются только четыре основных раздела (например, от /dev/sda1 до /dev/sda4).
Для поддержки большего количества разделов один из основных разделов в MBR может быть помечен как расширенный. Этот раздел может содержать дополнительные логические разделы (разделы внутри раздела).
Хотя большинство производителей материнских карт до сих пор поддерживают загрузочные секторы MBR, их вместе с ограничениями принято считать устаревшими. Кроме случаев, когда приходится работать с произведённым до 2010 года оборудованием, наилучшим выбором будет таблица разделов GUID. Те, кто всё-таки следует по пути MBR, должны знать о следующих ограничениях:
- В большинстве материнских карт, произведённых после 2010 года, загрузочный сектор MBR считается устаревшим режимом загрузки (не всегда хорошо поддерживаемым).
- Из-за использования 32-битных идентификаторов таблицы разделов в MBR не могут обращаться к адресам дискового пространства размером свыше 2 ТиБ.
- Без использования расширенных разделов MBR поддерживает максимум только четыре раздела.
- Данный режим не предоставляет никаких средств резервирования главной загрузочной записи, если что-то затрёт таблицу разделов, вся информация будет потеряна.
Однако, MBR и загрузка BIOS до сих пор может часто использоваться в виртуализированных облачных средах, например в AWS.
Авторы Руководства при установке Gentoo рекомендуют использовать GPT везде, где это возможно.
Продвинутая организация хранилища
Установочный CD amd64 предоставляет поддержку Logical Volume Manager (LVM). LVM увеличивает гибкость в создании разделов. Он позволяет сочетать разделы и диски в группы разделов и определять группы RAID или кэши на быстрых SSD для медленных жёстких дисков. Инструкции по установке ниже сконцентрируются на использовании «обычных» разделов, но LVM при необходимости также поддерживается. Посетите статью LVM для более подробной информации. Новички, будьте осторожны: полная поддержка LVM выходит за рамки данного руководства.
Схема разделов по умолчанию
В оставшейся части руководства мы рассмотрим два случая: 1) таблица разделов GPT и загрузка UEFI и 2) таблица разделов MBR и устаревшая загрузка BIOS. Хотя эти два случая можно смешивать и сочетать, это выходит за рамки данного руководства. Как уже говорилось выше, при установке на современное оборудование следует использовать таблицу разделов GPT и загрузку UEFI; исключение составляет виртуализированные (облачные) среды, в которых до сих пор часто используется MBR и загрузка BIOS.
- GUID Partition Table (GPT) and UEFI boot.
- MBR Partition Table and MBR DOS/legacy BIOS boot.
While it is possible to mix and match boot types with certain motherboard firmware, mixing goes beyond the intention of the handbook. As previously stated, it is strongly recommended for installations on modern hardware to use GPT and UEFI boot.
Будет использоваться следующая схема разделов как простой пример разбиения диска:
The first row of the following table contains exclusive information for either a GPT disk label or a MBR DOS/legacy BIOS disk label. When in doubt, proceed with GPT, since amd64 machines manufactured after the year 2010 generally support UEFI firmware and GPT boot sector.
Раздел | Файловая система | Размер | Описание |
---|---|---|---|
/dev/sda1 | fat32 (UEFI) или xfs (BIOS — также известная как Legacy Boot) | 1 Гб | Системный раздел Boot/EFI |
/dev/sda2 | (swap) | Размер ОЗУ * 2 | Раздел подкачки |
/dev/sda3 | xfs | Оставшаяся часть диска | Корневой раздел |
Если вам этого достаточно, вы можете сразу переходить к разметке диска.
И fdisk, и parted являются инструментами для создания разделов. fdisk широко известен, стабилен и рекомендован для создания разделов MBR. parted был первым в Linux менеджером блочных устройств, имеющим поддержку разделов GPT. Здесь мы используемfdisk, так как у него лучше текстовый интерфейс.
Прежде, чем переходить к инструкциям по созданию разделов, сперва опишем более подробно, какие могут быть схемы разделов, и упомянем о распространенных ошибках.
Разработка схемы разделов
Сколько разделов и насколько больших?
Расположение разделов на диске сильно зависит от потребностей системы и файловой системы (файловых систем). Если в ней будет много пользователей, рекомендуется разместить /home на отдельном разделе, что улучшит безопасность и значительно упростит резервное копирование (а также другие операции сопровождения). Если Gentoo устанавливается для использования в роли почтового сервера, следует отделить /var, так как вся почта хранится в каталоге /var. Для игровых серверов потребуется отдельный раздел /opt, так как большинство игровых серверов устанавливается туда. Причины выделения те же, что и для каталога /home: безопасность, резервное копирование и сопровождение.
В большинстве случаев /usr и /var должны быть достаточно большого размера. В /usr хранится большинство приложений, доступных системе, а также исходные коды ядра Linux (в каталоге /usr/src). По умолчанию в /var хранится репозиторий пакетов Gentoo (расположенный в /var/db/repos/gentoo), который, в зависимости от файловой системы, занимает около 650 МиБ дискового пространства. Оценка этого пространства не включает каталоги /var/cache/distfiles и /var/cache/binpkgs, в которых будут скапливаться архивы исходных кодов и (не обязательно) двоичных пакетов, которые будут формироваться в самой системе.
Сколько именно и какого объёма разделов нужно системе — всё зависит от сочетания различных факторов, которые необходимо принимать во внимание. Наличие отдельных разделов или томов имеет следующие плюсы:
- Можно выбрать наиболее подходящую файловую систему для каждого раздела или тома.
- Свободное место во всей системе не закончится внезапно из-за того, что одна-единственная сбойная программа постоянно записывает файлы в раздел или том.
- Необходимая проверка файловых систем будет занимать меньше времени, так как проверка разных разделов может выполняться параллельно (хотя это это преимущество относится больше к нескольким дискам, чем к нескольким разделам).
- Можно повысить безопасность системы, монтируя часть разделов в режиме только для чтения,
nosuid
(игнорируется бит setuid),noexec
(игнорируется бит исполнения) и так далее.
Однако у множества разделов также есть недостатки:
- Если они не настроены правильно, может получиться так, что будет огромное количество свободного места на одном разделе и нехватка на другом.
- Отдельный раздел для /usr/ может потребовать загрузки с initramfs, чтобы смонтировать раздел прежде, чем запустятся другие загрузочные сценарии. Так как сборка initramfs выходит за рамки данного руководства, мы рекомендуем новичкам не создавать отдельный раздел для /usr/.
- Также существует лимит в 15 разделов для SCSI и SATA, если только на диске не используются метки GPT.
Если планируется использовать systemd в качестве системы инициализации и управления службами, то при загрузке системы должен быть доступен каталог /usr, либо как часть корневой файловой системы, либо смонтированный через initramfs.
Что по поводу пространства подкачки?
Не существует идеального значения для раздела подкачки. Целью пространства подкачки является предоставление дискового пространства ядру в условиях активного использования оперативной памяти. Пространство подкачки позволяет ядру переносить на диск страницы оперативной памяти, которые не будут использоваться в ближайшее время, освобождая её (swap или page-out). Конечно, если эта память вдруг неожиданно понадобится, эти страницы должны быть помещены обратно в память (page-in), что займет намного больше времени, чем чтение с оперативной памяти (так как диски — это очень медленные устройства по сравнению с оперативной памятью).
Если на системе не требуется запускать приложения, требовательные к памяти, либо изначально доступно очень много памяти, то, скорее всего, необходимости в пространстве подкачки нет. Однако раздел подкачки также используется для сохранения всей памяти в случае перехода системы в спящий режим (более вероятно на ноутбуках и десктопах, чем на серверах). Если планируется использовать этот режим, нужно пространство подкачки, равное или больше чем количеству оперативной памяти.
Как правило, рекомендуется создавать пространство подкачки с размером в два раза больше оперативной памяти (ОЗУ). Для систем с несколькими дисками, целесообразно создать по одному разделу подкачки на каждом диске, чтобы их можно было использовать для параллельных операций чтения/записи. Чем быстрее диск может подкачивать, тем быстрее система будет работать, когда ей необходимо прочитать данные с пространства подкачки. При выборе между жестким диском и твердотельным накопителем, с точки зрения производительности лучше создать пространство подкачки на SSD. Также вы можете использовать файлы подкачки вместо разделов подкачки; в основном это необходимо для систем с очень ограниченным дисковым пространством.
Что такое EFI System Partition (ESP)?
При установке Gentoo на систему, использующую UEFI для загрузки операционной системы (вместо BIOS) важно, чтобы был создан системный раздел EFI (EFI System Partition, ESP). Расположенные ниже инструкции содержат необходимую для этого информацию. EFI System Parition не обязателен при загрузке в режиме BIOS/Legacy.
ESP должен быть одним из вариантов файловой системы FAT (иногда отображаемый как vfat на системах Linux). В официальной спецификации UEFI говориться о том, что прошивка UEFI может работать с FAT12, 16 и 32, но для ESP рекомендуется использовать FAT32. После разбивки, отформатируйте раздел ESP:
root #
mkfs.fat -F 32 /dev/sda1
Если раздел ESP не отформатирован под один из вариантов FAT, то не гарантируется, что прошивка UEFI сможет найти загрузчик (или ядро Linux) и, скорей всего, не сможет загрузить систему!
Что такое загрузочный раздел BIOS?
Загрузочный раздел BIOS необходим, только если вы комбинируете разметку дисков GPT с загрузчиком GRUB2 в режиме загрузки BIOS/Legacy. Он не требуется при загрузке в режиме EFI/UEFI, и также не требуется при использовании дисков MBR. Это очень маленький (от 1 до 2 МБ) раздел, в который загрузчики типа GRUB2 могут разместить дополнительные данные, которые не помещаются в выделенное хранилище. Мы не будем использовать его в данном руководстве.
Создание разделов на диске с GPT для UEFI
Следующие части объяснят, как создать структуру разделов из примера для установки с GPT/UEFI с использованием fdisk (пример структуры разделов приводился выше):
Измените структуру разделов в соответствии с личными предпочтениями.
Раздел | Описание |
---|---|
/dev/sda1 | Системный (и загрузочный) раздел EFI (ESP) |
/dev/sda2 | Раздел подкачки |
/dev/sda3 | Корневой раздел |
Просмотр текущей разметки разделов
fdisk является популярным и мощным инструментом для создания разделов на диске. Запустите fdisk, передав в качестве параметра имя диска (в нашем примере мы используем /dev/sda):
root #
fdisk /dev/sda
Нажмите на клавишу p для отображения текущей конфигурации разделов:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA Device Start End Sectors Size Type /dev/sda1 2048 2099199 2097152 1G EFI System /dev/sda2 2099200 10487807 8388608 4G Linux swap /dev/sda3 10487808 60549119 50061311 23.9G Linux filesystem
Данный диск был разбит на две файловые системы Linux (каждый раздел соответственно подписан как «Linux»), а также раздел подкачки (названный как «Linux swap»).
Создание нового disklabel / удаление всех разделов
Нажмите g, чтобы создать новую разметку GPT на диске; это удалит все существующие разделы.
Command (m for help):
g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).
Для диска с существующей разметкой GPT (смотрите вывод p выше), вы также можете удалять существующие разделы на диске. Нажмите d для удаления раздела. Например, чтобы удалить существующий /dev/sda1:
Command (m for help):
d
Partition number (1-4): 1
Теперь раздел отмечен для удаления. Он больше не будет отображаться в списке разделов при вводе p, но не будет удален, пока не будут сохранены изменения. Это даёт возможность пользователю прервать операцию, если была допущена ошибка — в этом случае сразу нажмите q и Enter, и раздел не будет удален.
Удалите все разделы, поочерёдно нажимая на p для вывода списка разделов, d и номер раздела — для удаления. В конечном счете, таблица разделов будет пуста:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F
Теперь, когда запомненная в памяти таблица разделов пуста, мы готовы создавать разделы.
Создание EFI system partition (ESP)
Создание раздела ESP меньшего размера возможен, но не рекомендуется, особенно в случаях, когда он может использоваться совместно с другими операционными системами.
Сначала создадим небольшой системный раздел EFI. Нажмите n, чтобы создать новый раздел, затем 1 для выбора первого основного раздела. При запросе первого сектора, убедитесь, что он начинается с 2048 (может понадобиться для загрузчика) и нажмите Enter. При запросе последнего сектора введите +1G для создания раздела размером 1 Гбайт:
Command (m for help):
n
Partition number (1-128, default 1): 1 First sector (2048-60549086, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549086, default 60549086): +1G Created a new partition 1 of type 'Linux filesystem' and of size 1 GiB.
Пометьте раздел как системный раздел EFI:
Command (m for help):
t
Selected partition 1 Partition type (type L to list all types): 1 Changed type of partition 'Linux filesystem' to 'EFI System'.
Создание раздела подкачки
Для создания раздела подкачки введите n, чтобы создать новый раздел, затем введите 2 для создания второго основного раздела, /dev/sda2. При появлении запроса первого сектора, введите Enter. При появлении запроса последнего сектора, наберите +4G (или любой другой размер, необходимый для подкачки) для создания раздела размером 4 ГБ.
Command (m for help):
n
Partition number (2-128, default 2): First sector (526336-60549086, default 526336): Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549086, default 60549086): +4G Created a new partition 2 of type 'Linux filesystem' and of size 4 GiB.
После этого введите t для выбора типа раздела, 2 для выбора только что созданного раздела и введите 19, чтобы установить тип раздела как «Linux Swap».
Command (m for help):
t
Partition number (1,2, default 2): 2 Partition type (type L to list all types): 19 Changed type of partition 'Linux filesystem' to 'Linux swap'.
Создание корневого раздела
Наконец, чтобы создать корневой раздел, введите n, чтобы создать новый раздел. Затем введите 3, чтобы создать третий основной раздел, /dev/sda3. При запросе последнего сектора нажмите Enter, чтобы создать раздел, занимающий всё оставшееся доступное пространство диска. После завершения этих шагов введите p для вывода на экран таблицы разделов, которая должна выглядеть примерно так:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 87EA4497-2722-DF43-A954-368E46AE5C5F Device Start End Sectors Size Type /dev/sda1 2048 526335 524288 1G EFI System /dev/sda2 526336 8914943 8388608 4G Linux swap /dev/sda3 8914944 60549086 51634143 24.6G Linux filesystem
Сохранение разметки разделов
Для сохранения разметки разделов и выхода из fdisk введите w.
Command (m for help):
w
Разделы созданы, теперь настало время создать на них файловые системы.
Создание разделов на диске с MBR для BIOS / legacy загрузки
Следующие части объяснят, как создать структуру разделов из примера для установки с MBR/BIOS-загрузкой. Приведём пример структуры разделов, упоминавшийся выше:
Раздел | Описание |
---|---|
/dev/sda1 | Загрузочный раздел |
/dev/sda2 | Раздел подкачки |
/dev/sda3 | Корневой раздел |
Измените структуру разделов в соответствии с личными предпочтениями.
Просмотр текущей разметки разделов
Запустите fdisk для диска (в нашем примере мы используем /dev/sda):
root #
fdisk /dev/sda
Нажмите на клавишу p для отображения текущей конфигурации разделов:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: gpt Disk identifier: 21AAD8CF-DB67-0F43-9374-416C7A4E31EA Device Start End Sectors Size Type /dev/sda1 2048 526335 524288 1G EFI System /dev/sda2 526336 2623487 2097152 1G Linux swap /dev/sda3 2623488 19400703 16777216 8G Linux filesystem /dev/sda4 19400704 60549086 41148383 19.6G Linux filesystem
Данный диск ранее был разбит в GPT-таблицу на две файловые системы Linux (каждый раздел соответственно подписан как «Linux»), а также раздел подкачки (названный как «Linux swap»).
Создание нового disklabel / удаление всех разделов
Введите o, чтобы создать на диске новую разметку MBR (также называемую разметкой DOS); это удалит все существующие разделы.
Command (m for help):
o
Created a new DOS disklabel with disk identifier 0xe04e67c4. The device contains 'gpt' signature and it will be removed by a write command. See fdisk(8) man page and --wipe option for more details.
Для диска с существующей разметкой DOS (смотрите вывод p выше), вы также можете удалять существующие разделы на диске. Нажмите d для удаления раздела. Например, чтобы удалить существующий /dev/sda1:
Command (m for help):
d
Partition number (1-4): 1
Теперь раздел отмечен для удаления. Он больше не будет отображаться в списке разделов при вводе p, но не будет удален, пока не будут сохранены изменения. Это даёт возможность пользователю прервать операцию, если была допущена ошибка — в этом случае сразу нажмите q и Enter, и раздел не будет удален.
Удалите все разделы, поочерёдно нажимая на p для вывода списка разделов, d и номер раздела — для удаления. В конечном счете, таблица разделов будет пуста:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xe04e67c4
Теперь мы готовы создать разделы.
Создание загрузочного раздела
Сначала создадим небольшой раздел, который будет монтироваться как /boot. Нажмите n, чтобы создать новый раздел, затем 1 для выбора первого основного раздела. При запросе первого сектора, убедитесь, что он начинается с 2048 (может понадобиться для загрузчика) и нажмите Enter. При запросе последнего сектора введите +1G для создания раздела размером 1 Гбайт:
Command (m for help):
n
Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): 1 First sector (2048-60549119, default 2048): Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-60549119, default 60549119): +1G Created a new partition 1 of type 'Linux' and of size 1 GiB.
Создание раздела подкачки
Далее, для создания раздела подкачки введите n, чтобы создать новый раздел, затем введите 2 для создания второго основного раздела, /dev/sda2. При появлении запроса первого сектора, введите Enter. При появлении запроса последнего сектора, наберите +4G (или любой другой размер, необходимый для подкачки) для создания раздела размером 4 ГБ.
Command (m for help):
n
Partition type p primary (1 primary, 0 extended, 3 free) e extended (container for logical partitions) Select (default p): p Partition number (2-4, default 2): 2 First sector (526336-60549119, default 526336): Last sector, +/-sectors or +/-size{K,M,G,T,P} (526336-60549119, default 60549119): +4G Created a new partition 2 of type 'Linux' and of size 4 GiB.
После этого введите t для выбора типа раздела, 3 для выбора только что созданного раздела и введите 82, чтобы установить тип раздела как «Linux Swap».
Command (m for help):
t
Partition number (1,2, default 2): 2 Hex code (type L to list all codes): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris'.
Создание корневого раздела
Наконец, чтобы создать корневой раздел, введите n, чтобы создать новый раздел. Затем введите 3, чтобы создать третий основной раздел, /dev/sda3. При запросе последнего сектора нажмите Enter, чтобы создать раздел, занимающий всё оставшееся доступное пространство диска. После завершения этих шагов введите p для вывода на экран таблицы разделов, которая должна выглядеть примерно так:
Command (m for help):
p
Disk /dev/sda: 28.89 GiB, 31001149440 bytes, 60549120 sectors Disk model: DataTraveler 2.0 Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xe04e67c4 Device Boot Start End Sectors Size Id Type /dev/sda1 2048 526335 524288 1G 83 Linux /dev/sda2 526336 8914943 8388608 4G 82 Linux swap / Solaris /dev/sda3 8914944 60549119 51634176 24.6G 83 Linux
Сохранение разметки разделов
Для сохранения разметки разделов и выхода из fdisk введите w.
Command (m for help):
w
Настало время разместить файловые системы на разделы.