Основы Linux от основателя Gentoo

Основы Linux от основателя Gentoo. Часть 4 (1/4): Файловые системы, разделы и блочные устройства

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

Навигация по основам Linux от основателя Gentoo:
Часть I: 1, 2, 3, 4
Часть II: 1, 2, 3, 4, 5
Часть III: 1, 2, 3, 4
Часть IV
  1. Файловые системы, разделы и блочные устройства (вступление)
  2. Загрузка системы и уровни загрузки
  3. Квоты файловых систем
  4. Системные логи (итоги и ссылки)

Предисловие

Об этом руководстве

Добро пожаловать в «Системное администрирование», последнюю из четырех частей руководства, предназначенного для подготовки к экзамену “101 Linux Professional Institute’s”. В этой части, вы познакомитесь с такими навыками администрирования Linux, как файловые системы, процесс загрузки, уровни запуска, файловые квоты, а также системные журналы (логи).

Это руководство является особенно полезным для тех, кто хочет впервые попробовать себя в качестве системного администратора, так как тут описано много основных вопросов, которые должны знать системные администраторы. Если вы новичок в Linux, мы рекомендуем вам начать изучение с части 1. Для некоторых, большая часть этого материала будет новой, но и более опытные пользователи Linux могут найти в этом руководстве новое для себя, что может быть отличным способом обновления своих знаний по системному администрированию Linux и подготовке к следующему уровню сертификации LPI.

К концу этой серии учебных пособий (всего их восемь для экзаменов LPI 101 и 102), вы будете иметь знания, необходимые, чтобы стать администратором систем Linux и будете готовы для достижения первого уровня LPIC сертификации от “Linux Professional Institute” если вы того пожелаете.

Файловые системы, разделы и блочные устройства

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

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

Вначале ознакомимся с «блочными устройствами». Наиболее известным блочным устройством, вероятно, будет первый диск IDE в системе Linux, который будет называться: /dev/hda

Если в вашей системе есть SCSI диски (или, что вероятнее, вы используете современным драйвер libATA — прим. ред.), то он будет называться: /dev/sda

Уровни абстрагирования

Блочные устройства представляют абстрактный интерфейс к диску. Пользовательские программы могут использовать эти блочные устройства для взаимодействия с диском, не беспокоясь о том, что у вас за диски: IDE, SCSI, или какие-то другие. Программы могут легко адресовать место на диске, как последовательность блоков по 512 байт с произвольным доступом.

Разделы

В Linux файловые системы (ФС) создаются при помощи специальной команды mkfs (или mke2fs , mkreiserfs , и др.), указывая в качестве аргумента конкретное блочное устройство.

Однако, хотя и возможно использовать блочные устройства, представляющие весь диск целиком, такие как /dev/hda или /dev/sda , для единственной ФС, это редко применяется на практике. Вместо этого дисковые блочные устройства разделяются на более удобные блочные устройства меньшего размера, называемые разделами. Разделы создаются с помощью средства под названием fdisk , которое используется для создания и редактирования таблиц разделов, расположенных на каждом диске. Таблица разделов определяет, как именно разбито пространство на целом диске.

Введение в fdisk

Мы можем взглянуть на таблицу разделов диска запустив fdisk , указав в качестве аргумента блочное устройство представляющие диск целиком.

Примечание:

Альтернативные средства для доступа к таблице разделов: cfdisk , parted и partimage . Я рекомендую вам избегать использования cfdisk (несмотря на то, что может быть сказано в руководстве по fdisk) т. к. оно иногда неправильно рассчитывает геометрию диска.

# fdisk /dev/hda
# fdisk /dev/sda

Важно!

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

Внутри fdisk

После запуска fdisk , вас поприветствует приглашение, которое выглядит примерно так:

Введите p для отображения текущей таблицы разделов вашего диска:

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

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

Обратите внимание на названия блочных устройств слева, соответвующих разделу, начиная с /dev/hda1 по /dev/hda9 . В начале эры ПК, программы разметки позволяли делать максимум четыре раздела (называемых первичными). Этого было слишком мало, и для обхода этого ограничения был придуман расширенный раздел. Расширенный раздел очень похож на первичный, и засчитываются в лимит для 4-х первичных разделов. Но, расширенный раздел может содержать любое количество т. н. логических разделов внутри себя, эффективно обходя ограничение на четыре раздела.

Разметка диска

Все разделы от hda5 и далее — это логические разделы. Номера с hda1 по hda4 зарезервированы для первичных или расширенного разделов.

В нашем примере, разделы c hda1 по hda3 являются первичными разделами. hda4 это расширенный раздел, который содержит логические разделы от hda5 до hda9 . Вы не будет использовать /dev/hda4 для хранения ФС — он просто действует как контейнер для разделов hda5 — hda9 .

Типы разделов

Кроме того, обратите внимание, что каждый раздел имеет » Id «, также называемый типом раздела. Всякий раз, когда вы создаете новый раздел, вы должны убедиться, что тип раздела установлен правильно. Значение 83 является верным для разделов ФС Linux, а 82 — для разделов подчкачки. Для установки значения типа используется опция “t” в fdisk . Ядро Linux использует настройки типа раздела для автоопределения на диске во время загрузки устройств файловых систем и подкачки.

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

