Использование команды mkfs в linux для форматирования файловой системы на диске или разделе

Разделы жесткого диска

Раздел — часть долговременной памяти жёсткого диска или флеш-накопителя, выделенная для удобства работы, и состоящая из смежных блоков. На одном устройстве хранения может быть несколько разделов.

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

Преимущества использования нескольких разделов

Выделение на одном жёстком диске нескольких разделов даёт следующие преимущества:

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

Структура диска, разбитого на разделы (MBR)

  • Информация о размещении разделов на жёстком диске хранится в таблице разделов, которая является частью главной загрузочной записи (MBR).
  • Раздел может быть либо первичным, либо расширенным.
  • В первом секторе каждого первичного раздела находится загрузочный сектор, отвечающий за загрузку операционной системы с этого раздела. Информация о том, какой раздел будет использован для загрузки операционной системы, тоже записана в главной загрузочной записи.
  • В MBR под таблицу разделов выделено 64 байта. Каждая запись занимает 16 байт. Таким образом, всего на жестком диске может быть создано не более 4 разделов. Когда разрабатывалась структура MBR, это считалось достаточным. Однако, позднее был введён расширенный раздел, в котором можно прописать несколько логических разделов.
  • По правилам расширенный раздел может быть только один. Таким образом, в максимальной конфигурации на жёстком диске может быть сформировано три первичных и один расширенный раздел, содержащий несколько логических.

Первичный (основной) раздел

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

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

Таблица разделов может содержать не более 4 первичных разделов, поэтому были изобретёны расширенный разделы. В расширенном разделе можно создать несколько логических разделов. Логические разделы выстраиваются в цепочку где информация о первом логическом разделе храниться в MBR, а информация о последующем хранится в первом секторе логического раздела. Такая цепочка позволяет (в теории) создавать неограниченное количество разделов, но (на практике) число логических разделов ограничивается утилитами и, обычно, больше 10 логических разделов не создать.

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

Дисковые файловые системы Linux

По большей части в этой статье обсуждается работа с семейством расширенных файловых систем Linux (ext). Однако среди прочих файловых систем Linux поддерживает и множество дисковых файловых систем, например, XFS, ReiserFS, Btrfs (B-tree File System) и JFS (IBM Journaled File System). В зависимости от задач, выполняемых на вашем компьютере и в вашей рабочей среде, какие-то из этих файловых систем могут оказаться более подходящими, чем расширенная файловая система. Тем не менее знакомство с расширенной файловой системой является хорошей отправной точкой, поскольку в большинстве дистрибутивов Linux по умолчанию используется файловая система ext3 или ext4.

Файловая система ext3 является результатом дальнейшего развития более ранней файловой системы ext2 и широко используется в настоящее время. Одним из важных принципиальных отличий ext3 от ext2 является наличие журналирования. Файловая система ext3 обратно совместима с ext2, поэтому для перехода с ext2 на ext3 нет необходимости повторно разбивать диск на разделы. Обычно для этого достаточно запустить команду  с привилегиями пользователя root. Например, если файловая система ext2 используется на втором разделе первого жесткого диска, то для ее преобразования в ext3 достаточно запустить команду .

Помимо журналирования, в ext3 реализован и ряд других улучшений по сравнению с ext2, например, повышенная скорость и надежность. Не обладая возможностями журналирования, файловая система ext2 страдала из-за «грязных» перезагрузок операционной системы (например, в случае непредвиденного отключения электропитания или краха системы). Во время загрузки компьютера каждую файловую систему ext2 нужно было проверять перед ее монтированием. Учитывая современные объемы файловых систем, время проверки целостности в большинстве случаев оказывается неприемлемым, поскольку этот долгий процесс существенно снижает доступность системы. В журналируемых файловых системах (как, например, NTFS) данные записываются на диск и помечаются либо как целостные, либо как нецелостные. Поэтому при «грязной» перезагрузке проверяются только те файлы, помеченные как нецелостные, что устраняет необходимость проверки всей файловой системы. В ext3 предусмотрено три режима журналирования:

  • Journal. Полное журналирование данных. Записываются не только метаданные, но и сами данные. Это самый медленный режим.
  • Ordered. Формально записываются только метаданные, но этот способ может устранять повреждения, связанные с отложенной записью, поскольку сначала выполняется запись в блоки данных.
  • Writeback. Журналируются только метаданные, но не сами данные. Это самый быстрый режим.

