Jump to content

File systems (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи File systems. Дата последней синхронизации: 12 июня 2026. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Из Википедии:

Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.

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

Типы файловых систем

Смотрите filesystems(5) для общего обзора и сравнение файловых систем в Википедии для подробного сравнения функций. Файловые системы, поддержка которых встроена в ядро или для которых загружены модули, перечислены в /proc/filesystems. Список доступных модулей, предоставляющих поддержку для различных файловых систем, можно посмотреть с помощью команды ls /lib/modules/$(uname -r)/kernel/fs.

Встроенные (in-tree) и FUSE файловые системы
Файловая система Команда создания Утилиты пользовательского пространства Archiso [1] Документация ядра [2] Примечания
Btrfs mkfs.btrfs(8) btrfs-progs Да btrfs.html Статус стабильности
VFAT mkfs.fat(8) dosfstools Да vfat.html Файловая система Windows 9x. Обычно используется для системного раздела EFI, USB-флешек и SD-карт.
exFAT mkfs.exfat(8) exfatprogs Да
mkexfatfs(8) exfat-utils Нет н/д (на основе FUSE)
F2FS mkfs.f2fs(8) f2fs-tools Да f2fs.html Ориентирована на использование с флеш-памятью. Нельзя уменьшить.
ext3 mkfs.ext3(8) e2fsprogs Да ext3.html
ext4 mkfs.ext4(8) e2fsprogs Да ext4.html
HFS mkfs.hfsplus(8) hfsprogsAUR Нет hfs.html Файловая система классической Mac OS
HFS+ mkfs.hfsplus(8) hfsprogsAUR Нет hfsplus.html Файловая система macOS (8–10.12)
JFS mkfs.jfs(8) jfsutils Да jfs.html
JFFS2 mkfs.jffs2(1) mtd-utils Нет
NILFS2 mkfs.nilfs2(8) nilfs-utils Да nilfs2.html В основном предназначена для flash-устройств. Не поддерживает xattrs и ACL.
NTFS mkfs.ntfs(8) ntfsprogs Да ntfs3.html Файловая система Windows NT. [3]
ntfs-3g Да н/д (на основе FUSE) FUSE-драйвер с дополнительными возможностями.
UDF mkfs.udf(8) udftools Да udf.html
XFS mkfs.xfs(8) xfsprogs Да

xfs.html
xfs-delayed-logging-design.html
xfs-self-describing-metadata.html

Нельзя уменьшить размер
Сторонние (out-of-tree) файловые системы
Файловая система Команда создания Патчи для ядра Утилиты пользовательского пространства Примечания
Bcachefs bcachefs format bcachefs-dkms bcachefs-tools Удалена из ядра в версии 6.18
APFS mkapfs(8) linux-apfs-rw-dkms apfsprogs Файловая система macOS (10.13 и новее). Только чтение, экспериментальная поддержка записи. Смотрите также FUSE-версию apfs-fuse-gitAUR.
ReiserFS mkfs.reiserfs(8) reiserfsprogsAUR Удалена из ядра в версии 6.13.
Reiser4 mkfs.reiser4(8) reiser4progsAUR
ZFS zfs-linuxAUR, zfs-dkmsAUR zfs-utilsAUR Порт OpenZFS

Журналирование

Файловые системы ext3/4, HFS+, JFS, NTFS, ReiserFS и XFS используют журналирование. Журналирование обеспечивает отказоустойчивость путём записи изменений в журнал перед их применением к файловой системе. В случае краха системы или сбоя питания такие файловые системы быстрее возвращаются в рабочее состояние и реже повреждаются. Запись в журнал происходит в специально отведённой области файловой системы.

ext3/4 предлагают журналирование в режиме данных, при котором в журнал могут записываться не только метаданные, но и сами данные. Журналирование данных снижает скорость, поскольку выполняет двойную запись: сначала в журнал, потом на диск. Поэтому по умолчанию оно отключено. При выборе типа и параметров файловой системы следует учитывать компромисс между скоростью и сохранностью данных.

В том же ключе Reiser4 предлагает настраиваемые «модели транзакций»: специальную модель «блуждающих журналов» (wandering logs), избавляющую от двойной записи; «запись везде» (write-anywhere) — чистое копирование при записи; и комбинированный «гибридный» подход, который эвристически чередует их.

Файловые системы, основанные на копировании при записи (также называемом «запись везде»), такие как Reiser4, Btrfs, Bcachefs и ZFS, по своей природе работают с полной атомарностью и также предоставляют контрольные суммы для метаданных и встроенных данных (операции либо происходят полностью, либо не происходят вовсе, и при исправно работающем оборудовании данные не повреждаются из-за частично выполненных операций). Поэтому таким файловым системам не нужен традиционный журнал для защиты метаданных — они никогда не обновляются на месте. Хотя Btrfs всё ещё имеет дерево, похожее на журнал, оно используется только для ускорения fdatasync/fsync.

FAT, exFAT, ext2 и HFS не предоставляют ни журналирования, ни атомарности. Они предназначены для временного или устаревшего использования и не рекомендуются, когда требуется надёжное хранение.

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

Смотрите статью FUSE (Русский).

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

  • eCryptfs — корпоративная криптографическая файловая система представляет собой пакет программного обеспечения для шифрования диска Linux. Он реализует шифрование на уровне файловой системы, совместимый с POSIX, с целью предложить функциональность, аналогичную функции GnuPG на уровне операционной системы.
https://ecryptfs.org || ecryptfs-utils
  • mergerfs — объединенная файловая система на основе FUSE.
https://github.com/trapexit/mergerfs || mergerfsAUR
  • mhddfs — файловая система Multi-HDD FUSE, объединенная на основе FUSE.
http://mhddfs.uvw.ru || mhddfsAUR
  • overlayfs — это служба файловой системы для Linux, которая реализует объединение для монтирования других файловых систем.
https://docs.kernel.org/filesystems/overlayfs.html || linux
  • unionfs-fuse — реализация пользовательского пространства Unionfs.
https://github.com/rpodgorny/unionfs-fuse || unionfs-fuseAUR

Файловые системы только для чтения

  • DwarFS — DwarFS — быстрая файловая система только для чтения с высокой степенью сжатия для Linux и Windows. DwarFS в основном поддерживает те же функции, что и SquashFS, но способна сжимать лучше и имеет настраиваемый алгоритм хеширования.
https://github.com/mhx/dwarfs || dwarfsAUR
  • EROFS — Enhanced Read-Only File System — легковесная файловая система только для чтения, направленная на улучшение производительности и сжатия.
https://erofs.docs.kernel.org/ || erofs-utils
  • SquashFS — Файловая система, хранящая данные в сжатом виде только для чтения. SquashFS сжимает файлы, индексные дескрипторы и каталоги, а также поддерживает блоки размером до 1 МиБ для лучшего сжатия.
https://github.com/plougher/squashfs-tools || squashfs-tools

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

  • BeeGFS — Параллельная файловая система, разработанная и оптимизированная для высокопроизводительных вычислений.
https://www.beegfs.io/c/ || beegfs-clientAUR
  • Ceph — Унифицированная распределённая система хранения, разработанная для отличной производительности, надёжности и масштабируемости.
https://ceph.com/ || cephAUR
  • Glusterfs — Кластерная файловая система, способная масштабироваться до нескольких петабайт.
https://www.gluster.org/ || glusterfs
  • IPFS — Одноранговый протокол гипермедиа, чтобы сделать Интернет более быстрым, безопасным и открытым. IPFS нацелена на замену HTTP и создание лучшей сети для всех нас. Использует блоки для хранения частей файла, каждый сетевой узел хранит только интересующий контент, обеспечивает дедупликацию, распространение, масштабируемую систему, ограниченную только пользователями. (В настоящее время в alpha)
https://ipfs.io/ || kubo
  • MinIO — Высокопроизводительное объектное хранилище, совместимое с S3.
https://min.io || minioAUR
  • MooseFS — Отказоустойчивая, высокодоступная и высокопроизводительная сетевая распределённая файловая система.
https://moosefs.com || moosefs
  • OpenAFS — Открытая реализация распределённой файловой системы AFS
https://www.openafs.org || openafsAUR
  • OrangeFS — Масштабируемая сетевая файловая система, предназначенная для прозрачного доступа к дисковой памяти на нескольких серверах параллельно. Имеет оптимизированную поддержку MPI-IO для параллельных и распределённых приложений. Упрощает использование параллельного хранения не только для клиентов Linux, но и для Windows, Hadoop и WebDAV. POSIX-совместимая. Часть ядра Linux, начиная с версии 4.6.
https://www.orangefs.org/ || not packaged? search in AUR

Файловые системы с общим доступом к диску

  • GFS2 — GFS2 позволяет всем участникам кластера иметь прямой параллельный доступ к одному и тому же общему блочному хранилищу.
https://pagure.io/gfs2-utils || gfs2-utilsAUR
  • OCFS2 — The Oracle Cluster File System (версия 2) — файловая система с общим дисковым пространством, разработанная корпорацией Oracle и выпущенная под лицензией GNU GPL.
https://oss.oracle.com/projects/ocfs2/ || ocfs2-toolsAUR
  • VMware VMFS — Virtual Machine File System — используется во vSphere — флагманском пакете компании для виртуализации серверов.
https://www.vmware.com/products/vi/esx/vmfs.html[устаревшая ссылка 2024-07-30 ⓘ] || vmfs-toolsAUR

Определение существующих файловых систем

Чтобы определить существующие файловые системы, вы можете использовать lsblk:

$ lsblk -f
NAME   FSTYPE LABEL     UUID                                 MOUNTPOINT
sdb
└─sdb1 vfat   Transcend 4A3C-A9E9

Существующая файловая система, если она есть, будет показана в столбце FSTYPE. Если она смонтирована, то она появится в столбце MOUNTPOINT.

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

Файловые системы обычно создаются на разделе, внутри логических контейнеров, таких как LVM, RAID и dm-crypt, или в обычном файле (смотрите Wikipedia:Loop device). В этом разделе описывается создание файловой системы на разделе.

Примечание Можно создать файловую систему без разделов на всём диске целиком, что называют «superfloppy» или неразмеченный (безраздельный, partitionless) диск. С этим методом связаны определённые ограничения, особенно при загрузке с такого диска. Пример есть в разделе Btrfs (Русский)#Диск Btrfs без разделов.
Важно
  • После создания новой файловой системы данные, ранее сохраненные на этом разделе, вряд ли можно будет восстановить. Создайте резервную копию любых данных, которые вы хотите сохранить.
  • Цель использования раздела может ограничить выбор файловой системы. Например, системный раздел EFI должен содержать файловую систему FAT32, а файловая система, содержащая каталог /boot, должна поддерживаться используемым вами загрузчиком.

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

$ lsblk -f
NAME   FSTYPE   LABEL       UUID                                 MOUNTPOINT
sda
├─sda1                      C4DA-2C4D
├─sda2 ext4                 5b1564b2-2e2c-452c-bcfa-d1f572ae99f2 /mnt
└─sda3                      56adc99b-a61e-46af-aab7-a6d07e504652

Перед продолжением необходимо размонтировать файловую систему. В приведённом выше примере существующая файловая система находится на /dev/sda2 и монтируется в /mnt. Размонтировать можно командой:

# umount /dev/sda2

Чтобы найти только смонтированные файловые системы, смотрите #Список смонтированных файловых систем.

Чтобы создать новую файловую систему, используйте mkfs(8). Смотрите #Типы файловых систем для точного типа, а также утилиты пользовательского пространства, которые вы, возможно, захотите установить для конкретной файловой системы.

Например, чтобы создать новую файловую систему типа ext4 (обычно для разделов данных Linux) на /dev/sda1, запустите:

# mkfs.ext4 /dev/sda1
Совет
  • Используйте флаг -L mkfs.ext4, чтобы указать метку файловой системы. e2label можно использовать для изменения метки в существующей файловой системе.
  • Размер файловых систем можно изменить после создания, но с определёнными ограничениями. Например, размер файловой системы XFS можно только увеличить, но не уменьшить. Для получения дополнительной информации смотрите Возможности изменения размера и документацию интересующей вас файловой системы.

Новая файловая система теперь может быть смонтирована в желаемый каталог.

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

Чтобы вручную смонтировать файловую систему, расположенную на устройстве (например, раздел) к каталогу, используйте mount(8). В этом примере монтируется /dev/sda1 в /mnt.

# mount /dev/sda1 /mnt

Это прикрепляет файловую систему раздела /dev/sda1 в каталог /mnt, делая содержимое файловой системы видимым. Любые данные, существовавшие в /mnt перед этим действием, становятся невидимыми до тех пор, пока устройство не будет размонтировано.

fstab содержит информацию о том, как устройства должны автоматически монтироваться, если они присутствуют. Для получения дополнительной информации о том, как изменить это поведение, смотрите статью fstab.

Если устройство указано в /etc/fstab и в команду mount передаётся только устройство или точка монтирования, то остальные параметры монтирования будут взяты из этого файла. Например, если /etc/fstab содержит строку, указывающую, что /dev/sda1 должен быть смонтирован в /mnt, тогда такие команды mount будут автоматически монтировать это устройство в этот каталог:

# mount /dev/sda1

Или

# mount /mnt

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

Более подробную информацию смотрите в связанных статьях и статье интересующей файловой системы.

Совет
  • Файловые системы также можно монтировать с помощью команды systemd-mount вместо mount. Если точка монтирования не указана, то файловая система будет смонтирована в /run/media/system/идентификатор_устройства/. Это позволяет легко смонтировать файловую систему без необходимости решать, куда её монтировать. Использование и подробности описаны в systemd-mount(1).
  • Для монтирования файловых систем от имени обычного пользователя можно использовать udisks. Он также позволяет выполнять монтирование без прав суперпользователя и может использоваться через графический интерфейс, например, в файловых менеджерах, использующих udisks.

Список смонтированных файловых систем

Чтобы увидеть все смонтированные файловые системы, используйте findmnt(8):

$ findmnt

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

$ findmnt /dev/sda1

findmnt собирает информацию из /etc/fstab, /etc/mtab и /proc/self/mounts.

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

Чтобы размонтировать файловую систему, используйте umount(8). Можно указать либо устройство, содержащее файловую систему (например, /dev/sda1), либо точку монтирования (например, /mnt):

# umount /dev/sda1

или

# umount /mnt

Решение проблем

"linux Structure needs cleaning"

Размонтируйте файловую систему и выполните fsck для проблемного тома.

Смотрите также