Теперь, когда вы имеете представление о дисковых разделах в Linux, пришло время, чтобы начать процесс создания разделов на диске и ФС для установки Linux. Мы настроим разделы на диске, а затем создадим файловые системы на них. На этом этапе мы полностью очистим диск от данных, и будем его использовать для установки новой копии Linux системы.

Важно!

Для выполнения этих действий, у вас должен быть жесткий диск, который не содержит никакой важной информации, так как, на этом этапе, данные на диске будут удалены. Если это всё для вас в новинку, вы можете только прочитать эти шаги, или воспользоваться загрузочным диском с Linux на тестовой системе (например в виртуальной машине — прим. ред.), так что данные не будут в опасности.

Как будет выглядеть диск после разбивки

После того, как мы пройдем процесс создания разделов на вашем диске, ваша таблица разделов будет выглядеть примерно так:

Комментарий к примеру

В новой, предложенной нами конфигурации, у нас есть три раздела. Первым является маленький раздел ( /dev/hda1 ) в начале диска, называемый загрузочным разделом. Цель загрузочного раздела – это хранение всех важных данных, связанных с загрузкой – загрузчик GRUB, а также ваше Linux ядро (ядра). Загрузочный раздел обеспечивает нам безопасное место для хранения любой информации, связанной с загрузкой. При нормальной работе загрузочный раздел должен оставаться отмонтированным для безопасности. Если у вас SCSI диски (или используется современная библиотека libATA — прим. ред.), загрузочный раздел, скорее всего, будет называться /dev/sda1 .

Рекомендовалось держать загрузочный раздел (содержащий всё необходимое для загрузки) в начале диска. Это не обязательно, так как берет свои истоки из прошлого, когда загрузчик LILO не мог загружать ядро с файловых систем, которые располагались за 1024 цилиндром диска.

Второй раздел ( /dev/hda2 ) используется для подкачки. Ядро использует дисковое пространство подкачки как виртуальную память, когда места в ОЗУ мало. Размер раздела сравнительно не очень большой, как правило около 512 МБ. Для систем SCSI (а также с новой libATA — прим. ред.) этот раздел будет называться /dev/sda2 .

Третий раздел ( /dev/hda3 ) большого размера и занимает весь остальной диск. Этот раздел будет нашим корневым разделом, и будет служить для хранения главной файловой системы Linux. Для дисков SCSI (или новой libATA — прим. ред.) этот раздел будет называться /dev/sda3 .

Начало работы

Теперь, чтобы создать разделы по примеру выше, введите fdisk /dev/hda или fdisk /dev/sda в зависимости от того, используете ли вы диски IDE или SCSI (или современную libATA — прим. ред.) соответственно. Затем введите “p” для просмотра текущей таблицы разделов. Есть ли что-то на диске, что требуется сохранить? Если да, остановитесь сейчас. Если вы продолжите, вся существующая информация на диске будет уничтожена.

Важно!

Нижеследующие инструкции уничтожат все существующие данные на диске! Если на диске есть какие-либо данные, убедитесь, что информация не является для вас критически важной. Также убедитесь что вы выбрали правильный диск, чтобы ошибочно не стереть данные с другого диска.

Удаление существующих разделов

Теперь самое время удалить все существующие разделы. Чтобы это сделать, введите “d” и нажмите Enter. Вам будет предложено выбрать номер раздела, который будет удален. Чтобы удалить существующий раздел /dev/hda1 вы должны ввести:

Command (m for help): d

Partition number (1-4): 1

Раздел будет запланирован для удаления. Он больше не будет отображаться, если вы введете “p”, но он не будет удален, пока вы не сохраните свои изменения. Если вы ошиблись и хотите отменить действия, введите “q”, и нажмите Enter, и ваш раздел не будет удален.

Теперь, предполагая, что вы в самом деле хотите удалить все разделы в вашей системе, наберите “p”, чтобы вывести еще раз список разделов, а затем введите “d” и номер раздела для удаления. В итоге вы получите пустую таблицу разделов:

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

Теперь, когда таблица разделов в памяти пуста, мы готовы для создания раздела загрузки. Чтобы это сделать, введите “n” для создания нового раздела, затем введите “p” чтобы сообщить fdisk , что вы хотите первичный раздел. После чего, введите “1” для создания первого первичного раздела. На вопрос о первом цилиндре нажмите Enter. На вопрос о последнем цилиндре введите “+100M” чтобы создать раздел размером 100 МБ. Вывод проделанных действий:

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1

First cylinder (1-3876, default 1):
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-3876, default 3876): +100M

Теперь введите “p”, вы должны увидеть нижеследующую таблицу разделов:

Command (m for help): p

Disk /dev/hda: 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/hda1 1 14 105808+ 83 Linux

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

Теперь, давайте создадим раздел подкачки. Чтобы это сделать введите “n” для создания нового раздела, затем “p” чтобы сообщить fdisk что вы хотите создать первичный раздел. Затем введите “2” для создания второго первичного раздела, /dev/hda2 в нашем примере. Затем будет предложено ввести номер первого цилиндра, нажмите Enter, когда будет предложено ввести номер последнего цилиндра, введите “+512M” для создания раздела подкачки, размером 512 МБ. После того, как вы сделаете это, введите “t” для установки типа раздела, и затем введите “82” для установки типа ”Linux swap”. После завершения этих шагов, введите “p” для просмотра таблицы разделов, она должна быть похожей на эту:

Command (m for help): p

Disk /dev/hda: 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/hda1 1 14 105808+ 83 Linux
/dev/hda2 15 81 506520 82 Linux swap

Делаем загрузочным

В завершении мы должны установить флаг «загрузочный» на наш загрузочный раздел и записать изменения на диск. Для отметки раздела /dev/hda1 как «загрузочного» раздела, введите в меню “a” и затем “1” как номер раздела. Если вы введете сейчас “p”, вы увидите что /dev/hda1 содержит символ “*” в столбце Boot. Теперь давайте запишем наши изменения на диск. Для этого введите “w” и затем Enter. Ваши разделы диска сейчас правильно сконфигурированы для установки Linux.

Замечание:

Если fdisk запрашивает перезагрузку, пожалуйста, сделайте это для того, чтобы ваша система определила новую настройку разделов.

Расширенные и логические разделы

В приведенном выше примере мы создали один первичный раздел который будет содержать ФС для хранения всех наших данных. Это означает что после установки Linux, главная файловая система будет смонтирована в “/” и будет содержать дерево директорий которое содержит все наши файлы.

Хотя это общий подход, есть и другой подход, с которым вы тоже должны быть знакомы. Этот подход использует несколько разделов, как место для нескольких ФС, и которые вместе образовывают дерево файловой системы. Например, довольно распространено помещать /home и /var в отдельные ФС.

Мы могли бы создать hda2 как расширенный, а не как первичный раздел. Затем мы бы создали логические разделы hda5 , hda6 , hda7 (технически они будут располагаться внутри hda2 ), которые бы содержали ФС для /, /home и /var соответственно.

Вы можете узнать больше про эти типы мультисистемной конфигурации, изучив ресурсы, приведенные ниже.

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

Теперь, когда разделы уже созданы, пришло время установить ФС на загрузочные и корневые разделы так, чтобы они могли использоваться для хранения данных. Мы также настроим раздел подкачки для обслуживания данных подкачки.

Линукс поддерживает различные типы ФС; каждый из них имеет свои достоинства и недостатки и свои характеристики. Мы рассмотрим создание файловых систем ext2, ext3, XFS, JFS и ReiserFS в этом руководстве. Перед созданием ФС на нашем примере, мы кратко рассмотрим различные файловые системы доступные в Linux.

Прим. ред.: К сожалению, ввиду того обстоятельства, что данный цикл был написан авторами примерно в 2003 году, в нем никак не упомянуты многие современные и актуальных файловые системы появившиеся с тех пор, такие как, например, ext4 и btrfs. Но, я верю, что любопытный читатель сможет без труда найти информацию о них в другом месте.

Файловая система ext2

ext2 является проверенной годами файловой системой Linux, но она не обладает средствами журналирования метаданных, что означает, что время на проверку файловой системы во время запуска может быть довольно большим. В настоящее время существует широкий выбор журналируемых файловых систем, которые могут быть проверены на целостность очень быстро, и потому предпочтительны, нежели их не журналируемые аналоги. Журналируемая ФС позволяет избежать долгих задержек при старте системы, когда целостность вашей ФС нарушена (например, в случае сбоя электроснабжения — прим. ред.).

Файловая система ext3

ext3 – журналируемая версия файловой системы ext2, которая обеспечивает журналирование метаданных для быстрого восстановления, а также другие режимы журналирования, такие как полное журналирование всех данных и упорядоченное журналирование. ext3 – очень хорошая и надежная ФС. Она предлагает достойную производительность в большинстве случаев. Поскольку она мало использует «деревья» в своем внутреннем устройстве, она плохо масштабируется, это означает, что этот тип ФС не лучший выбор для очень больших файловых систем, или в условиях, когда вы будете обрабатывать большие файлы или большое количество файлов в одном каталоге. Но при использовании её в условиях, под которые она проектировалась, ext3 прекрасная файловая система.

Одна из приятных особенностей ext3 – это то, что существующие системы ext2 могу быть обновлены «на месте» до ext3 довольно просто. Это позволяет плавно обновлять существующие системы Linux, которые уже используют ext2.

Файловая система ReiserFS

ReiserFS – это файловая система, основанная на B-дереве, которая имеет очень хорошую производительность и значительно превосходит ext2 и ext3 при работе с небольшими файлами (файлы менее 4 кБ), часто в 10-15 раз. А также ReiserFS отлично масштабируется и имеет журналирование метаданных. Начиная с ядра версии 2.4.18 и выше, ReiserFS является стабильной и рекомендуется, как в качестве ФС общего назначения, так и в крайних случаях, таких как создание больших файловых систем, использование для множества маленьких файлов, для огромных файлов, а также для каталогов с десятками тысяч файлов. Мы рекомендуем ФС ReiserFS для использования по умолчанию для всех не загрузочных разделов.

Файловая система XFS

XFS – это файловая система с журналированием метаданных. Она обладает конкретным набором возможностей и оптимизирована для масштабирования. Мы рекомендуем использовать эту файловую систему исключительно на Linux системах с высококлассными SCSI и/или Fibre Channel накопителями и источниками бесперебойного питания. Поскольку XFS агрессивно кэширует данные в ОЗУ, неподходяще спроектированная программа (т. е. та, которая не принимает должной предосторожности при записи на диск (таких совсем немного)) может потерять приличную порцию данных, если система неожиданно даст сбой.