Последней версией расширенной файловой системы на сегодняшней день является файловая система ext4, обратно совместимая с ext2 и ext3. По сравнению с ext3 в ext4 реализован ряд улучшений, в основном касающихся скорости и надежности. Файловая система ext4 имеется в Linux с версией ядра 2.6.28 и выше.

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

Эволюция расширенной файловой системы

Файловая система
Extended file system (приблизительно с 1991 г.) Самая ранняя файловая система Linux. Недостатком этой файловой системы является чрезмерная фрагментация.
Ext2 (приблизительно с 1993 г.) Эта файловая система обладает высокой надежностью, но в ней отсутствует журналирование. После внезапной перезагрузки или сбоя системы для всей файловой системы запускается команда.
Ext3 (приблизительно с 2001 г.) Эта файловая система может содержать 32 000 поддиректорий, поддерживает журналирование и обратно совместима с файловой системой ext2.
Ext4 (приблизительно с 2008 г.) Эта файловая система может содержать 64 000 поддиректорий, позволяет полностью отключить журналирование (в отличие от ext3) и обратно совместима с файловыми системами ext2 и ext3.

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

Файловая система этого типа похожа скорее на базу данных: внутри неё используется своя собственная система индексации и быстрого поиска данных, а представление в виде файлов (именованная область данных на носителе информации) и каталогов — только одна из возможностей использования такой файловой системы. Традиционно считается, что ReiserFS отлично подходит для хранения огромного числа маленьких файлов. Поддерживает журналирование.

Обычно под словом ReiserFS понимают третью версию (последняя — 3.6.21), а 4-ый именуют Reiser4. В настоящий момент разработка Reiser3 прекращена.

Другие

В этом материале я не упомянул о таких вариантах как ZFS, ReiserFS, JFS и F2FS.

ZFS изначально была открытой, развивалась в Sun Microsystems, но потом выкуплена Oracle, её код закрыт, а форк последней доступной версии выпущен как OpenZFS. Официально в ядре отсутствует, потому что её лицензия конфликтует с GPL, а Л. Торвальдс высказывается против. Но разработчики дистрибутивов могут обеспечить её поддержку через слой совместимости. По ряду параметров  схожа с Btrfs, которая распространяется под свободной лицензией и официально поддерживается в ядре.

Все они либо не лучше, либо хуже по каким-либо параметрам, чем вышеупомянутые. Такое разнообразные ФС создаёт «Проблему выбора», на практике отличия между ними не заметны. Поэтому для меня вывод остался прежним: Ext4 для дисков — старой технологии записи, Btrfs для SSD — более современных устройств.

Файловые системы семейства ext

EXT (Extended File System) — расширенная файловая система.

Ext2 была создана в январе 1993 года для linux, вот её особенности:

  • не журналируемая;
  • максимальная длина имени файла – 255B;
  • максимальный размер файла – 16GB-2TB (в зависимости от размера кластера);
  • максимальный размер раздела – 2TB-32TB (в зависимости от размера кластера);
  • поддержка POSIX ACL.

Ext2 старая файловая система без журнала, но достаточно быстрая. Современные системы Linux могут работать с этой файловой системой.

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

Ext4 была создана в октябре 2006 года, но стабильная версия появилось в октябре 2008 года. Она сейчас является самой распространенной файловой системой для Linux. Убрали некоторые ограничения и оптимизировали:

  • максимальный размер файла – 16 GB-16 TB (в зависимости от размера кластера);
  • наибольший размер раздела – 1 EB (1048576 TB);
  • максимальная длина имени файла – 255 B;
  • время изменения файлов протоколируется точнее;
  • упростилась работа с крупными файлами;
  • была оптимизирована скорость работы.

На данный момент по моему мнению EXT4 лучший выбор для Linux систем.

Когда ждать

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

