在使用BHyVe和ZFS时,工作进展神速的故事
首先
自从创建了方便的BHyVe脚本后,我可以轻松地在本地启动和停止虚拟机。在这里,我想介绍一下BHyVe脚本和ZFS环境如何在产品开发中发挥了重要作用的实例。
家电开发的步骤 (jiā fā de bù
如果要制作一种作为产品的电器设备,我认为最终将会创建一个出货图像并将其应用于硬件上。开发和创建出货图像会按照以下流程进行。
-
- 安装操作系统的基本部分
-
- 安装操作系统的标准附加应用程序
-
- 进行操作系统所需的设置
-
- 安装器所需的应用程序
-
- 设置器应用程序的操作配置
-
- 进行设备作为一个整体的操作测试
- 创建发货镜像
在每个步骤中,我们进行操作检查,如果操作正常并确认OK,则继续下一步;如果有问题并确认BAD,则返回到之前并重新进行操作。
在这里问题成为了回到前一步的情况下。
只安装一个命令并修改其配置文件,如果只是这个程度的话,回到前一步相对比较容易。但是,如果安装了多个命令并且修改了多个配置文件等等,回到前一步就不容易了。特别是在涉及数据库(如PostgreSQL)的情况下,还原数据库内容到以前的状态可能会很困难。因此,BHyVe和ZFS卷的组合能够发挥其威力。
BHyVe和ZFS卷
在BHyVe上,可以使用ZFS卷作为磁盘映像,并且ZFS还可以为ZFS卷创建快照。换句话说,在这种组合下,可以通过ZFS快照方便地保存在BHyVe中运行的虚拟机的状态。
在前面提到的每个步骤中,一旦完成了操作确认,就会先对虚拟机进行关闭并录制快照。通过这样做,可以在尝试下一个步骤时,如果失败了可以轻松地恢复到之前的状态,只需回滚到刚才录制的快照即可。
其实,BHyVe的简便脚本最初是没有的。
-
- VMNAME-snapshot
- VMNAME-rollback
这个命令没有原本存在,是在开发这个设备时需要用到,所以才被制作出来的。
BHyVe的简便脚本和sudo的设置
对于设备,开发人员需要适当设置sudo权限,以便以root权限使用下一个命令。
-
- VMNAME-boot
-
- VMNAME-console
-
- VMNAME-rollback
-
- VMNAME-shutdown
- VMNAME-snapshot
具体设置如下。
如果用户A希望在VM名称为debian0的虚拟机上进行开发,以下是一个配置示例。
belgianbeer@host$ cd /usr/local/sbin
belgianbeer@host$ ls -l vm-control debian0*
lrwxr-xr-x 1 root wheel 10 Sep 7 2017 debian0-boot -> vm-control
lrwxr-xr-x 1 root wheel 10 Sep 7 2017 debian0-console -> vm-control
lrwxr-xr-x 1 root wheel 10 Sep 7 2017 debian0-rollback -> vm-control
lrwxr-xr-x 1 root wheel 10 Sep 7 2017 debian0-shutdown -> vm-control
lrwxr-xr-x 1 root wheel 10 Sep 7 2017 debian0-snapshot -> vm-control
-rwxr-xr-x 1 root wheel 72 Sep 7 2017 vm-control
belgianbeer@host$ cat vm-control
#!/bin/sh
export PATH=~belgianbeer/bin/bhyve:$PATH
exec ${0##*/} "$@"
belgianbeer@host$
sudo的設定就像這樣。
belgianbeer@host$ cat /usr/local/etc/sudoers.d/user-a
user-a ALL=(ALL) NOPASSWD: \
/usr/local/sbin/debian0-boot, \
/usr/local/sbin/debian0-console, \
/usr/local/sbin/debian0-rollback, \
/usr/local/sbin/debian0-shutdown, \
/usr/local/sbin/debian0-snapshot
belgianbeer@host$
现在,用户A可以自由地在debian0虚拟机上进行启动、停止、创建快照和回滚操作,无需输入密码。
如果您事先设置了一个VM的ZFS卷,您可以通过克隆它来继续进行已设置好的工作。这个功能对于这种开发非常有效。
让开发者试用后的反应
实际上,我们让公司内的开发人员使用这个环境进行开发,他们对这个设备的开发感到非常激动。
「这太厉害了!」「很方便!」「效率很高!」「原本需要一天的工作可以立即完成」
他说:“我想用FreeBSD。我想学习它。”
开发者:有没有一本关于学习FreeBSD的书?
民民:没有这样的书。(低声嘀咕)
祝大家圣诞快乐,新年快乐!