File systems (Русский)

Состояние перевода:
На этой странице представлен перевод статьи
File systems
. Дата последней синхронизации: 28 января 2024. Вы можете
помочь
синхронизировать перевод, если в английской версии произошли
изменения
.
Ссылки по теме
Разметка дисков
Файл устройства#lsblk
Разрешения и атрибуты файлов
fsck (Русский)
fstab (Русский)
List of applications/Utilities#Mount tools
QEMU#Mounting a partition from a raw image
udev (Русский)
udisks (Русский)
umask (Русский)
USB-накопители
Из
Википедии
:
Фа́йловая систе́ма (англ. file system) — порядок, определяющий способ организации, хранения и именования данных на носителях информации в компьютерах, а также в другом электронном оборудовании: цифровых фотоаппаратах, мобильных телефонах и т. п. Файловая система определяет формат содержимого и способ физического хранения информации, которую принято группировать в виде файлов. Конкретная файловая система определяет размер имен файлов (и каталогов), максимальный возможный размер файла и раздела, набор атрибутов файла. Некоторые файловые системы предоставляют сервисные возможности, например, разграничение доступа или шифрование файлов.
Отдельные разделы дисков можно настроить с использованием одной из множества доступных файловых систем. У каждой есть свои преимущества, недостатки и уникальные особенности. Ниже приведён краткий обзор поддерживаемых файловых систем; также и ссылки на страницы Википедии, которые предоставляют гораздо больше информации.
Типы файловых систем
Смотрите
filesystems(5)
для общего обзора и
сравнение файловых систем в Википедии
для подробного сравнения функций. Файловые системы, поддержка которых встроена в ядро или для которых загружены модули, перечислены в
/proc/filesystems
. Список доступных модулей, предоставляющих поддержку для различных файловых систем, можно посмотреть с помощью команды
ls /lib/modules/$(uname -r)/kernel/fs
.
Встроенные (in-tree) и FUSE файловые системы
Файловая система
Команда создания
Утилиты пользовательского пространства
Archiso
[1]
Документация ядра
[2]
Примечания
Bcachefs
bcachefs(8)
bcachefs-tools
Да
Доступна в Linux 6.7+, экспериментальная
Btrfs
mkfs.btrfs(8)
btrfs-progs
Да
btrfs.html
Статус стабильности
VFAT
mkfs.fat(8)
dosfstools
Да
vfat.html
Файловая система
Windows 9x
exFAT
mkfs.exfat(8)
exfatprogs
Да
Поддержка встроена в Linux с версии 5.4
[3]
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)
hfsprogs
AUR
Нет
hfs.html
Файловая система
классической Mac OS
HFS+
mkfs.hfsplus(8)
hfsprogs
AUR
Нет
hfsplus.html
Файловая система
macOS
(8–10.12)
JFS
mkfs.jfs(8)
jfsutils
Да
jfs.html
NILFS2
mkfs.nilfs2(8)
nilfs-utils
Да
nilfs2.html
Для использования с raw-доступом к флеш-памяти, например для SD-карт
NTFS
Да
ntfs3.html
Файловая система
Windows NT
.
Новый драйвер
, встроенный в Linux с версии 5.15.
ntfs-3g
[4]
Нет
ntfs.html
[
устаревшая ссылка
2024-07-30 ⓘ]
Старый драйвер. Имеет очень ограниченную поддержку записи.
Официальные ядра
собираются без
CONFIG_NTFS_FS
, поэтому этот драйвер недоступен.
mkfs.ntfs(8)
Да
н/д (на основе FUSE)
FUSE-драйвер с дополнительными возможностями.
ReiserFS
mkfs.reiserfs(8)
[
устаревшая ссылка
2025-05-13]
reiserfsprogs
AUR
Да
ReiserFS
объявлена устаревшей
в Linux 5.18 и будет удалена в 2025 году.
UDF
mkfs.udf(8)
udftools
Да
udf.html
XFS
mkfs.xfs(8)
xfsprogs
Да
xfs.html
xfs-delayed-logging-design.html
[
устаревшая ссылка
2024-03-03 ⓘ]
xfs-self-describing-metadata.html
[
устаревшая ссылка
2024-03-03 ⓘ]
Нельзя уменьшить размер
Сторонние (out-of-tree) файловые системы
Файловая система
Команда создания
Патчи для ядра
Утилиты пользовательского пространства
Примечания
APFS
mkapfs(8)
linux-apfs-rw-dkms-git
AUR
apfsprogs-git
AUR
Файловая система
macOS
(10.13 и новее). Поддержка экспериментальная, только для чтения. Смотрите также
apfs-fuse-git
AUR
— FUSE-версия.
Reiser4
mkfs.reiser4(8)
reiser4progs
AUR
ZFS
zfs-linux
AUR
,
zfs-dkms
AUR
zfs-utils
AUR
Порт
OpenZFS
Журналирование
Все вышеупомянутые файловые системы, за исключением ext2, FAT16/32, Reiser4 (опционально), Bcachefs, Btrfs и ZFS, используют
ведение журнала
. Журналирование обеспечивает отказоустойчивость путём записывания изменений в журнал перед фактическим изменением файловой системы. В случае сбоя системы или сбоя питания такие файловые системы быстрее возвращаются в работу и реже оказываются повреждёнными. Ведение журнала происходит в отдельной области файловой системы.
Не все методы ведения журнала одинаковы. Ext3 и ext4 предлагают журналирование в режиме данных, при котором в журнал записываются как данные, так и метаданные, а также возможность вести журнал только изменений метаданных. Журналирование в режиме данных снижает скорость и не включено по умолчанию. В том же ключе
Reiser4
предлагает так называемые
«модели транзакций»
, которые меняют не только предоставляемые возможности, но и режим журналирования. В ней используются различные методы журналирования: специальная модель
«блуждающих журналов»
(«wandering logs»), избавляющая от необходимости записывать данные на диск дважды, «запись везде» («write-anywhere») — чистое копирование при записи (в основном эквивалентное используемому по умолчанию Btrfs, но с принципиально иной конструкцией «дерева») и комбинированный подход, который эвристически чередует два первых.
Примечание
Reiser4 обеспечивает поведение журналирования, почти эквивалентное стандартному поведению ext4 (только метаданные), с помощью плагина
node41
, который также поддерживает метаданные и встроенные контрольные суммы, а также поведение «блуждающих журналов», которое он предоставляет, в зависимости от того, какая модель транзакций выбрана во время монтирования.
Другие файловые системы обеспечивают упорядоченное ведение журнала (ordered-mode), при котором записываются только метаданные. Хотя любое журналирование позволяет восстановить файловую систему после сбоя, журналирование в режиме данных обеспечивает максимальную защиту от повреждений и потери данных. Однако это влияет на производительность системы, поскольку журналирование в режиме данных выполняет две операции записи: сначала в журнал, а затем на диск (Reiser4 избегает это с помощью «блуждающих журналов»). При выборе типа файловой системы следует учитывать компромисс между скоростью системы и безопасностью данных. Reiser4 — единственная файловая система, которая реализует полную атомарность, а также контрольные суммы как для метаданных, так и для встроенных данных (операции либо полностью выполняются, либо полностью не выполняются, не повреждая данные наполовину выполненной операцией) и поэтому гораздо менее подвержена потере данных, чем другие файловые системы, например
Btrfs
.
Файловые системы, основанные на механизме копирования при записи (copy-on-write или write-anywhere), такие как Reiser4, Bcachefs, Btrfs и ZFS, не нуждаются в использовании традиционного журнала для защиты метаданных, потому что они никогда не обновляют данные в том же месте. Хотя Btrfs всё ещё имеет дерево, подобное журналу, оно используется только для ускорения работы fdatasync/fsync.
Файловые системы на основе FUSE
Смотрите статью
FUSE (Русский)
.
Штабелируемые файловые системы
eCryptfs
— корпоративная криптографическая файловая система представляет собой пакет программного обеспечения для шифрования диска Linux. Он реализует шифрование на уровне файловой системы, совместимый с POSIX, с целью предложить функциональность, аналогичную функции GnuPG на уровне операционной системы.
https://ecryptfs.org
||
ecryptfs-utils
mergerfs
— объединенная файловая система на основе FUSE.
https://github.com/trapexit/mergerfs
||
mergerfs
AUR
mhddfs
— файловая система Multi-HDD FUSE, объединенная на основе FUSE.
http://mhddfs.uvw.ru
||
mhddfs
AUR
overlayfs
— это служба файловой системы для Linux, которая реализует объединение для монтирования других файловых систем.
https://docs.kernel.org/filesystems/overlayfs.html
||
linux
unionfs-fuse
— реализация пользовательского пространства Unionfs.
https://github.com/rpodgorny/unionfs-fuse
||
unionfs-fuse
AUR
Файловые системы только для чтения
EROFS
— Enhanced Read-Only File System — легковесная файловая система только для чтения, направленная на улучшение производительности и сжатия.
https://docs.kernel.org/filesystems/erofs.html
||
erofs-utils
SquashFS
— Файловая система, хранящая данные в сжатом виде только для чтения. SquashFS сжимает файлы, индексные дескрипторы и каталоги, а также поддерживает блоки размером до 1 МиБ для лучшего сжатия.
https://github.com/plougher/squashfs-tools
||
squashfs-tools
Кластерные файловые системы
BeeGFS
— Параллельная файловая система, разработанная и оптимизированная для высокопроизводительных вычислений.
https://www.beegfs.io/c/
||
beegfs-client
AUR
Ceph
— Унифицированная распределённая система хранения, разработанная для отличной производительности, надёжности и масштабируемости.
https://ceph.com/
||
ceph
AUR
Glusterfs
— Кластерная файловая система, способная масштабироваться до нескольких петабайт.
https://www.gluster.org/
||
glusterfs
IPFS
— Одноранговый протокол гипермедиа, чтобы сделать Интернет более быстрым, безопасным и открытым. IPFS нацелена на замену HTTP и создание лучшей сети для всех нас. Использует блоки для хранения частей файла, каждый сетевой узел хранит только интересующий контент, обеспечивает дедупликацию, распространение, масштабируемую систему, ограниченную только пользователями. (В настоящее время в alpha)
https://ipfs.io/
||
kubo
MinIO
— Высокопроизводительное объектное хранилище, совместимое с S3.
https://min.io
||
minio
AUR
MooseFS
— Отказоустойчивая, высокодоступная и высокопроизводительная сетевая распределённая файловая система.
https://moosefs.com
||
moosefs
OpenAFS
— Открытая реализация распределённой файловой системы AFS
https://www.openafs.org
||
openafs
AUR
OrangeFS
— Масштабируемая сетевая файловая система, предназначенная для прозрачного доступа к дисковой памяти на нескольких серверах параллельно. Имеет оптимизированную поддержку MPI-IO для параллельных и распределённых приложений. Упрощает использование параллельного хранения не только для клиентов Linux, но и для Windows, Hadoop и WebDAV. POSIX-совместимая. Часть ядра Linux, начиная с версии 4.6.
https://www.orangefs.org/
||
not packaged?
search in AUR
Sheepdog
— Распределённая объектная система хранения данных для сервисов томов и контейнеров, интеллектуально управляющая дисками и узлами.
https://sheepdog.github.io/sheepdog/
||
sheepdog
AUR
Tahoe-LAFS
— Tahoe Least-Authority File Store — это бесплатное и открытое, безопасное, децентрализованное, отказоустойчивое, одноранговое распределённое хранилище данных и распределённая файловая система.
https://tahoe-lafs.org/
||
tahoe-lafs
AUR
[
ссылка недействительна
: package not found]
Файловые системы с общим доступом к диску
GFS2
— GFS2 позволяет всем участникам кластера иметь прямой параллельный доступ к одному и тому же общему блочному хранилищу.
https://pagure.io/gfs2-utils
||
gfs2-utils
AUR
OCFS2
— The Oracle Cluster File System (версия 2) — файловая система с общим дисковым пространством, разработанная корпорацией Oracle и выпущенная под лицензией GNU GPL.
https://oss.oracle.com/projects/ocfs2/
||
ocfs2-tools
AUR
VMware VMFS
— Virtual Machine File System — используется во vSphere — флагманском пакете компании для виртуализации серверов.
https://www.vmware.com/products/vi/esx/vmfs.html
[
устаревшая ссылка
2024-07-30 ⓘ]
||
vmfs-tools
AUR
Определение существующих файловых систем
Чтобы определить существующие файловые системы, вы можете использовать
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
содержит несколько параметров, многие из которых зависят от указанной файловой системы.
Параметры могут быть изменены через:
использование флагов в командной строке с
mount
редактирование
fstab
создание правил
udev
самостоятельное компилирование ядра
или скрипты монтирования, специфичные файловой системы (расположенные в
/usr/bin/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
для проблемного тома.
Смотрите также
filesystems(5)
systemd-mount(1)
Документация файловых систем, поддерживаемых в Linux
Википедия:Файловая система
Википедия:mount