Категорії
Misc, staff, other

[ZFS] ashift

Якщо коротко, то ashift = степінь 2-ки результат якого дорівнює block size. Для нових дисків block size = 4K, тому, ashift = 12 (бо 2^12=4096). Для старих дисків все ще використовується ashift = 9. Чим більше ashift тим буде продуктивніше працювати пул, бо за 1 раз буде більше зчитуватися даних. Але є і інша сторона – зайняте місце. Справа в тому, що якщо у вас багато маленьких файлів, по декілька КБ, то при виборі більшого ashift’y буде більше зайнятого місця. В середньому (якщо порівнювати з ashift=9) це буде в 3 рази більше зайнятого місця. Тому, при виборі ashift треба бути уважним. Головний нюанс в тому, що ashift можна змінити лише при створенні zfs pool.

А ще є момент, коли міняєте диски в одному пулі на диски з різними block size, то пул може взагалі розвалитися при перебудові. Будьте уважні!

FreeBSD/Linux

zpool create -o ashift=12 ...

Дізнатися поточний ashift можна так:

zdb | grep ashift pool

Solaris

Тут немає опції -o ashift, тому все треба робити через файл /kernel/drv/sd.conf. Скажу одразу, що на Oracle Solaris це не працює. Можливо, воно запрацює на Illumos/OpenIndiana чи старих версіях (11.3, 11.2) Oracle Solaris. Ось що треба додати у файл:

sd-config-list =
"ATA WDC WD7500BPKT", "physical-block-size:4096";

Дізнатися поточний ashift:

zdb -l /dev/rdsk/c2t5000CCA059D91391d0s0 | grep ashift

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP
Powered by Muff