Handbook:X86/Installation/Disks

From Gentoo Wiki
Jump to:navigation Jump to:search
This page is a translated version of the page Handbook:X86/Installation/Disks and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎Türkçe • ‎español • ‎français • ‎italiano • ‎polski • ‎português do Brasil • ‎čeština • ‎русский • ‎தமிழ் • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어
X86 Handbook
Установка
Об установке
Выбор подходящего источника для установки
Настройка сети
Подготовка дисков
Установка stage3
Установка базовой системы
Настройка ядра
Настройка системы
Установка системных утилит
Настройка загрузчика
Завершение
Работа с Gentoo
Введение в Portage
USE-флаги
Возможности Portage
Система сценариев инициализации
Переменные окружения
Работа с Portage
Файлы и каталоги
Переменные
Смешение ветвей программного обеспечения
Дополнительные утилиты
Дополнительные репозитории пакетов
Расширенные возможности
Настройка сети
Начальная настройка
Расширенная настройка
Модульное построение сети
Беспроводная сеть
Добавляем функциональность
Динамическое управление


Введение в блочные устройства

Блочные устройства

Теперь взглянем на аспекты работы Gentoo Linux и Linux в общем, связанные с дисковой подсистемой, включая блочные устройства, разделы и файловые системы Linux. Как только основные понятия о дисках и файловых системах будут изучены, можно будет приступать к созданию разделов и файловых систем для установки.

Для начала, рассмотрим блочные устройства. Устройства SCSI и Serial ATA обозначаются как /dev/sda, /dev/sdb, /dev/sdc и так далее. На более современных компьютерах твердотельные накопители NVMe на базе PCI Express имеют дескриптор вида /dev/nvme0n1, /dev/nvme0n2 и так далее.

Следующая таблица поможет определить необходимый тип блочного устройства в системе:

Тип устройства Дескриптор устройства по умолчанию Примечания и полезные сведения
NVM Express (NVMe) /dev/nvme0n1 Передовая на данный момент технология твердотельных накопителей. Устройства NVMe подключаются к шине PCI Express и обладают наиболее быстрой скоростью передачи блочных данных, доступной на рынке. Системы образца 2014 года и новее могут иметь поддержку устройств NVMe.
SATA, SAS, SCSI или USB flash /dev/sda Данный тип устройств стал доступным примерно с 2007 года и встречается до сих пор, являясь, пожалуй, самым используемым типом в Linux. Устройства могут подключаться через шины SATA, SCSI или USB в виде устройства блочного хранилища.
MMC, eMMC и SD /dev/mmcblk0 Устройства embedded MMC, SD-карты и другие типы карт памяти могут использоваться для хранения данных. Однако не все системы могут позволить загружаться с данного типа устройств. Не рекомендуется использовать данные устройства для установки Linux; лучше используйте их по прямому назначению — для переноса файлов. Также их можно использовать для кратковременного резервного копирования.
IDE/PATA /dev/hda Так старые драйверы ядра Linux отображают диски IDE/Parallel ATA, подключённые к шине IDE. Строго говоря, подобный тип устройств постепенно исчезает из компьютеров с 2003 года, когда компьютерная индустрия переключилась на SATA. Большинство систем с одним контроллером IDE могут поддерживать до четырёх устройств (hda-hdd)
Альтернативное именование для этих устаревших интерфейсов включают в себя Extended IDE (EIDE) и Ultra ATA (UATA).

Данные блочные устройства представляют абстрактный интерфейс к диску. Пользовательские приложения могут использовать их для взаимодействия с диском, не заботясь о том, какой это диск — SATA, SCSI или какой-либо ещё. Программа просто адресует пространство на диске как совокупность следующих друг за другом 4096-байтных (4K) блоков с произвольным доступом.



Таблица разделов

Несмотря на то, что теоретически возможно использовать неразбитый диск целиком для размещения системы Linux (например, для создании btrfs RAID), этого почти никогда не случается на практике. Наоборот, блочные устройства диска разбиваются на меньшие, более удобные для обращения, блочные устройства. В системах x86 они называются разделами. В настоящее время есть две стандартных технологии разметки дисков: MBR и GPT.

