From cd91ed10cf192488377acfd86260ab82a591bf13 Mon Sep 17 00:00:00 2001 From: Sergey Matveev Date: Tue, 24 Dec 2019 17:09:35 +0300 Subject: [PATCH] =?utf8?q?=D0=91=D0=BE=D0=BB=D1=8C=D1=88=D0=B8=D0=B5=20?= =?utf8?q?=D1=80=D0=B0=D0=B7=D0=BC=D0=B5=D1=80=D1=8B=20=D1=81=D0=B5=D0=BA?= =?utf8?q?=D1=82=D0=BE=D1=80=D0=BE=D0=B2=20=D0=B2=20ZFS=20=D0=B8=20=D0=BA?= =?utf8?q?=D0=BE=D0=BC=D0=BF=D1=80=D0=B5=D1=81=D1=81=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSRecordsizeAndCompression Про это я знал, но действительно теперь убедился воочию. Экономить байты в record-е нельзя -- можно экономить только количество секторов занимаемых на жёстком диске. Если мы хотим сжать 8 KiB record, то при сжатии его до 5 KiB, мы ровным счётом ничего не выиграем, ибо оно всё-равно на ashift=12 будет занимать два сектора на диске. Но если у нас маленький размер сектора (512 байт, ashift=9), то сэкономим несколько секторов и именно сжатое представление будет записано на диске, действительно экономя. При увеличении размера record-а, мы конечно уже будем иметь больше шансов на экономию блоков. Однако небольшие record-ы часты при использовании zvol-ов и различных СУБД. Плюс, большой ashift ещё может означать большой расход места в пустую при большом количестве маленьких файлов. В ZFS нет такой штуки как субаллокация блоков, когда в одном блоке диска содержатся данные нескольких файлов. Возможно имеет смысл делать меньший ashift даже для 4K дисков ради экономии места. А также нельзя забывать про то, что нулевые блоки не будут записываться на диск *ТОЛЬКО* если включена компрессия. Поэтому, если у вас zvol с 4-8 KiB recordsize, а компрессия не сжимает лучше чем в два раза, то всё-равно имеет смысл её включать (хотя бы zle) чтобы срабатывал триггер на экономию полностью нулевых блоков. А ещё помнить про то, что если оно всё запускается поверх GELI зашифрованного диска, то не забывать в этом GELI указывать тоже соответствующий размер сектора: это сэкономит затраты на полнодисковое шифрование, так как для каждого сектора вектора инициализации рассчитываются отдельно, а секторов тут будет в восемь раз меньше затрагиваться. -- 2.48.1