Ну... это блог, что ещё ожидать от блога?

четверг, 10 июня 2010 г.

Файловая система Ext4 для Linux: часть 4

Эта заметка «Файловая система Ext4 для Linux: часть 4» продолжение первой части о жёстких дисках, и второй части о терминах ФС и файловой системе Ext4fs, и 3-й части о новинках. В этой части дело дошло и до разбора полётов — я (таки) перевёл :-) руководство на mke2fs версии 1.41.11 (14-Mar-2010) т. е. утилиту создания файловых систем семейства Ext, и это было весело хотя кое где и не очень. Вообще же в этом пакете программ откуда родам эта утилита довольного много других интересных вещей, т. е. разных утилит для работы с ФС, всего там есть вот что: e2fsck , debugfs , mke2fs , badblocks , tune2fs , dumpe2fs , logsave , e2image , e2undo , e2label , resize2fs , chattr , lsattr , mklost+found, filefrag, e2freefrag … мда, есть над чем поработать... сисадминам.

Страница руководства утилиты mke2fs

mke2fs - создание файловых систем ext2/ext3/ext4

mke2fs [ -c | -l имя-файла ] [ -b размер-блока ] [ -f размер-фрагмента ] [ -g блоков-на-группу ] [ -G число-групп ] [ -i байтов-на-айнод ] [ -I размер-айнода ] [ -j ] [ -J опции-журнала ] [ -K ] [ -N число-айнодов ] [ -n ] [ -m процент-зарезервированых-блоков ] [ -o ОС-создатель ] [ -O опция[,...] ] [ -q ] [ -r ревизия-ФС ] [ -E расширеные-опции ] [ -v ] [ -F ] [ -L этикетка-тома ] [ -M преды.-точка-монтирования ] [ -S ] [ -t тип-ФС ] [ -T тип-использования ] [ -U UUID ] [ -V ] устройство [ число-блоков ]

mke2fs -O журнальное-устройство [ -b размер-блока ] [ -L метка-тома ] [ -n ] [ -q ] [ -v ] внешний-журнал [ число-блоков ]

ОПИСАНИЕ

mke2fs используется для создания файловых систем типа ext2, ext3, или ext4; обычно ФС пишется на раздел диска. Устройство это специальный файл связанный с устройством хранения (т. е. /dev/hdXX). Число-блоков это число блоков на устройстве. Если не указано, mke2fs автомагически уясняет размер ФС. Если вызывается как mkfs.ext3 то создаётся журнал как если бы была указана опция -j.

Параметры работы для создания наново файловой системы, если они не переопределены опциями ниже, контролируются конфигурационным файлом /etc/mke2fs.conf. Для лучшего знакомства ознакомьтесь со страницей справки mke2fs.conf(5).

ОПЦИИ

-b размер-блока Указать размер блоков в байтах. Приемлемые значения размера блоков 1024, 2048 и 4096 байтов на блок. Если значение не указано, размер эвристически определяется исходя из размера файловой системы и предполагаемого использования ФС (см. опцию -T ). Если значение отрицательное число, тогда mke2fs перейдёт к эвристике для определения подходящего размера блока, с ограничением что размер блока будет как минимум с размер-блока байтов. Эта опция полезна при использовании с определёнными устройствами хранения которые требуют что бы размер блока был множимым от 2k.

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

-E расширенные-опции Установить расширенные опции для ФС. Расширенные опции разделяются запятыми, и могут принимать аргумент используя знак равенства (“=“). Опция -E раньше определялась с помощью -R в ранних версиях утилиты mke2fs. Опция -R по прежнему обрабатывается для обратной совместимости. Поддерживаются нижеследующие расширенные опции:

stride=размер-шага Сконфигурировать ФС для RAID массива с параметром размер-шага к количеству блоков ФС. Это значение есть число читаемых или записываемых на устройство блоков, до осуществления перехода к следующему устройству, что иногда обозначается как размер куска. Это в основном влияет на расположение метаданных ФС, например битовых карт при работе утилиты mke2fs во избежание размещения их на одном устройстве, что может повредить производительности. Это значение также может быть использовано алокатором блоков.

stripe-width=размер-стежка Сконфигурировать ФС для RAID массива с параметром размер-стежка к количеству блоков ФС на стежок. Обычно это размер-шага * N, где N это количество устройств для хранения данных в RAID (т. е. для RAID-5, там есть одно устройство для хранения данных для коррекции ошибок, и поэтому N будет числом устройств в массиве, минус 1). Это позволяет алокатору блоков предотвращать чтение-модификацию-запись данных чётности в RAID стежке, когда это возможно, в период записи данных.