GPT

GPT (GUID Partition Table, таблица разделов GUID) использует 64-битные идентификаторы разделов. Место, в котором хранится информация о разделах, также гораздо больше, чем 512 байт MBR, что означает, что нет почти никаких ограничений на количество разделов для диска с GPT. Также предельный размер раздела был значительно увеличен (почти 8 ЗиБ — да, зебибайт).

Когда программным интерфейсом системы между операционной системой и прошивкой является UEFI (вместо BIOS), GPT является почти обязательным, так как с MBR будут возникать проблемы совместимости.

Также GPT использует контрольные суммы и избыточность. Он содержит контрольные суммы CRC32 для обнаружения ошибок в заголовке и таблице разделов. У GPT есть резервная таблица в конце диска. Её можно использовать для восстановления первичной таблицы GPT, которая располагается в начале диска.

Важно
There are a few caveats regarding GPT:
  • Using GPT on a BIOS-based computer works, but then one cannot dual-boot with a Microsoft Windows operating system. The reason is that Microsoft Windows will boot in UEFI mode if it detects a GPT partition label.
  • Some buggy (old) motherboard firmware configured to boot in BIOS/CSM/legacy mode might also have problems with booting from GPT labeled disks.

MBR

MBR (Master Boot Record, главная загрузочная запись) использует 32-битные идентификаторы для определения начала сектора и длины раздела и поддерживает три типа разделов: основные, расширенные и логические. Информация о расположении основных разделов хранится в самой главной загрузочной записи — очень небольшом (обычно 512 байт) месте в самом начале диска. Из-за её небольшого размера поддерживаются только четыре основных раздела (например, от /dev/sda1 до /dev/sda4).

Для поддержки большего количества разделов один из основных разделов может быть помечен как расширенный. Этот раздел может содержать логические разделы (разделы внутри раздела).

Важно
Хотя большинство производителей материнских карт до сих пор поддерживают таблицы разделов, их принято считать устаревшими. Кроме случаев, когда приходится работать с произведённым до 2010 года оборудованием, наилучшим выбором будет таблица разделов GUID. Те, кто всё-таки следует по пути MBR, должны знать о следующих ограничениях:
  • В большинстве материнских карт, произведённых после 2010 года, MBR считается устаревшим режимом загрузки (не всегда хорошо поддерживаемым).
  • Из-за использования 32-битных идентификаторов таблицы MBR не поддерживают диски размером свыше 2 ТиБ.
  • Без использования расширенных разделов MBR поддерживает максимум только четыре раздела.
  • MBR не предоставляет никаких средств резервирования главной загрузочной записи, если какое-либо приложение или пользователь затрёт MBR, вся информация будет потеряна.

Авторы Руководства при установке Gentoo рекомендуют использовать GPT везде, где это возможно.

Продвинутая организация хранилища

Установочный CD x86 предоставляет поддержку Logical Volume Manager (LVM). LVM увеличивает гибкость в создании разделов. Инструкции по установке ниже сконцентрируются на использовании «обычных» разделов, но LVM при необходимости также поддерживается. Посетите статью LVM для более подробной информации. Новички, будьте осторожны: полная поддержка LVM выходит за рамки данного руководства.

Схема разделов по умолчанию

Throughout the remainder of the handbook, we will discuss and explain two cases: 1) GPT partition table and UEFI boot, and 2) MBR partition table and legacy BIOS boot. While it is possible to mix and match, that goes beyond the scope of this manual. As already stated above, installations on modern hardware should use GPT partition table and UEFI boot; as an exception from this rule, MBR and BIOS boot is still frequently used in virtualized (cloud) environments.

Далее, по ходу руководства будет использоваться следующая схема разделов как простой пример разбиения диска:

Раздел Файловая система Размер Описание
/dev/sda1 (bootloader) 2M Загрузочный раздел BIOS
/dev/sda2 ext2 (или fat32, если будет использоваться UEFI) 128M Загрузочный/EFI системный раздел
/dev/sda3 (swap) 512M или больше Раздел подкачки
/dev/sda4 ext4 Оставшаяся часть диска Корневой раздел

