第二十八章 DragonFlyBSD
第九节 ZFS 磁盘加解密

概述

如果在安装的时候选择了 ZFS 磁盘加密,那么如何挂载该磁盘呢?
磁盘结构(FreeBSD 11 以后)
分区类型
挂载点
设备
freebsd-boot /EFI
/dev/ada0p1
freebsd-zfs
/
/dev/ada0p2/、/dev/ada0p2.eli
freebsd-swap
/dev/ada0p3、/dev/ada0p3.eli
很简单,也不需要密钥。
执行命令 # geli attach /dev/ada0p3
然后输入正确的密码即可通过 zfs mount zroot/ROOT/default 命令导入磁盘。

使用 GELI 加密 ZFS 卷

1
# 创建一个块设备
2
# zfs create -V 256M zroot/test
3
# 创建一个随机生成的、4K 大小的 key
4
# dd if=/dev/random of=/tmp/test.key bs=4k count=1
5
# 初始化并加载加密磁盘
6
# geli init -K /tmp/test.key /dev/zvol/zroot/test
7
# geli attach -k /tmp/test.key /dev/zvol/zroot/test
8
# 发现一个新设备
9
# ls /dev/zvol/zroot/test.eli
10
# 我们可以在该设备上创建一个新的文件分区
11
# zpool create -m /tmp/ztest ztest /dev/zvol/zroot/test.eli
Copied!

GELI 数据备份和恢复

1
# 备份 GELT 数据
2
# geli backup /dev/zvol/zroot/test /tmp/test.eli
3
# 清空 GELT 数据
4
# geli clear /dev/zvol/zroot/test
5
# GELI尝试挂载 GELT设备,但无法做到,因为找不到他的 GELT 数据
6
# geli attach -k /tmp/test.key /dev/zvol/zroot/test
7
# 恢复 GELT 数据
8
# geli restore /tmp/test.eli /dev/zvol/zroot/test
9
# 现在我们可以挂载设备并导入池了
10
# geli attach -k /tmp/test.key /dev/zvol/zroot/test
11
# zpool import
Copied!

调整 GELI 磁盘大小

1
# 调整 ZFS 卷
2
# zfs set volsize=512M zroot/test
3
# 现在还不能挂载 GELT 设备,因为 GELT 找不到数据
4
# geli attach /dev/zvol/zroot/test
5
# 我们需要告诉 GELT 以前设备的存储大小
6
# geli resize -s 256M /dev/zvol/zroot/test
7
# 现在我们可以挂载设备并导入池了
8
# geli attach -k /tmp/test.key /dev/zvol/zroot/test
9
# zpool import
Copied!