Btrfs

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

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

Btrfs - это файловая система копирования при записи (CoW) на основе экстентов. Большие файлы хранятся в нескольких экстентах данных; и когда эти большие файлы изменяются, изменяемые экстенты копируются в новые пустые экстенты в другом месте запоминающего устройства и изменяются в новом месте. Затем экстенты больших файлов повторно связываются, чтобы указывать на обновленные экстенты. Старые экстенты никогда не удаляются мгновенно.

Вот как функция копирования при записи (CoW) файловой системы Btrfs вызывает фрагментацию. Фрагментация означает, что объемы данных больших файлов разбросаны по всему устройству хранения. Они не мгновенные. Таким образом, производительность (скорость чтения / записи) файловой системы может снизиться.

Чтобы решить эту проблему, необходимо время от времени дефрагментировать файловую систему Btrfs. В этой статье показано, как дефрагментировать файловую систему Btrfs.

Сокращения

В этой статье используются следующие сокращения (краткие формы):

Предпосылки

Чтобы опробовать примеры, включенные в эту статью:

У меня жесткий диск на 20 гб SDB на моей машине Ubuntu. Я создам файловую систему Btrfs на жестком диске SDB.

$ sudo lsblk -e7

Примечание: Ваш HDD / SSD, скорее всего, будет иметь другое имя, чем мое, как и разделы. Так что не забудьте отныне заменить их своими.

Вы можете создать файловую систему Btrfs на своем HDD / SSD (без разбиения), если у вас есть запасной HDD / SSD. Вы также можете создать раздел на своем жестком диске / SSD и создать там файловую систему Btrfs.

Чтобы получить помощь с установкой файловой системы Btrfs в Ubuntu, ознакомьтесь со статьей «Установка и использование Btrfs в Ubuntu 20».04 LTS.

Чтобы получить помощь с установкой файловой системы Btrfs в Fedora, ознакомьтесь со статьей Установка и использование Btrfs в Fedora 33.

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

Вы можете создать файловую систему Btrfs на жестком диске / твердотельном накопителе (без разделов) или на разделе жесткого диска / твердотельного накопителя.

Чтобы создать файловую систему Btrfs на SDB HDD (весь жесткий диск, без разделов) и присвоить ему метку файловой системы данные, выполните следующую команду:

$ sudo mkfs.btrfs -L данные / dev / sdb

Файловая система Btrfs теперь должна быть создана на SDB HDD.

Создать каталог /данные чтобы смонтировать файловую систему Btrfs, которую вы только что создали, с помощью следующей команды:

$ sudo mkdir -v / данные

Чтобы смонтировать файловую систему Btrfs, созданную на SDB HDD на /данные каталог, выполните следующую команду:

$ sudo mount / dev / sdb / данные

Файловая система Btrfs теперь должна быть смонтирована, как вы можете видеть на скриншоте ниже:

$ df -h / данные

Дефрагментация файловой системы Btrfs вручную

Как вы можете видеть на скриншоте ниже, я скопировал два файла в файловую систему Btrfs, смонтированную на /данные каталог, чтобы продемонстрировать процесс дефрагментации файловой системы Btrfs:

$ ls -lh / данные

Вы можете рекурсивно дефрагментировать один файл или весь вложенный том / каталог.

Чтобы дефрагментировать отдельный файл / данные / убунту-20.04.1-жить-сервер-amd64.iso, мы запустим следующую команду:

Дефрагментация файловой системы $ sudo btrfs -vf / data / ubuntu-20.04.1-жить-сервер-amd64.iso

Файл / данные / убунту-20.04.1-жить-сервер-amd64.iso следует дефрагментировать.

Чтобы дефрагментировать каждый файл или каталог в /данные каталог рекурсивно, выполните следующую команду:

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

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

Таким же образом, если у вас был подтом / data / osimages, тогда вы можете дефрагментировать все файлы / data / osimages subvolume рекурсивно с помощью следующей команды:

Дефрагментация файловой системы $ 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 в / etc / fstab файл.

Сначала найдите UUID файловой системы Btrfs, созданной на SDB HDD, а именно:

$ sudo blkid / dev / sdb

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

Для тебя будет иначе. Так что не забудьте отныне заменить его своим.

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

$ sudo nano / etc / fstab

Добавьте следующую строку в конец / etc / fstab файл:

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

Когда вы закончите, нажмите + Икс с последующим Y а также чтобы спасти / etc / fstab файл.

Чтобы изменения вступили в силу, перезагрузите компьютер с помощью следующей команды:

$ sudo перезагрузка

Как видите, файловая система Btrfs, созданная на SDB HDD установлен на /данные каталог с включенной автоматической дефрагментацией.

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

Хотя может показаться, что дефрагментация улучшает производительность файловой системы, есть некоторые проблемы с дефрагментацией файловой системы Btrfs.

Поскольку Btrfs является файловой системой с копированием при записи (CoW), чтобы понять проблемы с дефрагментацией файловой системы Btrfs, вы должны понимать функцию копирования при записи файловой системы Btrfs.

Допустим, у вас есть большой файл (file1), который использует 100 экстентов (вы можете рассматривать экстенты как файловые блоки) файловой системы Btrfs. Если вы создадите еще одну копию этого большого файла (файл2) в той же файловой системе Btrfs, вы увидите, что дополнительное дисковое пространство не используется. Это потому, что файлы идентичны, и 100 экстентов каждого файла одинаковы. Итак, файловая система Btrfs использует одинаковые экстенты для обоих файлов.

Фигура 1: file1 а также файл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) для экономии места на диске.

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

  1. Дефрагментация файлов перемещает экстенты данных Btrfs и пытается выровнять их один за другим. Таким образом, ссылки копирования при записи между копиями файла разрываются. Это увеличит избыточные экстенты данных, а также использование диска файловой системой Btrfs, которая была ранее сохранена путем совместного использования экстентов данных между идентичными (или почти идентичными) копиями файла.
  2. Если подобтом Btrfs имеет несколько снимков, дефрагментация подтома приведет к разрыву связей копирования при записи между подобомом и снимками. Это увеличит использование диска файловой системой Btrfs.
  3. Если вы используете файловую систему Btrfs для больших баз данных или образов виртуальных машин (для хранения данных / дисков виртуальных машин), дефрагментация файловой системы также отрицательно повлияет на производительность файловой системы.

Заключение

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

Битва за Веснот 1.13.6 Выпущена разработка
Битва за Веснот 1.13.6, выпущенная в прошлом месяце, является шестой разработкой в ​​1.13.x и содержит ряд улучшений, в первую очередь пользовательско...
Как установить League Of Legends на Ubuntu 14.04
Если вы поклонник League of Legends, то это возможность для вас протестировать League of Legends. Обратите внимание, что LOL поддерживается в PlayOnLi...
Установите последнюю версию игры OpenRA Strategy в Ubuntu Linux
OpenRA - это игровой движок Libre / Free Real Time Strategy, воссоздающий ранние игры Westwood, такие как классическая Command & Conquer: Red Alert. Р...