如何在FreeBSD服务器上添加加密的ZFS池

时间:2020-01-09 14:16:49  来源:igfitidea点击:

在基于FreeBSD的服务器上添加了一个新硬盘。
如何配置加密的ZFS池以在该磁盘上存储数据?
如何在FreeBSD 11.x服务器上添加加密的ZFS池?

说明:ZFS是FreeBSD操作系统的文件系统。
它是最初由Sun Microsystems设计的文件系统和逻辑卷管理器。

VDEV就是物理磁盘(例如/dev/vtbd2)文件镜像或ZFS软件RAID设备(ZFS RAID的热备用)的集合。

zpool就是由VDEVS构成的存储(VDEVS的集合)。
您可以组合两个或多个物理磁盘或文件,或两者结合。
该页面显示了在FreeBSD服务器上添加第二块硬盘时如何在服务器上创建加密的ZFS池。

如何在FreeBSD上列出现有的硬盘驱动器

执行以下任一命令:

# camcontrol devlist

或者

# geom disk list

列出当前分区

运行以下命令:

# gpart show

列出您现有的zpool

执行以下命令:

# zfs list
# zpool list
# zpool status

很明显,zroot将/dev/vtbd0和/dev/vtbd1用作镜像设备。
因此,/dev/vtbd2保留为未使用的设备。

如何在FreeBSD上添加加密的ZFS池

执行以下gpart命令以在vtbd2上创建新的分区方案。

-s gpt`选项确定要使用的方案:

# gpart create -s gpt vtbd2
`vtbd2 created`

接下来,将新分区添加到geom给出的分区方案中:

# gpart add -t freebsd-zfs -l disk2-vol0 vtbd2
`vtbd2p1 added`

其中:

  • -t freebsd-zfs:将分区的类型设置为freebsd-zfs,即包含ZFS卷的FreeBSD分区。
  • -l disk2-vol0:将分区标签名称设置为disk2-vol0,即/dev/gpt/disk2-vol0
  • vtbd2:设备名称

如何在FreeBSD for ZFS上使用Geli启用加密

我将存储关键数据。
因此,加密对我来说至关重要。
使用esni驱动程序,geli和ZFS可以很容易地进行设置。

geli只是为使用GEOM磁盘框架的FreeBSD编写的块设备层磁盘加密系统。

aesni驱动程序用于Intel CPU上的AES加速器,以加速磁盘加密。
首先将以下行添加到/boot/loader.conf中:

# echo 'aesni_load="YES"' >> /boot/loader.conf

使用kldload命令加载FreeBSD aesni驱动程序:

# kldload aesni

我将为/dev/gpt/disk2-vol0设置加密,运行:

# geli init -l 256 /dev/gpt/disk2-vol0

解决方法:您需要使用以上密码在引导时或在重新引导FreeBSD裸机或云服务器后连接加密的设备。

geli命令的选项如下:

  • init:geli实用程序用于在GEOM提供程序上配置加密。初始化名为/dev/gpt/disk2-vol0的提供程序,该提供程序需要加密。
  • `-l 256':默认和推荐的算法是AES-XTS,并将数据密钥长度设置为256以与给定的加密算法一起使用。
  • /dev/gpt/disk2-vol0:设备名称

最后追加给定的提供程序,即/dev/gpt/disk2-vol0。
加密的主密钥将从元数据中加载,并使用给定的密码短语解密,并使用给定的提供者名称(后缀为.eli)创建新的GEOM提供者,即/dev/gpt/disk2-vol0.eli。

# geli attach /dev/gpt/disk2-vol0
# ls -l /dev/gpt/disk2-vol0*

查看GEOM设备的状态

# geli status

输出示例:

Name  Status  Components
       vtbd0p3.eli  ACTIVE  vtbd0p3
       vtbd1p3.eli  ACTIVE  vtbd1p3
   mirror/swap.eli  ACTIVE  mirror/swap
gpt/disk2-vol0.eli  ACTIVE  gpt/disk2-vol0

我将使用/dev/gpt/disk2-vol0.eli创建zfs池。

创建zfs池

最后,解决方法:您需要使用zpool命令设置ZFS池:

# zpool create backup /dev/gpt/disk2-vol0.eli

验证一下:

# zpool list
# zpool status
# zfs list backup

系统重启后如何挂载设备

解决方法:您需要执行以下命令:

# geli attach /dev/gpt/disk2-vol0
# zfs mount -a
# zfs get mounted backup
# zpool list
# zpool status
## use it again ##
# cd /backup
# ls -l

如何在FreeBSD上添加两个磁盘并配置加密的ZFS池镜像块存储

假设您有/dev/vtbd2和/dev/vtbd3:

# gpart create -s gpt vtbd2
# gpart create -s gpt vtbd3
# gpart add -t freebsd-zfs -l disk2-vol0 vtbd2
# gpart add -t freebsd-zfs -l disk3-vol0 vtbd3
# geli init -l 256 /dev/gpt/disk2-vol0
# geli init -l 256 /dev/gpt/disk3-vol0
# geli attach /dev/gpt/disk2-vol0
# geli attach /dev/gpt/disk3-vol0
# geli status
# zpool create backupdisk mirror gpt/disk2-vol0.eli gpt/disk3-vol0.eli
# zpool list
# zpool status

重新引导留下的FreeBSD服务器后,编写一个shell脚本来挂载zpool,作为读者的练习。