resize=макс-рабочее-увеличение Зарезервировать место так что бы таблица дескрипторов групп блоков могла разрастаться, для поддержки ФС, с количеством блоков для этого равным макс-рабочее-увеличение.

lazy_itable_init[=<0>] Если включено и опция uninit_bg также активирована, таблица айнодов не будет полностью инициализирована утилитой mke2fs. Это заметно ускоряет инициализацию ФС, но также требует что бы ядро завершило инициализацию ФС в фоновом режиме при первом монтировании ФС. Если аргумент опции опущен, то он устанавливается в 1 для включения ленивой инициализации таблицы айнодов.

test_fs Установить пометку в суперблоке ФС, указывающую что она может монтироваться используя экспериментальный код, например код ФС ext4dev.

-f размер-фрагмента Указать размер фрагментов в байтах. (Прим. Фрагмент это файл или часть файла меньшая чем размер блока ФС, эта функция ФС используется для эффективного использования т. е. заполнения физических блоков, вроде бы. На данный момент эта возможность не реализована.)

-F Принудить mke2fs создать файловую систему, даже если указанное устройство не является разделом на специальном блочном устройстве, или если другие параметры не имеют смысла. В порядке принуждения mke2fs к созданию ФС даже если файловая система находится в работе или смонтирована (по настоящему опасное намерение), эта опция должна быть указана дважды.

-g блоков-на-группу Указать число блоков в группе блоков. Обычно у пользователя не может быть причин для установки этого параметра, так как номинальные установки оптимальны для ФС. (Для администраторов которые создают ФС на RAID массивах, предпочтительнее использовать параметр RAID stride как часть опции -E нежели чем манипулировать количеством блоков на группу.) Эта опция обычно используется разработчиками в целях тестирования.

-G число-групп Указать число групп блоков которые будут упакованы вместе для создания большой виртуальной группы (или «flex_bg группы») в ФС ext4. Это улучшает локализацию метаданных и производительность при нагруженной обработке метаданных. Число групп должно быть степенью 2-х и может быть указано только если опция flex_bg включена в ФС.

-i байтов-на-айнод Указать отношение байтов/айнодов. Mke2fs создаёт айнод для каждых байтов-на-айнод байтов из пространства устройства. Чем больше отношение байтов-на-айнод, тем меньше айнодов будет создано. Это значение в общем не должно быть меньше чем размер блока в файловой системе, так как в этом случае будет создано больше айнодов чем вообще может быть использовано. Не забудьте что не возможно увеличить число айнодов в ФС после её создания, так что будьте внимательны выбирая правильное значение для этого параметра.

-I размер-айнода Указать размер айнодов в байтах. Mke2fs сама по себе создаёт 256-байтные айноды. Также в выпусках ядра после версии 2.6.10 и в некоторых ранних ядрах от независимых поставщиков возможно использовать айноды размером больше чем в 128 байтов для хранения расширенных атрибутов для улучшения производительности. Значение размера айнода должно быть его произведением на 2-ва, большим или равным 128. Чем больше размер айнода тем больше займёт места таблица айнодов, и это сократит используемое пространство в ФС и также может негативно повлиять на производительность. Расширенные атрибуты хранимые в больших айнодах не доступны старым версиям ядра, и такие ФС не могут быть смонтированы совсем с ядром версии 2.4. Изменить это значение после создания ФС не возможно.

-j Создать ФС с журналом ext3. Если опция -J не указана, будут использованы номинальные параметры журналирования для создания журнала подходящего размера (исходя из рамеров ФС) хранимого в ФС. Заметьте что вы должны использовать ядро с поддержкой ext3 для того что бы фактически использовать журнал.

-J опции-журнала Создать журнал ext3 используя опции указанные в командной строке. Опции журнала разделяются запятыми, и могут принимать аргумент используя знак равенства (“=“). Поддерживаются следующие опции журнала:


size=размер-журнала Создать внутренний журнал (т. е., хранимый внутри ФС) с размером размер-журнала мегабайтов. Размер журнала должен быть как минимум 1024 блоков файловой системы (т. е., 1 МиБ используя 1 КиБ блоков, 4 МиБ при использовании 4 КиБ блоков, и тп.) и не может быть больше чем 102,400 блоков ФС.