Если этого достаточно и был выбран путь использования GPT, то можете сразу переходить к разделу По умолчанию: Использование parted для создания разделов диска. Те, кому по-прежнему нужен MBR (такое бывает!), и будут использовать приведённый образец, могут перейти к разделу Альтернатива: Использование fdisk для создания разделов диска.

И fdisk, и parted являются инструментами для создания разделов. fdisk широко известен, стабилен и рекомендован для создания разделов MBR, а parted стал первым в Linux менеджером блочных устройств, имеющим поддержку разделов GPT. Для тех, кому нравится интерфейс fdisk, могут использовать gdisk (GPT fdisk) как альтернативу parted.

Прежде, чем переходить к инструкциям по созданию разделов, сперва опишем более подробно, какие могут быть схемы разделов, и упомянем о распространенных ошибках.

Разработка схемы разделов

Сколько разделов и насколько больших?

Расположение разделов на диске очень сильно зависит от потребностей системы. Если в ней будет много пользователей, рекомендуется разместить /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/ или /var/, часто требуют загрузки initramfs, чтобы смонтировать разделы прежде, чем запустятся другие загрузочные сценарии. Это не всегда является проблемой, так что результаты могут быть разные.
  • Также существует лимит в 15 разделов для SCSI и SATA, если только на диске не используются метки GPT.
Заметка
If you intend to uses Systemd, /usr/ must be available on boot, either as part of the root filesystem or mounted via an initramfs.

Что по поводу пространства подкачки?

Не существует идеального значения для раздела подкачки. Целью пространства подкачки является предоставление дискового пространства ядру в условиях активного использования оперативной памяти. Пространство подкачки позволяет ядру переносить на диск страницы памяти, которые не будут использоваться в ближайшее время, освобождая память (swap или page-out). Конечно, если эта память вдруг неожиданно понадобится, эти страницы должны быть помещены обратно в память (page-in), что займет некоторое время (так как диски — это очень медленные устройства по сравнению с оперативной памятью).

Если на системе не требуется запускать приложения, требовательные к памяти, либо изначально доступно очень много памяти, то, скорее всего, необходимости в пространстве подкачки нет. Однако раздел подкачки также используется для сохранения всей памяти в случае перехода системы в спящий режим. Если планируется использовать этот режим, то нужно пространство подкачки, хотя бы равное количеству оперативной памяти, которое есть в системе.


Использование UEFI

При установке Gentoo на систему, использующую UEFI для загрузки операционной системы (вместо BIOS) важно, чтобы был создан системный раздел EFI (EFI System Partition, ESP). Расположенные ниже инструкции для parted содержат необходимую для этого информацию.

ESP должен быть одним из вариантов файловой системы FAT (иногда отображаемый как vfat на системах Linux). В официальной спецификации UEFI говориться о том, что прошивка UEFI может работать с FAT12, 16 и 32, но для ESP рекомендуется использовать FAT32. Продолжим, отформатировав ESP в FAT32:

root #mkfs.fat -F 32 /dev/sda2
Предупреждение
Если раздел ESP не отформатирован под один из вариантов FAT, то не гарантируется, что прошивка UEFI сможет найти загрузчик (или ядро Linux) и, скорей всего, не сможет загрузить систему!


Что такое загрузочный раздел BIOS?

Загрузочный раздел BIOS — очень маленький (1—2 Мб) раздел, в который загрузчики типа GRUB2 могут разместить дополнительные данные, которые не помещаются в выделенное хранилище (в случае MBR — несколько сотен байт) и не могут быть размещены в другом месте.


Альтернатива: Использование fdisk для создания разделов диска

Следующие части объяснят, как создать структуру разделов из примера с использованием fdisk (пример структуры разделов приводился выше):

Раздел Описание
/dev/sda1 Загрузочный раздел BIOS
/dev/sda2 Загрузочный раздел
/dev/sda3 Раздел подкачки
/dev/sda4 Корневой раздел

Измените структуру разделов в соответствии с личными предпочтениями.

Просмотр текущей разметки разделов

fdisk является популярным и мощным инструментом для создания разделов на диске. Запустите fdisk, передав в качестве параметра имя диска (в нашем примере мы используем /dev/sda):

root #fdisk /dev/sda

Нажмите на клавишу p для отображения текущей конфигурации разделов:

Command (m for help):p
Disk /dev/sda: 240 heads, 63 sectors, 2184 cylinders
Units = cylinders of 15120 * 512 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1   *         1        14    105808+  83  Linux
/dev/sda2            15        49    264600   82  Linux swap
/dev/sda3            50        70    158760   83  Linux
/dev/sda4            71      2184  15981840    5  Extended
/dev/sda5            71       209   1050808+  83  Linux
/dev/sda6           210       348   1050808+  83  Linux
/dev/sda7           349       626   2101648+  83  Linux
/dev/sda8           627       904   2101648+  83  Linux
/dev/sda9           905      2184   9676768+  83  Linux

Данный диск был разбит на семь файловых систем Linux (каждый раздел соответственно подписан как «Linux»), а также раздел подкачки (названный как «Linux swap»).

Удаление всех разделов с помощью fdisk

Type g to create a new GPT disklabel on the disk; this will remove all existing partitions.

Command (m for help):g
Created a new GPT disklabel (GUID: 87EA4497-2722-DF43-A954-368E46AE5C5F).

Сначала удалите все существующие разделы на диске. Нажмите 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: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
Device Boot    Start       End    Blocks   Id  System

Теперь, когда запомненная в памяти таблица разделов пуста, мы готовы создавать разделы.

Создание загрузочного раздела BIOS

Сначала создадим небольшой загрузочный раздел BIOS. Нажмите n, чтобы создать новый раздел, затем p, чтобы выбрать основной раздел, следом 1 для выбора первого основного раздела. При запросе первого сектора, убедитесь, что он начинается с 2048 (что требуется для загрузчика) и нажмите Enter. При запросе последнего сектора введите +2M для создания раздела размером 2 Мбайт:

Command (m for help):n
Command action
  e   extended
  p   primary partition (1-4)
p
Partition number (1-4): 1
First sector (64-10486533532, default 64): 2048
Last sector, +sectors +size{M,K,G} (4096-10486533532, default 10486533532): +2M

Пометьте раздел, в случае использования UEFI:

Command (m for help):t
Selected partition 1
Hex code (type L to list codes): 4
Changed system type of partition 1 to 4 (BIOS boot)

Создание раздела подкачки

Для создания раздела подкачки введите n, чтобы создать новый раздел, затем p, чтобы сказать fdisk, что раздел должен быть основной. Затем введите 3 для создания третьего основного раздела, /dev/sda3. При появлении запроса последнего сектора, наберите +512M (или любой другой размер, необходимый для подкачки) для создания раздела размером 512 Мбайт.

Создание загрузочного раздела

После этого введите t для выбора типа раздела, 3 для выбора только что созданного раздела и введите 82, чтобы установить тип раздела как «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, чтобы создать новый раздел, затем p, чтобы сказать fdisk, что создаваемый раздел должен быть основным. Затем введите 4, чтобы создать четвертый основной раздел, /dev/sda4. При запросе первого сектора нажмите Enter. При запросе последнего нажмите Enter, чтобы создать раздел, занимающий все оставшееся доступное пространство диска. После завершения этих шагов введите p для вывода на экран таблицы разделов, которая выглядит например так:

Command (m for help):p
Disk /dev/sda: 30.0 GB, 30005821440 bytes
240 heads, 63 sectors/track, 3876 cylinders
Units = cylinders of 15120 * 512 = 7741440 bytes
  
   Device Boot    Start       End    Blocks   Id  System
/dev/sda1             1         3      5198+  ef  EFI (FAT-12/16/32)
/dev/sda2   *         3        14    105808+  83  Linux
/dev/sda3            15        81    506520   82  Linux swap
/dev/sda4            82      3876  28690200   83  Linux

Сохранение разметки разделов

Для сохранения разметки разделов и выхода из fdisk введите w.

