XFS

Как дефрагментировать файловую систему XFS

Как дефрагментировать файловую систему XFS
Когда речь идет о хранении, фрагментация - давняя проблема. Возникает, когда из-за длительного использования носитель получает куски выделенных блоков со свободным пространством между ними. Это происходит потому, что разные программы запрашивают память в разном порядке, а затем освобождают память в разное время. Наличие фрагментов нераспределенного пространства между данными снижает общее доступное пространство на диске (эффективность хранения), а также производительность диска, поскольку данные не хранятся в большом непрерывном фрагменте, а распределяются по диску.

Эта проблема особенно очевидна для магнитных носителей, хотя твердотельные накопители также страдают от нее. Давайте попробуем дефрагментировать файловую систему XFS в этом посте.

Настройка песочницы

Во-первых, чтобы поэкспериментировать с файловой системой XFS, я решил создать тестовую среду вместо работы с критически важными данными на диске. Этот тестовый стенд состоит из виртуальной машины Ubuntu, к которой подключен виртуальный диск, обеспечивающий необработанное хранилище. Вы можете использовать VirtualBox для создания виртуальной машины, а затем создать дополнительный диск для подключения к виртуальной машине

Просто зайдите в настройки вашей виртуальной машины и в Настройки → Хранилище раздел вы можете добавить новый диск к контроллеру SATA вы можете создать новый диск. Как показано ниже, но при этом убедитесь, что ваша виртуальная машина выключена.

После создания нового диска включите виртуальную машину и откройте терминал. Команда lsblk перечисляет все доступные блочные устройства.

$ lsblk
sda 8: 0 0 60G 0 диск
├─sda1 8: 1 0 1M 0 часть
└─sda2 8: 2 0 60G 0 часть /
sdb 8:16 0 100G 0 диск
sr0 11: 0 1 1024M 0 rom

Помимо основного блочного устройства sda, там, где установлена ​​ОС, теперь есть новое устройство sdb. Давайте быстро создадим из него раздел и отформатируем его с файловой системой XFS.

Откройте утилиту parted от имени пользователя root:

$ parted -a оптимальный / dev / sdb

Давайте сначала создадим таблицу разделов с помощью mklabel, а затем создадим один раздел из всего диска (размером 107 ГБ). Вы можете убедиться, что раздел создан, перечислив его с помощью команды печати:

(расстались) mklabel gpt
(разошлись) мкпарт первичный 0107
(разошлись) печать
(расстался) бросить

Хорошо, теперь мы можем видеть, используя lsblk, что есть новое блочное устройство под устройством sdb, называемое sdb1.

Отформатируем это хранилище как xfs и смонтируем в каталог / mnt. Снова выполните следующие действия как root:

$ mkfs.xfs / dev / sdb1
$ mount / dev / sdb1 / mnt
$ df -h

Последняя команда распечатает все смонтированные файловые системы, и вы можете проверить, что / dev / sdb1 смонтирован в / mnt.

Затем мы записываем кучу файлов в качестве фиктивных данных для дефрагментации здесь:

$ dd if = / dev / urandom of = / mnt / myfile.txt count = 1024 bs = 1024

Приведенная выше команда запишет файл myfile.txt размером 1 МБ. Вы можете автоматически преобразовать эту команду в простой цикл for с помощью bash и сгенерировать больше таких файлов. Разложите их по разным каталогам, если хотите. Удалить несколько из них случайным образом. Сделайте все это внутри файловой системы xfs (смонтированной в / mnt), а затем проверьте фрагментацию. Все это, конечно, необязательно.

Дефрагментируйте вашу файловую систему

Первое, что нам нужно сделать, это выяснить, как проверить степень фрагментации. Например, файловая система xfs, которую мы создали ранее, находилась на узле устройства / dev / sdb. Мы можем использовать утилиту xfs_db (расшифровывается как xfs debugging), чтобы проверить уровень фрагментации.

$ xfs_db -c frag -r / dev / sdb1

Флаг -c принимает различные команды, среди которых есть команда frag для проверки уровня фрагментации. Флаг -r используется, чтобы убедиться, что операция полностью доступна только для чтения.

Если мы обнаружим, что в этой файловой системе есть фрагментация, мы запускаем команду xfs_fsr на узле устройства:

$ xfs_fsr / dev / sdb1

Эта последняя команда - все, что нужно для дефрагментации вашей файловой системы, вы можете добавить ее как задание cron, которое будет регулярно контролировать вашу файловую систему. Но делать это для xfs не имеет смысла. Распределение XFS на основе экстентов гарантирует, что такие проблемы, как фрагментация, сведены к минимуму.

Сценарии использования

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

Проблема возникает не только с точки зрения уменьшения полезного пространства, но и с точки зрения уменьшения количества операций ввода-вывода в секунду, что может снизить производительность вашего приложения. Наличие сценария для постоянного мониторинга уровня фрагментации - консервативный способ поддержки системы. Вы не хотите, чтобы автоматизированный скрипт произвольно запускал дефрагментацию вашей файловой системы, особенно когда она используется при пиковой нагрузке.

Порты коммерческих игровых движков с открытым исходным кодом
Бесплатные игры с открытым исходным кодом и кроссплатформенные версии игрового движка можно использовать для игры как в старые, так и в некоторые из с...
Лучшие игры с командной строкой для Linux
Командная строка - не только ваш главный союзник при использовании Linux - она ​​также может быть источником развлечений, потому что вы можете использ...
Лучшие приложения для сопоставления геймпадов для Linux
Если вам нравится играть в игры на Linux с помощью геймпада вместо стандартной системы ввода с клавиатуры и мыши, для вас есть несколько полезных прил...