Linux — самая «щедрая» desktop ОС в плане выбора файловых систем и их использования. Глупо не воспользоваться таким ресурсом, ведь при умелом подходе мы сможем сделать нашу систему быстрее и безопаснее.
Итак, как недостойное try-юниксоида отметаем предложение «распилить диск одним куском», произрастающее явно из win-мира. У нас тут свои идеи имеются, что строить и куда копать.
Однако, для начала следует определится, как именно будет использоваться данный ПК после установки на него системы. Тактика разметки для рабочей станции заметно отличается от тактики разметки для сервера. Далее я буду указывать предпочтительные настройки для своего домашнего semi-headless сервера — эдакого промежуточного варианта, а в примечании — более оптимальные параметры для (возможного) узкоспециализированнного решения
Обратите внимание на ТИП — ext2 — использование «старого» формата позволит избежать любых возможных проблем с любым загрузчиком.
Имеет смысл разместить на самостоятельном первичном разделе.
Вновь обращаю внимание на ТИП — swap и отсутствие точки монтирования — разделу подкачки она не требуется.
Размещаем на расширенном разделе вместе с остальными партициями.
/dev/hda3 10G ext3 /
Это, как видно из точки монтирования — корень (или root) нашей файловой системы. Все необходимые системе каталоги, не получившие от нас собственных разделов, будут размещаться здесь. Включая каталоги с устанавливаемыми программами и обновлениями.
И снова к типу файловой системы — ext3 — это журналируемая версия ext2, обеспечивающая более быструю проверку в случае предыдущего аварийного завершения работы ПК. Поверьте мне, когда я пишу «более быструю» — я подразумеваю «ОЧЕНЬ быструю в сравнении с ext2». Выбирайте этот тип файловой системы, если не знаете, что Вам взять.
PS. « Журналируемая» — не синоним «избыточная». Журнал файловой системы используется ею для своих собственных нужд (если Вам интересно — для непротиворечивости ссылочной целостности), на Ваши данные система чихать хотела. Отсюда совершенно логичное правило — хочешь сделать хорошо — сделай сам! Делайте бекапЫ самостоятельно.
PS. Хотя я бы рекомендовал расходовать НЗ постепенно, заниматься расширением раздела с захватом пустого пространства не так весело, как перераспределять место между двумя забитыми смежными. Я уж не говорю о потенциальной небезопасности передвижении стен, за которыми кто-то сидит :).
/dev/hda5 10G ext3 /home
О, мы уже дошли до нашего «хомяка»! Раздел home, как это и следует из названия, дает пристанище всем личным директориям пользователей, с их, пользователей, картинками, документами и прочим нехитрым скарбом. Кроме того в личной «папке» пользователя лежат разнообразные настройки и прочая и прочая. Отсюда вполне логичная арифметика — на каждого пользователя стоит отводить по 8-10G места. Если Вы собираетесь активно использовать систему в содружестве с кем-то еще — заложите места побольше моих 10G.
PS. Не то, чтобы не очевидно, но на всякий случай напоминаю — при создании на своем ПК ftp-сервера в этом же разделе поселится и «пользователь» FTP, ему так же, как и Вам, будет нужно место для директорий upload, download и что Вы там еще придумаете. Имеет смысл обдумать этот вопрос заранее. Или «расширить» директорию, подмонтировав в нее на место /home/ftp/upload какой-нибудь отдельный жесткий диск, если Вы жестко собрались что-то обменивать.
PPPS. Совершенно очевидно, что фраза «делайте бекапы» означает:
/dev/hda6 10G ext3 /var
Вот мы и дошли до последнего (по моему скромному мнению) обязательного раздела нашей системы. Довольно странная директория на самом деле вполне обыденна — там лежат всякоразнообразные логи /log, директория /tmp, директория /www, содержащая документы и скрипты Вашего возможного сервера и директория /lib, в которой к примеру, лежат файлы Вашей базы MySQL. Если Вы точно не планируете делать общедоступный сервер с активной нагрузкой — можете уполовинить предложенные мною 10G — вероятнее всего проблем не будет.
UP. Всем, кого мысль о разбивке на «о ужас» 4-5 разделов так коробит:
1) Сделать деление на разделы нужно только один раз, при установке системы. Вам не нужно каждый раз по памяти монтировать каталоги при загрузке. Не понимаю, что вас беспокоит.
2) Пока о налоге на «лишние разделы» как-то не слышал. Не вижу причин делать разделов меньше, чем того хочется.
В Linux существует множество способов разметки диска, создания на нём разделов и просмотра уже существующих. Это утилиты parted и cfdisk в терминале и графическая утилита gparted. Однако сегодня мы поговорим про самую простую утилиту для разметки диска в терминале — fdisk.
Именно она используется чаще всего, если надо посмотреть как диски и разделы доступны на компьютере. Далее рассмотрим основные опции утилиты, её синтаксис, а также примеры использования.
Синтаксис утилиты ничем не отличается от других команд Linux:
Ей надо передать опции, согласно действия, которое вы хотите выполнить, а также раздел диска или устройство к которому эти действия надо применить. Давайте теперь рассмотрим опции fdisk:
Опции используются для настройки работы утилиты, мы рассмотрели только самые главные, которые могут вам пригодится, теперь перейдём к командам:
Теперь вы знаете основные опции и команды fdisk, давайте рассмотрим использование программы.
- Примеры использования команды fdisk
- Интерактивный режим
- Просмотр таблицы разделов
- Создание таблицы разделов
- Создание разделов
- Тип раздела
- Удаление раздела
- Применение изменений
- Выводы
- Файловые системы, разделы и блочные устройства
- Уровни абстрагирования
- Введение в fdisk
- Внутри fdisk
- Обзор блочных устройств и разделов
- Разметка диска
- Типы разделов
- Использование fdisk для создания разделов
- Комментарий к примеру
- Начало работы
- Удаление существующих разделов
- Создание загрузочного раздела
- Создание раздела подкачки
- Делаем загрузочным
- Расширенные и логические разделы
- Создание файловых систем
- Файловая система ext2
- Файловая система ext3
- Файловая система ReiserFS
- Файловая система XFS
- Файловая система JFS
- Рекомендации к файловым системам
- Создание файловых систем ext2, ext3, ReiserFS
- Создание файловых систем XFS и JFS
- Монтирование файловых систем
- Еще немного о монтировании
- Опции монтирования
- Знакомство с fstab
- Образец fstab
- Размонтирование файловых систем
- Введение в fsck
- Проблемы с fsck
- Об авторах
- Aron Griffis
- Опции и команды parted
- Разметка диска в Linux
Примеры использования команды fdisk
1. Список дисков и разделов
Чтобы посмотреть список доступных вам дисков и разделов на них используйте опцию -l:
sudo fdisk -l
Утилита покажет все блочные устройства. На снимке есть /dev/sda, это обычный жесткий диск и /dev/nvme0n1 — это M.2 накопитель, а также там есть есть несколько /dev/loop* устройств, созданных ядром, которые лучше не трогать.
Интерактивный режим
Большинство операций fdisk по разметке дисков выполняются в интерактивном режиме. Чтобы запустить fdisk в интерактивном режиме передайте утилите блочное устройство которое надо разметить.
Просмотр таблицы разделов
Чтобы посмотреть текущий тип таблицы разделов, а также доступные разделы на диске используйте команду p:
В данном примере на диске уже есть несколько разделов, а таблица разделов используется MBR (dos).
Создание таблицы разделов
Давайте создадим новую таблицу разделов GPT. Для этого используйте команду g. Для таблицы разделов MBR нам бы понадобилась команда o.
Создание разделов
Чтобы создать раздел используйте команду n. Команда спросит какой номер раздела надо присвоить этому разделу, затем спросит сектор начала раздела, эти значения можно оставить по умолчанию, так как утилита предлагает минимальные доступные. Далее надо указать размер раздела. Это можно сделать тремя способами:
Давайте создадим три раздела разными способами:
Первый раздел создадим с помощью обычных единиц измерения. Перед ними надо ставить плюс, так как это место, которое добавляется к первому сектору раздела.
Во втором способе укажем размер раздела в секторах. Для получения раздела размером 1 гигабайт нам понадобится примерно 2 000 000 секторов. По умолчанию размер сектора 512 байт, поэтому 2 000 000 * 512 получится примерно 1024 000 000 байт.
И в третьем способе с помощью калькулятора добавим к первому сектору раздела те же два миллиона:
На этом создание разделов fdisk завершено. А вот форматирование разделов в fdisk невозможно, для этого придется воспользоваться утилитой mkfs.
Тип раздела
Кроме обычных разделов для пользовательских файлов существуют и другие типы разделов, например раздел EFI, BIOS boot, Windows Recovery, Linux swap, этот тип влияет на назначение раздела, например, раздел EFI не будет использоваться пока для него не будет выбран правильный тип. Чтобы изменить тип раздела используйте команду t:
Для вывода всех доступных типов и их номеров используйте команду L:
Для выхода из списка разделов нажмите q, а затем просто наберите номер нужного типа:
Удаление раздела
Чтобы удалить раздел выполните команду d, а затем введите его номер:
Вот так просто выполняется удаление.
Применение изменений
Все изменения, которые вы сейчас вносили, ещё не записаны на диск. Для их записи надо выполнить команду w:
После записи изменений программа завершится.
Выводы
В этой статье мы рассмотрели как пользоваться fdisk в Linux, как создавать разделы с помощью этой утилиты, а также как выбрать тип диска. Несмотря на все возможности утилиты намного удобнее пользоваться gparted или же cfdisk если надо разметить диск в терминале. Последнюю мы разберем в одной из следующих статей.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
У многих начинающих пользователей линукс возникают сомнения, как правильно разбить жесткий диск. Постараюсь немного облегчить муки выбора нашим коллегам.
У нас в распоряжении есть — физическая разбивка дисков на разделы(fdisk, gparted), соф-RAID (mdadm), менеджер логических дисков (LVM), ширование dm-crypt (остальным не стоит забивать голову).
Пути разбивки дисков неисповедимы, поэтому мы начнем с самого простого.
1. Физическая разбивка дисков
Это самый простой, надежный и совместимый «дедовский» метод. Он позволяет четко очертить границы разделов и их взаимное положение на диске.
При разбивке диска можно учесть его физические особенности и получить некоторый прирост производительности. Дело в том, что ближе к краю диска скорость чтения может быть в несколько раз выше, чем ближе к центру. Соответственно, если расположить например /boot(128 мб), swap (memory * 2 or 2.5), /(root) то мы получаем хорошую скорость загрузки и работы с разделом подкачки. Если есть несколько дисков, то можно расположить swap в начале каждого. Но парится со swap есть смысл, если вы работаете с большими объемами данных — linux не использует swap без крайней нужды. (проверьте free -m). Отказываться от использования swap крайне не рекомендуется, так как linux хорошая система, но чудес не бывает. Открыв файл на 1ГБ можно заблокировать систему намертво без возможности разблокирования.
Разбивка диска на большое количество разделов оправдана только, если это делается для какой-то особой цели. В других случаях — достаточно обойтись простейшим / (root) и swap.
Очень часто пользователи отделяют /home от / (root) — это не имеет никакого практического смысла в однопользовательских системах. Обычно, / (root), /var, /home разделяют на серверах, чтобы пользователи со злым умыслом не заполнили логи или свою домашнюю директорию. Кстати, смонтировать /home с noexec можно и не делая отдельного раздела (man mount).
Если вы пользуетесь парралельно windows то я рекомендую использовать FAT32 для разделов с музыкой/фильмами, к которым вы хотите иметь доступ в обоих системах (и ни в коем случае не делать /home или домашнюю папку в FAT32!!). N TFS хорошо поддерживается, но недостаточно, чтобы ей пользоваться каждый день (чтобы снять unclean shutdown который не дает смонтировать раздел- нужно грузить windows), ошибки в файловой системе могут вызывать подвисания и потерю данных (привет жадному Биллу).
Запомните: черезмерная разбивка — корень всех бед. Разбивать диски «особым» образом нужно только под КОНКРЕТНУЮ задачу.
3. Советы по оптимизации
/boot можно сделать в файловой системе ext2 — она быстрей, чем ext3 и этого будет достаточно.
На активно использующемся разделе можно отключить access time — флаг noatime. Так часто делают на веб-серверах для уменьшения нагрузки на жесткий диск.
Как показала многолетняя практика, не стоит надеяться на надежность простого либо навороченного решения. Стоит использовать самое удобное и делать регулярный rsync на внешний носитель. В таком случае отпрадают вопросы на счет восстановления данных, которые при любом решении (особенно при шифровании) сильно усложняют жизнь. Например беды на шированной партиции при наличии Luks могут вывести систему из строя без возможности восстановления данных. Шифрованные данные более подвержены сильным повреждениям, чем нешифрованные.
(советуйте, добавлю)
В linux можно сделать абсолютно все, что угодно и это будет работать. Главное, руководствоваться здравым смыслом и не брезговать читать man вместо довольно часто вредных и устаревших howto.
Итак, резюмируем:
Для десктопов и ноутбуков оптимальный метод разбивки — полное отсутствие разбивки.
Для тех, кто не любит бекапиться, использовать «сложные методы» вроде LVM. Может подойти вариант:
swap (memory * 2), / (остальное)
Для юзеров убунты достаточно выбрать: Использовать все свободное место под LVM, тогда у вас останется много возможностей «на вырост».
Если разбивать /, /home то вы рано или поздно столкнетесь с нехваткой места на одном из разделов.
Первый отрывок четвертой части серии руководств для новичков повествует о блочных устройствах, разделах и файловых системах. Вы научитесь размечать жесткий диск с помощью утилиты fdisk, создавать файловые системы и монтировать их. Познакомитесь с синтаксисом конфигурационного файла fstab.
Навигация по основам Linux от основателя Gentoo
Добро пожаловать в «Системное администрирование», последнюю из четырех частей руководства, предназначенного для подготовки к экзамену “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, вас поприветствует приглашение, которое выглядит примерно так:
Command (m for help):
Введите 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 МБ.
Создание раздела подкачки
Теперь, давайте создадим раздел подкачки. Чтобы это сделать введите “n” для создания нового раздела, затем “p” чтобы сообщить fdisk что вы хотите создать первичный раздел. Затем введите “2” для создания второго первичного раздела, /dev/hda2 в нашем примере. Затем будет предложено ввести номер первого цилиндра, нажмите Enter, когда будет предложено ввести номер последнего цилиндра, введите “+512M” для создания раздела подкачки, размером 512 МБ. После того, как вы сделаете это, введите “t” для установки типа раздела, и затем введите “82” для установки типа ”Linux swap”. После завершения этих шагов, введите “p” для просмотра таблицы разделов, она должна быть похожей на эту:
Делаем загрузочным
В завершении мы должны установить флаг «загрузочный» на наш загрузочный раздел и записать изменения на диск. Для отметки раздела /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 – команда для инициализации раздела подкачки:
В отличии от обычных файловых систем, разделы подкачки не монтируются. Вместо этого, их активируют используя команду 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:
Создание файловых систем XFS и JFS
Для создания файловой системы XFS используется команда mkfs.xfs:
# mkfs.xfs /dev/hda3
Вы можете добавить к команде mkfs.xfs дополнительные флаги: “-d agcount=3 -l size=32m”. Флаг “-d agcount=3” снизит количество групп распределения. X FS будет настаивать на использовании по крайней мере одной группы распределения на 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 систем, которая содержит разделы, настроенные аналогично нашему примеру:
/dev/root on / type reiserfs (rw,noatime)
none on /dev type devfs (rw)
proc on /proc type proc (rw)
tmpfs on /dev/shm type tmpfs (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hde1 on /boot type ext3 (rw,noatime)
Вы также можете просмотреть аналогичную информацию введя cat /proc/mounts. Корневая файловая система /dev/hda3 будет смонтирована автоматически ядром при загрузке и получит символьное имя /dev/hda3. На нашей системе и /dev/hda3, и /dev/root указывают на одно и то же блочное устройство, лежащее в основе, используя символическую ссылку:
Еще немного о монтировании
Когда используется команда 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 будет автоматически включаться, когда запускается система.
Размонтирование файловых систем
Как правило, все подключенные ФС размонтируются системой автоматически при выключении или перезагрузке. Когда ФС отмонтирована, то все закешированные в памяти данные ФС сброшены на диск.
Тем не менее, также возможно размонтировать ФС вручную. Перед тем, как ФС будет отключена, вы должны убедиться, что ней нет открытых файлов какими-либо процессами. Затем, используйте команду umount, определив как аргумент имя устройства или точку монтирования.
Введение в 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.
Об авторах
Крис Хаусер был сторонником 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. В свободное от программирования время Эйрон предпочитает размыщлять над проблемами программирования катаясь на своем велосипеде, жонглируя битами, или болея за бостонскую профессиональную бейсбольную команду «Красные Носки».
При переустановке системы, установке нового дистрибутива или просто реорганизации файловых систем мы часто имеем дело с жесткими дисками. Часто нужно добавлять, удалять или изменять размер разделов, управлять их флагами или конвертировать файловые системы. Для этого в Linux есть достаточно различных инструментов как с графическим интерфейсом, так и консольных. Разобраться в графическом интерфейсе Gparted, я думаю вам не составит труда, но в некоторых случаях бывает нужна разбивка жесткого диска на разделы linux в терминале, без доступа к Х серверу, а это может стать серьезной проблемой.
В этой статье мы разберем как выполнять основные операции, которые мы привыкли делать в Gparted, такие как разметка диска, удаление и создание раздела, в терминале, а поможет в этом команда parted Linux. Сначала рассмотрим саму команду parted.
Опции и команды parted
У parted всего несколько опций и огромное количество команд.
Команд не очень много, но даже помнить их все вовсе не обязательно. Рассмотрим только те, которые нам пригодятся в сегодняшних примерах:
Раньше поддерживались также опции работы с файловой системой mkfs, check, mkpartfs но начиная с версии 2.4 они были удаленны. Но программа не стала хуже.
Я понимаю что сейчас разметка дисков в linux для вас непонятна и расплывчата, но с примерами станет намного яснее. Больше не будем о теории, перейдем к примерам.
Разметка диска в Linux
Во всем, что вы изучаете нужна практика и работа с жесткими дисками linux не исключение. Но практиковаться на реальном диске, рискуя повредить файловую систему не совсем правильно, а создавать виртуальную машину для таких целей слишком непрактично. Но есть решение. В Linux все считается файлами, и жесткий диск в том числе представлен в виде файла. Из этого выплывает интересная возможность. Мы можем использовать обычный файл вместо жесткого диска для своих экспериментов.
Создадим себе тестовый полигон командой:
sudo dd if=/dev/zero of=/disk.img count=2000 bs=1M
Таким образом, мы получим файл размером 2000 мегабайт, заполненный нулями, с которым можно спокойно работать. Запустим parted, передав ему вместо устройства наш файл:
sudo parted /disk.img
Когда надо будет работать с реальным диском, просто передайте путь к файлу его устройства утилите:
sudo parted /dev/sda
Программа запустится в интерактивном режиме и вы сможете выполнять нужные команды. Сначала попытаемся посмотреть список разделов на устройстве:
Он пуст потому что даже нет таблицы разделов. Пока её нет, разметка дисков в Linux не может быть выполнена, нам предстоит ее создать. Для этого воспользуйтесь командой mktable:
(parted) mktable gpt
Будем мы создали таблицу разделов типа gpt, но можно выбрать одну из этих: aix, amiga, bsd, dvh, gpt_sync_mbr, gpt, mac, msdos, pc98, sun, loop
Теперь давайте создадим новый раздел с файловой системой ext2 размером 100 мегабайт. Для этого есть команда mkpart, как вы помните ей нужно передать три параметра: тип раздела, файловую систему и координаты. Тип раздела может быть: primary, logical, extended (первичный, логический и расширенный).
В gpt можно создавать нужное количество первичных разделов и не задумываться об их типе. Это все было создано для MBR, в этой таблице есть ограничение на количество первичных разделов — только четыре. Поэтому приходилось создавать три первичных и один расширенный, в который вкладывались уже сколько нужно логических.
Ну так вот, создаем первичный:
(parted) mkpart primary ext2 0 400М
Поскольку это первый раздел, начинаем мы с нуля, а заканчиваем нужным нам размером — 400 мегабайт.
Смотрим список разделов еще раз:
Создадим еще несколько разделов, например для корня системы и для домашней папки:
Параметр -0 означает вести отсчет от конца раздела, таким образом будет занято все доступное пространство под третий раздел. Смотрим что получилось:
Работа с диском в Linux осуществляется по их номерам. Давайте уменьшим последний раздел и создадим после него ещё один:
(parted) resizepart 3 1600M
Также можно указать нужный размер в процентах:
(parted) resizepart 3 60%
А теперь создание раздела parted:
mkpart primary ext4 1600M -0M
Удалим только что созданный четвертый раздел:
Вот в принципе и все. Разбивка диска на разделы Linux завершена. Работу с файловыми системами мы в этой статье опустим, так как для этого используются уже другие команды, которые мы рассмотрим в одной из следующих статей.
Теперь вы знаете как пользоваться parted Linux и этой информации достаточно чтобы не потеряться в случае, если окажетесь без доступа к графическому интерфейсу и вам понадобится разбивка жесткого диска в консоли Linux.
Для установки Windows достаточно просто выбрать раздел диска. Система сама его отформатирует и установит туда все файлы. Но Linux позволяет намного гибче настроить расположение системы и ее файлов. Во время установки вы можете разместить различные папки с системными или пользовательскими файлами на разных разделах.
Это очень интересная функция, повышающая надежность системы, а также удобство ее использования. Наша сегодняшняя статья ориентирована на новичков, мы рассмотрим как нужно выполнять разбивку диска для установки linux. Поговорим зачем это нужно, какие размеры для разделов выбирать и так далее.