Файловая система JFS

JFS является созданной в IBM высокопроизводительной журналируемой файловой системой. В последнее время она стала предустановленной, и мы бы хотели накопить больший опыт её использования, прежде чем выявлять сильные и слабые стороны этой файловой системы.

Рекомендации к файловым системам

Если вы ищете надежную журналируемую файловую систему, используйте ext3. Если вы ищете хорошую файловую систему общего назначения с высокой производительностью и поддержкой журналирования – используйте ReiserFS; ext3 и ReiserFS проверенные, усовершенствованные и рекомендуемые для общего назначения системы.

Основываясь на нашем примере выше, мы будем использовать следующие команды чтобы инициализировать все наши разделы для использования:

# mke2fs -j /dev/hda1
# mkswap /dev/hda2
# mkreiserfs /dev/hda3

Мы выбираем ext3 для нашего загрузочного раздела /dev/hda1 , так как это надежная журналируемая файловая система поддерживается всеми основными загрузчиками. Мы использовали mkswap для раздела подкачки /dev/hda2 – выбор тут очевиден. И для нашей главной корневой файловой системе на /dev/hda3 выберем ReiserFS, так как эта стабильная ФС с журналированием предлагающая отличную производительность. Теперь будем инициализировать разделы нашего диска.

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

mkswap – команда для инициализации раздела подкачки:

# mkswap /dev/hda2

В отличии от обычных файловых систем, разделы подкачки не монтируются. Вместо этого, их активируют используя команду swapon :

# swapon /dev/hdc6

Стартовые скрипты вашей Linux системы позаботятся об автоматической активации разделов подкачки. Таким образом, команда swapon, как правило требуется только тогда, когда нужно немедленно добавить раздел подкачки, который вы только что создали. Для просмотра какие разделы подкачки сейчас используются, наберите cat /proc/swaps .

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

Для создание файловой системы ext2 можно использовать команду mke2fs :

# mke2fs /dev/hda1

Если вы хотите использовать ext3, можно использовать команду mke2fs -j :

# mke2fs -j /dev/hda3

Для создание файловой системы ReiserFS используется команда mkreiserfs :

# mkreiserfs /dev/hda3

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

Для создания файловой системы XFS используется команда mkfs.xfs :

# mkfs.xfs /dev/hda3

Примечание:

Вы можете добавить к команде mkfs.xfs дополнительные флаги: “-d agcount=3 -l size=32m”. Флаг “-d agcount=3” снизит количество групп распределения. XFS будет настаивать на использовании по крайней мере одной группы распределения на 4 ГБ в разделе, так, например, если у вас есть раздел на 20ГБ, вам необходимо минимальное значение “agcount=5”. Флаг “-l size=32m” увеличивает размер журнала до 32 МБ, увеличивая производительность.

Прим. ред: Информация в данном руководстве несколько устарела. На самом деле, ещё, по меньшей мере, более 6 лет назад, максимальный размер группы распредления (allocation group) в XFS увеличен до терабайта.

Для создания файловой системы JFS, используется команда mkfs.jfs :

# mkfs.jfs /dev/hda3

Монтирование файловых систем

После того как файловая система создана, мы можем её примонтировать, используя команду mount :

# mount /dev/hda3 /mnt

Чтобы смонтировать файловую систему, в качестве первого аргумента необходимо указать раздел блочного устройства, и «точку монтирования» – в качестве второго. Новая файловая система будет «привита» в точке монтирования. Это также приводит к эффекту скрытия любых файлов которые находятся в директории /mnt в родительской файловой системе. Позже когда файловая система отмонтирована, эти файлы снова появятся. После выполнения команды монтирования, любые файлы созданные или скопированные внутри /mnt будут находится на новой файловой системе ReiserFS, которую вы смонтировали.

Скажем, мы хотим смонтировать наш загрузочный раздел внутрь /mnt . Мы можем это сделать, выполнив следующие шаги:

# mkdir /mnt/boot
# mount /dev/hda1 /mnt/boot

Теперь, наш загрузочная файловая система доступна внутри /mnt/boot . Если мы создадим файлы внутри /mnt/boot , то они будут находится на нашем ext3 разделе, который физически расположен на /dev/hda1 . Если мы создадим файлы внутри /mnt , но не внутри /mnt/boot, то они будут находится на нашей ReiserFS системе которая находится на /dev/hda3 . И если мы создадим файлы за пределами /mnt , они не будут хранится на нашей файловой системе (загрузочном разделе), а на файловой системе текущей Linux системы или загрузочном диске.

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

Вы также можете просмотреть аналогичную информацию введя cat /proc/mounts . Корневая файловая система /dev/hda3 будет смонтирована автоматически ядром при загрузке и получит символьное имя /dev/hda3. На нашей системе и /dev/hda3 , и /dev/root указывают на одно и то же блочное устройство, лежащее в основе, используя символическую ссылку:

# ls -l /dev/root
lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/root -> ide/host0/bus0/target0/lun0/part3

# ls -l /dev/hda3
lr-xr-xr-x 1 root root 33 Mar 26 20:39 /dev/hde3 -> ide/host0/bus0/target0/lun0/part3

