XFS

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

Как да дефрагментираме XFS файлова система
Фрагментацията е дългогодишен проблем, когато става въпрос за съхранение. Възниква, когато поради продължителна употреба носителят за съхранение получава парчета разпределени блокове със свободно пространство между тях. Това се случва, защото различни програми искат памет в различен ред и след това освобождават паметта по различно време. Наличието на неразпределено пространство между данните намалява общото налично пространство на диска (ефективност на съхранението), а също и производителността на диска, тъй като данните не се съхраняват в голям непрекъснат парче, а се разпространяват по диска.

Този проблем е особено очевиден при магнитните носители, въпреки че SSD също страдат от него. Нека се опитаме да дефрагментираме XFS файлова система в тази публикация.

Настройка на пясъчника

Първо, за да експериментирам с файловата система XFS, реших да създам testbench, вместо да работя с критични данни на диск. Този testbench е съставен от виртуална машина на Ubuntu, към която е свързан виртуален диск, осигуряващ сурово съхранение. Можете да използвате VirtualBox за създаване на виртуална машина и след това да създадете допълнителен диск, който да прикачите към виртуалната машина

Просто отидете в настройките на вашата VM и под Настройки → Съхранение раздел можете да добавите нов диск към SATA контролера можете да създадете нов диск. Както е показано по-долу, но се уверете, че вашата виртуална машина е изключена, когато направите това.

След като създадете новия диск, включете VM и отворете терминала. Командата 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.

Отворете разделителната програма като основен потребител:

$ разделен -оптимално / dev / sdb

Нека първо създадем таблица на дяловете, използвайки mklabel, след което следва създаването на един дял от целия диск (който е с размер 107GB). Можете да проверите дали дялът е направен, като го изброите с помощта на командата за печат:

(разделен) mklabel gpt
(разделен) mkpart първичен 0 107
(разделен) печат
(разделен) напусна

Добре, сега можем да видим с помощта на lsblk, че под устройството sdb има ново блоково устройство, наречено sdb1.

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

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

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

След това пишем куп файлове като фиктивни данни за дефрагментиране тук:

$ dd, ако = / dev / urandom на = / mnt / myfile.txt брой = 1024 bs = 1024

Горната команда ще напише файл myfile.txt с размер 1MB. Можете да автоматизирате тази команда в обикновен for цикъл с помощта на bash и да генерирате повече такива файлове. Разпространете ги в различни директории, ако искате. Изтрийте няколко от тях на случаен принцип. Направете всичко това във файловата система xfs (монтирана на / mnt) и след това проверете за фрагментация. Всичко това, разбира се, не е задължително.

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

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

$ xfs_db -c frag -r / dev / sdb1

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

Ако установим, че има някаква фрагментация в тази файлова система, изпълняваме командата xfs_fsr на възела на устройството:

$ xfs_fsr / dev / sdb1

Тази последна команда е всичко за дефрагментиране на вашата файлова система, можете да добавите това като cronjob, който редовно ще наблюдава вашата файлова система. Но това да се прави за xfs няма много смисъл. Разпределението на XFS, основано на степента, гарантира, че проблеми като фрагментацията остават до минимум.

Случаи на употреба

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

Проблемът възниква не само по отношение на намаленото полезно пространство, но и по отношение на намаленото IOPS, което може да навреди на производителността на вашето приложение. Наличието на скрипт за непрекъснато наблюдение на нивото на фрагментация е консервативен начин за поддържане на системата. Не искате автоматизиран скрипт да започне произволно да дефрагментира вашата файлова система, особено когато се използва при пиково натоварване.

Инсталирайте най-новия Dolphin Emulator за Gamecube & Wii на Linux
Dolphin Emulator ви позволява да играете избраните от вас игри Gamecube & Wii на Linux Personal Computers (PC). Като безплатно достъпен и емулатор на...
Как да използвам GameConqueror Cheat Engine в Linux
Статията обхваща ръководство за използването на GameConqueror cheat engine в Linux. Много потребители, които играят игри под Windows, често използват ...
Най-добрите емулатори на игрови конзоли за Linux
Тази статия ще изброи популярния софтуер за емулация на игрова конзола, наличен за Linux. Емулацията е слой за софтуерна съвместимост, който емулира х...