在 Oracle® Solaris 11.2 中管理 ZFS 文件系统

退出打印视图

更新时间: 2014 年 12 月
 
 

加密 ZFS 文件系统的示例

示例 5-1  通过使用原始密钥加密 ZFS 文件系统

在以下示例中,通过使用 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

在这种情况下,将为接收的加密文件系统自动生成新密钥。