Еще немного о монтировании

Итак, что это за файл /dev/ide/host0… ? У систем, как моя, которые используют devfs файловую систему управления устройствами для /dev, есть более длинные официальные названия для разделов и дисковых блоковых устройств, которые Linux использовал в прошлом. Для примера, /dev/ide/host0/bus1/target0/lun0/part7 это официальное название для /dev/hdc7 , а сам /dev/hdc7 – это всего лишь символьная ссылка (симлинк) указывающая на блочное устройство. Вы можете определить используется ли в вашей системе devfs, проверив существование файла /dev/.devfsd ; если существует – значит devfs активна.

Когда используется команда mount для подключения файловых систем, она пытается автоматически определить тип файловой системы. Иногда это не работает и вам нужно указать это вручную, используя опцию -t , как в примере ниже:

# mount /dev/hda1 /mnt/boot -t ext3

# mount /dev/hda3 /mnt -t reiserfs

Опции монтирования

Также возможно настраивать атрибуты для монтируемых ФС с помощью опций монтирования. К примеру, вы можете смонтировать файловую систему в режиме «только чтение» используя опцию “ro”:

# mount /dev/hdc6 /mnt -o ro

С /dev/hdc6 смонтированной только для чтения, никакие файлы в /mnt не смогу быть изменены – только прочитаны. Если ваша ФС уже смонтирована для «чтения/записи» и вы хотите переключить её в режим «только чтение», вы можете использовать опцию remount избежав отключения и подключения ФС снова:

# mount /mnt -o remount,ro

Заметьте, что нам не нужно было указывать конкретное блочное устройство, т. к. ФС уже смонтирована и mount знает что /mnt ассоциирована с /dev/hdc6 . Чтобы снова можно было производить запись, мы должны перемонтировать её в режиме «чтение/запись»:

# mount /mnt -o remount,rw

Заметьте, что эти команды перемонтирования не будут успешно завершены, если в /mnt имеются открытые каким-либо процессом файлы или директории. Для ознакомления со всеми опциями команды mount в Linux, введите man mount .

Знакомство с fstab

До сих пор мы видели как разбивать диск и монтировать разделы вручную с загрузочного диска. Но, как только мы установим систему Linux, как мы будем настраивать её, чтобы она монтировала нужные ФС в нужное время? Например скажем, что мы установили Gentoo Linux на нашей конфигурации ФС. Каким образом наша система знает, как найти корневую директорию на /dev/hda3 ? И если какие-либо другие ФС – как, например, раздел подкачки – нужно монтировать при загрузке, как она узнает которые из них?

Итак, ядру Linux сообщается загрузчиком, какая используется корневая ФС, и мы рассмотрим загрузчики Linux позже в этом руководстве. Но для всего остального, ваша Linux система содержит файл, называемый /etc/fstab который сообщает ядру о доступных для монтирования файловых системах. Давайте взглянем на него.

Образец fstab

Давайте взглянем на образец файла /etc/fstab :

Каждая не комментированная строка выше в /etc/fstab определяет раздел блочного устройства, точку монтирования, тип ФС и её опции, используемые при монтировании, а также два числовых поля. Первое числовое поле используется, чтобы сообщить какие файловые системы требуют резервного копирования с помощью команды dump . Конечно, если вы не планируете использовать dump в вашей системе, то вы можете благополучно игнорировать это поле. Последнее поле используется программой проверки целостности ФС fsck , и устанавливает порядок в соответсвии с которым должны проверяться ваши файловые системы во время загрузки. Мы коснемся fsck еще раз позднее.

Посмотрите на строку /dev/hda1 ; вы видите, что /dev/hda1 это ФС ext3, которая должна быть смонтирована в точку /boot . Теперь взгляните на опции монтирования в столбце opts. Опция “noauto” сообщает системе не монтировать /dev/hda1 автоматически при загрузке; без этой опции /dev/hda1 будет автоматически смонтирована в /boot во загрузки системы.

Также обратите внимание на опцию “noatime”, которая отключает запись atime (время последнего доступа) информации на диск. Эта информация в основном не требуется, и выключение всех обновлений atime даст положительный эффект на производительности системы.

Теперь взглянем на строку /proc и заметим опцию “defaults”. Используйте “defaults”, если вы хотите чтобы ФС была смонтирована со стандартными опциями. Т. к. /etc/fstab содержит множество полей, мы не можем просто оставить поле опций пустым.

Также примите во внимание строку /dev/hda2 в /etc/fstab . Эта строка определяет /dev/hda2 как устройство подкачки. Поскольку устройства подкачки не монтируются как ФС, им не назначается и точка монтирования. Благодаря этой записи в /etc/fstab , наше устройство подкачки /dev/hda2 будет автоматически включаться, когда запускается система.

С записью /dev/cdrom , в файле /etc/fstab монтирование CD-ROM будет легче. Вместо того чтобы вводить:

# mount -t iso9660 /dev/cdrom /mnt/cdrom -o ro

Мы теперь можем ввести:

# mount /dev/cdrom

На самом деле, /etc/fstab позволяет нам получить приемущество от использования опции “user”. Эта опция монтирования сообщают системе, что данная конкретная ФС может монтироваться любым пользователем. Это очень удобно для съемных носителей, таких как CD-ROM. Без этой опции монтирования, только пользователь root смог бы использовать CD-ROM.

