XFS: Файловая система.

Установка, настройка, эксплуатация.

Модератор: ROOT

XFS: Файловая система.

Сообщение ROOT » 17 авг 2017, 02:57

Оглавление


Темы
 Что такое XFS? 
 Особенности XFS 
 Недостатки 
 Преимущества 
 Краткое описание утилит XFS 
 Примеры с использованием SSH 
 Создание файловой системы на дисках AF с размером сектора 4096B 
Дополнительные материалы
Convert MBR to GPT
Перенос системы на другой диск (xfs_copy)
Перенос системы на другой диск (rsync)


 Что такое XFS? 
XFS — журналируемая файловая система, созданная компанией Silicon Graphics для операционной системы IRIX, и впоследствии перенесённая в Linux. С 2001 года код XFS распространяется по GPL; а начиная с 2.4.25 включен в код ядра Linux. Файловая система оптимизирована для работы с файлами большого размера (максимальный допустимый размер файла — 9 миллионов терабайтов).
Существует кластерная версия XFS, известная как CXFS, но она проприетарная. CXFS поддерживает различные операционные системы, в том числе Linux, Windows и IRIX.


 Особенности XFS 
  • 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), что опять-таки очень выгодно при современных тенденциях серверного оборудования;


 Краткое описание утилит XFS 
  • 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



 Примеры с использованием SSH 
  • Резервирование 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
Одинокий "-" вызывает считывание стандартного ввода в качестве источника возвращаемого дампа. Стандартный ввод может быть каналом другой утилиты (например, xfsdump) или перенаправленным файлом. Этот параметр нельзя использовать с опцией -f. - должен соответствовать всем другим параметрам и предшествует спецификации dest.


 Создание файловой системы на дисках AF с размером сектора 4096B 
Более подробно о дисках AF (расширенного формата) можно почитать на wikipedia
Вы можете посмотреть размеры физических / логических секторов, которые сообщает ваш диск, с помощью псевдофайловой системы
/sys, например:
Код: выделить все
cat /sys/block/sda/queue/physical_block_size
512
cat /sys/block/sdc/queue/physical_block_size
4096

В чем разница между этими двумя значениями?

Physical_block_size - это минимальный размер блока, который диск может записать в элементарной операции.
Параметр logic_block_size - это наименьший размер, который диск может записать (см. Документацию по ядру Linux).
Таким образом, если у вас есть диск 4k, то имеет смысл, использовать равное или превышающее размер физического сектора на файловой системе
Эти значения также отображаются в программе parted, например:
Код: выделить все
parted /dev/sdc p
...
Размер сектора (логич./физич.): 512B/4096B
...


В текущих дистрибутивах Linux программы (которые должны заботиться об оптимальном размере сектора), такие как mkfs.xfs,
по умолчанию выберут оптимальный размер сектора (например, 4096 байт).

Но вы также можете явно указать его с помощью опции, например:
Код: выделить все
mkfs.xfs -L "BACKUP" -f -s size=4096 /dev/sdс

В любом случае, большинство вариантов mkfs также будут отображать размер используемого блока во время выполнения.
Для определения размер блока в существующей файловой системы можно воспользоваться такой командой:
Код: выделить все
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
Используйте оптимальное выравнивание в соответствии с информацией о топологии диска. Это соответствует кратному размеру физического блока таким образом, чтобы гарантировать оптимальную производительность.
Для желающих отблагодарить
SB: 4274320029755744
QIWI: +79175241450
Аватар пользователя
ROOT
Администратор
 
Сообщений: 137
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1