Показаны различия между двумя версиями страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
linux:zfs [2023/11/03 05:14] admin |
linux:zfs [2024/02/15 10:34] (текущий) admin |
||
---|---|---|---|
Строка 32: | Строка 32: | ||
===== Использование ===== | ===== Использование ===== | ||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | zfs list # dataset list | ||
+ | |||
+ | zpool list [-L] [-v] # pool list | ||
+ | zpool status [exist-pool] [-x] | ||
+ | zpool get all [exist-pool] | ||
+ | |||
+ | # какой то моментный срез, имеет смысл только с интервалом, | ||
+ | # кстати с разрезом по дискам, | ||
+ | zpool iostat [pool-name] [interval_sec] | ||
+ | zpool iostat -v # в разрезе по Vdev | ||
+ | |||
+ | arcstat | ||
+ | |||
+ | / | ||
+ | zpool history | ||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
< | < | ||
< | < | ||
<code bash> | <code bash> | ||
- | # Подключение шифрованного | + | # Перечень пулов с инфой по ним |
+ | zpool list -vL | ||
+ | |||
+ | # создание пула | ||
+ | zpool create [-o ashift=12] [pool-name] mirror [diskID1] [diskID2] [diskID3] | ||
+ | # (можно перечислить пару раз mirror [disk] [disk], для создания нескольких зеркал) | ||
+ | # для создания пула Raidz команда аналогична, | ||
+ | |||
+ | # добавление дисков | ||
+ | zpool add [-o ashift=12] [exist-pool] mirror [diskID4] | ||
+ | # -f для изменения степени избыточности | ||
+ | # -n пробный прогон (?) | ||
+ | </ | ||
+ | |||
+ | Шифрование | ||
+ | <code bash> | ||
+ | # Параметр шифрования | ||
+ | zfs get encryption tank/ | ||
+ | |||
+ | # Создание пула с шифрованием | ||
+ | zfs create -o encryption=on -o keylocation=prompt -o keyformat=passphrase tank/ | ||
+ | |||
+ | # Отключение шифрованного | ||
+ | zfs unload-key tank/ | ||
+ | zfs unmount tank/ | ||
+ | |||
+ | # Загрузка шифрованного пула | ||
zfs load-key tank/secure | zfs load-key tank/secure | ||
zfs mount tank/secure | zfs mount tank/secure | ||
+ | </ | ||
- | # Перечень томов с инфой по ним | ||
- | zpool list -vL | ||
- | </ | + | При создании пула выполняются проверки дисков на использование, |
+ | Для зеркала можно и нечетное кол-во, | ||
+ | При создании двух зеркал в одном пуле, создается еще одно вирт устр-во верхнего уровня. Данные наносятся полосами на оба зеркала, | ||
+ | Можно добавлять набор дисков, | ||
+ | |||
+ | команда **zpool remove** поддерживает только удаление уст-в горячего резерва и уст-в кеширования. Уст-ва часть основной конфигурации зеркального пула могут быть удалены **zpool detach**. Уст-ва без избыточности и устр-ва RaidZ удалить из пула невозможно | ||
</ | </ | ||
Строка 72: | Строка 124: | ||
===== Конфигурация ===== | ===== Конфигурация ===== | ||
[[https:// | [[https:// | ||
+ | [[https:// | ||
+ | |||
+ | Текущее состояние отображено в файлах "cat / | ||
+ | Для динамических св-в, можно изменить значение там же, но для многих нужна перезагрузка, | ||
+ | <code bash> | ||
+ | options zfs PARAMETER=VALUE | ||
+ | options zfs zfs_arc_max=2147483648 | ||
+ | options zfs zfs_arc_min=1073741824 | ||
+ | |||
+ | # Затем обновление плагинов командой | ||
+ | sudo update-initramfs -u -k all | ||
+ | </ | ||
+ | |||
< | < | ||
< | < | ||
+ | Некоторые пар-ры прописаны в "/ | ||
+ | |||
+ | |||
<code bash> | <code bash> | ||
- | # Текущие параметры | + | # Текущее |
zfs get [parameter || all] | zfs get [parameter || all] | ||
zfs list -o [parameter || all] [FS-name] | zfs list -o [parameter || all] [FS-name] | ||
+ | # либо | ||
+ | cat / | ||
- | # Задать параметр | + | # Задать параметр |
zfs set [parameter=newvalue] [FS-name] | zfs set [parameter=newvalue] [FS-name] | ||
- | | + | |
+ | zpool create -O compression=on pool mirror c0t1d0 c0t2d0 | ||
+ | |||
# Для сжатия можно указать тип и уровень | # Для сжатия можно указать тип и уровень | ||
zfs set compression=gzip-9 [FS-name] | zfs set compression=gzip-9 [FS-name] | ||
- | # | + | # Текущие параметры в файлах |
- | ls / | + | ls / |
- | # описание | + | # описание |
modinfo zfs | modinfo zfs | ||
</ | </ | ||
Строка 97: | Строка 170: | ||
===== ARC ===== | ===== ARC ===== | ||
+ | |||
< | < | ||
< | < | ||
[[https:// | [[https:// | ||
+ | Cache (Зеркалирование уст-в кеширования невозможно и они не могут быть частью RaidZ)\\ | ||
+ | |||
<code bash> | <code bash> | ||
- | # | + | ## |
- | arcstat | + | ## Так то это похоже про L2ARC говорится, |
+ | ## | ||
+ | ## ну хотя да, основной ведь в памяти, | ||
+ | ## | ||
+ | |||
+ | # при создании пула | ||
+ | zpool create tank mirror [disk1] cache [CacheDisk1] | ||
+ | # после создания | ||
+ | zpool add [exist-pool] cache [CacheDisk1] [CacheDisk2] | ||
+ | zpool remove [exist-pool] [CacheDisk1] [CacheDisk2] | ||
+ | zpool add -o ashift=12 tank cache nvme-INTEL_SSDPE2KX010T8_BTLJ904509X61P0FGN-part2 | ||
+ | </ | ||
+ | |||
+ | Настройка типа данных для кэширования\\ | ||
+ | Применяется в рантайме\\ | ||
+ | <code bash> | ||
+ | zfs get primarycache | ||
+ | zfs set primarycache=metadata tank/ | ||
+ | </ | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | arcstat | ||
- | # | ||
arc_summary | more | arc_summary | more | ||
arc_summary -d | more | arc_summary -d | more | ||
+ | |||
+ | # пакет " | ||
+ | zfs-stats -A | ||
+ | zfs-stats -E | ||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | Адаптивный кэш используется всегда, | ||
+ | |||
+ | Второй момент, | ||
+ | Он используется для **задания очистки**, | ||
+ | |||
+ | Метрики **_evictable** отображают сколько данных ZFS готова освободить при очередной итерации очистки\\ | ||
+ | Прим: раз эта метрика не сбрасывается, | ||
+ | |||
+ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== ZIL ===== | ||
+ | ZIL обеспечивает требования POSIX для синхронных транзакций, | ||
+ | По умолчанию выделяется из блоков основного хранилища\\ | ||
+ | |||
+ | < | ||
+ | < | ||
+ | <code bash> | ||
+ | # при создании пула | ||
+ | zpool create tank mirror [disk1] log [mirror] [LodDisk1] | ||
+ | # ps. "с зеркальными устр-ми протоколирования" | ||
+ | zpool add [exist-pool] log mirror [LogDisk1] [LogDisk2] | ||
+ | zpool add -o ashift=12 tank log nvme-INTEL_SSDPE2KX010T8_BTLJ904509X61P0FGN-part1 | ||
+ | </ | ||
+ | |||
+ | * Повышение производительности в результате использования отдельного уст-ва зависит от типа устр-ва, | ||
+ | * Эти устр-ва могут быть без репликации или с зеркалом, | ||
+ | * Если на отдельном устр-ве не использвется зеркало то в случае выхода из строя, протоколирование автоматически перейдет в основной пулл хранения данных | ||
+ | * С уст-вам протоколирования можно делать все кроме удаления | ||
+ | * Минимальный размер как и для общих пулов (64Мб) максимальный рекоммендуется в половину от имеющейся ОЗУ т.к. это максимальный объем потенциально активных данных которые могут хранится на устр-ве | ||
</ | </ | ||
Строка 145: | Строка 283: | ||
zfs send -i tank@2022-11-11 tank@2022-11-12 | ssh host2 zfs recv newtank/ | zfs send -i tank@2022-11-11 tank@2022-11-12 | ssh host2 zfs recv newtank/ | ||
</ | </ | ||
+ | </ | ||
+ | |||
+ | |||
+ | ===== Тюнинг ===== | ||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | |||
+ | **ashift**\\ | ||
+ | Размер блока (секторов) диска, должен совпадать с физическим размером у диска\\ | ||
+ | Указывается как степень двойки т.е. " | ||
+ | По умолчанию zfs пытается узнать его в ОС при создании пула, но механизм не надежный, | ||
+ | В случае указания размера меньше фактического, | ||
+ | MRU - недавно используемые\\ | ||
+ | MFU - часто используемые\\ | ||
+ | |||
+ | |||
+ | <code bash> | ||
+ | # Рекомендации из конфы | ||
+ | sudo zfs set recordsize=128K tank | ||
+ | sudo zfs set compression=lz4 tank | ||
+ | sudo zfs set logbias=throughput tank | ||
+ | </ | ||
+ | |||
+ | |||
+ | < | ||
+ | < | ||
+ | [[https:// | ||
+ | |||
+ | Для проверки фактического размера сектора есть утилиты выше, SSD обычно не показывают свой реальный размер, | ||
+ | mkfs.ext4 по умолчанию использует размер 4096 для 512 и выше секторов\\ | ||
+ | Тут неясный момент, | ||
+ | В общем немного неясно, | ||
+ | кстати говоря, | ||
+ | Переход на размер 4096 называется расширенным форматом, | ||
+ | Собна 512 это наследие первых поколений ЖД, которое уже фктически изжилось\\ | ||
+ | (с форума) Это логический размер, | ||
+ | </ | ||
+ | |||
</ | </ | ||