Размонтирование файловых систем

Как правило, все подключенные ФС размонтируются системой автоматически при выключении или перезагрузке. Когда ФС отмонтирована, то все закешированные в памяти данные ФС сброшены на диск.

Тем не менее, также возможно размонтировать ФС вручную. Перед тем, как ФС будет отключена, вы должны убедиться, что ней нет открытых файлов какими-либо процессами. Затем, используйте команду umount , определив как аргумент имя устройства или точку монтирования:

# umount /dev/hda3

После размонтирования, любые файлы в /mnt , которые были сокрыты прежде подключенной ФС, станут доступны.

Введение в fsck

Если в вашей системе произойдет сбой или она заблокируется по какой-то причине, система не будет иметь возможности корректно отмонтировать ваши ФС. Когда это случиться, они окажутся в непредсказуемом состоянии и их целостность может быть нарушена. Когда система перезагрузится, программа fsck определит, что ФС не были корректно размонтированы и захочет произвести проверку целостности ФС, перечисленных в /etc/fstab .

Важно!

Для ФС, которая будет проверена с помощью fsck , должно быть не нулевое значение в поле “pass” (последнее поле) в /etc/fstab . Обычно, для корневой ФС значение устанавливается в “1”, указывая на то, что она должна быть проверена в первую очередь. У всех других ФС, которые должны быть проверены во время загрузки, значение поля “pass” должно быть “2” или выше. Для некоторых журналируемых ФС, таких как ReiserFS, безопасно иметь значение “0”, поскольку сам программный код журналирования (а не внешний fsck ) заботится о сохранении целостности ФС.

Иногда, мы можете обнаружить, что после перезагрузки fsck не может полностью восстановить частично поврежденную ФС. В таких случаях, всё, что вам нужно сделать, это перевести систему в однопользовательский режим и запустить fsck вручную, передав в качестве аргумента блочное устройство раздела. Поскольку fsck будет производить восстановление его ФС, то может спросить вас об исправлении конкретных дефектов ФС. В основном, вам стоит отвечать “y” (да) на все эти вопросы, разрешая fsck делать свое дело.

Проблемы с fsck

Одна из проблем со сканированием fsck состоит в том, что оно может занять длительное время до завершения, поскольку совокупность метаданных файловой системы (внутренняя структура данных) должна быть просканирована, чтобы убедиться в их целостности. Для особо больших ФС, не редко, для полного завершения fsck требуется более часа.

Для того, чтобы решить эту проблему, были спроектированы новые типы ФС, называемые журналируемые файловые системы. Журналируемые ФС пишут на диск журнал последних изменений метаданных файловой системы. В случае сбоя, драйвер ФС проверяет журнал. Так как журнал содержит точный отчет о последних изменениях на диске, то только эти части метаданных ФС требуют проверки на ошибки. Благодаря этому важному отличию, проверка журналируемой системы на целостность обычно занимает только считанные секунды, независимо от размера ФС. Поэтому журналируемые ФС завоёвывают популярность в сообществе Linux. Больше информации про журналируемые ФС смотрите на статье Funtoo Filesystem Guide, part 1: Journaling and ReiserFS.

За перевод этой части благодарим andrewww. Продолжение следует.

Об авторах

Daniel Robbins

Дэниэль Роббинс — основатель сообщества Gentoo и создатель операционной системы Gentoo Linux. Дэниэль проживает в Нью-Мехико со свой женой Мэри и двумя энергичными дочерьми. Он также основатель и глава Funtoo, написал множество технических статей для IBM developerWorks, Intel Developer Services и C/C++ Users Journal.

Chris Houser

Крис Хаусер был сторонником UNIX c 1994 года, когда присоединился к команде администраторов университета Тэйлора (Индиана, США), где получил степень бакалавра в компьютерных науках и математике. После он работал во множестве областей, включая веб-приложения, редактирование видео, драйвера для UNIX и криптографическую защиту. В настоящий момент работает в Sentry Data Systems. Крис также сделал вклад во множество свободных проектов, таких как Gentoo Linux и Clojure, стал соавтором книги The Joy of Clojure.

Aron Griffis

Эйрон Гриффис живет на территории Бостона, где провел последнее десятилетие работая в Hewlett-Packard над такими проектами, как сетевые UNIX-драйвера для Tru64, сертификация безопасности Linux, Xen и KVM виртуализация, и самое последнее — платформа HP ePrint. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».

Команда fdisk в Linux

В Linux существует множество способов разметки диска, создания на нём разделов и просмотра уже существующих. Это утилиты parted и cfdisk в терминале и графическая утилита gparted. Однако сегодня мы поговорим про самую простую утилиту для разметки диска в терминале — fdisk.

Именно она используется чаще всего, если надо посмотреть как диски и разделы доступны на компьютере. Далее рассмотрим основные опции утилиты, её синтаксис, а также примеры использования.

Опции и синтаксис fdisk

Синтаксис утилиты ничем не отличается от других команд Linux:

$ fdisk опции устройство

