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

Bog BOS: Файловая система XFS (Linux)

Журналируемая файловая система xfs позволяет использовать блочные устройства размером более 16ТБ (пакеты xfsprogs и xfsdump), первоначально была разработана для SGI IRIX, поддерживает расширенные атрибуты файлов, выделение места экстентами, эффективное распараллеливание за счёт разбиения области данных на независимые отсеки. Является файловой системой по умолчанию в RHEL 7. Не очень любит мелкие файлы. Предпочтительна при большом количестве потоков доступа.

  • состоит из секций данных (содержит метаданные и может содержать журнал), журнала и секции для работы в реальном времени
  • секция данных делится на равные группы блоков (allocation groups), количество которых определяет уровень параллелизма при выделении места; каждая группа содержит суперблок, управление свободным пространством группы, таблицу inode (создаются по потребности), данные
  • размер блока в Linux — 4 КБ
  • выделение места происходит экстентами (до 8 GiB)
  • ранее не подходила для хранения большого количества мелких файлов (почтовый сервер) — медленно работает с метаданными; постепенно улучшается
  • открытые в момент неожиданного выключения компьютера файлы будут заполнены нулями (исправлено)
  • мгновенное создание и расширение файловой системы при нулевых накладных расходах (у ext4 — 1.5%, т.е. 269GB для 16ТБ) и примерно сравнимых с ext4 накладных расходах при хранении файлов (на 0.07% меньше для набора в 10TB из 10 миллионов файлов
  • 64-битные номера inode для файловой системы размером 2ТиБ и более, не все 32-битные программы это переживут ; исправлено в RHEL7

Ключи утилиты mkfs.xfs:

  • -L метка-файловой-системы # до 12 символов
  • -d su=размер-страйпа-RAID,sw=число-страйпов-RAID # можно указывать единицы объёма: k, m, g
  • -d agcount=число-групп-блоков
  • -d agsize=размер-группы-блоков # от 16 MiB до 1 TiB; можно указывать единицы объёма: k, m, g
  • -d unwritten=1 # помечать незаписанные экстенты, увеличивает безопасность (не даёт пользователям читать захваченные, но ещё не записанные части файлов), уменьшает фрагментацию?, замедляет работу; «unknown option -d unwritten=0»
  • -i attr=2 # версия политики размещения расширенных атрибутов (по умолчанию)
  • -i maxpct=процентов # максимальная доля, которую inode могут занимать на диске, по умолчанию — от 1% до 25% в зависимости от размера файловой системы
  • -i size=байт # размер фиксированной части inode, от 256 (по умолчанию) до 2048
  • -i align=1 # выравнивать блоки inode (по умолчанию)
  • -l internal=1 # журнал внутри
  • -l logdev=устройство-для-журнала # вынос журнала на отдельное устройство экономит до 10 IOPS
  • -l size=байт # размер журнала (от 512 до 64K блоков, по умолчанию — 128 MiB)
  • -l su=размер-страйпа-RAID # можно указывать единицы объёма: k, m, g
  • -l lazy-count=1 # не обновлять счётчики суперблока при каждом изменении метаданных, ускоряет (по умолчанию)
  • -m crc=1 # контрольные суммы метаданных, в RHEL 7.1
  • -s размер-сектора
  • -f # затирать обнаруженную на блочном устройстве файловую систему
  • -N # вывести параметры, но не создавать файловую систему
  • -K # не использовать TRIM во время создания файловой системы

Опции монтирования:

  • allocsize=байт # при увеличении файла место захватывается указанными кусками, лишнее потом освобождается; от 4KiB до 1TiB; по умолчанию — 64KiB
  • attr2 # ускоренная обработка атрибутов (по умолчанию)
  • barrier # использовать барьерную синхронизацию при записи метаданных (не нужно при наличии батарейки RAID контроллера или внешнего хранилища)
  • biosize=16 # размер блока в буферизованных запросах ввода/вывода в виде двоичного логарифма
  • grpid|bsdgroups # gid для создаваемого файла берётся от gid каталога
  • nogrpid|sysvgroups # gid для создаваемого файла берётся от процесса (по умолчанию), если каталог не имеет бита setgid
  • delaylog # ускоряет создание и удаление файлов в десятки раз (в F15 или RHEL6.2 по умолчанию) — но всё равно ext4 быстрее; опция nodelaylog не поддерживается с RHEL 6.5
  • dmapi # задействовать интерфейс DMAPI (Data Management API) для mtpt
  • filestreams # использовать алгоритм выделения свободного место, адаптированный для работы с несколькими параллельными потоками; значительно ускоряет как запись, так и чтение; может быть применён к отдельному каталогу с помощью атрибута filestreams
  • ihashsize=число # размер хеш-таблицы для inode в памяти
  • ikeep # опустевший кластер inode не удаляется (по умолчнию)
  • noikeep # после освобождения всех inode в кластере отдавать весь кластер в пул свободного места (noikeep)
  • inode64 | inode32 # 64-битные номера inode (NFS под CentOS4 и Solaris 8 монтируется нормально, но некоторые 32-битные программы не умеют работать с файлами с большими inode ); по умолчанию используются (использовались?) 32-битные inode, что приводит к их размещению только в первых 2ТБ диска, что вызывает сообщение о нехватке места при его формальном изобилии (у меня «кончилось место» при наличии свободных 20 ТБ); в CentOS 7.3 нормально использовалась файловая система на 35 ТБ (100 миллионов файлов, attr2,filestreams,inode32)
  • largeio # изображает устройство с большими секторами (swidth или allocsize)
  • nolargeio # изображает устройство с маленькими секторами
  • logbufs=число-буферов-журнала # от 2 до 8; по умолчанию — 2 для файловой системы с размером блока 4 KiB; больше буферов — быстрее запись
  • logbsize=размер-буфера-журнала # 16384 или 32768 (по умолчанию) или 65536 или 131072 или 262144
  • logdev=устройство-для-журнала
  • noalign
  • noatime
  • nodiratime
  • norecovery # не проигрывать журнал при монтировании
  • nouuid # не обращать внимания на дубли UUID
  • osyncisdsync # записывать файлы, открытые в режиме O_SYNC, как в режиме O_DSYNC; ускоряет работу; в новых версиях установлен по умолчанию, не отключаем
  • osyncisosync # записывать файлы, открытые в режиме O_SYNC, как в режиме O_SYNC
  • uquota/usrquota/uqnoenforce/quota/gquota/grpquota/gqnoenforce/pquota/prjquota/pqnoenforce
  • sunit=размер-страйпа-RAID-в-секторах
  • swidth=ширина-страйпа-RAID-в-секторах # размер-страйпа X число-дисков-данных
  • swalloc # округлять выделяемое место по swidth
Читайте также:  What is virtual memory linux

Статистика и ручки управления:

  • /proc/fs/xfs/stat — статистика
  • /proc/sys/fs/xfs — ручки управления
    • age_buffer_centisecs — 1500, возраст метаданных для сброса на диск
    • error_level (?)
    • filestream_centisecs — 3000
    • inherit_noatime
    • inherit_nodefrag
    • inherit_nodump
    • inherit_nosymlinks
    • inherit_sync
    • irix_sgid_inherit
    • irix_symlink_mode — позволяет устанавливать права доступа символьных ссылок (отключено)
    • panic_mask (?)
    • rotorstep — 1, сколько файлов размещать в группе перед переходом к следующей
    • restrict_chown — запрещает передавать права на файл другим пользователям (отключено, нев в RHEL7)
    • speculative_prealloc_lifetime (?)
    • stats_clear (?)
    • xfsbufd_centisecs — 100, интервал сборки мусора в буферах метаданных
    • xfssyncd_centisecs — 3000, интервал сброса метаданных

Кстати, опыт показал, что xfs сбрасывает накопленные буфера с такой интенсивностью, что захлёбывается внешнее хранилише (RAID контроллер), поэтому рекомендуется обеспечить ранее начало сброса: 40000000 в /proc/sys/vm/dirty_bytes, 10000000 в /proc/sys/vm/dirty_background_bytes.

Проблема с излишней фрагментацией («XFS: . possible memory allocation deadlock») купируется сбросом буферов в slab («echo 2 > /proc/sys/vm/drop_caches»). У меня это произошло с индексным фйалом MySQL при добавлении ключа (файл 40ГБ оказался разбит на 3 миллиона кусочков).

xfs_info (скрипт для xfs_db).

xfs_admin (скрипт для xfs_db) позволяет изменить метку и UUID размонтированной фаловой системы.

xfs_check (скрипт для xfs_db) — проверка файловой системы, требуется размонтирование, требует 16 ГБ памяти (реально использовались 10 ГБ) для файловой системы в 7 TB (67%, 500 файлов); требует и реально использует 42 ГБ памяти для файловой системы в 20TB, быстр.

xfs_logprint — вывод и разбор журнала.

xfs_metadump (скрипт для xfs_db) — вывод метаданных в файл.

Определить уровень фрагментации файлов: «xfs_db -c frag -r блочное-устройство» (размонтирование не требуется, но иногда случается «Segmentation fault» ; показывает долю «лишних» экстентов).

Определить уровень фрагментации свободного пространства: «xfs_db -c freesp -r блочное-устройство» (размонтирование не требуется).

Утилита дефрагментирования файла или файловой системы xfs_fsr (в качестве параметра можно указать файл или блочное устройство; по умолчанию — все файлы на всех файловых системах); не требует размонтирования. По очереди копирует все фрагментированные файлы в непрерывный кусок свободной области (если есть), затем меняет ссылку на файл. Отображённые в память (map) файлы не обрабатываются. Команда chattr утилиты xfs_io позволяет пометить файлы, которые не надо дефрагментировать (атрибут f). На каждом проходе обрабатывается 10% самых фрагментированных файлов (или просто самых больших?). Информация о следующем к обработке файле хранится в /var/tmp/.fsrlast_xfs, т.е. может продолжать прерванную работу. Лучше запускать почаще, т.к. дефрагментировать сильно «загаженную» файловую систему утилита неспособна — свободное место фрагментируется в пыль, после чего становится невозможно дефрагментировать большие файлы. Опции:

  • -v
  • -t секунд (7200; максимальное время работы)

Утилита восстановления структуры файловой системы xfs_repair (после аварийного отключения компьютера требуется смонировать и размонтировать файловую систему перед вызовом xfs_repair; 1 ГБ ОП и 12 секунд на 7.5 ТБ и 500 файлов, быстра); ключи:

  • -L (обнулить журнал)
  • -n (только проверка)
  • -t секунд (интервал между отчётами)
  • -v

Утилиты xfsdump и xfsrestore могут помочь извлечь данные из файловой системы, которой не помогла xfs_repair (требуется монтирование).

Утилита xfs_growfs позволяет увеличить размер файловой системы без размонтирования ( уменьшение размера файловой системы невозможно ).

Прочее: xfs_bmap, xfs_freeze, xfs_io, xfs_mdrestore, xfs_mkfile, xfs_ncheck, xfs_quota.

Раздел под резервное копирование bacula поверх автономного дискового массива HP StorageWorks MSA P2000 G3 (FC)

  • подключить дисковый массив к контроллеру FibreChannel
  • создать 2 массива RAID-6 (12x2TB) по 20TB, LUN во весь размер на каждом (24 диска в 1 LUN не умеет)
  • создать логический том
  • создать файловую систему
  • монтирование (/etc/fstab)
  • настройки в /etc/rc.local
  • проверка скорости (линейная скорость ограничена здесь FC контроллером на 4Gb)
  • множество примеров скоростных характеристик в статье про RAID

Проверка деградации (чтение tarnull) после полутора лет эксплуатации под хранилище томов bacula (большие и очень большие файлы, XFS, LVM над LSI MegaRAID 9266-8i — 2 RAID-6 по 18 дисков, SAS 4TB, rdcache=NoRA, iopolicy=Direct):

  • 1 поток — 16911270150144 bytes (17 TB) copied, 60008.1 s, 282 MB/s
  • 2 потока — 10441797402624 bytes (10 TB) copied, 32280.2 s, 323 MB/s
  • 4 потока — 8016907730944 bytes (8.0 TB) copied, 15049.9 s, 533 MB/s
  • 6 потоков — 15313932386304 bytes (15 TB) copied, 22621.3 s, 677 MB/s
  • 8 потоков — 32895813025792 bytes (33 TB) copied, 42517.9 s, 774 MB/s
  • 10 потоков — 30828863160320 bytes (31 TB) copied, 34851.2 s, 885 MB/s (пока их ещё 10)
  • 12 потоков — 35113530294272 bytes (35 TB) copied, 39212.2 s, 895 MB/s (пока их ещё 6)
  • 16 потоков — 17077979054080 bytes (17 TB) copied, 13573.9 s, 1.3 GB/s (пока их ещё 16)
  • 20 потоков — 5592203657216 bytes (5.6 TB) copied, 3784.57 s, 1.5 GB/s (пока их 20)
  • 24 потока — 6714306854912 bytes (6.7 TB) copied, 8835.18 s, 760 MB/s (пока их 20)
  • 32 потока — 5862605193216 bytes (5.9 TB) copied, 8141.34 s, 720 MB/s (пока их 24)
Читайте также:  Powerpoint для windows 10 активация

Проверка деградации (чтение tarnull) после полутора лет эксплуатации под хранилище томов bacula (большие и очень большие файлы, XFS, LVM над LSI MegaRAID 9266-8i — 2 RAID-6 по 18 дисков, SAS 4TB, rdcache=RA, iopolicy=Cached):

  • 1 поток — 10104413880320 bytes (10 TB) copied, 9822.86 s, 1.0 GB/s
  • 2 потока — 16951939170304 bytes (17 TB) copied, 17398.4 s, 974 MB/s
  • 4 потока — 10740585988096 bytes (11 TB) copied, 7771.81 s, 1.4 GB/s
  • 6 потоков — 37457503453184 bytes (37 TB) copied, 27914.8 s, 1.3 GB/s
  • 8 потоков — 20083290144768 bytes (20 TB) copied, 14405.3 s, 1.4 GB/s
  • 10 потоков — 13290862280704 bytes (13 TB) copied, 9638.1 s, 1.4 GB/s
  • 12 потоков — 18429180379136 bytes (18 TB) copied, 15934.9 s, 1.2 GB/s
  • 16 потоков — 20072395440128 bytes (20 TB) copied, 22512.1 s, 892 MB/s
  • 20 потоков — 19661230964736 bytes (20 TB) copied, 24707.8 s, 796 MB/s (пока их 16)
  • 24 потока — 8341583560704 bytes (8.3 TB) copied, 9555.3 s, 873 MB/s (пока их 16)
  • 32 потока — 5574189121536 bytes (5.6 TB) copied, 7060.46 s, 789 MB/s (пока их 24)

Вывод: при восстановлении малым количеством потоков необходимо включать кеширование и предварительное чтение.

Источник

ИТ База знаний

Курс по Asterisk

Полезно

— Узнать IP — адрес компьютера в интернете

— Онлайн генератор устойчивых паролей

— Онлайн калькулятор подсетей

— Калькулятор инсталляции IP — АТС Asterisk

— Руководство администратора FreePBX на русском языке

— Руководство администратора Cisco UCM/CME на русском языке

— Руководство администратора по Linux/Unix

Серверные решения

Телефония

FreePBX и Asterisk

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

Корпоративные сети

Протоколы и стандарты

Создание и форматирование разделов жестких дисков в Linux

Работаем с дисками

Целью статьи является рассмотреть вопросы разбития жестких дисков и создание на разделах различных файловых систем в Linux. Будет рассмотрено управление дисками MBR и GPT.

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Использование утилиты mkfs.

Основные утилиты для работы с разделами жестких дисков и создания файловых систем: fdisk , gdisk , parted , gparted , mkfs , mkswap .

Для работы с жесткими дисками, такими операциями как изменение размеров логических разделов, разбиение жестких дисков, создание файловых таблиц на разделах жестких дисков требуются права суперпользователя. Переключится в данных режим из режима обычного пользователя можно командой sudo –s и введя пароль.

Утилита fdisk , позволяет нам проводить различные манипуляции с разделами жесткого диска.

Команда fdisk –l , мы можем посмотреть какие разделы у нас есть на жестком диске.

И так вводим команду fdisk –l и видим у на 3 физических жестких диска /dev/sda , /dev/sdb , /dev/sdc соответствующих размеров. Нас интересует раздел /dev/sdc/ на 10 GB с которым мы будем производить манипуляции.

Далее сделаем разбивку и создадим логические разделы.

Сразу получаем предупреждение, что раздел не содержит ни одного опознанного раздела.

Создадим новые разделы. Поделим на 2 части. У нас получится следующее.

Как мы можем увидеть создались 2 раздела и имеют ID 83, т.е. Linux раздел по умолчанию.

Теперь давайте поменяем тип раздела. Это сделать можно просто в меню выбираем t – смена раздела. Выбираем номер, например, 2 и нажимаем L , чтобы посмотреть hex коды, соответствующие разным типам. Изменим тип раздела Linux на swap раздел подкачки.

И теперь мы можем увидеть введя команду p .

У нас изменился тип раздела на раздел подкачки. Обычно данные раздел используется, когда не хватает оперативной памяти у машины. Теперь необходимо записать производимые изменения командой w. После ввода данной команды диски синхронизируются и таблица разделов изменена. После этого введя команду fdisk –l мы можем убедиться, что действительно появились разделы. Для того, чтобы этот раздел действительно стал работать, как раздел подкачки, его необходимо отформатировать, как раздел подкачки. Для этого есть команда специальная mkswap /dev/sdc2 . Указываем команду и раздел, который должен быть размечен. После команды mkswap раздел размечается и теперь его необходимо включить swapon /dev/sdc2 .

Читайте также:  Линукс скопировать папку с файлами

Для того, чтобы посмотреть какие разделы подкачки используются используем команду swapon –s .

Для выключения раздела подкачки можно использовать обратную команду swapoff /dev/sdc2 .

На самом деле, как мы убедились разделы подкачки создавать достаточно просто. Если не хватает оперативки, то пере разбили, отформатировали и включили.

Теперь поработает с первым разделом. Будем использовать команду mkfs .

В описании утилиты сказано, что данная утилита, строит Linux файловую систему. У данной утилиты, очень большое количество ключей. Использую данную утилиты мы можем отформатировать логический раздел в старую файловую систему ext2, с помощью команды mkfs –t ext2 /dev/sdc1 . А затем переформатировать в более новую ext3. Файловые системы различаются тем, что более новая файловая система журналируемая. Т.е. ведется журнал изменений происходящего на данной файловой системе и в случае чего-нибудь мы можем восстановить или откатить изменения. Еще более новая файловая система ext4. Отличия данной файловой системы от предыдущей в том, что она может работать с большими размерами жестких дисков, может в себе хранить большие размеры файлов, намного меньше фрагментация. В случае если мы хотим использовать, какие-то более экзотические файловые системы, то нам необходимо скачать соответствующую утилиту. Например, если мы хотим использовать файловую систему xfs.

Если мы попробуем отформатировать mkfs –t xfs /dev/sdc1 то мы получим ошибку. Попробуем поискать в кэше необходимый пакет apt-cache search xfs .

Находим необходимый пакет. Как мы можем видеть это утилита для управления XFS файловой системой. Следовательно, необходимо установить данный пакет, и мы сможем отформатировать в xfs файловую систему. Устанавливаем apt-get install xfsprogs . После установки пробуем отформатировать в xfs. Учитывая то, что мы уже форматировали в файловую систему ext4, нам необходимо команду на форматирование запускать с ключом –f . Получаем в следующем виде:

Теперь думаю интересно будет посмотреть, как сделать данный раздел рабочим под Windows операционную систему.

Возвращаемся обратно в редактирование логических разделов fdisk /dev/sdc и говорим , что мы ходим поменять тип первого нашего раздела с помощью команды t . Далее выбираем метку, которую понимает операционная система Windows, это FAT/FAT16/FAT32/NTFS. Например, NTFS id 86. Изменили. В этом можно убедится выведя таблицу с помощью команды p .

После изменения типа логического раздела, не забываем записать изменения с помощью команды w . Далее необходимо логический раздел отформатировать mkfs -t ntfs /dev/sdc1 .

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

Если посмотреть мануал по fdisk , то мы увидим, что он не умеет работать с дисками GPT и не может работать с большими разделами, только с MBR. Как известно в современных ПК уже используется UEFI, которая работает с GPT. А как следствие мы можем сделать вывод, что fdisk не сможет работать с дисками размер которых более 2 ТБ. Для работы с большими дисками можно использовать другую программу gdisk .

Как можно прочитать в описании gdisk – это интерактивный манипулятор для работы с gpt . Он работает практически также как и fdisk , только для начала необходимо переразбить жесткий диск из MBR в GPT.

Нажав на знак вопроса получим небольшую подсказку.

И нажимаем команду o для создания нового пустого GPT.

Получаем вот такое предупреждение.

Которое говорит о том, что будет создан новый GPT и создаст маленький новый защищенный MBR для совместимости со старыми системами, иначе старые системы будут затирать GPT.

С помощью команды p можно посмотреть список логических разделов, а с помощью команды w записать изменения. Разделы в данной программе создаются аналогично fdisk .

Посмотрим еще одну утилиту parted .

Интересная программа имеющая больший функционал, чем fdisk и gdisk . Умеет работать с дисками более 2 ТБ, умеет изменять разделы на горячую, может создавать разделы сразу с файловой системой, искать и восстанавливать разделы на жестком диске.

Команда parted –l покажет информацию по подключенным жестким дискам, типам разделов и логическим разделам.

Заходим в редактирование жесткого диска parted /dev/sdc и набираем слово help . Получаем достаточно справку с опциями.

У данной утилиты есть графический интерфейс, если вы работаете с GUI. Можно установить через apt-get install gparted .

Онлайн курс по Linux

Мы собрали концентрат самых востребованных знаний, которые позволят тебе начать карьеру администратора Linux, расширить текущие знания и сделать уверенный шаг к DevOps

Источник

Оцените статью