Btrfs

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

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

Btrfs е файлова система Copy-on-Write (CoW), базирана на степен. Големите файлове се съхраняват в множество размери на данни; и когато тези големи файлове се модифицират, екстентите, които трябва да бъдат модифицирани, се копират в нови, празни екстенти на друго място на устройството за съхранение и се модифицират на новото място. След това разширенията на големите файлове се свързват отново, за да сочат към обновените разширения. Старите екстенти никога не се премахват незабавно.

Ето как функцията Copy-on-Write (CoW) на файловата система Btrfs причинява фрагментация. Фрагментацията означава, че обхвата на данните на големи файлове са разпръснати из цялото устройство за съхранение. Те не са моментални. Така че производителността (скорост на четене / запис) на файловата система може да бъде намалена.

За да се реши този проблем, е необходимо да се дефрагментира файловата система Btrfs от време на време. Тази статия ви показва как да дефрагментирате файловата система Btrfs.

Съкращения

Съкращенията (кратки форми), използвани в тази статия, са както следва:

Предпоставки

За да изпробвате примерите, включени в тази статия:

Имам 20 GB HDD sdb на моята машина на Ubuntu. Ще създам файлова система Btrfs на твърдия диск sdb.

$ sudo lsblk -e7

Забележка: Вашият HDD / SSD вероятно ще има различно име от моето, както и дяловете. Така че, не забравяйте да ги замените от сега нататък.

Можете да създадете файлова система Btrfs на вашия HDD / SSD (без разделяне), ако имате резервен HDD / SSD. Можете също да създадете дял на вашия HDD / SSD и да създадете там файлова система Btrfs.

За помощ при инсталирането на файловата система Btrfs в Ubuntu, вижте статията Инсталиране и използване на Btrfs на Ubuntu 20.04 LTS.

За помощ при инсталирането на файловата система Btrfs във Fedora, вижте статията Инсталиране и използване на Btrfs на Fedora 33.

Създаване на файлова система Btrfs

Можете да създадете файлова система Btrfs на вашия HDD / SSD (неразделен) или на вашия HDD / SSD дял.

За да създадете файлова система Btrfs в sdb HDD (цял HDD, без дялове) и му дайте етикета на файловата система данни, изпълнете следната команда:

$ sudo mkfs.btrfs -L data / dev / sdb

Файлова система Btrfs сега трябва да бъде създадена на sdb HDD.

Създайте директорията /данни за монтиране на току-що създадената от вас файлова система Btrfs със следната команда:

$ sudo mkdir -v / data

За да монтирате файловата система Btrfs, създадена в sdb HDD на /данни директория, изпълнете следната команда:

$ sudo mount / dev / sdb / data

Файловата система Btrfs вече трябва да бъде монтирана, както можете да видите на екранната снимка по-долу:

$ df -h / данни

Дефрагментиране на файлова система Btrfs ръчно

Както можете да видите на екранната снимка по-долу, копирах два файла от файловата система Btrfs, монтирани на /данни директория за демонстрация на процеса на дефрагментиране на файловата система Btrfs:

$ ls -lh / данни

Можете да дефрагментирате един файл или цял подтом / директория рекурсивно.

За дефрагментиране на единичния файл / data / ubuntu-20.04.1-live-server-amd64.изо, ще изпълним следната команда:

$ sudo btrfs дефрагментиране на файлова система -vf / data / ubuntu-20.04.1-live-server-amd64.изо

Файлът / data / ubuntu-20.04.1-live-server-amd64.изо трябва да се дефрагментира.

За дефрагментиране на всеки файл или директория на /данни директория рекурсивно, изпълнете следната команда:

$ sudo btrfs дефрагментиране на файлова система -rvf / data

Както можете да видите, всички файлове на /данни директория са дефрагментирани.

По същия начин, ако сте имали подтома / data / osimages, тогава можете да дефрагментирате всички файлове на / data / osimages подтом рекурсивно със следната команда:

$ sudo btrfs дефрагментиране на файлова система -rvf / data / osimages

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

Файловата система Btrfs ви позволява да компресирате файлове, докато ги дефрагментирате.

За дефрагментиране на всички файлове в /данни директория и ги компресирайте с ZLIB алгоритъм за компресиране едновременно, изпълнете командата за дефрагментиране с -czlib опция, както следва:

$ sudo btrfs дефрагментиране на файлова система -rvf -czlib / data

За да дефрагментирате всички файлове в /данни директория и ги компресирайте с ZSTD алгоритъм за компресиране едновременно, изпълнете командата за дефрагментиране с -czstd опция, както следва:

$ sudo btrfs дефрагментиране на файлова система -rvf -czstd / data

За да дефрагментирате всички файлове в /данни директория и ги компресирайте с LZO алгоритъм за компресиране едновременно, изпълнете командата за дефрагментиране с -clzo опция, както следва:

$ sudo btrfs дефрагментиране на файлова система -rvf -clzo / data

Файловете в /данни директория трябва да се дефрагментира и компресира едновременно.

По същия начин можете да дефрагментирате и компресирате и файловете на подтома Btrfs.

Автоматично дефрагментиране на файлова система Btrfs