device=внешний-журнал Присоединить ФС к журнальному блочному устройству расположенному на внешний-журнал. Внешний журнал должен быть уже создан используя команду:

mke2fs -O журналируемое-устройство внешний-журнал Заметьте что внешний-журнал должен был быть создан с тем же размером блока как и в новой ФС. В дополнение, хотя и существует возможность присоединения множества ФС к одному внешнему журналу, ядро Linux и e2fsck(8) на данный момент пока не поддерживают разделяемые внешние журналы.

Вместо прямого указания имени устройства, внешний-журнал также может быть указан как LABEL=метка или UUID=UUID для обнаружение внешнего журнала или по метке тома или по UUID хранимому в суперблоке ext2 в начале журнала. Используйте dumpe2fs(8) для отображения метки тома или UUID устройства с журналом. См. также опцию -L утилиты tune2fs(8).

Только одна из опций size или device может быть указана для файловой системы.

-K Хранить, не пытаться отбрасывать блоки при работе mkfs (отбрасывание блоков изначально полезно на устройствах SSD и редких устройствах с реализованным тонким резервированием). (Прим. Здесь что то непонятное, так как block discard это часть техники «тонкого резервирования» места на устройстве хранения и это всё должно работать в работающей ФС а не на момент создания ФС, вроде бы.)

-l имя-файла Читать листинг сбойных блоков из файла. Заметьте что номера блоков в этом листинге должны быть сгенерированы используя тот же размер блока какой используется в mke2fs. В результате опция -c утилиты mke2fs это гораздо более простой и безошибочный метод проверки устройства на сбойные блоки перед его форматированием, так как mke2fs передаст автоматически корректные параметры утилите badblocks.

-L новая-метка-тома Установить метку тома для ФС из значения новая-метка-тома. Максимальная длина метки тома 16 байт.

-m процент-зарезервированых-блоков Указать процент блоков ФС зарезервированных для суперпользователя. Этот процент избегает фрагментации, и позволяет демонам с правами root, таким как syslogd(8), продолжать функционировать корректно после того как непривилегированные процессы уже были лишены возможности записи в файловую систему. Номинально это значение равно 5%.

-M преды.-точка-монтирования Установить последнюю директорию монтирования ФС. Это может быть полезно для утилит которые по последней директории монтирования решают куда ФС должна быть смонтирована.

-n Заставляет mke2fs не создавать фактически ФС, но отображать то что она сделает при создании ФС. Это может быть использовано для определения расположения резервных копий суперблока для определённой файловой системы, до тех пор пока параметры mke2fs которые были переданы совпадают с параметрами переданными когда ФС изначально была создана. (С добавленной опцией -n, конечно!)

-N число-айнодов Переопределить номинальное вычисление числа айнодов которые должны быть выделены на создание ФС (которое основано на числе блоков и значении отношения байтов-на-айнод). Это позволяет пользователю указывать желаемое число айнодов напрямую.

-o ОС-создатель Переопределить номинально значение поля «операционная система создатель» в ФС. Поле «создатель» номинально устанавливается к имени ОС для которой исполняемый файл утилиты mke2fs был скомпилирован.

-O опция[,...] Создать ФС с заданными возможностями (опциями файловой системы), тем самым переопределяя номинальные опции ФС. Возможности включённые номинально определяются отношениями опций в base_features, или в секции [defaults] в конфигурационном файле /etc/mke2fs.conf, или в субсекции [fs_types] для определения типа использования ФС согласно опции -T, далее адаптируются с помощью отношений опций из субсекции [fs_types] для файловой системы и типов использования. Смотрите страницу руководства mke2fs.conf(5) для получения подробностей.

Настройки конфигурации специфичные для типа ФС расположенные в секции [fs_types] переопределят глобальные номинальные настройки в секции [defaults].

Набор опциональных возможностей ФС далее будет изменён используя или набор возможностей определённый этой опцией, или если эта опция не дана, с помощью отношений из default_features, относительно типа создаваемой ФС, или с помощью секции [defaults] в конфигурационном файле.

Набор возможностей ФС состоит из списка опциональных возможностей, разделённых запятой, которые будут активированы. Для отмены возможности, просто предварите имя опции символом (“^“) каретки. Псевдо-опция ФС «none» очистит все опциональные возможности ФС.

dir_index Использовать хешированые б-деревья для ускорения обзора больших директорий.

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

filetype Хранить информацию о типе фалов в записях директорий.

flex_bg Позволить располагать метаданные групп блоков (битовые карты и таблицы айнодов) где угодно на устройстве хранения. В дополнение, mke2fs разместит метаданные каждой группы блоков вместе начиная от первой группы блоков каждой «flex_bg группы». Размер группы flex_bg может быть указан с помощью опции -G.

has_journal Создавать журнал ext3 (как вместе с опцией -j).

journal_dev Создать внешний журнал ext3 на заданном устройстве вместо обычной ext2 ФС. Заметьте что внешний журнал должен быть создан используя тот же размер блока как и ФС которая будет его использовать.

large_file ФС может нести файлы которые больше 2 ГиБ. (Современные ядра устанавливают эту опцию автоматически когда создаётся файл > 2 ГиБ.)

resize_inode Резервировать место что бы таблица дескрипторов групп блоков могла расти в будущем. Полезно при изменении размера работающей ФС с помощью программы resize2fs. Номинально mke2fs попытается зарезервировать достаточно места так что бы ФС могла вырасти в 1024 раз от начального размера. Это может быть изменено при помощи расширенной опции resize.

sparse_super Создать ФС с меньшим количеством резервных копий суперблока (это сохраняет место на больших ФС).

uninit_bg Создать ФС без инициализации всех групп блоков. Эта опция также включает контрольные суммы и статистику наиболее-используемый-айнод в каждой группе блоков. Эта опция может заметно ускорить процесс создания ФС (если включено lazy_itable_init), и также может драматически уменьшить время работы e2fsck. Эта возможность поддерживается только в ФС ext4 в недавних ядрах Linux.

-q Тихое выполнение. Полезно если mke2fs используется в скрипте.

-r ревизия-ФС Установить ревизию ФС для новой файловой системы. Заметьте что ядра версий серии 1.2 поддерживают только ревизию 0 файловой системы. Номинально создаётся ревизия 1 файловой системы.

-S Записать только суперблок и дескрипторы групп. Это полезно если все суперблоки и резервные суперблоки повреждены, и требуется метод последнего шанса. Это заставляет mke2fs пере-инициализировать суперблок и дескрипторы блоков, не затрагивая при этом таблицу айнодов и битовые карты блоков и айнодов. Утилита e2fsck должна быть использована немедленно после применения этой опции, и при этом нет гарантии что каике либо данные будут восстановимы. Критично то что нужно указать корректный размер блока файловой системы при использовании этой опции, или же шанса на восстановление не будет.

-t тип-ФС Указать тип файловой системы (т. е., ext2, ext3, ext4, и тп.) которая будет создана. Если эта опция не указана, mke2fs выберет это значение или исходя из имени своего вызова (для примера, используя имя вида mkfs.ext2, mkfs.ext3 и тп.) или из настроек определённых в файле /etc/mke2fs.conf(5). Эта опция контролирует какие опции ФС используются номинально, основываясь на разделе fstypes в файле /etc/mke2fs.conf(5).

Если опция -O используется явным образом для добавления или удаления опций файловой системы которые должны быть использованы в наново создаваемой файловой системе, результирующий набор опций может оказаться не поддерживаемым указанным типом ФС. (т. е., команда «mke2fs -t ext3 -O extents /dev/sdXX» создаст файловую систему которая не поддерживается реализацией ext3 как оно исполнено в ядре; и команда «mke2fs -t ext3 -O ^has_journal /dev/hdXX» создаст файловую систему не имеющую журнала и поэтому не она будет поддерживаться кодом модуля файловой системы ext3 в ядре Linux.)

-T тип-использования[,...] Указать как файловая система будет использоваться, чтобы утилита mke2fs могла выбрать оптимальные параметры ФС для этого типа использования. Поддерживаемые типы использования определены в конфигурационном файле /etc/mke2fs.conf(5). Пользователь может указать один или больше типов использования используя разделённый запятыми список. Если эта опция не задействована, mke2fs подберёт один номинальный тип использования основываясь на размере создаваемой файловой системы. Если размер файловой системы меньше или равен 3 МиБ, mke2fs использует тип использования floppy (дискета). Если размер файловой системы больше 3-х но меньше или равен 512 МиБ, mke2fs(8) использует тип использования small (малое). Иначе, mke2fs(8) использует номинальный тип использования default (номинал).

-U UUID Создать ФС с указанным UUID.

-v Информативный вывод.

-V Вывести версию mke2fs и завершится.

Комментариев нет:

Отправить комментарий