ZFS до сих пор не имеет встроенного шифрования. Однако поскольку Solaris имеет, надыбал в интернете небольшую инструкцию, доработал и привожу здесь.
Лучше конечно использовать хардварный токен или смарткарту но если совместимого с соляркой ничего нет, сойдет встроенный софттокен, только поставьте пин подлинней.
Для начала меняем дефолтный пинкод
#pktool setpin keystore=pkcs11(дефолтный код по умолчанию - changeme)
затем создаём zfs raw volume
#zfs create -V 5G stor/pv/mysecretvolгенерим ключик
#pktool genkey keystore=pkcs11 label=mysecretkey1 keylen=256 keytype=aeslofiadm умеет шифрование aes, он-то нам и поможет (а вы думали им только ISO'шки монтить? хехе, в любом нормальном юнихе шифрование есть из коробки, это вам не лялих куда говнотрайкрипты всякие ставить надо)
#lofiadm -a /dev/zvol/rdsk/stor/pv/mysecretvol /dev/lofi/50 -T:::mysecretkey1 -c aes-256-cbc#zpool create mysecretvol /dev/lofi/50#zfs set mountpoint=/export/home/disserman/secretvol mysecretvolпосле каждого ребута диск подключаем командами
lofiadm -a /dev/zvol/rdsk/stor/pv/mysecretvol/dev/lofi/50 -T:::mysecretkey1 -c aes-256-cbc
zpool import -d /dev/lofi mysecretvol
которые можно вынести в скрипт. пин на softtoken нужно вводить само собой каждый раз когда подключается шифрованный пул
поскольку враги убрали canmount из свойств пула, лучше его экспортить каждый раз при шатдауне/ребуте чтоб система не ругалась при следующей загрузке скриптом вида
zpool export -f mysecretvol
lofiadm -d /dev/lofi/50как видим, всё довольно просто и вполне средствами самой ОС.
Hint: желательно поставить права на
/export/home/disserman/secretvol, когда волюм не примонтирован, например 000, чтоб исключить случайную запись в незашифрованное пространство.
Hint2: само собой бекапить нужно zfs volume stor/pv/mysecretvol а не пул mysecretvol а то в бекапе будут уже расшифрованные данные. Ну и не забудьте сбекапить сам ключик с помощью pktool export.