Можете да активирате автоматично дефрагментиране на вашата файлова система Btrfs по време на монтиране. Тази функция на файловата система Btrfs ще дефрагментира автоматично всички файлове на вашата файлова система Btrfs.

За да монтирате файловата система Btrfs, създадена в sdb HDD в /данни директория с активирана автоматична дефрагментация по време на зареждане, трябва да добавите запис за файловата система Btrfs в / и т.н. / fstab файл.

Първо намерете UUID на файловата система Btrfs, създадена в sdb HDD, както следва:

$ sudo blkid / dev / sdb

Както можете да видите, UUID на файловата система Btrfs, създадена в sdb HDD е 60afc092-e0fa-4b65-81fd-5dfd7dd884de.

За вас ще е различно. Така че, не забравяйте да го замените от сега нататък.

Отвори / и т.н. / fstab файл с нано текстов редактор, както следва:

$ sudo nano / etc / fstab

Добавете следния ред в края на / и т.н. / fstab файл:

UUID = 60afc092-e0fa-4b65-81fd-5dfd7dd884de / data btrfs autodefrag 0 0

След като приключите, натиснете + х следван от Y и за да запазите / и т.н. / fstab файл.

За да влязат в сила промените, рестартирайте компютъра си със следната команда:

$ sudo рестартиране

Както можете да видите, файловата система Btrfs, създадена в sdb HDD е монтиран на /данни директория с активирано автоматично дефрагментиране.

Проблеми с дефрагментирането на файлова система Btrfs

Въпреки че може да изглежда, че дефрагментирането подобрява производителността на файловата система, има някои проблеми с дефрагментирането на файлова система Btrfs.

Тъй като Btrfs е файлова система Copy-on-Write (CoW), за да разберете проблемите с дефрагментирането на файловата система Btrfs, трябва да разберете функцията Copy-on-Write на файловата система Btrfs.

Да предположим, че имате голям файл (файл1), който използва 100 екстента (можете да мислите за екстентите като файлови блокове) на файлова система Btrfs. Ако създадете друго копие на този голям файл (файл2) в същата файлова система Btrfs ще видите, че не се използва допълнително дисково пространство. Това е така, защото файловете са идентични и 100-те степени на всеки файл са еднакви. Така че, файловата система Btrfs използва еднакви разширения и за двата файла.

Фигура 1: файл1 и файл2 са идентични и споделят еднакви разширения на файловата система Btrfs, за да спестят дисково пространство

Да речем, че сте модифицирали едно от копията на големия файл (файл2). Модификацията трябва да промени 10 от 100 степени. Файловата система Btrfs ще копира необходимите 10 екстента на друго неизползвано място (да речем, e101-e110) на файловата система и ги променете там. След като промените бъдат записани на диска, файловата система Btrfs ще свърже отново екстентите, така че промените да бъдат отразени в големия файл. Процесът е илюстриран на фигурата по-долу:

Фигура 2: 10 разширенията се променят в файл2. И така, екстентите са свързани отново във файловата система Btrfs.

От фигури 1 и 2 можете да разберете как работи Copy-on-Write (CoW) и как файловата система Btrfs използва Copy-on-Write (CoW), за да спести дисково пространство.

След като вече знаете как работи функцията Copy-on-Write (CoW) на файловата система Btrfs, ще разберете проблемите с дефрагментирането на файлова система Btrfs.

  1. Дефрагментиращите файлове преместват степента на данни на Btrfs и се опитват да ги подравнят, един след друг. И така, връзките Copy-on-Write между копията на файла се прекъсват. Това ще увеличи излишните размери на данни, както и използването на диска на файлова система Btrfs, която преди това е била запазена чрез споделяне на размери на данни между идентични (или почти идентични) копия на файла.
  2. Ако подтомът на Btrfs има множество моментни снимки, дефрагментирането на подтома ще прекъсне връзките Copy-on-Write между подтома и моментните снимки. Това ще увеличи използването на диск на файлова система Btrfs.
  3. Ако използвате файловата система Btrfs за големи бази данни или изображения на виртуална машина (за съхраняване на данни / дискове на VM), дефрагментирането на файловата система също ще се отрази негативно на производителността на файловата система.

Заключение

В тази статия научихте как да дефрагментирате отделен файл и файловете в директория / подтом рекурсивно на файлова система Btrfs. Също така научихте как да активирате автоматично дефрагментиране на файлова система Btrfs по време на монтиране. И накрая, статията обсъди някои от проблемите с дефрагментирането на файлова система Btrfs.

Емулирайте кликванията на мишката, като задържите курсора на мишката с кликаща мишка в Windows 10
Използването на мишка или клавиатура в неправилна поза при прекомерна употреба може да доведе до много здравословни проблеми, включително напрежение, ...
Добавете жестове на мишката към Windows 10, като използвате тези безплатни инструменти
През последните години компютрите и операционните системи значително се развиха. Имаше време, когато потребителите трябваше да използват команди за на...
Контролирайте и управлявайте движението на мишката между множество монитори в Windows 10
Двоен дисплей на мишката ви позволява да контролирате и конфигурирате движението на мишката между множество монитори, като забавя движенията му близо ...