Идеальный шторм на рынке полупроводников: вызовы и возможности
Бизнес

При этом Microsoft уточняет, что новая возможность работы с файлами Linux в подсистеме WSL пока находится на ранней стадии разработки, что сильно снижает вероятность ее появления в весенней сборке. Одновременно с этим стало известно о ведущихся в Microsoft работах по подготовке апдейтов Windows 10 уже на 2020 г.

Запустить Linux-дистрибутив можно прямо на рабочем столе Windows 10

О том, планирует ли Microsoft дорабатывать систему безопасности WSL, пока не сообщается. Напомним, что осенью 2017 г. в подсистеме была обнаружена серьезная уязвимость, позволяющая скрытно запускать на ПК вредоносное ПО, даже если на компьютере установлен антивирус.

Как включить сжатие данных на разделе с BTRFS?¶

Внимание! Начиная с Fedora 34 для новых установок уже включено сжатие для разделов с ФС алгоритмом zstd с уровнем сжатия 1. Для тех, кто обновляется с предыдущих релизов, сжатие можно включить самостоятельно

Файловая система поддерживает прозрачное сжатие данных. Допускается выбрать один из трёх доступных алгоритмов: zstd, zlib или lzo. Сжатие включается посредством указания алгоритма и уровня в параметрах монтирования раздела.

Включим сжатие для корневого раздела. Для этого внесём правки в файл конфигурации :

sudoedit /etc/fstab

В колонке параметров монтирования добавим опцию :

UUID=XXXXX-XXXXX /   btrfs   compress=zstd:1,subvol=fedora   0 0

Здесь XXXXX-XXXXX – .

sudo systemctl reboot

С этого момента все записываемые данные будут сжиматься алгоритмом zstd.

Форматирование в Ext4

Я предполагаю, что раздел, который вы хотите отформатировать в Ext4 у вас уже есть. Если его ещё нет, обратитесь к статье как пользоваться gparted или как пользоваться parted чтобы его создать.

1. Опции mke2fs

Для форматирования мы будем использовать утилиту mkfs.ext4 или mke2fs. Это одна и та же утилита. У неё такой синтаксис:

$ mkfs.ext4 опции /раздел/диска

Ей можно передавать такие опции:

  • -b — размер блока. Доступные значения: 1024, 2048 и 4096;
  • -c — проверить устройство на битые сектора перед созданием файловой системы;
  • -d — скопировать содержимое указанной папки в корневую папку файловой системы;
  • -D — использовать прямые методы чтения и записи с диска чтобы не использовать кэш память;
  • -e — поведение файловой системы при ошибке. Доступные значения: continue, remount-ro, panic;
  • -E — расширенные опции файловой системы;
  • -F — принудительно создать файловую систему, даже если во время создания возникают ошибки или файловая система уже существует и примонтирована;
  • -j — использовать журнал файловой системы ext3;
  • -l — прочитать список плохих секторов на диске из файла;
  • -L — задать метку для раздела с этой файловой системой;
  • -m — процент блоков, зарезервированных для суперпользователя, по умолчанию 5%;
  • -n — не создавать файловую систему, а только отобразить её информацию, что выводится в процессе создания;
  • -O — активировать или деактивировать те или иные возможности файловой системы. Сами возможности мы рассмотрим ниже;
  • -q — выводить минимум информации во время выполнения;
  • -S — записать только суперблок и описание групп, таблица Inode остаётся неизменной. Это может быть полезно для восстановления повреждённой файловой системы;
  • -t — тип файловой системы. Доступно: ext2, ext3, ext4;
  • -U — указать UUID для раздела с файловой системой;
  • -v — максимально подробный вывод;
  • -V — вывести версию утилиты.

2. Возможности Ext4

  • 64bit — файловая система сможет занимать место больше чем 2 в 32 степени блоков. При размере блока 4 килобайта, это примерно один терабайт;
  • encrypt — включить поддержку шифрования для файловой системы;
  • ext_attr — включить расширенные атрибуты;
  • has_journal — использовать журнал, по умолчанию включена;
  • huge_file — разрешить создавать файлы, размером больше двух терабайт;
  • large_dir — увеличивает количество файлов, которые могут находится в одной папке;
  • metadata_csum — включает расчёт и проверку контрольных сумм для всех метаданных файловой системы;
  • meta_bg — позволяет изменять размер раздела в реальном времени, когда файловая система смонтирована и используется;
  • mmp — запрещает монтирование файловой системы к нескольким точкам одновременно;
  • quota — включает поддержку квот;

Здесь рассмотрены не все опции файловой системы и её возможности, а только самые интересные. Более подробнее смотрите информацию на man страницах для mkfs.ext4 и ext4.

3. Простое форматирование

А теперь давайте попробуем создать файловую систему ext4 с меткой DATA:

Здесь и далее /dev/sdb1 — это путь к вашему разделу жесткого диска, который вы хотите отформатировать. Чтобы не резервировать место для суперпользователя укажите значение 0 в опции -m:

Для того чтобы выполнить проверку диска на наличие битых секторов используйте опцию -c или -cc для более долгой но тщательной проверки:

4. Включение проверки контрольных сумм

Теперь поговорим про возможности. Для включения контрольных сумм для всех метаданных используйте возможность metadata_csum:

6. Поддержка квот

Для включения поддержки квот на разделе создание файловой системы ext4 выполняется с опцией quota:

Для управления квотами установите пакет quota:

Файловую систему надо примонтировать с поддержкой квот:

Затем нужно выполнить такую команду для инициализации файлов квот:

Далее можно настроить квоты для нужного пользователя. Например:

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

7. Поддержка шифрования

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

Шифрование выполняется на уровне папок. Поэтому сначала давайте примонтируем только что созданную файловую систему, а потом создадим папку /ecrypted:

Для настройки шифрования надо использовать утилиту fscrypt. В Ubuntu утилита устанавливается так:

Затем выполните первоначальную инициализацию:

Папка должна принадлежать пользователю, для которого вы будете её шифровать:

Чтобы зашифровать папку выполните:

Утилита спросит каким образом защищать вашу папку, выберите пункт 2 чтобы ввести свой пароль. Затем введите пароль два раза:

Просмотр статуса файловой системы

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

Команды du и df

Команды  и  используются для получения информации об использовании диска и свободном дисковом пространстве. Команда  показывает размер файлов в директории /var. Если необходимо получить информацию о вложенных поддиректориях директории /var, то нужно выполнить команду .

# du -csh  /var 
73M	/var
73M total

Команда  выводит информацию об использовании файловыми системами дискового пространства для всех точек монтирования в удобочитаемом () формате:

# df -h 
 File System            Size  Used Avail Use% Mounted on
 /dev/mapper/VolGroup00-LogVol00    37G  3.2G   32G  10% /
/dev/sda1              99M   12M   82M  13% /boot
tmpfs                 506M     0  506M   0% /dev/shm

Команда fsck

Команда  используется для проверки файловой системы и при необходимости ее восстановления. Например, если вам необходимо проверить на наличие ошибок раздел, расположенный на устройстве /dev/sda2, то введите команду :

# umount  /var
# fsck /var
fsck from util-linux-ng 2.17.2
e2fsck 1.41.12 (17-May-2010)
/dev/sda3: clean, 702/192000 files, 52661/768000 blocks

Примечание. Эту команду следует запускать на несмонтированной файловой системе.

В вышеприведенных примерах все задачи выполнялись в однопользовательском режиме. Раздел /var, расположенный на устройстве /dev/sda3, сначала был демонтирован. Команда  не обнаружила каких-либо ошибок, в противном случае она попыталась бы исправить их.

Команда iostat

Команда  выводит статистику дисковых операций ввода/вывода.

$ iostat
Linux 2.6.18-164.el5 (DemoServer) 	12/19/2011

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.25    1.74    1.26    2.89    0.00   93.86

Device:            tps   Blk_read/s   Blk_wrtn/s   Blk_read   Blk_wrtn
sda              10.69       351.52       227.60    1759192    1139038
sda1              0.06         0.45         0.00       2254         22
sda2             10.62       351.01       227.60    1756658    1139016
dm-0             40.06       350.72       227.60    1755178    1139016
dm-1              0.02         0.18         0.00        920          0
hdc                0.00         0.03         0.00        144          0
fd0               	 0.00         0.00         0.00         16           0

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

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

Команда sar

Команда  выводит значения системных счетчиков, подобно программе Performance Monitor операционной системы Windows. Команду  можно использовать для отображения прошлых значений или для вывода счетчиков в реальном времени:

$ sar 4 5
Linux 2.6.18-164.el5 (DemoServer) 	12/19/2011

12:20:20 AM       CPU     %user     %nice   %system   %iowait    %steal     %idle
12:20:24 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:20:28 AM       all      0.00      0.00      1.01      0.00      0.00     98.99
12:20:32 AM       all      0.00      0.00      0.50      0.00      0.00     99.50
12:20:36 AM       all      0.00      0.00      0.00      0.00      0.00    100.00
12:20:40 AM       all      0.25      0.00      1.01      0.00      0.00     98.74
Average:          all      0.05      0.00      0.50      0.00      0.00     99.45

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

Выбор файловой системы

Подобно Windows, Linux за свою жизнь повидала несколько разных файловых систем. Ubuntu «понимает» файловые системы Windows, но не установится на них. Ubuntu может сразу же записывать и считывать из разделов FAT16, FAT32 и VFAT и NTFS. Однако Windows не может работать с файловыми системами Linux, и вам придётся передавать файлы в и из Windows из-под операционной системы Ubuntu.

Помимо знакомых файловых систем Windows, вы можете выбрать несколько таких, которые вы, возможно, не знаете. Среди таких файловых систем — ext4. Ext4 в настоящий момент является одной из самых подходящих файловых систем для настольной системы. Файловые системы ext3 и ext2 сейчас используются редко: ext3 — чуть более старая версия ext4, и не имеет никаких преимуществ перед ext4, а ext2 не имеет журналирования, без него при, системном сбое будет трудно восстановить данные. Файловые системы BTRFS, XFS, ReiserFS, Reiser4, JFS и т.д. также можно использовать, однако их стоит выбирать исходя из понимания особенностей этих ФС (стоит почитать немного о разных ФС, что бы сделать правильный выбор). Раздел «swap» предназначен только для виртуальной памяти и в отличие от других файловых систем ему не требуется точка монтирования.

Способ организации файловой системы в Linux

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

Виртуальная файловая система (сокр. «VFS» от англ. «Virtual File System») — это специальный слой абстракции, предоставляющий программный интерфейс (единый набор команд) для взаимодействия между ядром и конкретной реализацией файловой системы.

поддерживает различные типы файловых систем (ext3, ext4, ReiserFS, Btrfs, XFS и многие другие). На сегодняшний день наиболее часто используемой файловой системой является ext4, поэтому в данной статье основной упор будет сделан именно на нее.

Примечание: В Linux практически все объекты представлены в виде файлов (например, каталоги, принтеры, разделы диска, устройства и т.д.). Это делает еще более важным изучение того, как работает файловая система Linux.

Структура файловой системы

Ubuntu поддерживает стандарт FHS, описывающий какая информация должна находится в том или ином месте «дерева». Ниже приведена таблица с кратким описанием основных директорий.

Директория Описание
Корневая директория, содержащая всю файловую иерархию.
/bin/ Основные системные утилиты, необходимые как в однопользовательском режиме, так и при обычной работе всем пользователям (например: cat, ls, cp).
/boot/ Загрузочные файлы (в том числе файлы загрузчика, ядро и т.д.). Часто выносится на отдельный раздел.
/dev/ Основные файлы устройств системы (например физические устройства sata винчестеры /dev/sda, видео камеры или TV-тюнеры /dev/video или псевдоустройства, например «чёрные дыры» /dev/null, /dev/zero ).
/etc/ Общесистемные конфигурационные файлы, лежат в корне директории и файлы конфигурации установленных программ (имя происходит от et cetera).
/etc/X11/ Файлы конфигурации X Window System версии 11.
/etc/apt/ Файлы конфигурации пакетного менеджера Apt.
/etc/samba/ Файлы конфигурации сервера Samba, расшаривающего файлы по сети с windows машинами.
/home/ Содержит домашние директории пользователей, которые в свою очередь содержат персональные настройки и данные пользователя. Часто размещается на отдельном разделе.
/lib/ Основные библиотеки, необходимые для работы программ из /bin/ и /sbin/.
/media/ Точки монтирования для сменных носителей, таких как CD-ROM, DVD-ROM, flash дисков.
/opt/ Дополнительное программное обеспечение.
/proc/ Виртуальная файловая система, представляющая состояние ядра операционной системы и запущенных процессов в виде каталогов файлов.
/root/ Домашняя директория пользователя root.
/sbin/
/srv/ Данные, специфичные для окружения системы.
/tmp/ Временные файлы (см. также /var/tmp).
/usr/ Вторичная иерархия для данных пользователя; содержит большинство пользовательских приложений и утилит, используемых в многопользовательском режиме. Может быть смонтирована по сети только для чтения и быть общей для нескольких машин.
/usr/bin/ Дополнительные программы для всех пользователей, не являющиеся необходимыми в однопользовательском режиме.
/usr/include/ Стандартные заголовочные файлы.
/usr/lib/ Библиотеки для программ, находящихся в /usr/bin/ и /usr/sbin/.
/usr/sbin/ Дополнительные системные программы (такие как демоны различных сетевых сервисов).
/usr/share/ Архитектурно-независимые общие данные.
/usr/src/ Исходные коды (например, здесь располагаются исходные коды ядра).
/usr/local/ Третичная иерархия для данных, специфичных для данного хоста. Обычно содержит такие поддиректории, как bin/, lib/, share/. Она пригодится, когда /usr/ используется по сети.
/var/ Изменяемые файлы, такие как файлы регистрации (log-файлы), временные почтовые файлы, файлы спулеров.
/var/cache/ Данные кэша приложений. Сюда скачиваются пакеты перед их установкой в систему, здесь же они какое-то время и хранятся
/var/lib/ Информация о состоянии. Постоянные данные, изменяемые программами в процессе работы (например, базы данных, метаданные пакетного менеджера и др.).
/var/lock/ Lock-файлы, указывающие на занятость некоторого ресурса.
/var/log/ Различные файлы регистрации (log-файлы).
/var/mail/ Почтовые ящики пользователей.
/var/run/ Информация о запущенных программах (в основном, о демонах).
/var/spool/ Задачи, ожидающие обработки (например, очереди печати, непрочитанные или неотправленные письма).
/var/tmp/ Временные файлы, которые должны быть сохранены между перезагрузками.
/var/www/ Директория веб-сервера Apache, всё что находится внутри транслируется им в интернет (конфигурация по-умолчанию)

Как хранятся данные в расширенной файловой системе Linux

В файловой системе Linux хранятся два типа данных. Первый тип – это пользовательские данные (обычные файлы и директории, с которыми работают пользователи). Файлы также могут быть четырех типов: обычные файлы, ссылки, именованные каналы (FIFO) и сокеты.

Возможно, вы слышали выражение «В Linux все является файлами или процессами». Это выражение подразумевает тот факт, что в Linux отсутствует концепция системного реестра. Вместо этого все объекты хранятся в виде одного из четырех типов файлов. Другой тип данных, хранящихся в файловой системе – это метаданные, являющиеся индексными дескрипторами (index node) и обычно называемые inode. Индексные дескрипторы являются способом индексации атрибутов файлов в Linux. Каждый файл имеет свой inode, который обычно содержит следующую информацию:

  • Размер файла.
  • Владельцы файла (пользователь и группа).
  • Файловые разрешения.
  • Количество жестких и мягких ссылок.
  • Время последнего доступа и изменения файла.
  • Информацию о списке контроля доступа (ACL).
  • Любые дополнительные атрибуты, определенные для файла (например, признак неизменяемости).

