This is Gentoo's testing wiki. It is a non-operational environment and its textual content is outdated.
Please visit our production wiki at https://wiki.gentoo.org
Handbook:Alpha/Installation/Disks
Введение в блочные устройства
Блочные устройства
Теперь взглянем на аспекты работы Gentoo Linux и Linux в общем, связанные с дисковой подсистемой, включая файловые системы Linux, разделы и блочные устройства. Как только основные понятия о дисках и файловых системах будут изучены, приступите к созданию разделов и файловых систем для установки Gentoo Linux.
Для начала, рассмотрим блочные устройства. Наиболее известным блочным устройством можно считать первый диск в системе Linux, именуемый /dev/sda. И SCSI-, и Serial ATA-диски обозначаются как /dev/sd*; благодаря фреймворку ядра libata даже IDE-диски обозначаются как /dev/sd*. Если же используется старый фреймворк устройств, первым IDE-диском будет /dev/hda.
Вышеназванные блочные устройства представляют абстрактный интерфейс к диску. Пользовательские приложения могут использовать их для взаимодействия с диском, не заботясь о том, какой это диск — IDE, SCSI или ещё какой-либо. Программа просто адресует пространство на диске как совокупность следующих друг за другом 512-байтных блоков с произвольным доступом.
Слайсы
Несмотря на то, что теоретически возможно использовать весь диск для размещения системы Linux, это почти никогда не делается на практике. Вместо этого, блочное устройство разбивается на меньшие, более управляемые блочные устройства. В системах Alpha они называются слайсами.
In further sections, the installation instructions will use the example partitioning for the ARC/AlphaBIOS setup. Please adjust to personal preference!
Разрабатываем схему разделов
Сколько разделов и насколько большие?
The number of partitions is highly dependent on the environment. For instance, if there are lots of users, then it is advised to have /home/ separate as it increases security and makes backups easier. If Gentoo is being installed to perform as a mail server, then /var/ should be separate as all mails are stored inside /var/. A good choice of filesystem will then maximize the performance. Game servers will have a separate /opt/ as most gaming servers are installed there. The reason is similar for the /home/ directory: security and backups. In most situations, /usr/ is to be kept big: not only will it contain the majority of applications, it typically also hosts the Gentoo ebuild repository (by default located at /usr/portage) which already takes around 650 MiB. This disk space estimate excludes the packages/ and distfiles/ directories that are generally stored within this ebuild repository.
Все сильно зависит от того, чего хочет достигнуть администратор. Наличие отдельных разделов или томов имеет следующие плюсы:
- Можно выбрать наиболее подходящую файловую систему для каждого раздела или тома.
- Свободное место во всей системе не кончится "вдруг" из-за того, что одна-единственная сбойная программа постоянно записывает файлы в раздел или том.
- Необходимая проверка файловых систем будет занимать меньше времени, так как проверка разных разделов может выполняться параллельно (еще больший выигрыш времени дает использование нескольких физических дисков).
- Можно повысить безопасность системы, монтируя часть разделов в режиме read-only (только для чтения),
nosuid
(игнорируется бит setuid),noexec
(игнорируется бит исполнения) и так далее.
Однако у множества разделов также есть недостатки. Если они не настроены правильно, может получиться так, что будет огромное количество свободного места на одном разделе и отсутствием его на другом. Другой проблемой является то, что отдельные разделы, особенно для важных точек монтирования, например /usr/ или /var/, часто требуют загрузки initramfs, чтобы смонтировать разделы прежде чем запустятся другие загрузочные скрипты. Это не всегда является проблемой, так что результаты могут быть разные.
Также существует лимит в 15 разделов для SCSI и SATA, если только на диске не используются метки GPT.
Что по поводу пространства подкачки?
Не существует идеального значения для раздела подкачки. Целью пространства подкачки является предоставление дискового пространства ядру, когда оперативная память (ОЗУ) сильно используется. Пространство подкачки позволяет ядру переносить страницы памяти, которые, скорее всего, не будут использоваться в ближайшее время, на диск (что называется swap, или page-out), освобождая память. Конечно, если эта память, вдруг, неожиданно понадобится, эти страницы должны быть помещены обратно в память (page-in), что займет некоторое время (так как диски - это очень медленные устройства, если сравнивать их с оперативной памятью).
Если на этой системе не требуется запускать приложения, требовательные к памяти, либо очень много памяти, то, скорее всего, не нужно много пространства подкачки. Однако раздел подкачки также используется для сохранения всей памяти в случае гибернации. Если планируется использовать гибернацию, то нужно больше пространство подкачки, хотя бы равное количеству оперативной памяти, которое есть в системе.
Использование fdisk для разбития диска (только SRM)
Далее будет объяснено как создать примерную разметку слайсов для SRM:
Слайс | Описание |
---|---|
/dev/sda1 | Слайс раздела подкачки (swap) |
/dev/sda2 | Корневой слайс (root) |
/dev/sda3 | Весь диск (необходимо) |
Измените структуру слайсов в соответствии с личными предпочтениями.
Определение доступных дисков
Используйте следующие команды, чтобы выяснить какие диски доступны в системе.
Для дисков IDE:
root #
dmesg | grep 'drive$'
Для дисков SCSI:
root #
dmesg | grep 'scsi'
Вывод команды покажет какие диски обнаружены и путь к ним в /dev/. Далее мы будем предполагать, что это SCSI-диск /dev/sda.
Теперь запустите fdisk:
root #
fdisk /dev/sda
Удаление всех слайсов
Если жесткий диск полностью пуст, тогда создайте сперва BSD disklabel.
Command (m for help):
b
/dev/sda contains no disklabel. Do you want to create a disklabel? (y/n) y A bunch of drive-specific info will show here 3 partitions: # start end size fstype [fsize bsize cpg] c: 1 5290* 5289* unused 0 0
Мы начнем с удаления всех слайсов кроме 'c'-слайса (необходим для использования BSD disklabels). Следующий пример показывает как удалить слайс (в примере мы используем 'a'). Повторите этот процесс, чтобы удалить все другие слайсы (все кроме слайса 'c').
Используйте p, чтобы просмотреть все доступные слайсы. d используется для удаления слайса.
BSD disklabel command (m for help):
p
8 partitions: # start end size fstype [fsize bsize cpg] a: 1 235* 234* 4.2BSD 1024 8192 16 b: 235* 469* 234* swap c: 1 5290* 5289* unused 0 0 d: 469* 2076* 1607* unused 0 0 e: 2076* 3683* 1607* unused 0 0 f: 3683* 5290* 1607* unused 0 0 g: 469* 1749* 1280 4.2BSD 1024 8192 16 h: 1749* 5290* 3541* unused 0 0
BSD disklabel command (m for help):
d
Partition (a-h): a
После проделывания этой операции со всеми слайсами список должен показывать что-то подобное:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] c: 1 5290* 5289* unused 0 0
Создание слайса подкачки
В системах на базе Alpha нет необходимости создавать отдельный слайс boot. Тем не менее, первый цилиндр нельзя воспользоваться, так как там будет размещен образ aboot.
Мы создадим слайс подкачки начиная с третьего цилиндра и размером в 1 GB. Используйте n, чтобы создать новый слайс. После создания слайса мы изменим его тип на 1 (один), означает swap.
BSD disklabel command (m for help):
n
Partition (a-p): a First cylinder (1-5290, default 1): 3 Last cylinder or +size or +sizeM or +sizeK (3-5290, default 5290): +1024M
BSD disklabel command (m for help):
t
Partition (a-c): a Hex code (type L to list codes): 1
После выполнения этих операций должна быть показана примерно такая разметка:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] a: 3 1003 1001 swap c: 1 5290* 5289* unused 0 0
Создание коревого слайса
Мы создадим корневой слайс начиная с первого цилиндра после слайса подкачки. Используйте p, что посмотреть где слайс подкачки заканчивается. В нашем примере это 1003. Создайте корневой слайс начиная с 1004.
Другая проблема заключается в том, что в fdisk обнаружена ошибка, из-за которой число доступных цилиндров на единицу больше реального числа цилиндров. Другими словами, при запросе последнего цилиндра, уменьшите номер цилиндра (в этом примере: 5290) на один.
Когда слайс создан, мы изменим тип на 8 для ext2.
BSD disklabel command (m for help):
n
Partition (a-p): b First cylinder (1-5290, default 1): 1004 Last cylinder or +size or +sizeM or +sizeK (1004-5290, default 5290): 5289
BSD disklabel command (m for help):
t
Partition (a-c): b Hex code (type L to list codes): 8
Итоговая разметка слайсов теперь должна выглядеть примерно так:
BSD disklabel command (m for help):
p
3 partitions: # start end size fstype [fsize bsize cpg] a: 3 1003 1001 swap b: 1004 5289 4286 ext2 c: 1 5290* 5289* unused 0 0
Сохранение разметки слайсов и выход
Выйдете из приложения fdisk нажав w. Это также сохранит разметку слайсов.
Command (m for help):
w
Использование fdisk для разбития диска (только ARC/AlphaBIOS)
Далее будет объяснено как создать примерную разметку разделов для ARC/AlphaBIOS:
Раздел | Описание |
---|---|
/dev/sda1 | Загрузочный раздел (boot) |
/dev/sda2 | Раздел подкачки (swap) |
/dev/sda3 | Корневой раздел (root) |
Измените структуру разделов в соответствии с личными предпочтениями.
Определение доступных дисков
Используйте следующие команды, чтобы выяснить какие диски доступны в системе.
Для дисков IDE:
root #
dmesg | grep 'drive$'
Для дисков SCSI:
root #
dmesg | grep 'scsi'
Из вывода команды станет видно какие диски обнаружены и путь к ним в /dev/. Далее мы будем предполагать, что это SCSI-диск /dev/sda.
Теперь запустите fdisk:
root #
fdisk /dev/sda
Удаление всех разделов
Если жесткий диск полностью пуст, тогда создайте сперва DOS disklabel.
Command (m for help):
o
Building a new DOS disklabel.
Мы начнем с удаления всех разделов. Следующий пример показывает как удалить раздел (в примере мы используем '1'). Повторите этот процесс, чтобы удалить все другие разделы.
Используйте p, чтобы просмотреть все доступные разделы. d используется для удаления раздела.
command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 478 489456 83 Linux /dev/sda2 479 8727 8446976 5 Extended /dev/sda5 479 1433 977904 83 Linux Swap /dev/sda6 1434 8727 7469040 83 Linux
command (m for help):
d
Partition number (1-6): 1
Создание загрузочного раздела
В системах Alpha, которые используют MILO для загрузки, мы должны создать небольшой загрузочный раздел vfat.
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 1 First cylinder (1-8727, default 1): 1 Last cylinder or +size or +sizeM or +sizeK (1-8727, default 8727): +16M
Command (m for help):
t
Selected partition 1 Hex code (type L to list codes): 6 Changed system type of partition 1 to 6 (FAT16)
Создание раздела подкачки
Мы создадим раздел подкачки размером в 1 GB. Используйте n, чтобы создать новый раздел.
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 2 First cylinder (17-8727, default 17): 17 Last cylinder or +size or +sizeM or +sizeK (17-8727, default 8727): +1000M
Command (m for help):
t
Partition number (1-4): 2 Hex code (type L to list codes): 82 Changed system type of partition 2 to 82 (Linux swap)
После выполнения этих операций должна быть показана примерно такая разметка:
Command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 16 16368 6 FAT16 /dev/sda2 17 971 977920 82 Linux swap
Создание коревого раздела
Мы создадим корневой раздел. Снова просто воспользуйтесь n.
Command (m for help):
n
Command action e extended p primary partition (1-4) p Partition number (1-4): 3 First cylinder (972-8727, default 972): 972 Last cylinder or +size or +sizeM or +sizeK (972-8727, default 8727): 8727
После выполнения этих операций должна быть показана примерно такая разметка:
Command (m for help):
p
Disk /dev/sda: 9150 MB, 9150996480 bytes 64 heads, 32 sectors/track, 8727 cylinders Units = cylinders of 2048 * 512 = 1048576 bytes Device Boot Start End Blocks Id System /dev/sda1 1 16 16368 6 FAT16 /dev/sda2 17 971 977920 82 Linux swap /dev/sda3 972 8727 7942144 83 Linux
Сохранение разметки разделов и выход
Сохраните сделанные изменения в fdisk нажав w.
Command (m for help):
w
Теперь, когда разделы созданы, создадим файловые системы.
Создание файловых систем
Введение
Теперь, когда разделы созданы, пора разместить на них файловые системы. В следующем разделе описаны различные поддерживаемые в Linux файловые системы. Те из читателей, кто уже знает, какую файловую систему будет использовать, могут продолжить с раздела создание файловой системы. Другим стоит продолжить чтение, чтобы узнать о доступных файловых системах...
Файловые системы
На выбор доступно несколько файловых систем. Некоторые из них считаются стабильными на архитектуре alpha. Рекомендуется прочитать информацию о файловых системах и об их состоянии поддержки перед тем, как выбирать экспериментальные для важных разделов.
- btrfs
- Файловая система следующего поколения, обеспечивающая множество дополнительных функций, таких как мгновенные снимки, самовосстановление с помощью контрольных сумм, прозрачной компрессии, субтомов и интегрированным RAID. Некоторые дистрибутивы начали предлагать ее из коробки, но она еще не готова к использованию в промышленной среде. Общедоступны отчеты об ошибках в файловой системе. Ее разработчики призывают людей для безопасности использовать последнюю версию ядра, для решения уже известных проблем. Она разрабатывается уже много лет и пока далеко до завершения. Исправления иногда портируются в более старые версии ядра. Используйте с осторожностью эту файловую систему!
- f2fs
- Файловая система (Flash-Friendly File System) была создана Samsung для использования на NAND накопителях. По состоянию на 2 квартал 2016 года файловая система считается не завершенной, но она может быть достойным выбором при установке на microSD карту, USB накопитель или другие накопители на основе флэш.
- ext2
- Это проверенная и надежная файловая система Linux, но она не обладает средствами журналирования метаданных, что означает, что проверка файловой системы ext2 при запуске может занимать довольно много времени. Существует достаточно широкий выбор журналируемых файловых систем нового поколения, целостность которых может быть проверена очень быстро, что является преимуществом перед не журналируемыми системами. Журналирование файловой системы позволяет избежать долгих задержек при загрузке системы и так же избежать ее неустойчивого состояния.
- ext3
- Журналируемая версия файловой системы ext2, обеспечение журналирования метаданных для быстрого восстановления в дополнение к другим режимам журналирования, таким как журналирование всех данных и упорядоченных данных.
- ext4
- Изначально созданная как ответвление от ext3, ext4 приносит новые возможности, повышение производительности и устранение ограничений на размер раздела на диске. Она может быть размером до 1 ЭБ и максимальный размер файла 16ТБ. Вместо классического ext2/3 блочного распределения ext4 использует экстенты, которые улучшают производительность при работе с большими файлами и уменьшают фрагментацию. Ext4 также обеспечивает более сложные алгоритмы распределения блоков (задержка распределения и мультиблочное распределение) дающие драйверу файловой системы больше возможностей по оптимизации размещения данных на диске. Ext4 рекомендуется как универсальная файловая система для всех платформ.
- JFS
- Высокопроизводительная журналируемая файловая система от IBM. JFS это легкая, быстрая и надежная файловая система, основанная на B+tree с хорошей производительностью в различных условиях.
- ReiserFS
- Основаная на B+tree журналируемая файловая система имеющая хорошую общую производительность, особенно при работе с множеством мелких файлов cost of more CPU cycles. ReiserFS, по видимому, менее поддерживаемая, чем другие файловые системы.
- XFS
- Файловая система с журналированием метаданных, которая поставляется с мощным набором функций и оптимизирована для масштабируемости. XFS, кажется, менее снисходительно относится к различным аппаратным проблемам.
- vfat
- Так же известна как FAT32, поддерживается Linux, но без поддержки каких-либо настроек разрешений. В основном используется для взаимодействия с другими операционными системами (в основном Microsoft Windows), но также необходима при использовании некоторых системных прошивок (например UEFI).
- NTFS
- Эта файловая система (New Technology Filesystem) считается флагманской файловой системой от Microsoft Windows. Как и vfat она не сохраняет настройки разрешений и расширенные атрибуты, необходимые для BSD или Linux для нормальной работы, поэтому она не может быть использована как корневая файловая система. Её необходимо использовать только для взаимодействия с Microsoft Windows компьютерами (обратите внимание на акцент слова только).
При использовании ext2, ext3 или ext4 на малых разделах (менее 8 Гб) файловая система должна быть создана с надлежащими опциями резервирования достаточного количества inodes. Приложение mke2fs (mkfs.ext2) использует настройки "bytes-per-inode" для вычисления сколько inodes должна иметь файловая система. На небольших системах рекомендуется увеличивать расчетное количество inodes.
Для ext2 это может быть сделано следующей командой:
root #
mkfs.ext2 -T small /dev/<device>
Для ext3 и ext4 добавьте опцию -j
для разрешения журналирования:
root #
mkfs.ext2 -j -T small /dev/<device>
Как правило необходимо увеличивать в четыре раза количество inodes для таких систем, снижая "bytes-per-inode" с одного на 16kB до одного на 4kB. Это может быть настроено далее с помощью рейтинга:
root #
mkfs.ext2 -i <ratio> /dev/<device>
Создание файловой системы
Для создания файловых систем на разделе или томе существуют пользовательские утилиты для каждого возможного типа файловой системы. Нажмите на имя файловой системы в таблице ниже для получения дополнительной информации о каждой файловой системе:
Файловая система | Команда для создания | На установочном 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/sda1) в ext2 и корневой раздел (/dev/sda3) в ext4 при использовании структуры разделов из примера, используются следующие команды:
root #
mkfs.ext2 /dev/sda1
root #
mkfs.ext4 /dev/sda3
Теперь созданы файловые системы на вновь созданных томах (или логических разделах).
Активация раздела подкачки
Для инициализации разделов подкачки используется команда mkswap:
root #
mkswap /dev/sda2
Чтобы активировать раздел подкачки, используйте swapon:
root #
swapon /dev/sda2
Создайте и активируйте раздел подкачки командами выше:
Монтирование корневого раздела
Теперь, когда созданы разделы и файловые системы на них, настало время их смонтировать. Используйте команду mount, но не забывайте, что необходимо создать каталоги для монтирования каждого созданного раздела. В качестве примера мы смонтируем корневой раздела:
root #
mount /dev/sda3 /mnt/gentoo
Если /tmp/ должен находится на отдельном разделе, не забудьте после монтирования изменить права доступа:
root #
chmod 1777 /mnt/gentoo/tmp
Позже в инструкции будут смонтированы файловая система proc (виртуальный интерфейс с ядром) и другие псевдо-файловые системы ядра. Но сначала мы устанавливаем установочные файлы Gentoo.