Command (m for help):w

Разделы созданы, теперь настало время создать на них файловые системы.

Partitioning the disk with MBR for BIOS / legacy boot

The following explains how to create the example partition layout for a MBR / BIOS legacy boot installation. The example partition layout mentioned earlier is now:

Partition Description
/dev/sda2 Boot partition
/dev/sda2 Swap partition
/dev/sda3 Root partition

Change the partition layout according to personal preference.

Viewing the current partition layout

Fire up fdisk against the disk (in our example, we use /dev/sda):

root #fdisk /dev/sda

Use the p key to display the disk's current partition configuration:

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  256M 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

This particular disk was until now configured to house two Linux filesystems (each with a corresponding partition listed as "Linux") as well as a swap partition (listed as "Linux swap"), using a GPT table.

Creating a new disklabel / removing all partitions

Type o to create a new MBR disklabel (here also named DOS disklabel) on the disk; this will remove all existing partitions.

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.

For an existing DOS disklabel (see the output of p above), alternatively consider removing the existing partitions one by one from the disk. Type d to delete a partition. For instance, to delete an existing /dev/sda1:

Command (m for help):d
Partition number (1-4): 1

The partition has now been scheduled for deletion. It will no longer show up when printing the list of partitions (p, but it will not be erased until the changes have been saved. This allows users to abort the operation if a mistake was made - in that case, type q immediately and hit Enter and the partition will not be deleted.

Repeatedly type p to print out a partition listing and then type d and the number of the partition to delete it. Eventually, the partition table will be empty:

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

Now we're ready to create the partitions.

Creating the boot partition

First, create a small partition which will be mounted as /boot. Type n to create a new partition, followed by p for a primary partition and 1 to select the first primary partition. When prompted for the first sector, make sure it starts from 2048 (which may be needed for the boot loader) and hit Enter. When prompted for the last sector, type +256M to create a partition 256 Mbyte in size:

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): +256M
 
Created a new partition 1 of type 'Linux' and of size 256 MiB.

Creating the swap partition

Next, to create the swap partition, type n to create a new partition, then p, then type 2 to create the second primary partition, /dev/sda2. When prompted for the first sector, hit Enter. When prompted for the last sector, type +4G (or any other size needed for the swap space) to create a partition 4GB in size.

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.

After all this is done, type t to set the partition type, 2 to select the partition just created and then type in 82 to set the partition type to "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'.

Creating the root partition

Finally, to create the root partition, type n to create a new partition. Then type p and 3 to create the third primary partition, /dev/sda3. When prompted for the first sector, hit Enter. When prompted for the last sector, hit Enter to create a partition that takes up the rest of the remaining space on the disk. After completing these steps, typing p should display a partition table that looks similar to this:

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  256M 83 Linux
/dev/sda2        526336  8914943  8388608    4G 82 Linux swap / Solaris
/dev/sda3       8914944 60549119 51634176 24.6G 83 Linux

Saving the partition layout

To save the partition layout and exit fdisk, type w.

Command (m for help):w

Now it is time to put filesystems on the partitions.



Создание файловых систем

Введение

Теперь, когда разделы созданы, пора разместить на них файловые системы. В следующем разделе описаны различные поддерживаемые в Linux файловые системы. Те из читателей, кто уже знает, какую файловую систему будет использовать, могут продолжить с раздела Создание файловой системы. Другим стоит продолжить чтение, чтобы узнать о доступных вариантах…

Файловые системы

Linux поддерживает несколько десятков файловых систем, хотя для большинства из них необходимы достаточно веские причины их использовать. Лишь только некоторые из них можно считать стабильными на архитектуре x86. Рекомендуется прочитать информацию о файловых системах и об их состоянии поддержки перед тем, как останавливать свой выбор на экспериментальных.

btrfs
Файловая система следующего поколения, обеспечивающая множество дополнительных функций, таких как мгновенные снимки, самовосстановление с помощью контрольных сумм, поддержка прозрачного сжатия, субтомов и интегрированный RAID. Ядра старше ветки 5.4 не обеспечивают безопасную работу btrfs, так как исправления наиболее серьёзных проблем стабильности появились только в более поздних ветках долговременной поддержки ядра. Ошибки с повреждением файловой системы довольно часты для старых версий ядра, особенно небезопасны и нестабильны версии старше 4.4. Повреждения файловой системы для ядер старше 5.4 обычно характерны при включении сжатия. RAID 5/6 и quota groups небезопасны для всех версий btrfs. Более того, btrfs может неявным образом нарушить работу с файловыми операциями с ошибкой ENOSPC (при этом df сообщает, что свободное место есть) из-за внутренней фрагментации (свободное место высчитывается из расчёта DATA + SYSTEM участков, но при этом этом не учитывается в участках METADATA). Также, единственная ссылка 4K на экстент 128M внутри btrfs может отображать свободное место, которое недоступно для использования. Всё это приводит к тому, что btrfs возвращает ENOSPC, а df говорит, что есть свободное пространство. Установка sys-fs/btrfsmaintenance и конфигурация сценариев на периодический запуск поможет сократить количество проблем с ENOSPC путём ребалансировки btrfs, но не устранит их окончательно. Некоторые системы могут никогда не получить ошибку ENOSPC, когда как другие будут встречать её часто. Если риск получения ошибки ENOSPC недопустим, следует использовать другую файловую систему. При использовании btrfs убедитесь, что не собираетесь использовать конфигурацию, которая известна своей нестабильностью. За исключением проблемы ENOSPC, информация о существующих проблемах btrfs в последних ветках ядра доступна на вики-странице состояния btrfs.
ext2
Это проверенная и надежная файловая система Linux, но она не обладает средствами журналирования метаданных, что означает, что проверка файловой системы ext2 при запуске может занимать довольно много времени. Существует достаточно широкий выбор журналируемых файловых систем нового поколения, целостность которых может быть проверена очень быстро, что является преимуществом перед нежурналируемыми системами. Журналирование файловой системы позволяет избежать долгих задержек при загрузке системы, а также избежать её нестабильного состояния.
ext3
Журналируемая версия файловой системы ext2, обеспечивающая журналирования метаданных для быстрого восстановления в дополнение к другим режимам журналирования, таким как журналирование всех данных и упорядоченных данных. В данной ФС используются индексы на базе деревьев хешей, что в большинстве случаев обеспечивает высокую производительность. Вкратце, ext3 — это очень хорошая и надёжная файловая система.
ext4
Изначально созданная как ответвление от ext3, ext4 реализует новые возможности, повышение производительности и устранение ограничений на размер раздела на диске ценой незначительного изменения формата данных на диске. Она может быть размером до 1 ЭБ, а максимальный размер файла может составлять 16 ТБ. Вместо классического ext2/3 блочного распределения ext4 использует экстенты, которые улучшают производительность при работе с большими файлами и уменьшают фрагментацию. Ext4 также обеспечивает более сложные алгоритмы распределения блоков (отложенное распределение и мультиблочное распределение), дающие драйверу файловой системы больше возможностей по оптимизации размещения данных на диске. Ext4 рекомендуется как универсальная файловая система для всех платформ.
f2fs
Файловая система (Flash-Friendly File System) была создана Samsung для использования на NAND-накопителях. По состоянию на 2 квартал 2016 года файловая система считается не завершенной, но она может быть достойным выбором при установке на microSD карту, USB-накопитель или другие накопители.
JFS
Высокопроизводительная журналируемая файловая система от IBM. JFS — это легкая, быстрая и надежная файловая система, основанная на двоичных деревьях с хорошей производительностью в различных условиях.
ReiserFS
Основанная на двоичных деревьях журналируемая файловая система с хорошей общей производительностью, особенно при работе с множеством мелких файлов ценой чутью больших затрат центрального процессора. ReiserFS версии 3 включена в ядро Linux, однако не рекомендуется использовать её для первичной установки системы Gentoo. Существуют более новые версии ReiserFS, но для своей работы они требуют дополнительных патчей ядра.
XFS
Файловая система с журналированием метаданных, которая поставляется с мощным набором функций и оптимизирована для масштабируемости. XFS менее снисходительно относится к различным аппаратным проблемам, однако непрерывно обновляется, обрастая новым возможностями.
VFAT
Так же известна как FAT32, поддерживается Linux, но не имеет поддержку стандартных файловых разрешений UNIX. В основном используется для взаимодействия с другими операционными системами (в основном Microsoft Windows и Apple OSX), но также необходима при использовании некоторых системных прошивок загрузчика (например, UEFI).
NTFS
New Technology Filesystem является основной файловой системой для Microsoft Windows начиная с NT 3.5. Как и vfat, она не сохраняет настройки UNIX разрешений и расширенные атрибуты, необходимые для нормальной работы BSD или Linux, поэтому её не следует использоваться в качестве корневой файловой системы. Её необходимо использовать только для взаимодействия с системами Microsoft Windows (обратите внимание на акцент слова только).

Создание файловой системы

Для создания файловых систем на разделе или томе существуют пользовательские утилиты для каждого возможного типа файловой системы. Нажмите на имя файловой системы в таблице ниже для получения дополнительной информации о каждой файловой системе:

Файловая система Команда для создания Есть на минимальном CD? Пакет
btrfs mkfs.btrfs Да sys-fs/btrfs-progs
ext2 mkfs.ext2 Да sys-fs/e2fsprogs
ext3 mkfs.ext3 Да sys-fs/e2fsprogs
ext4 mkfs.ext4 Да sys-fs/e2fsprogs
f2fs mkfs.f2fs Да sys-fs/f2fs-tools
jfs mkfs.jfs Да sys-fs/jfsutils
reiserfs mkfs.reiserfs Да sys-fs/reiserfsprogs
xfs mkfs.xfs Да sys-fs/xfsprogs
vfat mkfs.vfat Да sys-fs/dosfstools
NTFS mkfs.ntfs Да sys-fs/ntfs3g

Например, чтобы создать загрузочный раздел (/dev/sda2) в ext2 и корневой раздел (/dev/sda4) в ext4 при использовании структуры разделов из примера, используются следующие команды:

root #mkfs.ext2 /dev/sda2
root #mkfs.ext4 /dev/sda4

При использовании ext2, ext3 или ext4 на малых разделах (менее 8 ГиБ) файловая система должна быть создана с особыми параметрами для резервирования достаточного количества индексных дескрипторов (inodes). Приложение mke2fs (mkfs.ext2) использует настройки «bytes-per-inode» для вычисления количества необходимых дескрипторов. На небольших разделах рекомендуется увеличивать расчётное количество дескрипторов.

root #mkfs.ext2 -T small /dev/<device>
root #mkfs.ext3 -T small /dev/<device>
root #mkfs.ext4 -T small /dev/<device>

Данные команды учетверяют количество индексных дескрипторов для такой ФС, так как «bytes-per-inode» уменьшает количество байт на каждый дескриптор с 16 кб до 4 кб. Это соотношение может быть изменено в любую сторону с помощью команды:

Теперь создайте файловые системы на только что созданных томах (или логических разделах).

Активация раздела подкачки

Для инициализации разделов подкачки используется команда mkswap:

root #mkswap /dev/sda3

Чтобы активировать раздел подкачки, используйте swapon:

root #swapon /dev/sda3

Создайте и активируйте раздел подкачки командами выше.

Монтирование корневого раздела

Теперь, когда созданы разделы и размещённые на них файловые системы, настало время их смонтировать. Используйте команду mount, только не забудьте предварительно создать каталоги для монтирования каждого созданного раздела. В качестве примера мы смонтируем корневой раздела:

root #mount /dev/sda4 /mnt/gentoo
Заметка
Если /tmp/ находится на отдельном разделе, не забудьте после монтирования изменить права доступа:
root #chmod 1777 /mnt/gentoo/tmp
Это также справедливо для /var/tmp.

Позже в инструкции будут смонтированы файловая система proc (виртуальный интерфейс к ядру) и другие псевдофайловые системы ядра. Но сначала мы установим установочные файлы Gentoo.