Handbook:IA64/Installation/Disks
Введение в блочные устройства
Блочные устройства
Теперь взглянем на аспекты работы Gentoo Linux и Linux в общем, связанные с дисковой подсистемой, включая блочные устройства, разделы и файловые системы Linux. Как только основные понятия о дисках и файловых системах будут изучены, можно будет приступать к созданию разделов и файловых систем для установки.
Для начала, рассмотрим блочные устройства. Устройства SCSI и Serial ATA обозначаются как /dev/sda, /dev/sdb, /dev/sdc и так далее. На более современных компьютерах твердотельные накопители NVMe на базе PCI Express имеют дескриптор вида /dev/nvme0n1, /dev/nvme0n2 и так далее.
Следующая таблица поможет определить необходимый тип блочного устройства в системе:
Тип устройства | Дескриптор устройства по умолчанию | Примечания и полезные сведения |
---|---|---|
SATA, SAS, SCSI или USB flash | /dev/sda | Данный тип устройств стал доступным примерно с 2007 года и встречается до сих пор, являясь, пожалуй, самым используемым типом в Linux. Устройства могут подключаться через шины SATA, SCSI или USB в виде устройства блочного хранилища. Например, первый раздел на первом SATA устройстве обозначается как /dev/sda1. |
NVM Express (NVMe) | /dev/nvme0n1 | Передовая на данный момент технология твердотельных накопителей. Устройства NVMe подключаются к шине PCI Express и обладают наиболее быстрой скоростью передачи блочных данных, доступной на рынке. Системы образца 2014 года и новее могут иметь поддержку устройств NVMe. Первый раздел на первом NVMe устройстве обозначается как /dev/nvme0n1p1. |
MMC, eMMC и SD | /dev/mmcblk0 | Устройства embedded MMC, SD-карты и другие типы карт памяти могут использоваться для хранения данных. Однако не все системы могут позволить загружаться с данного типа устройств. Не рекомендуется использовать данные устройства для установки Linux; лучше используйте их по прямому назначению — для переноса файлов. Также их можно использовать для кратковременного резервного копирования. |
Данные блочные устройства представляют абстрактный интерфейс к диску. Пользовательские приложения могут использовать их для взаимодействия с диском, не заботясь о том, какой это диск — SATA, SCSI или какой-либо ещё. Программа просто адресует пространство на диске как совокупность следующих друг за другом 4096-байтных (4K) блоков с произвольным доступом.
Разделы
Несмотря на то, что теоретически возможно использовать весь диск для размещения системы Linux, это почти никогда не делается на практике. Вместо этого, блочное устройство разбивается на меньшие, более управляемые блочные устройства. В системах IA64 они называются разделами.
Itanium systems use EFI, the Extensible Firmware Interface, for booting. The partition table format that EFI understands is called GPT, or GUID Partition Table. The partitioning program that understands GPT is called "parted", so that is the tool used below. Additionally, EFI can only read FAT filesystems, so that is the format to use for the EFI boot partition, where the kernel will be installed by "elilo".
Продвинутая организация хранилища
Установочный CD IA64 предоставляет поддержку LVM2, которая обеспечивает большую гибкость в создании разделов. Во время инструкций по установке мы будем рассматривать «обычные» разделы, но все же хорошо знать, что LVM2 также поддерживается.
Разработка схемы разделов
Сколько разделов и насколько больших?
Расположение разделов на диске сильно зависит от потребностей системы и файловой системы (файловых систем). Если в ней будет много пользователей, рекомендуется разместить /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. Также вы можете использовать файлы подкачки вместо разделов подкачки; в основном это необходимо для систем с очень ограниченным дисковым пространством.
Non-default example partition scheme
An example partitioning for a 20GB disk is shown below, used as a demonstration laptop (containing webserver, mailserver, gnome, ...):
root #
df -h
Filesystem Type Size Used Avail Use% Mounted on /dev/sda5 ext4 509M 132M 351M 28% / /dev/sda2 ext4 5.0G 3.0G 1.8G 63% /home /dev/sda7 ext4 7.9G 6.2G 1.3G 83% /usr /dev/sda8 ext4 1011M 483M 477M 51% /opt /dev/sda9 ext4 2.0G 607M 1.3G 32% /var /dev/sda1 ext2 51M 17M 31M 36% /boot /dev/sda6 swap 516M 12M 504M 2% <not mounted> (Unpartitioned space for future usage: 2 GB)
/usr/ is rather full (83% used) here, but once all software is installed, /usr/ doesn't tend to grow that much. Although allocating a few gigabytes of disk space for /var/ may seem excessive, remember that portage uses this partition by default for compiling packages. To keep /var/ at a more reasonable size, such as 1GB, alter the PORTAGE_TMPDIR variable in /etc/portage/make.conf to point to the partition with enough free space for compiling extremely large packages such as LibreOffice.
Использование parted для создания разделов диска
The following parts explain how to create the example partition layout used in the remainder of the installation instructions, namely:
Раздел | Описание |
---|---|
/dev/sda1 | Загрузочный раздел EFI |
/dev/sda2 | Раздел подкачки |
/dev/sda3 | Корневой раздел |
Измените структуру разделов в соответствии с личными предпочтениями.
Просмотр текущей разметки разделов
parted is the GNU partition editor. Fire up parted on the disk (in our example, we use /dev/sda):
root #
parted /dev/sda
Once in parted, a prompt that looks like this shows up:
(parted)
At this point one of the available commands is help, to see the other available commands. Another command is print to display the disk's current partition configuration:
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 203.938 fat32 boot 2 203.938 4243.468 linux-swap 3 4243.469 34724.281 ext4
This particular configuration is very similar to the one recommended above. Note on the second line that the partition table is type is GPT. If it is different, then the ia64 system will not be able to boot from this disk. To explain how partitions are created, let's first remove the partitions and recreate them.
Удаление всех разделов
Unlike fdisk and some other partitioning programs which postpone committing changes until the write instruction is given, parted commands take effect immediately. So once partitions are added or removed, there is no undo.
The easy way to remove all partitions and start fresh, which guarantees that we are using the correct partition type, is to make a new partition table using the mklabel command. This results in an empty GPT partition table.
(parted) mklabel
gpt
(parted) mklabel
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags
Now that the partition table is empty, we're ready to create the partitions. We will use a default partitioning scheme as discussed previously. Of course, don't follow these instructions to the letter but adjust to personal preference.
Создание загрузочного раздела EFI
First create a small EFI boot partition. This is required to be a FAT filesystem in order for the IA64 firmware to read it. Our example makes this 32 MB, which is appropriate for storing kernels and elilo configuration. Expect each IA64 kernel to be around 5 MB, so this configuration leaves some room to grow and experiment.
(parted)
mkpart primary fat32 0 32
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32
Создание раздела подкачки
Let's now create the swap partition. The classic size to make the swap partition was twice the amount of RAM in the system. In modern systems with lots of RAM, this is no longer necessary. For most desktop systems, a 512 megabyte swap partition is sufficient. For a server, consider something larger to reflect the anticipated needs of the server.
(parted)
mkpart primary linux-swap 32 544
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32 2 32.000 544.000
Создание корневого раздела
Finally, create the root partition. Our configuration will make the root partition to occupy the rest of the disk. We default to ext4, but it is possible to use ext2, jfs, reiserfs or xfs. The actual filesystem is not created in this step, but the partition table contains an indication of what kind of filesystem is stored on each partition, and it's a good idea to make the table match the intentions.
(parted)
mkpart primary ext4 544 34732.890
(parted)
print
Disk geometry for /dev/sda: 0.000-34732.890 megabytes Disk label type: gpt Minor Start End Filesystem Name Flags 1 0.017 32.000 fat32 2 32.000 544.000 3 544.000 34732.874
Выход из parted
To quit from parted, type quit. There's no need to take a separate step to save the partition layout since parted has been saving it all along. Parted will give a reminder to update the /etc/fstab file, which is done later in the installation instructions.
(parted)
quit
Information: Don't forget to update /etc/fstab, if necessary.
Создание файловых систем
Введение
Теперь, когда разделы созданы, пора разместить на них файловые системы. В следующем разделе описаны различные поддерживаемые в Linux файловые системы. Те из читателей, кто уже знает, какую файловую систему будет использовать, могут продолжить с раздела Создание файловой системы. Другим стоит продолжить чтение, чтобы узнать о доступных вариантах…
Файловые системы
Linux поддерживает несколько десятков файловых систем, хотя для большинства из них необходимы достаточно веские причины их использовать. Лишь только некоторые из них можно считать стабильными на архитектуре ia64. Рекомендуется прочитать информацию о файловых системах и об их состоянии поддержки перед тем, как останавливать свой выбор на экспериментальных. ext4 — рекомендуемая стабильная файловая система общего применения для всех платформ. Ниже представлен неполный список файловых систем:
- 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.
- ext4
- Изначально созданная как ответвление от ext3, ext4 реализует новые возможности, повышение производительности и устранение ограничений на размер раздела на диске ценой незначительного изменения формата данных на диске. Она может быть размером до 1 ЭБ, а максимальный размер файла может составлять 16 ТБ. Вместо классического ext2/3 блочного распределения ext4 использует экстенты, которые улучшают производительность при работе с большими файлами и уменьшают фрагментацию. Ext4 также обеспечивает более сложные алгоритмы распределения блоков (отложенное распределение и мультиблочное распределение), дающие драйверу файловой системы больше возможностей по оптимизации размещения данных на диске. Ext4 рекомендуется как универсальная файловая система для всех платформ.
- f2fs
- Файловая система (Flash-Friendly File System) была создана Samsung для использования на NAND-накопителях. По состоянию на 2 квартал 2016 года файловая система считается не завершенной, но она может быть достойным выбором при установке на microSD карту, USB-накопитель или другие накопители.
- JFS
- Высокопроизводительная журналируемая файловая система от IBM. JFS — это легкая, быстрая и надежная файловая система, основанная на двоичных деревьях с хорошей производительностью в различных условиях.
- XFS
- Файловая система с журналированием метаданных, которая поставляется с мощным набором функций и оптимизирована для масштабируемости. XFS менее снисходительно относится к различным аппаратным проблемам, однако непрерывно обновляется, обрастая новым возможностями.
- VFAT
- Так же известна как FAT32, поддерживается Linux, но не имеет поддержку стандартных файловых разрешений UNIX. В основном используется для взаимодействия или взаимозаменяемости с другими операционными системами (в основном Microsoft Windows и Apple macOS), но также необходима при использовании некоторых системных прошивок загрузчика (например, UEFI). Пользователям систем с UEFI должны использовать эту файловую систему для EFI System Partition, чтобы иметь возможность загружаться.
- NTFS
- New Technology Filesystem является основной файловой системой для Microsoft Windows начиная с NT 3.5. Как и VFAT, она не сохраняет настройки UNIX разрешений и расширенные атрибуты, необходимые для нормальной работы BSD или Linux, поэтому в большинстве случаев её не следует использоваться в качестве файловой системы. Её необходимо использовать только для взаимодействия или взаимозаменяемости с системами Microsoft Windows (обратите внимание на акцент слова только).
Создание файловой системы
Для создания файловых систем на разделе или томе существуют пользовательские утилиты для каждого возможного типа файловой системы. Нажмите на имя файловой системы в таблице ниже для получения дополнительной информации о каждой файловой системе:
Файловая система | Команда для создания | Есть на минимальном CD? | Пакет |
---|---|---|---|
btrfs | mkfs.btrfs | Да | sys-fs/btrfs-progs |
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/sda3) в ext4 при использовании структуры разделов из примера, используются следующие команды:
root #
mkfs.ext4 /dev/sda3
При использовании ext4 на малых разделах (менее 8 ГиБ) файловая система должна быть создана с особыми параметрами для резервирования достаточного количества индексных дескрипторов (inodes). Для этого используется одна из следующих команд:
root #
mkfs.ext4 -T small /dev/<раздел>
Данная команда учетверит количество индексных дескрипторов для такой ФС, так как мы уменьшили количество байт на каждый дескриптор («bytes-per-inode») с 16 кб до 4 кб.
Теперь создайте файловые системы на только что созданных томах (или логических разделах).
Активация раздела подкачки
Для инициализации разделов подкачки используется команда mkswap:
root #
mkswap /dev/sda2
Чтобы активировать раздел подкачки, используйте swapon:
root #
swapon /dev/sda2
Создайте и активируйте раздел подкачки командами выше.
Монтирование корневого раздела
Если в качестве установочного носителя используется не Gentoo-образ, необходимо дополнительно создать точку монтирования:
root #
mkdir --parents /mnt/gentoo
Теперь, когда созданы разделы и размещённые на них файловые системы, настало время их смонтировать. Используйте команду mount, только не забудьте предварительно создать каталоги для монтирования каждого созданного раздела. В качестве примера мы смонтируем корневой раздела:
root #
mount /dev/sda3 /mnt/gentoo
Если /tmp/ находится на отдельном разделе, не забудьте после монтирования изменить права доступа:
root #
chmod 1777 /mnt/gentoo/tmp
Позже в инструкции будут смонтированы файловая система proc (виртуальный интерфейс к ядру) и другие псевдофайловые системы ядра. Но сначала мы установим установочные файлы Gentoo.