FreeBSD云计算Jail主机

主机激活Jail

  • 在系统启动时启动Jails:

配置在系统启动时启动Jails
sysrc jail_enable="YES"

# 配置所有jails在后台启动
sysrc jail_parallel_start="YES"

Jail网络

我采用 虚拟网络(VNET) : 每个jail有隔离的网络堆栈,独立IP地址、路由表和网络接口(就像独立的虚拟机)

创建 bridge
ifconfig bridge create
将策划构建的 bridge 附加到物理网卡
ifconfig bridge0 addm em0

为了能够在操作系统重启之后自动启动网桥,需要在 /etc/rc.conf 配置:

/etc/rc.conf 中配置网桥
defaultrouter="192.168.1.1"
cloned_interfaces="bridge0"
ifconfig_bridge0="inet 192.168.1.150/24 addm em0 up"

警告

这部分Host准备 VNET 网桥,因为我的环境已经具备 winfibox0 所以跳过。后续如果在服务器部署,则需要这部分。

ZFS存储

Jail目录树

目前采用FreeBSD Handbook中使用的 /usr/local/jails 目录(但我后续部署将改成 /jails )

创建jails目录( ZFS )
zfs create -o mountpoint=/usr/local/jails zroot/jails
zfs create zroot/jails/media
zfs create zroot/jails/templates
zfs create zroot/jails/containers

除了 /usr/local/jails 目录外,其他目录还有:

  • media 将包含已下载用户空间的压缩文件

  • templates 在使用 Thin Jails 时,该目录存储模板(共享核心系统)

  • containers 将存储jail (也就是容器)

data/docs 数据集

  • zroot/data/docs 存储日常工作数据文档,这个目录在Host主机上维护,通过 NullFS 输出给 dev Jail

创建 docs 数据集
zfs create -p zroot/data/docs
zfs set compression=lz4 zroot/data/docs

data/pgdb 数据集

备注

计划将 在FreeBSD Jail中运行PostgreSQL 数据部分单独使用ZFS数据集存储,待补充

Jail配置文件

我采用 /etc/jail.conf 结合 /etc/jail.conf.d/ 目录下配置:

  • /etc/jail.conf 提供所有Jail的公共部分

  • /etc/jail.conf.d/ 目录中为每个jail创建一个文件,其中内容是每个Jail的特定区别部分

  • FreeBSD Jail运行时会自动合并两部分配置,形成一个完整的Jail配置

设置 /etc/jail.conf 公共部分: