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
Администратор
 
Сообщений: 145
Зарегистрирован: 01 авг 2011, 09:36
Откуда: Моск. обл., г. Железнодорожный

Вернуться в Fedora

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

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

cron