XFS: Файловая система.
XFS: Файловая система.
Оглавление
Темы
Что такое XFS?
Особенности XFS
Недостатки
Преимущества
Краткое описание утилит XFS
Примеры с использованием SSH
Создание файловой системы на дисках AF с размером сектора 4096B
Выравнивание границ разделов диска
Дополнительные материалы
Монтирование файловых систем
Перенос системы на другой диск (xfs_copy)
Перенос системы на другой диск (rsync)
Convert MBR to GPT
Fedora на ZFS
Исправляем нумерацию разделов на диске
Гибернация — режим сна
LUKS: Шифруем данные
XFS — журналируемая файловая система, созданная компанией Silicon Graphics для операционной системы IRIX, и впоследствии перенесённая в Linux. С 2001 года код XFS распространяется по GPL; а начиная с 2.4.25 включен в код ядра Linux. Файловая система оптимизирована для работы с файлами большого размера (максимальный допустимый размер файла — 9 миллионов терабайтов).
Существует кластерная версия XFS, известная как CXFS, но она проприетарная. CXFS поддерживает различные операционные системы, в том числе Linux, Windows и IRIX.
Темы
Что такое XFS?
Особенности XFS
Недостатки
Преимущества
Краткое описание утилит XFS
Примеры с использованием SSH
Создание файловой системы на дисках AF с размером сектора 4096B
Выравнивание границ разделов диска
Дополнительные материалы
Монтирование файловых систем
Перенос системы на другой диск (xfs_copy)
Перенос системы на другой диск (rsync)
Convert MBR to GPT
Fedora на ZFS
Исправляем нумерацию разделов на диске
Гибернация — режим сна
LUKS: Шифруем данные
XFS — журналируемая файловая система, созданная компанией Silicon Graphics для операционной системы IRIX, и впоследствии перенесённая в Linux. С 2001 года код XFS распространяется по GPL; а начиная с 2.4.25 включен в код ядра Linux. Файловая система оптимизирована для работы с файлами большого размера (максимальный допустимый размер файла — 9 миллионов терабайтов).
Существует кластерная версия XFS, известная как CXFS, но она проприетарная. CXFS поддерживает различные операционные системы, в том числе Linux, Windows и IRIX.
- 64-битная файловая система.
- Журналирование только метаданных (если не задать иное параметрами).
- Выделение места экстентами (Extent — указатель на начало и число последовательных блоков). В экстентах выделяется место для хранения файлов, а также экстентами хранятся свободные блоки.
- B-tree индексы активно используются для хранения различных данных файловой системы: для списка блоков с inode-ами, списка экстентов с содержимым файла, каталогов файлов, списков экстентов свободных блоков (свободные блоки проиндексированы и по размеру блока, и по расположению). Однако использование b-tree индексов не догма — небольшой файл или каталог может быть размещен прямо внутри inode.
- Отложенное выделение места (Delayed allocation). При записи файла для него выделяется место в памяти, а на диске выделяется место только при записи файла на диск. Таким образом под файл оптимально выделяется место на диске, что уменьшает фрагментацию.
- Изменение размера «на лету» (только увеличение).
- Размещение в нескольких линейных областях (по умолчанию — 4 шт.) т. н. «allocation groups» (увеличивает производительность путём выравнивания активности запросов как к разным дискам на RAID-массивах типа «stripe», так и при асинхронном обращении к файловой системе на обычном диске.)
- Дефрагментация «на лету».
- API ввода-вывода реального времени (для приложений жёсткого или мягкого реального времени, например, для работы с потоковым видео).
- Интерфейс (DMAPI) для поддержки иерархического управления носителями (HSM).
- Инструменты резервного копирования и восстановления (xfsdump и xfsrestore).
«Индексные блоки» inode выделяются динамически (по мере надобности) и неиспользуемые inode могут освобождаться (высвобождая место для хранения данных). - Малые «накладные расходы» — размер служебных структур данных. На вновь созданной файловой системе XFS на служебные нужды тратится порядка 0,54 %. Это достигается малым количеством заголовков для групп (allocation groups), а также за счет динамического выделения inode.
- Невозможно уменьшить размер существующей файловой системы.
- Восстановление удалённых файлов в XFS — очень сложный процесс, поэтому на данный момент для этого существует всего лишь несколько программных продуктов, например «Raise Data Recovery for XFS» для ОС Windows.
- Возможность потери данных во время записи при сбое питания, так как большое количество буферов данных хранится в памяти при том что метаданные записываются в журнал (на диск) оперативно. Это характерно и для других файловых систем с журналированием метаданных.
- Сравнительно низкая скорость создания и удаления каталогов.
- Реализована поддержка очень больших файлов;
- Не смотря на то, что официально XFS везде позиционируется как настоящая 64-битная ФС, стратегия дискового драйвера реализована так, что он везде, где это только возможно, избегает использования 64-битного режима адресации, используя обычную 32-битную адресацию, для чего активно используются AGs (allocation group, AG);
- XFS официально — журналируемая файловая система, — но опять же, с той лишь оговоркой, что фиксируются лишь изменения метаданных, включая операции с суперблоком, AGs, inodes, каталогами и свободным пространством. При этом XFS вообще никак не журналирует пользовательские данные;
- Нужно отметить ярко выраженное следствие применения механизма отложенного размещения, о котором мы упомянули выше: его эффективность прямо пропорциональна имеющейся величине оперативной памяти (RAM), что опять-таки очень выгодно при современных тенденциях серверного оборудования;
- fsck.xfs – Просто выходит со статусом, равным нулю, поскольку разделы XFS проверяются во время их монтирования.
- mkfs.xfs – Создаёт файловую систему XFS.
Код: Выделить всё
mkfs.xfs -f -L "BOOT" /dev/sdа1 - xfs_admin – Изменяет параметры файловой системы XFS. (Размонтирование ОБЯЗАТЕЛЬНО!!!)
Код: Выделить всё
xfs_admin -U generate /dev/hdc1 xfs_admin -L "ROOT" /dev/sda2 - xfs_bmap – Выдает информацию об отображении блоков для файла XFS.
- xfs_check – Проверяет согласованность файловой системы XFS.
Если проблемы согласованности не найдены, xfs_check завершается без сообщений.Код: Выделить всё
xfs_check /dev/sdc1 - xfs_сору – Копирует содержимое файловой системы XFS в одно или несколько мест параллельно.
Код: Выделить всё
xfs_copy /dev/sdc1 /dev/sda1 xfs_copy /dev/mapper/fedora-root /dev/sda2 - xfs_db – Используется для отладки файловой системы XFS.
- xfs_freeze – Замораживает/размораживает доступ к файловой системе XFS. Ни один процесс не может писать в замороженный раздел
Примечание: Заморозка корневого раздела невозможна.
Код: Выделить всё
xfs_freeze -f /dev/mapper/fedora-home xfs_freeze -u /dev/mapper/fedora-home - xfs_growfs – Расширяет файловую систему XFS.
Код: Выделить всё
xfs_growfs /dev/sda2 - xfs_info – Эквивалентно обращению к xfs_growfs, но указывает, что в файловой системе изменения делаться не должны.
- xfs_io – Отладочное средство, похожее на xfs_db, но предназначенное для проверки путей ввода/вывода обычных файлов, а не самого тома XFS.
- xfs_logprint – Выдает журнал файловой системы XFS.
- xfs_mdrestore – Восстанавливает образ метадампа в образе файловой системы.
- xfs_metadump – Копирует в файл метаданные файловой системы XFS.
- xfs_mkfile – Создает файл XFS, заполняемый по умолчанию нулями.
- xfs_ncheck – Генерирует имена путей по номерам инодов для файловой системы XFS.
- xfs_quota – Утилита, сообщающая и изменяющая различные характеристики квот файловой системы.
- xfs_repair – Восстанавливает поврежденные и испорченные файловые системы XFS. (Размонтирование ОБЯЗАТЕЛЬНО!!!)
Код: Выделить всё
xfs_repair -v '/dev/sdb1' - xfs_rtcp - В системе XFS копирует файл в раздел реального времени.
Создаём дамп раздела /boot
Код: Выделить всё
xfsdump -l 0 -L "Backup level 0 of /boot `date`" -M "File" -f /home/sergey/boot.dmp /boot- Резервирование xfs на другой хост:
Код: Выделить всё
xfsdump -l0 -L "Backup level 0 of /boot `date`" -M "File" – /mnt | gzip -c | ssh user@host dd of=/somewhere/backup.dgz - восстановление xfs с хоста по сети:
Код: Выделить всё
ssh user@host “dd if=/somewhere/backup.dgz” | gunzip -c | xfsrestore – /mnt
Более подробно о дисках AF (расширенного формата) можно почитать на wikipedia
Вы можете посмотреть размеры физических / логических секторов, которые сообщает ваш диск, с помощью псевдофайловой системы
/sys, например:
Код: Выделить всё
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sdc/queue/physical_block_size
4096Physical_block_size - это минимальный размер блока, который диск может записать в элементарной операции.
Параметр logic_block_size - это наименьший размер, который диск может записать (см. Документацию по ядру Linux).
Таким образом, если у вас есть диск 4k, то имеет смысл, использовать равное или превышающее размер физического сектора на файловой системе
Эти значения также отображаются в программе parted, например:
Код: Выделить всё
parted /dev/sdc p
...
Размер сектора (логич./физич.): 512B/4096B
...по умолчанию выберут оптимальный размер сектора (например, 4096 байт).
Но вы также можете явно указать его с помощью опции, например:
Код: Выделить всё
mkfs.xfs -L "BACKUP" -f -s size=4096 /dev/sdсДля определения размер блока в существующей файловой системы можно воспользоваться такой командой:
Код: Выделить всё
xfs_info /mnt/BACKUP/
{22:08 Вс фев 10} {root@sergey.free-adm.ru} {/mnt/BACKUP} ✓
# > xfs_info /mnt/BACKUP/
meta-data=/dev/sdc1
isize=512 agcount=12, agsize=42488960 blks
= sectsz=4096 attr=2, projid32bit=1
data = bsize=4096 blocks=488378368, imaxpct=25
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=82986, version=2
= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0При создании файловой системы на разделе нужно проверить еще одну вещь, это то, действительно ли начальный адрес раздела выровнен по размеру физического блока. Например, посмотрите на вывод parted,
Код: Выделить всё
parted /dev/sdc unit B p
Модель: ATA WDC WD20EARX-00P (scsi)
Диск /dev/sdc: 2000398934016B
Размер сектора (логич./физич.): 512B/4096B
Таблица разделов: msdos
Флаги диска:
Номер Начало Конец Размер Тип Файловая система Флаги
1 1048576B 2000398843903B 2000397795328B primary xfsВыравнивание указывается ключами
Код: Выделить всё
-a alignment-type
--align alignment-type- minimal — Используйте минимальное выравнивание, указанное в информации о топологии диска. Это и значение opt будут использовать информацию о расположении, предоставленную диском, для выравнивания адресов таблицы логических разделов с фактическими физическими блоками на дисках. Минимальное значение - это минимальное выравнивание, необходимое для правильного выравнивания раздела по физическим блокам, что позволяет избежать снижения производительности.
- optimal — Используйте оптимальное выравнивание в соответствии с информацией о топологии диска. Это соответствует кратному размеру физического блока таким образом, чтобы гарантировать оптимальную производительность.