Как включить сжатие ZFS?

сжатие ZFS Советы и хитрости

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

Как и многие другие файловые системы, файловая система ZFS также поддерживает сжатие на уровне файловой системы.

Преимущества сжатия файловой системы ZFS:

  1. i) Сохраняет дисковое пространство:как я уже упоминал, когда включено сжатие ZFS, файлы, которые вы храните в пуле / файловой системе ZFS, сжимаются для экономии места на диске.
  2. ii) Сокращает время доступа к файлам: внаши дни процессоры работают очень быстро. Они могут распаковывать файлы в реальном времени. Таким образом, для распаковки файла требуется меньше времени, чем для его извлечения с запоминающего устройства (т.е. С жесткого диска). Поскольку сжатые файлы занимают меньше места для хранения, их можно быстрее извлечь с устройства хранения (т.е. С жесткого диска), чем несжатые файлы, и их можно распаковать на лету. В целом это сокращает время доступа к файлам и повышает производительность файловой системы.

В этой статье показано, как включить сжатие в пуле ZFS и файловых системах. Я также покажу вам, как работает локальное и унаследованное сжатие пула и файловых систем ZFS. Итак, приступим.

Создание пула ZFS

Чтобы поэкспериментировать со сжатием ZFS, вы должны создать тестовый пул пула ZFS1 с двумя устройствами хранения в зеркальной конфигурации.

В этой статье будут использоваться устройства хранения vdb и vdc для создания vdev (виртуального устройства) в зеркальной конфигурации и использования его для создания пула pool1.

sudo lsblk -e7

В этой статье будут использоваться устройства хранения vdb

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

sudo zpool create -f pool1 mirror /dev/vdb /dev/vdc

Чтобы создать новый пул pool1 с использованием устройств хранения vdb

Новый пул пула ZFS1 должен быть создан с использованием устройств хранения vdb и vdc в зеркальной конфигурации, как показано на снимке экрана ниже.

sudo zpool status pool1

Новый пул пула ZFS1 должен быть создан с использованием устройств хранения vdb

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

Чтобы протестировать локальное и унаследованное сжатие, вам также необходимо создать несколько файловых систем ZFS в пуле пула ZFS1.

Когда вы создаете пул ZFS, ZFS создает файловую систему с тем же именем, что и имя пула, и автоматически подключает ее в корневой каталог (/) вашего компьютера. Точка монтирования будет иметь то же имя, что и имя пула.

Например, пул пула ZFS1, который вы создали ранее, автоматически создаст пул файловой системы ZFS1 и смонтирует его в каталог / pool1 вашего компьютера, как вы можете видеть на снимке экрана ниже.

sudo zfs list

Например, пул пула ZFS1, который вы создали ранее, автоматически

ПРИМЕЧАНИЕ. В этой статье я буду называть пул файловой системы верхнего уровня1 пула пула1 пулом ZFS. Вы можете называть это пулом или файловой системой. Все хорошо.

Чтобы создать новую файловую систему ZFS fs1 в пуле pool1, выполните следующую команду:

Чтобы создать новую файловую систему ZFS fs1 в пуле pool1

sudo zfs create pool1/fs1

Как видите, создается новая файловая система ZFS pool1 / fs1, которая монтируется в каталоге / pool1 / fs1.

sudo zfs list

Как видите, создается новая файловая система ZFS pool1

Вы можете создать файловую систему fs2 в файловой системе fs1, которая находится в пуле pool1, следующим образом:

sudo zfs create pool1/fs1/fs2

Как видите, файловая система fs2 вложена в файловую систему pool1 / fs1.

sudo zfs list

Как видите, файловая система fs2 вложена в файловую систему pool1

Создайте другую файловую систему fs3 в пуле pool1 следующим образом:

sudo zfs create pool1/fs3

Файловая система fs3 должна быть создана в пуле pool1, как вы можете видеть на скриншоте ниже.

sudo zfs list

Файловая система fs3 должна быть создана в пуле pool1

Файловые системы fs1, fs2 и fs3 должны создать следующую структуру каталогов в пуле pool1 :

tree /pool1

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

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

Включение сжатия в пулах ZFS

Если вы включите сжатие в пуле ZFS, сжатие также будет включено во всех файловых системах этого пула ZFS.

Вы можете узнать, включено ли сжатие в вашем пуле пула ZFS1, с помощью следующей команды:

sudo zfs get compression pool1

Сжатие не включено в пулах ZFS по умолчанию, как вы можете видеть на снимке экрана ниже.

Сжатие не включено в пулах ZFS по умолчанию, как вы можете видеть на снимке экрана ниже

Таким же образом вы можете проверить, включено ли сжатие в файловых системах fs1, fs2 и fs3. Сжатие также не включено в файловых системах ZFS по умолчанию.

sudo zfs get compression pool1/fs1

sudo zfs get compression pool1/fs1/fs2

sudo zfs get compression pool1/fs3

Таким же образом вы можете проверить, включено ли сжатие в файловых системах fs1

Вы можете включить сжатие в пуле pool1, установив для свойства сжатия пула значение on следующим образом:

sudo zfs set compression=on pool1

Как вы можете видеть, сжатие включено ( на ), и это местное свойство пула pool1.

ПРИМЕЧАНИЕ. Если свойство является локальным, это означает, что свойство устанавливается непосредственно в пуле или файловой системе. Он не унаследован от своего родителя (пула или файловой системы).

sudo zfs get compression pool1

Теперь, если вы проверите сжатия свойство FS1

Теперь, если вы проверите сжатия свойство FS1, FS2 и fs3 файловых систем, вы должны видеть, что сжатие включено ( в ) во всех из них, и имущество наследуется от pool1.

Поскольку вы не установили свойство сжатия для файловых систем fs1, fs2 и fs3, оно наследуется от пула pool1.

sudo zfs get compression pool1/fs1

sudo zfs get compression pool1/fs1/fs2

sudo zfs get compression pool1/fs3

Поскольку вы не установили свойство сжатия для файловых систем fs1

Вы можете отключить сжатие только для FS1 файловой системы путем установки сжатия свойство FS1 файловой системы от следующим образом :

sudo zfs set compression=off pool1/fs1

Как видите, сжатие отключено ( выключено ) для файловой системы fs1. Теперь, когда свойство сжатия установлено локально для файловой системы fs1. Он не будет унаследован от пула pool1.

sudo zfs get compression pool1/fs1

Fs2 файловая система является дочерним FS1 файловой системы. Итак, он унаследовал свойство сжатия от файловой системы fs1 (родительской), как вы можете видеть на скриншоте ниже.

sudo zfs get compression pool1/fs1/fs2

Fs2 файловая система является дочерним FS1 файловой системы

Поскольку вы включили сжатие в пуле pool1, свойство автоматически наследуется всеми вложенными файловыми системами (дочерними — fs1, fs2 и fs3 ) пула pool1 (родительского). Таким образом свойства наследуются в файловых системах ZFS — дочерние файловые системы получают свои свойства из родительских файловых систем или пула, если вы явно не задали определенные свойства для дочерней файловой системы.

Если вы сходите с ума от вложения файловых систем ZFS без какого-либо предварительного планирования, вам может быть очень сложно управлять сжатием в пуле ZFS. Так что не сходите с ума от вложения файловых систем ZFS.

Включение сжатия в файловых системах ZFS

Вы также можете включить сжатие в определенных файловых системах ZFS. Давайте включим сжатие в файловой системе fs3 ZFS, которую вы создали ранее.

На этом этапе сжатие включено для файловой системы ZFS fs3, поскольку сжатие включено в пуле pool1, как вы можете видеть на снимке экрана ниже.

Свойство сжатия для файловой системы fs3 наследуется от пула pool1.

sudo zfs get compression pool1/fs3

Если вы отключите сжатие в пуле pool1, сжатие также будет отключено для файловой системы ZFS fs3.

sudo zfs set compression=off pool1

Как видите, сжатие также отключено ( отключено ) для файловой системы fs3, поскольку она унаследовала ее от пула pool1. Если вы включите сжатие для файловой системы fs3 локально, этого не произойдет.

sudo zfs get compression pool1/fs3

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

sudo zfs set compression=on pool1/fs3

Как вы можете видеть, сжатие включено ( в ) для fs3 файловой системы локально.

При желании можно отключить сжатие для файловой системы fs3 следующим образом:

sudo zfs set compression=off pool1/fs3

Сжатие должно быть отключено для файловой системы fs3, как вы можете видеть на скриншоте ниже.

sudo zfs get compression pool1/fs3

Сжатие должно быть отключено для файловой системы fs3

Проверка степени сжатия данных

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

Давайте уничтожим пул пула ZFS1, который вы только что создали, и воссоздадим его, чтобы упростить задачу.

Чтобы уничтожить пул ZFS pool1, выполните следующую команду:

sudo zpool destroy pool1

Теперь снова создайте пул ZFS pool1, используя устройства хранения vdb и vdc в зеркальной конфигурации следующим образом:

sudo zpool create -f pool1 mirror /dev/vdb /dev/vdc

Включите сжатие в пуле pool1 следующим образом:

sudo zfs set compression=on pool1

Сжатие должно быть включено для пула ZFS pool1.

sudo zfs get compression pool1

Вы можете увидеть степень сжатия пула ZFS pool1 с помощью следующей команды:

sudo zfs get compressratio pool1

Прямо сейчас пул pool1 пуст. Итак, степень сжатия 1,00x. Это означает, что данные еще не сжаты.

Как видите, из пула pool1 используется только 108 КБ данных.

sudo zfs list

Давайте копировать и т.д. / каталог для пула ZFS pool1.

sudo cp -r /etc/ pool1/

Как видите, каталог / etc скопирован в пул пула ZFS1.

ls /pool1

Обратите внимание, что размер каталога / etc в пуле составляет 4,2 МБ 1. Но из пула pool1 используется только 3,26 МБ 2 пространства.

sudo du -sh /pool1

sudo zfs list

На самом деле размер каталога / etc составляет 11 МБ, как вы можете видеть на скриншоте ниже.

sudo du -sh /etc

etc составляет 11 МБ, как вы можете видеть на скриншоте ниже

Степень сжатия составляет около 1,93x. Это очень хорошая степень сжатия. Чем выше степень сжатия, тем больше места на диске вы сэкономите с помощью сжатия ZFS.

sudo zfs get compressratio pool1

Поддерживаемые ZFS алгоритмы сжатия

На момент написания этой статьи ZFS поддерживает следующие алгоритмы сжатия данных:

  • i) lzjb: этот алгоритм оптимизирован для производительности. Он также обеспечивает достойную степень сжатия данных.
  • ii) lz4:этот алгоритм заменяеталгоритм lzjb. Он обеспечивает более быстрое сжатие и распаковку. Степень сжатия умеренно выше, чем у алгоритма lzjb.
  • iii) gzip: использует тот же алгоритм сжатия, что и команда gzip. GZIP алгоритм сжатия поддерживает различные уровни сжатия. Уровень сжатия может быть 1-9. Вы можете использовать gzip-N ( N — уровень), чтобы определить уровень для алгоритма сжатия gzip. Если вы не укажете уровень для алгоритма сжатия gzip, ZFS по умолчанию использует уровень 6 ( gzip-6 ).

gzip-1 : gzip уровня 1 — самый быстрый, но самый низкий коэффициент сжатия.

gzip-2: gzip уровня 2 — медленнее, чем уровень 1, но более высокая степень сжатия, чем уровень 1.

gzip-3: gzip уровня 3 — медленнее, чем уровень 2, но более высокая степень сжатия, чем уровень 2.

gzip-4: gzip уровня 4 — медленнее, чем уровень 3, но более высокая степень сжатия, чем уровень 3.

gzip-5: gzip уровня 5 — медленнее, чем уровень 4, но более высокая степень сжатия, чем уровень 4.

gzip-6: gzip уровня 6 — медленнее, чем уровень 5, но более высокая степень сжатия, чем уровень 5.

gzip-7: gzip уровня 7 — медленнее, чем уровень 6, но более высокая степень сжатия, чем уровень 6.

gzip-8: gzip уровня 8 — медленнее, чем уровень 7, но более высокая степень сжатия, чем уровень 7.

gzip-9: gzip 9-го уровня — самая медленная, но самая высокая степень сжатия.

  • iv) zle:этот алгоритм оптимизирован для сжатия серий нулей.

lzjb — это алгоритм сжатия данных по умолчанию в файловой системе ZFS.

Если в пуле ZFS включена функция lz4_compress, то алгоритм сжатия данных по умолчанию будет lz4.

Чтобы проверить, включена ли функция lz4_compress в вашем пуле ZFS pool1, выполните следующую команду:

sudo zpool get feature@lz4_compress pool1

Как видите, функция lz4_compress включена в пуле ZFS pool1.

Вы можете установить другой алгоритм сжатия в пуле или файловой системе ZFS следующим образом:

sudo zfs set compression=<algorithm> <pool/fs>

Замените одним из поддерживаемых ZFS алгоритмов сжатия, а — пулом или файловой системой ZFS, в которой вы хотите включить сжатие с использованием алгоритма сжатия .

Например, чтобы включить сжатие и использовать алгоритм сжатия gzip-9 в пуле pool1, выполните следующую команду:

sudo zfs set compression=gzip-9 pool1

Как видите, сжатие gzip-9 включено в пуле pool1.

sudo zfs get compression pool1

Теперь создайте файловую систему ZFS fs3 в пуле пула ZFS1 следующим образом:

sudo zfs create pool1/fs3

Таким же образом можно включить сжатие в файловой системе fs3 ZFS, используя алгоритм сжатия zle следующим образом:

sudo zfs set compression=zle pool1/fs3

Как видите, сжатие zle включено в файловой системе ZFS fs3.

sudo zfs get compression pool1/fs3

Как видите, сжатие zle включено в файловой системе ZFS fs3

Стоит ли включать сжатие ZFS?

При сжатии размер файлов любого типа не уменьшается. Например, файлы видео (например, MP4), аудио (например, MP3) и изображений (например, JPEG). Вместо того, чтобы уменьшить их размер, они иногда становятся больше при сжатии. Это обратная сторона сжатия файловой системы.

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

Заключение

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

Читайте также:  Windows 11: как включить TPM в BIOS
Оцените статью
ПОПУЛЯРНЫЕ ТЕХНОЛОГИИ
Добавить комментарий