在使用BHyVe和ZFS时,工作进展神速的故事

首先

自从创建了方便的BHyVe脚本后,我可以轻松地在本地启动和停止虚拟机。在这里,我想介绍一下BHyVe脚本和ZFS环境如何在产品开发中发挥了重要作用的实例。

家电开发的步骤 (jiā fā de bù

如果要制作一种作为产品的电器设备,我认为最终将会创建一个出货图像并将其应用于硬件上。开发和创建出货图像会按照以下流程进行。

    1. 安装操作系统的基本部分

 

    1. 安装操作系统的标准附加应用程序

 

    1. 进行操作系统所需的设置

 

    1. 安装器所需的应用程序

 

    1. 设置器应用程序的操作配置

 

    1. 进行设备作为一个整体的操作测试

 

    创建发货镜像

在每个步骤中,我们进行操作检查,如果操作正常并确认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的书?
民民:没有这样的书。(低声嘀咕)

祝大家圣诞快乐,新年快乐!

广告
将在 10 秒后关闭
bannerAds