ZFS краткие заметки
zdb
zfs_arc_max
zfs encryption
zfs
magic number
Установка ограничения по используемой RAM
Например, необходимо установить ограничение по потребляемой ОЗУ на уровне ⅛ от общего объема памяти.
### Limit ZFS memory consumption to 1/8 total RAM
TRAM=`cat /proc/meminfo | head -n 1 | awk '{ print $2}'`
ZRAM=`expr $TRAM / 8`
echo "options zfs zfs_arc_max=$ZRAM" | sudo tee -a /etc/modprobe.d/zfs.conf
Зависимости для установки в Debian/Ubuntu
sudo apt-get install build-essential autoconf libtool gawk alien fakeroot linux-headers-$(uname -r)
sudo apt-get install zlib1g-dev uuid-dev libattr1-dev libblkid-dev libselinux-dev libudev-dev libssl-dev
sudo apt-get install parted lsscsi ksh
Шифрованная ZFS
Шифрование на собственном уровне поддерживается только, начиная с 7-ой версии zfs.
На момент написания статьи, ее не было в репозиториях даже для последней версии Debian 9.7 (проверено 27.01.19)
Соответственно, надо компилировать из исходников.
Официальное рабочее описание процедуры здесь
cd /opt
git clone https://github.com/zfsonlinux/zfs
cd ./zfs
git checkout master
sh autogen.sh
./configure
make -s -j$(nproc)
После make надо выполнить от root:
27.01.18 установил версию 0.8.0-rc3_24_gc853f382d
Если не запускается - проверить и удалить модуль spl - он не нужен.
Еще надо отметить, что начиная с версии 7.1 библиотека SPL входит в единый пакет исходников, вместе с ZFS.
Для версий <= 7.0 эти пакеты шли по отдельности.
Создание шифрованной файловой системы:
zfs create -o encryption=on -o keyformat=passphrase -o keylocation=prompt -o utf8only=on -o atime=off -o compression=lz4 sigma/encrypted
Монтирование шифрованной ФС:
Алиасы дисковых устройств
Использовать уникальные длинные имена дисковых устройств из каталогов /dev/disk/by-uuid
вовсе не обязательно (каждый диск знает состав пула по wwn).
Для удобства можно определить алиасы в файле /etc/zfs/vdev_id.conf :
Если используете multipath, в том же файле добавьте следующие опции:
multipath yes
# PCI_ID HBA PORT CHANNEL NAME
channel 85:00.0 1 A
channel 85:00.0 0 B
channel 86:00.0 1 A
channel 86:00.0 0 B
Добавление зеркала к существующему пулу
Смотрим текущее состояние пула:
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
errors: No known data errors
Добавляем:
# zpool add tank mirror c0t3d0 c1t3d0
# zpool status tank
pool: tank
state: ONLINE
scrub: none requested
config:
NAME STATE READ WRITE CKSUM
tank ONLINE 0 0 0
mirror-0 ONLINE 0 0 0
c0t1d0 ONLINE 0 0 0
c1t1d0 ONLINE 0 0 0
mirror-1 ONLINE 0 0 0
c0t2d0 ONLINE 0 0 0
c1t2d0 ONLINE 0 0 0
mirror-2 ONLINE 0 0 0
c0t3d0 ONLINE 0 0 0
c1t3d0 ONLINE 0 0 0
errors: No known data errors
Проверка и лечение отказавшего пула
Для проверки состояния пула можно использовать утилиту zdb (Display zpool debugging and consistency information).
После этго можно попробовать импортировать раннюю группу в режиме чтения:
Посмотреть “лишние” блоки:
Посмотреть, остались ли какие следы файлов:
Если на помогает ключ -f, то для задействования дисков надо переписать magic number
на них.
Например так:
Репликация снепшота в другую ФС
Реплицирование набора данных на другую машину выполняется так:
А если на той же машине - в другой пул, то так:
Опубликовано: 27.01.2019