Я хотел узнать, окупится ли активация дедупликации ZFS, поэтому я выполнил команду,
zdb -S tank
но понимаю, что мне понадобится помощь, чтобы интерпретировать вывод.
Simulated DDT histogram:
bucket allocated referenced
______ ______________________________ ______________________________
refcnt blocks LSIZE PSIZE DSIZE blocks LSIZE PSIZE DSIZE
------ ------ ----- ----- ----- ------ ----- ----- -----
1 49.2M 6.15T 6.15T 6.14T 49.2M 6.15T 6.15T 6.14T
2 352K 42.0G 42.0G 42.0G 725K 86.3G 86.3G 86.4G
4 7.99K 913M 913M 916M 37.7K 4.20G 4.20G 4.21G
8 1.43K 161M 161M 161M 14.6K 1.58G 1.58G 1.58G
16 623 67.1M 67.1M 67.4M 12.2K 1.32G 1.32G 1.33G
32 73 7.37M 7.37M 7.43M 2.65K 268M 268M 270M
64 717 4.23M 4.23M 7.46M 48.3K 392M 392M 611M
128 4 257K 257K 266K 689 40.9M 40.9M 42.6M
256 2 128K 128K 133K 802 57.8M 57.8M 59.3M
512 2 1K 1K 10.7K 1.37K 703K 703K 7.32M
4K 1 128K 128K 128K 7.31K 935M 935M 934M
16K 1 512B 512B 5.33K 20.0K 10.0M 10.0M 107M
64K 1 128K 128K 128K 93.0K 11.6G 11.6G 11.6G
512K 1 128K 128K 128K 712K 89.0G 89.0G 88.9G
Total 49.6M 6.19T 6.19T 6.18T 50.9M 6.34T 6.34T 6.33T
dedup = 1.02, compress = 1.00, copies = 1.00, dedup * compress / copies = 1.03
Заранее спасибо.
решение1
На этой гистограмме есть две вещи, на которые стоит обратить внимание. Первая и самая очевидная — это dedup
выражение в конце. Тут особо нечего сказать, так как это простая математика. В вашем случае дедупликация обеспечит экономию места всего на 2%, а поскольку вы не используете сжатие (которое вы должны использовать в первую очередь, потому что оно экономит место и обеспечивает производительность, поскольку ввод-вывод намного дороже процессорного времени с эффективным алгоритмом вроде LZ4), это и есть тот предельный выигрыш, который вы получите после включения дедупликации: 2~3%.
Дедупликация начинает быть ценной, когда эффективная экономия пространства выше 2.0, а ваша подсистема хранения настолько дорогая, что память и ЦП можно тратить только на обработку дедупликации. Например, мы говорим о корпоративных пулах NVMe.
Но какой ценой это достигается?
Это второе, о чем я упомянул. Первое попадание будет в вашу оперативную память. Вам нужно будет хранить таблицы дедупликации в оперативной памяти. Если оперативной памяти для этого не будет, система просто рухнет, и вы не сможете смонтировать пул. Есть некоторые улучшения в новых версиях ZFS (например, OpenZFS 2.0), но я не знаю, изменилось ли что-нибудь в этом отношении.
Учитывая это, вы просто получаете общее количество блоков, которое находится в последней строке первого столбца:49.6M
Поскольку для каждой дедуплицированной таблицы требуется 320 байт, вам просто нужно умножить количество блоков на требуемое пространство для данной дедуплицированной таблицы, и вы получите необходимый объем оперативной памяти:
49.6M * 320 bytes = 15.872MB ~ 15.5GB
Так что вы потратите почти16 ГБсистемной оперативной памяти только для дедупликации ваших недедуплицируемых данных. Эти 16 ГБ будут удалены из жизненно важных частей системы, таких как ARC, которые просто ускоряют ваш пул.
Так что нет. Дедупликация не имеет смысла, за исключением случаев, когда:
- У вас чрезвычайно дорогая подсистема хранения данных
- Ваши данные можно легко дедуплицировать