Ей надо передать опции, согласно действия, которое вы хотите выполнить, а также раздел диска или устройство к которому эти действия надо применить. Давайте теперь рассмотрим опции fdisk:

  • -B, —protect-boot — не стирать первые 512 байт диска чтобы не повредить загрузочную запись;
  • -L, —color — настройка цветного вывода, возможные значения auto, never или always;
  • -l, —list — вывести все разделы на выбранных устройствах или если устройств не задано, то на всех устройствах;
  • -o, —output — указывает какие поля данных надо показывать в выводе программы, доступные поля рассмотрим ниже;
  • -u, —units — настраивает формат вывода размера разделов, доступные значения: cylinders, sectors, по умолчанию используется sectors;
  • -w, —wipe — режим стирания файловой системы или RAID с диска, возможные значения auto, never или always по умолчанию используется auto;
  • -W, —wipe-partition — режим стирания файловой системы или RAID из только что созданного раздела. Возможные значения аналогичны предыдущей опции;
  • -h, —help — показать справку по утилите;
  • -v, —version — опция выводит версию утилиты.

Опции используются для настройки работы утилиты, мы рассмотрели только самые главные, которые могут вам пригодится, теперь перейдём к командам:

  • a — включение или выключения флага boot для раздела;
  • d — удалить раздел;
  • F — показать свободное место;
  • l — вывести список известных типов разделов;
  • n — создать новый раздел;
  • p — вывести таблицу разделов;
  • t — изменение типа раздела;
  • i — вывести информацию о разделе;
  • I и O — записать или загрузить разметку в файл сценария sfdisk;
  • w — записать новую таблицу разделов на диск;
  • q — выйти без сохранения;
  • g — создать пустую таблицу разделов GPT;
  • o — создать пустую таблицу разделов MBR.

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

Примеры использования команды fdisk

1. Список дисков и разделов

Чтобы посмотреть список доступных вам дисков и разделов на них используйте опцию -l:

Утилита покажет все блочные устройства. На снимке есть /dev/sda, это обычный жесткий диск и /dev/nvme0n1 — это M.2 накопитель, а также там есть есть несколько /dev/loop* устройств, созданных ядром, которые лучше не трогать.

2. Интерактивный режим

Большинство операций fdisk по разметке дисков выполняются в интерактивном режиме. Чтобы запустить fdisk в интерактивном режиме передайте утилите блочное устройство которое надо разметить. В моём примере, это /dev/nvme0n1:

sudo fdisk /dev/nvme0n1

Вам не обязательно возвращаться к этой статье, когда вы захотите снова поработать с программой, посмотреть доступные команды можно выполнив команду m:

3. Просмотр таблицы разделов

Чтобы посмотреть текущий тип таблицы разделов, а также доступные разделы на диске используйте команду p:

В данном примере на диске уже есть несколько разделов, а таблица разделов используется MBR (dos).

4. Создание таблицы разделов

Давайте создадим новую таблицу разделов GPT. Для этого используйте команду g. Для таблицы разделов MBR нам бы понадобилась команда o.

5. Создание разделов

Чтобы создать раздел используйте команду n. Команда спросит какой номер раздела надо присвоить этому разделу, затем спросит сектор начала раздела, эти значения можно оставить по умолчанию, так как утилита предлагает минимальные доступные. Далее надо указать размер раздела. Это можно сделать тремя способами:

  • указать количество секторов раздела;
  • указать последний сектор раздела;
  • указать размер раздела в килобайтах, мегабайтах или гигабайтах, обозначения стандартные K,M,G.

Давайте создадим три раздела разными способами:

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

Во втором способе укажем размер раздела в секторах. Для получения раздела размером 1 гигабайт нам понадобится примерно 2 000 000 секторов. По умолчанию размер сектора 512 байт, поэтому 2 000 000 * 512 получится примерно 1024 000 000 байт:

И в третьем способе с помощью калькулятора добавим к первому сектору раздела те же два миллиона:

На этом создание разделов fdisk завершено. А вот форматирование разделов в fdisk невозможно, для этого придется воспользоваться утилитой mkfs.

6. Тип раздела

Кроме обычных разделов для пользовательских файлов существуют и другие типы разделов, например раздел EFI, BIOS boot, Windows Recovery, Linux swap, этот тип влияет на назначение раздела, например, раздел EFI не будет использоваться пока для него не будет выбран правильный тип. Чтобы изменить тип раздела используйте команду t:

Для вывода всех доступных типов и их номеров используйте команду L:

Для выхода из списка разделов нажмите q, а затем просто наберите номер нужного типа:

7. Удаление раздела

Чтобы удалить раздел выполните команду d, а затем введите его номер:

Вот так просто выполняется удаление.

8. Загрузочный раздел

При загрузке компьютера с диска, на котором используется таблица разделов MBR, BIOS ищет раздел, отмеченный как загрузочный и начинает искать загрузчик именно на нём. Чтобы сделать раздел загрузочным если он ещё не загрузочный или наоборот сделать его не загрузочным используйте команду a:

Загрузочность отмечается звездочкой в выводе команды p. В таблице разделов GPT для записи загрузчика используется раздел с типом BIOS boot, а флага загрузочности здесь уже нет.

9. Применение изменений

Все изменения, которые вы сейчас вносили, ещё не записаны на диск. Для их записи надо выполнить команду w:

После записи изменений программа завершится.

Выводы

В этой статье мы рассмотрели как пользоваться fdisk в Linux, как создавать разделы с помощью этой утилиты, а также как выбрать тип диска. Несмотря на все возможности утилиты намного удобнее пользоваться gparted или же cfdisk если надо разметить диск в терминале. Последнюю мы разберем в одной из следующих статей.