В листинге 1 приведен пример использования команды , позволяющей получить информацию, хранящуюся в inode.Листинг 1. Использование команды stat

	
$ stat /etc/services  
File: `/etc/services'
Size: 362031    	Blocks: 728        IO Block: 4096   regular file
Device: fd00h/64768d	Inode: 1638437     Links: 1
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
Access: 2011-12-19 00:01:25.000000000 -0600
Modify: 2006-02-23 07:09:23.000000000 -0600
Change: 2011-09-18 17:29:37.000000000 -0500

В листинге 1 команда была выполнена для файла /etc/services. В результате ее выполнения мы получили в наглядном виде всю информацию индексного дескриптора и файловые атрибуты.

Директории

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

Все директории упорядочены в иерархическую структуру, начинающуюся с корневой директории (/). В действительности это лишь логическое упорядочение, поскольку не все директории располагаются в одном разделе файловой системы. Фактически, если вы монтируете сетевую файловую систему (например, NFS), точка монтирования будет располагаться где-то в этой иерархической структуре ниже корневой директории. В этом заключается существенное отличие от Windows, где вы привыкли к тому, что диск C обычно содержит дисковую файловую систему, а последующие файловые системы (подключенные сетевые ресурсы, дисководы CD-ROM и USB-накопители) смонтированы в виде отдельных дисков — D, E, F и так далее.

Суперблок

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

В листинге 2 приведен пример, в котором мы получаем информацию о разделе, расположенном на устройстве /dev/sda1 (в нашем случае это раздел /boot). В конструкции  мы используем команду  без учета регистра для вывода информации, содержащей строку .Листинг 2. Использование dumpe2fs для получения информации суперблока

	
# dumpe2fs  /dev/sda1 | grep -i superblock 
  Primary superblock at 1, Group descriptors at 2-2
  Backup superblock at 8193, Group descriptors at 8194-8194
  Backup superblock at 24577, Group descriptors at 24578-24578
  Backup superblock at 40961, Group descriptors at 40962-40962
  Backup superblock at 57345, Group descriptors at 57346-57346
  Backup superblock at 73729, Group descriptors at 73730-73730

Bind и overlay монтирование

Лучше всего про монтирование файловых систем и про bind монтирование в частности можно узнать выполнив такую команду:

Bind и overlay монтирование позволяет разработчикам встраиваемых систем и системным администраторам создавать файловую систему, доступную по определённому пути, а потом делать её доступной приложениям по совсем другому пути. Для встраиваемых систем подразумевается что можно хранить файлы из /var на устройстве доступном только для чтения, но наложить на /var tmpfs, так чтобы приложения могли туда писать если им это надо. При перезагрузке все изменения в /var будут утеряны. Overlay монтирование позволяет объединить tmpfs и обычную файловую систему так, чтобы в ней можно было изменять файлы, а bind монтирование позволяет сделать доступными для записи пустые папки с tmpfs в ro-rootfs. Хотя overlayfs — это отдельная файловая система, bind монтирование выполняется с помощью VFS.

Исходя из всего этого, не удивительно, что контейнеры Linux активно используют overlay и bind монтирование. Давайте посмотрим что происходит, когда мы запускаем контейнер с помощью systemd-nspawn. Будем использовать инструмент mountsnoop из набора bcc:

Осталось посмотреть что произошло:

Здесь systemd-nspawn размещает нужные файлы из procfs и sysfs хоста в контейнер. Здесь помимо флага MS_BIND, означающего bind-монтирование есть флаги, которые настраивают связь при изменениях файлов процессами контейнера или хоста. Например, файловая система может автоматически отображать изменения в контейнере или скрывать их.

Итог

  • В настоящее время рекомендуется использовать ext4 для работы Linux систем, а если вам нужны дополнительные функции можно изучить и использовать btrfs, если планируете хранить крупные файлы то можно попробовать xfs.
  • Также если вам важнее скорость чем надежность можно использовать ext2, так как в ней нет журнала она должна работать быстрее чем ext4.
  • Ну а fat32 можно использовать для хранения информации на флеш накопителе.

Сводка

Имя статьи
Файловые системы поддерживаемые Linux

Описание
Поддержка файловых систем — это основная функция операционных систем. В этой статье познакомимся с тем, какие файловые системы могут быть использованы в операционной системе Linux.

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Ваша ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: