Mkfs

Материал из Wiki Open book
Перейти к: навигация, поиск

Оглавление | Предыдущая страница | Следующая страница


Содержание

Mkfs

Mkfs создает файловые системы.

mkfs [ -V ] [ -t тип ] [ параметры ] файл [ блоки ]

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

При помощи параметра –t определяется тип создаваемой файловой системы. Программа mkfs является оболочкой, в этом можно убедиться, набрав в командной строе mkfs и два раза нажав на символ табуляции.

# mkfs
mkfs           mkfs.cramfs    mkfs.ext3      mkfs.minix     mkfs.reiserfs
mkfs.bfs       mkfs.ext2      mkfs.jfs       mkfs.msdos     mkfs.xfs
#

Как Вы видите, существует много различных программ для создания конкретных файловых систем.

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

Следующий пример показывает, как создать файловую систему типа ext2 в разделе /dev/hda1:

# mkfs -t ext2 /dev/hda1
mke2fs 1.35 (28-Feb-2004)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1310720 inodes, 2621422 blocks
131071 blocks (5.00%) reserved for the super user
First data block=0
80 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.
#

Файловая система создается очень быстро. Дело в том, что при ее создании не происходит форматирование как это принято в файловых системах FAT и NTFS. При создании выделяется суперблок в котором хранится информация о файловой системе, корневая директория и некоторая служебная информация. Затем копия суперблока равномерно распределяется по дисковому пространству, об этом говорит строка Superblock backups stored on blocks:. Все остальное дисковое пространство не форматируется. А зачем? Ведь жесткий диск уже имеет низкоуровневое форматирование, он разделен на блоки. Вот этими блоками в дальнейшем и будет пользоваться драйвер файловой системы. То есть дисковое пространство будет использоваться по мере необходимости. Блоки, используемые файлами, будут описываться в метаданных ( inode) этих файлов.

Так же обратите внимание на то, что в файловой системе ext2 (да и в ext3) заранее выделяется количество inodes. То есть заранее известно максимально возможное количество файлов. В нашем примере на файловую систему объемом 10Гбайт выделено: 1310720 inodes.

Следующая строка говорит о том, что за суперпользователем резервируется 5% дискового пространства. Это значение по умолчанию. Если оно кажется Вам большим, его можно определить при помощи параметра –m, указав число процентов. Например так:

# mkfs -t ext2 -m 2 /dev/hda1

В приведенном примере, при создании файловой системы за суперпользователем резервируется 2%.

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

У меня есть хорошие знакомые, которые недавно начали работать с Linux. Один раз они позвали меня, что бы я проверил, почему у них не работает сервер Samba. Конфигурация сервера была вполне нормальная. Данные об учетных записях пользователей и машин домена хранились в сервере LDAP. И все должно было работать нормально, но почему-то пользователи могли логиниться в домен через раз. Провозившись некоторое время с этим сервером, в файлах журнальной регистрации я обнаружил сообщение от сервера LDAP, что ему нехватает дискового пространства. Как оказалось, раздел размером 100 Мбайт был под завязку наполнен фильмами! Я умолчу о том, что диск был неправильно разбит на разделы и под корневой раздел отводилось 100 Мбайт! То, что в корневой файловой системе сервера хранились фильмы! Они умудрялись сохранять файлы с фильмами работая в системе суперпользователем! Господа, запомните — так работать нельзя! Нельзя постоянно работать суперпользователем! Нельзя всякую ерунду хранить в корневой директории, да еще и с правами root!

Меня окончательно убил их ответ на вопрос:

— Ну как же Вы умудрились так забить диск?

— Так ведь оставалось еще 1,5 Гбайта на диске!

Естественно, для суперпользователя оставалось 1,5 Гигабайта свободного дискового пространства, но для остальных пользователей места на диске больше не было. Поскольку сервер LDAP работал с правами обыкновенного пользователя системы, для него не было свободного пространства и он не мог рабоать нормально.

Обратите внимание на последнии две строки, которые вывела программа mkfs:

This filesystem will be automatically checked every 27 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

«Эта файловая система будет автоматически проверяться каждые 27 подключений или через 180 дней, в зависимости от того, что случиться первым. Используйте tune2fs с параметрами –с или –i для изменения параметров». О чем идет речь? В суперблоке файловой системы есть поле состояние файловой системы. После корректного отключения файловой системы в это поле прописывается состояние clean. Если отключение было не правильным, например, при помощи кнопки Reset, в этом поле записи clean не будет. При старте системы запускается программа проверки файловой системы. Она (программа) смотрит значение поля состояния и если там не clean, выполняет проверку файловой системы. В противном случае, проверка не производится. Но чудес не бывает, в любой программе есть ошибки (если в программе нет ошибок, значит программа выводит на экран «Hello word». И то, все зависит от компилятора, некоторые компиляторы умудрялись и в таких программах делать ошибки). Так и в файловой системе они могут накапливаться. Поэтому, несмотря на состояние файловой системы, ее периодически необходимо проверять. В нашем случае, проверка будет производиться после 27 подключений.

Число, которое определяет после какого количества подключений, будет производиться принудительная проверка — псевдослучайное. В этом можно легко убедиться запустив создание файловой системы ext2 на одном и том же устростве (или файле) несколько раз подряд. Данная мера введена для ускорения загрузки системы: представим себе, что у нас имеется десяток файловых систем, при создании каждой из которых было выбрано, что проверку необходимо производить после 27 подключений. Если эти файловые системы подключались и одключались равное количество раз (что вполне возможно), то после 27-го подключения их все придётся проверить (а сделано это будет при старте системы), и если файловых систем много, и каждая из них имеет значительный размер, то загрузка может затянуться. Назначение же каждой файловой системе псевдослучайного числа подключений, после которого будет производиться проверка, позволит разнести «плановые» проверки на разные загрузки.

Если Ваш сервер очень долго работал без выключения, проверка файловой системы будет обязательно производиться после 180 дней (полгода).

При создании файловой системы можно провести проверку диска на наличие сбойных блоков. Для это необходимо использовать параметр –c. В этом случае произойдет проверка в режиме чтения. Если необходимо провести проверку в режиме записи, параметр –c следует указать два раза. Например так:

# mkfs -t ext2 -c -c /dev/hda1
Внимание! Форматирование файловых систем ext2 и ext3 с проверкой на сбойные блоки — это очень долгая процедура.

Как уже говорилось выше, mkfs — это программа оболочка. В зависимости от параметра –t она вызывает программу, предназначенную для создания конкретной файловой системы.

Для создания файловых систем типа ext2 и ext3 будут вызываться соответственно программы mkfs.ext2 и mkfs.ext3. Но если внимательно к ним присмотреться, то мы увидим, что это просто символьные ссылки на программу mke2fs. Именно последняя программа будет создавать перечисленные выше файловые системы.

# file /sbin/mkfs.ext2
/sbin/mkfs.ext2: symbolic link to `mke2fs'
# file /sbin/mkfs.ext3
/sbin/mkfs.ext3: symbolic link to `mke2fs'
# 

Аналогичная ситуация с mkfs.reiserfs и mkfs.jfs.

# file /sbin/mkfs.reiserfs
/sbin/mkfs.reiserfs: symbolic link to `mkreiserfs'
# file /sbin/mkfs.jfs
/sbin/mkfs.jfs: symbolic link to `jfs_mkfs'
#

А вот mkfs.xfs — это реальная программа, создающая файловую систему XFS.

# file /sbin/mkfs.xfs
/sbin/mkfs.xfs: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), 
dynamically linked (uses shared libs), stripped
#

Давайте рассмотрим эти программы подробнее. Начнем с mke2fs.

mke2fs

Программа предназначена для создания файловых систем типа ext2 и ext3.

mke2fs [параметры] файл

Если указать только файл устройства, то будет создаваться файловая система ext2. Для создания файловой системы ext3 необходимо явно указать параметр –j. В этом случае будет создаваться файл журнала.

По умолчанию размер файла журнала равен 32 Мбайт и он располагается в создаваемой файловой системе. Но Вы можете повлиять на размер журнала и его размещение. Для этих целей следует использовать параметр –J и дополнительные опции.

  • –J size=4M — определяет размер файла журнала.
  • –J device=file — определяет устройство, на котором будет находится файл журнала. Журнал должен быть предварительно создан: mke2fs –O устройство файл.

При помощи параметра –L можно установить метку (label) на файловую систему.

Параметр –m позволяет указать, сколько процентов от объема файловой системы будет зарезервировано за суперпользователем. Значение параметра указывается в процентах.

mkreiserfs

Программа предназначена для создания файловой системы типа reiserfs.

mkreiserfs [параметры] файл

Из параметров программы следует выделить:

  • –s — определяет размер журнала. Значение в блоках.
  • –t — определяет максимальный разер транзакции. Значение в блоках. Размер не должен превышать половину размера журнала.
  • –l — определяет метку файловой системы.

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

# badblocks -b 4096 -o bad_list /dev/hda1
# cat bad_list
2369728
2369762
2369763
2369764
2369765
2369766
2369767
# mkreiserfs -B bad_list /dev/hda1
mkreiserfs 3.6.18 (2003 www.namesys.com)

A pair of credits:
Vladimir Saveliev started as the most junior programmer on the team, and became
the lead programmer.  He is now an experienced highly productive programmer. He
wrote the extent  handling code for Reiser4,  plus parts of  the balancing code
and file write and file read.

The  Defense  Advanced  Research  Projects Agency (DARPA, www.darpa.mil) is the
primary sponsor of Reiser4.  DARPA  does  not  endorse  this project; it merely
sponsors it.

Guessing about desired format.. Kernel 2.6.13-rc3-my is running.
Format 3.6 with standard journal
Count of blocks on the device: 2621408
Number of blocks consumed by mkreiserfs formatting process: 8298
Blocksize: 4096
Hash function used to sort names: "r5"
Journal Size 8193 blocks (first block 18)
Journal Max transaction length 1024
inode generation number: 0
UUID: 7a9e6b5e-cbab-4d52-ad76-1038c3e8cacc
ATTENTION: YOU SHOULD REBOOT AFTER FDISK!
        ALL DATA WILL BE LOST ON '/dev/hda1'!
Continue (y/n):y
Initializing journal - 0%....20%....40%....60%....80%....100%
Syncing..ok

Tell your friends to use a kernel based on 2.4.18 or later, and especially not a
kernel based on 2.4.9, when you use reiserFS. Have fun.

ReiserFS is successfully created on /dev/hda1.
#

Какая же она многословная! Обратите внимание на то, кто разрабатывает эту файловую систему — сплошные соотечественники.

jfs_mkfs

Программа предназначена для создания файловых систем типа JFS.

jfs_mkfs [параметры] файл

У программы не много опций, две из них показаны ниже.

  • –с - Производить проверку на сбойные блоки перед созданием файловой системы.
  • –L - Определяет метку файловой системы.
# jfs_mkfs -c /dev/hda1
jfs_mkfs version 1.1.6, 28-Apr-2004
Warning!  All data on device /dev/hda1 will be lost!

Continue? (Y/N) y
100 percent of the disk has been formatted.

Format completed successfully.
10485688 kilobytes total disk space.
#

mkfs.xfs

Программа предназначена для создания файловой системы типа XFS

mkfs.xfs [параметры] файл

Параметров много, очень много. Некоторые из параметров имеют большое количество дополнительных опций. Рассмотрим некоторые из них.

  • –b - Определяет размер блока. При его указании требуется наличие дополнительной опции: –b size=4096.
  • –i - Определяет параметры inode. Требуется указание дополнительных параметров.
  • –L - Определяет метку файловой системы.
  • –f - Принудительное (force) создание файловой системы.
# mkfs.xfs /dev/hda1
mkfs.xfs: /dev/hda1 appears to contain an existing filesystem (jfs).
mkfs.xfs: Use the -f option to force overwrite.
# mkfs.xfs -f /dev/hda1
meta-data=/dev/hda1              isize=256    agcount=16, agsize=163838 blks
         =                       sectsz=512
data     =                       bsize=4096   blocks=2621408, imaxpct=25
         =                       sunit=0      swidth=0 blks, unwritten=1
naming   =version 2              bsize=4096
log      =internal log           bsize=4096   blocks=2560, version=1
         =                       sectsz=512   sunit=0 blks
realtime =none                   extsz=65536  blocks=0, rtextents=0
#

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

Источник — «http://wiki.kryukov.biz/wiki/Mkfs»
Инструменты
    
Личные инструменты