Я пытаюсь протестировать проект, которому требуется сжатое хранилище, с использованием файловой системы ext4, поскольку приложение, которое я использую, использует функции ext4.
Существуют ли какие-либо производственные / стабильные решения для прозрачного сжатия на ext4?
Что я пробовал:
Ext4 поверх тома ZFS с включенным сжатием. Это на самом деле оказало негативное влияние. Я попытался создать том ZFS с включенным сжатием lz4 и создать файловую систему ext4 в / dev / zvol / ..., но том zfs показал удвоенное фактическое использование, и сжатие, похоже, не оказало никакого влияния.
# du -hs /mnt/test
**1.1T** /mnt/test
# zfs list
NAME USED AVAIL REFER MOUNTPOINT
pool 15.2T 2.70G 290K /pool
pool/test 15.2T 13.1T **2.14T** -
Команды создания ZFS
zpool create pool raidz2 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde2 /dev/sdf1 /dev/sdg1 /dev/sdh2 /dev/sdi1
zfs set recordsize=128k pool
zfs create -p -V15100GB pool/test
zfs set compression=lz4 pool/test
mkfs.ext4 -m1 -O 64bit,has_journal,extents,huge_file,flex_bg,uninit_bg,dir_nlink /dev/zvol/pool/test
Fusecompress: Кажется, работает, но не на 100% стабильно. Ищем альтернативы.
LessFS: возможно ли использовать Lessfs вместе с ext4? Я еще не пробовал, но был бы заинтересован в понимании пользователей.
Одна главная проблема: не настоящая прозрачность
Проблема, с которой я столкнулся в fusecompress - это квоты. Например, если бы я включил сжатие в файловой системе, я бы хотел, чтобы моя система получала выгоду от сжатия, а не обязательно от конечного пользователя. Если бы я включил квоту в 1 ГБ для пользователя с коэффициентом сжатия 1,5, он мог бы загружать 1,5 ГБ данных вместо 1 ГБ данных, и система получала выгоду от сжатия. Это также появилось, чтобы показать на df -h. Есть ли решение сделать сжатие прозрачным для квот?
источник
Ответы:
Я использую ZFS в Linux как менеджер томов и средство для обеспечения дополнительной защиты и функциональности для традиционных файловых систем. Это включает создание моментальных снимков на уровне блоков, репликацию, дедупликацию, сжатие и расширенное кэширование в файловых системах XFS или ext4.
Смотрите: https://pthree.org/2012/12/21/zfs-administration-part-xiv-zvols/ для другого объяснения.
В моем наиболее распространенном сценарии использования я использую функцию ZFS zvol для создания разреженного тома в существующем zpool. Свойства этого zvol могут быть установлены как обычная файловая система ZFS. На этом этапе вы можете установить такие свойства, как тип сжатия, размер тома, метод кэширования и т. Д.
Создание этого zvol представляет собой блочное устройство для Linux, которое может быть отформатировано в выбранной вами файловой системе. Используйте
fdisk
илиparted
для создания раздела иmkfs
готового тома.Смонтируйте это, и у вас по существу будет файловая система, поддерживаемая zvol и со всеми ее свойствами.
Вот мой рабочий процесс ...
Создайте zpool, состоящий из четырех дисков:
вам понадобится
ashift=12
директива для типа дисков, которые вы используете. В этом случае имя zpool - "vol0".Установите начальные настройки zpool:
я устанавливаю
autoexpand=on
уровень zpool на случай, если когда-нибудь заменю диски на диски большего размера или увеличу пул в настройке зеркал ZFS . Обычно я не использую ZFS raidz1 / 2/3 из-за низкой производительности и невозможности расширения zpool.Установите начальные свойства файловой системы zfs:
пожалуйста, используйте
lz4
алгоритм сжатия для новых установок ZFS. Можно оставить все время включенным.Создание ZFS zvol:
для ZFS в Linux очень важно использовать большой размер блока.
-o volblocksize=128k
здесь абсолютно необходимо.-s
Опция создает редкую zvol и не потребляет бассейн пространства , пока это не нужно. Вы можете сделать это здесь, если хорошо знаете свои данные. В этом случае у меня есть около 444 ГБ доступного дискового пространства в пуле, но я представляю том объемом 800 ГБ для XFS.Устройство разделов zvol:
( должно быть / dev / zd0 для первого zvol; / dev / zd16, / dev / zd32 и т. Д. Для последующих zvols )
Создайте и смонтируйте файловую систему:
mkfs.xfs или ext4 во вновь созданном разделе, / dev / zd0p1.
Возьмите UUID
blkid
и измените его/etc/fstab
.Смонтируйте новую файловую систему.
Полученные результаты...
Список файловой системы ZFS.
ZFS Zpool список.
Свойства ZFS zvol ( обратите внимание
referenced
,compressratio
иvolsize
).источник
/dev/sdb
против/dev/sdb1
.Вам также необходимо включить сброс в файловой системе ext4. Без сброса zfs не освобождает место при удалении файлов. Это может привести к большим несоответствиям между данными файловой системы ext4 и отчетами о томах zfs.
источник
fstrim
команду.