在以下示例中,通过使用 pktool 命令生成了一个 aes-256-ccm 加密密钥,并将其写入了文件 /cindykey.file 中
# pktool genkey keystore=file outkey=/cindykey.file keytype=aes keylen=256
然后,在创建 tank/home/cindy 文件系统时指定了 /cindykey.file。
# zfs create -o encryption=aes-256-ccm -o keysource=raw,file:///cindykey.file tank/home/cindy示例 5-2 使用不同的加密算法加密 ZFS 文件系统
您可以创建一个 ZFS 存储池,并让该存储池中的所有文件系统都继承加密算法。在此示例中,创建了 users 池,创建了 users/home 文件系统,并通过使用口令短语对该文件系统进行了加密。缺省的加密算法是 aes-128-ccm。
然后,创建了 users/home/mark 文件系统,并通过使用 aes-256-ccm 加密算法对其进行了加密。
# zpool create -O encryption=on users mirror c0t1d0 c1t1d0 mirror c2t1d0 c3t1d0 Enter passphrase for 'users': xxxxxxxx Enter again: xxxxxxxx # zfs create users/home # zfs get encryption users/home NAME PROPERTY VALUE SOURCE users/home encryption on inherited from users # zfs create -o encryption=aes-256-ccm users/home/mark # zfs get encryption users/home/mark NAME PROPERTY VALUE SOURCE users/home/mark encryption aes-256-ccm local示例 5-3 克隆加密的 ZFS 文件系统
如果克隆文件系统从与其源快照相同的文件系统继承了 keysource 属性,则新的 keysource 是不必要的,并且如果 keysource=passphrase,prompt,系统也不会提示您输入新的口令短语。将为克隆使用相同的 keysource。例如:
缺省情况下,在克隆加密文件系统的后代时,系统不会提示您输入密钥。
# zfs create -o encryption=on tank/ws Enter passphrase for 'tank/ws': xxxxxxxx Enter again: xxxxxxxx # zfs create tank/ws/fs1 # zfs snapshot tank/ws/fs1@snap1 # zfs clone tank/ws/fs1@snap1 tank/ws/fs1clone
如果要为克隆文件系统创建新密钥,请使用 zfs clone –K 命令。
如果是克隆加密的文件系统而不是加密的后代文件系统,则系统将提示您提供新密钥。例如:
# zfs create -o encryption=on tank/ws Enter passphrase for 'tank/ws': xxxxxxxx Enter again: xxxxxxxx # zfs snapshot tank/ws@1 # zfs clone tank/ws@1 tank/ws1clone Enter passphrase for 'tank/ws1clone': xxxxxxxx Enter again: xxxxxxxx示例 5-4 发送和接收加密的 ZFS 文件系统
在下面的示例中,根据加密的 /tank/home/darren 文件系统创建了 tank/home/darren@snap1 快照。然后,将快照发送到 bpool/snaps,由于已启用了加密属性,因此会加密生成的接收数据。但是,在发送过程中,tank/home/darren@snap1 流未加密。
# zfs get encryption tank/home/darren NAME PROPERTY VALUE SOURCE tank/home/darren encryption on local # zfs snapshot tank/home/darren@snap1 # zfs get encryption bpool/snaps NAME PROPERTY VALUE SOURCE bpool/snaps encryption on inherited from bpool # zfs send tank/home/darren@snap1 | zfs receive bpool/snaps/darren1012 # zfs get encryption bpool/snaps/darren1012 NAME PROPERTY VALUE SOURCE bpool/snaps/darren1012 encryption on inherited from bpool
在这种情况下,将为接收的加密文件系统自动生成新密钥。