Команда Fdisk в Linux (Создание разделов диска) 6 мин для чтения

Главное меню » Linux » Команда Fdisk в Linux (Создание разделов диска)

В Linux есть несколько инструментов, которые вы можете использовать для создания разделов, fdisk является наиболее часто используемым.

В этой статье мы поговорим о команде fdisk.

fdisk – утилита командной строки на основе меню, позволяющая создавать таблицы разделов на жестком диске и управлять ими

Помните, что fdisk это опасный инструмент, и его следует использовать с особой осторожностью. Только root или пользователи с привилегиями sudo могут манипулировать таблицами разделов.

Список разделов

Чтобы отобразить таблицу разделов устройства, вызовите команду fdisk с параметром -l, а затем имя устройства. Например, чтобы вывести список таблицы разделов /dev/sda и разделов, которые вы запустите:

Если в качестве аргумента не указано устройство, fdisk напечатает таблицы разделов всех устройств, перечисленных в файле /proc/partitions:

Вывод выше показывает текущие таблицы разделов всех устройств, подключенных к вашей системе. Как правило, имена устройств SATA соответствуют шаблону /dev/sd[a-z], а имена устройств NVMe имеют следующий шаблон /dev/nvme[1-9]n[1-9].

Создание таблицы разделов

Чтобы начать разбиение диска, запустите fdiskс именем устройства. В этом примере мы будем работать над /dev/sdb:

Командная строка изменится, и откроется диалоговое окно fdisk, в котором вы можете вводить команды:

Чтобы получить список всех доступных команд, введите m:

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

fdisk поддерживает несколько схем разбиения. MBR и GPT являются двумя наиболее популярными стандартами схем разделов, которые хранят информацию о разделениях на диске другим способом. GPT – это более новый стандарт, имеющий много преимуществ по сравнению с MBR. Основные моменты, которые следует учитывать при выборе стандарта разделения:

  • Используйте MBR для загрузки диска в устаревшем режиме BIOS.
  • Используйте GPT для загрузки диска в режиме UEFI.
  • Стандарт MBR поддерживает создание раздела на диске размером до 2 TiB. Если у вас диск объемом 2 TiB или больше, используйте GPT.
  • MBR имеет ограничение в 4 основных раздела. Если вам нужно больше разделов, один из основных разделов может быть установлен как расширенный раздел и содержать дополнительные логические разделы. С GPT вы можете иметь до 128 разделов. GPT не поддерживает расширенные или логические разделы.

В этом примере мы будем использовать таблицу разделов GPT.

Введите, gчтобы создать новую пустую таблицу разделов GPT:

Вывод будет выглядеть примерно так:

Следующим шагом является создание новых разделов.

Мы создадим два раздела. Первый размером 100 ГиБ, второй займет оставшееся место на диске.

Запустите команду n для создания нового раздела:

Вам будет предложено ввести номер раздела. Нажмите «Enter», чтобы использовать значение по умолчанию ( 1):

Далее команда попросит вас указать первый сектор. Как правило, всегда рекомендуется использовать значения по умолчанию для первого значения. Нажмите «Enter», чтобы использовать значение по умолчанию ( 2048):

В следующем приглашении вам нужно будет ввести последний сектор. Вы можете использовать абсолютное значение для последнего сектора или относительное значение для начального сектора, используя символ +, следующий за размером раздела. Размер может быть указан в кибибайтах (K), мебибайтах (M), гибибайтах (G), тебибайтах (T) или пебибайтах (P).

Введите +100G, чтобы установить размер раздела 100 GiB:

По умолчанию тип нового раздела установлен как “Linux filesystem”, что в большинстве случаев подходит. Если вы хотите изменить тип, нажмите l, чтобы получить список типов разделов, а затем нажмите t, чтобы изменить тип.

Давайте создадим второй раздел, который займет оставшееся место на диске:

Используйте значения по умолчанию для номера раздела, первого и последнего секторов. Это создаст раздел, который будет использовать все доступное пространство на диске.

Закончив создание разделов, используйте команду p для отображения новой таблицы разделов:

Сохраните изменения, выполнив команду w:

Команда запишет таблицу на диск и выйдет из меню fdisk.

Ядро прочитает таблицу разделов устройства без необходимости перезагрузки системы.

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

Теперь, когда разделы созданы, следующим шагом является форматирование разделов и их монтирование в системное дерево каталогов.

Мы отформатируем оба раздела в ext4:

В этом примере будут монтироваться разделы каталогов /mnt/audio и /mnt/video.

Создайте точки монтирования с помощью команды mkdir:

Смонтируйте новый раздел:

Разделы останутся подключенными, пока вы не размонтируете их или не выключите машину. Чтобы автоматически смонтировать раздел при запуске системы Linux, определите монтирование в файле /etc/fstab.

Все! Теперь вы можете использовать новые разделы для хранения ваших файлов.

Вывод

fdisk – это инструмент командной строки для создания схем разделов. Для получения дополнительной информации о команде fdisk введите man fdisk в свой терминал.

Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

http://habr.com/ru/post/116907/

Команда fdisk в Linux

Команда Fdisk в Linux (Создание разделов диска)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *