jail管理器CBSD实践@FreeBSD

news2024/10/5 17:44:54

CBSD介绍

CBSD是为FreeBSD jail子系统、bhyve、QEMU/NVMM和Xen编写的管理层。该项目定位为一个综合解决方案的单一集成工具,用于使用预定义的软件集以最少的配置快速构建和部署计算机虚拟环境。
虽然CBSD没有提供额外的操作系统级功能,但它极大地简化了原本需要用户通过命令行界面(CLI)手动执行数十甚至数百个命令的复杂过程。CBSD的存在正是为了解决这一繁琐任务,让人能够更高效、更便捷地管理您的虚拟化环境,而非陷入无休止的命令行操作中。

官网:CBSD — FreeBSD Jail and Bhyve Management Tools

视频:FOSDEM 2021 - Managing virtual resources with CBSD, and beyond 

CBSD安装

pkg安装

pkg install cbsd

CBSD初始化

如果是使用zfs系统,需要先执行:

/sbin/zfs create -o mountpoint=/usr/jails -o atime=off zroot/jails

 然后进行初始化即可:

env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv

按照提示一步步作答就行,下面是具体操作流程:

env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv
-------[CBSD v.14.0.7]-------
 This is install/upgrade scripts for CBSD.
 Don't forget to backup.
-----------------------------
Do you want prepare or upgrade hier environment for CBSD now?
[yes(1) or no(0)]
y
>>> Installing or upgrading
[Stage 1: account & dir hier]

Error: on ZFS-based systems, the CBSD requires a separate dataset different from the root one (zroot/ROOT/default).
Please create a separate dataset first, e.g.:

 /sbin/zfs create -o mountpoint=/usr/jails -o atime=off zroot/jails

Then re-run: env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv
root@fbhost:~ # 
root@fbhost:~ # /sbin/zfs create -o mountpoint=/usr/jails -o atime=off zroot/jails
root@fbhost:~ # env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv
-------[CBSD v.14.0.7]-------
 This is install/upgrade scripts for CBSD.
 Don't forget to backup.
-----------------------------
Do you want prepare or upgrade hier environment for CBSD now?
[yes(1) or no(0)]
y
>>> Installing or upgrading
[Stage 1: account & dir hier]
 * Check hier and permission...
 * write directory id: jaildatadir
 * write directory id: jailsysdir
 * write directory id: jailrcconfdir
 * write directory id: dbdir
[Stage 2: build tools]
Shall I add the cbsd user into /usr/local/etc/sudoers.d sudo file to obtain root privileges for most of the cbsd commands?
[yes(1) or no(0)]
yes
cmp: /usr/local/etc/sudoers.d: Is a directory
[Stage 3: local settings]
Shall i modify the /etc/rc.conf to sets cbsd_workdir="/usr/jails"?: 
[yes(1) or no(0)]
y
/etc/rc.conf: cbsd_workdir:  -> /usr/jails
[Stage 4: update default skel resolv.conf]
[Stage 5: refreshing inventory]
nodename: CBSD Nodename for this host e.g. the hostname. Warning: this operation will recreate the ssh keys in /usr/jails/.ssh dir: fbhost

Empty inventory database created: /usr/jails/var/db/inv.fbhost.sqlite

nodeip: Node management IPv4 address (used for node interconnection), e.g: 192.168.1.5
jnameserver: environment default DNS name-server (for jails resolv.conf), e.g.: 9.9.9.9,149.112.112.112,2620:fe::fe,2620:fe::9
114.114.114.114
nodeippool:  (networks for jails)
Hint: use space as delimiter for multiple networks, e.g.: 10.0.0.0/16

nat_enable: Enable NAT for RFC1918 networks?
[yes(1) or no(0)]
y
Which NAT framework do you want to use: [pf]
(type FW name, eg.: pf,ipfw,ipfilter, 'disable' or '0' to CBSD NAT, "exit" for break)
pf
Set IP address or NIC as the aliasing NAT address or interface, e.g: 192.168.1.5

Do you want to modify /boot/loader.conf to set pf_load=YES ?
[yes(1) or no(0)]
1
/boot/loader.conf: pf_load:  -> YES
fbsdrepo: Use official FreeBSD repository? When no (0) the repository of CBSD is preferred (useful for stable=1) for fetching base/kernel?
[yes(1) or no(0)]
1
zfsfeat: You are running on a ZFS-based system. Enable ZFS feature?
[yes(1) or no(0)]
1
parallel: Parallel mode stop/start ?
(0 - no parallel or positive value (in seconds) as timeout for next parallel sequence) e.g: 5

stable: Use STABLE branch instead of RELEASE by default? Attention: only the CBSD repository has a binary base for STABLE branch ?
(STABLE_X instead of RELEASE_X_Y branch for base/kernel will be used), e.g.: 0 (use release)

sqlreplica: Enable sqlite3 replication to remote nodes ?
(0 - no replica, 1 - try to replicate all local events to remote nodes) e.g: 1

statsd_bhyve_enable: Configure CBSD statsd services for collect RACCT bhyve statistics? ?
(EXPERIMENTAL FEATURE)? e.g: 0

statsd_jail_enable: Configure CBSD statsd services for collect RACCT jail statistics? ?
(EXPERIMENTAL FEATURE)? e.g: 0

statsd_hoster_enable: Configure CBSD statsd services for collect RACCT hoster statistics? ?
(EXPERIMENTAL FEATURE)? e.g: 0

[Stage 6: authentication keys]
Generating public/private ed25519 key pair.
Your identification has been saved in /usr/jails/.ssh/8536245b885a14e578e1094179cf14cc.id_rsa
Your public key has been saved in /usr/jails/.ssh/8536245b885a14e578e1094179cf14cc.id_rsa.pub
The key fingerprint is:
SHA256:2BoIPxFGCAOWNx/+WJuF31KFhe1G3PP5JOjTU0VBfb4 root@fbhost
The key's randomart image is:
+--[ED25519 256]--+
|=o.o+       *.o++|
|.o.+ o     o = o+|
|  o = . .   +. .*|
|   o = = . ..o..=|
|    + * S o... +o|
|     o * o .o oE.|
|      .   .  . . |
|                 |
|                 |
+----[SHA256]-----+
[Stage 7: nodes]
[Stage 8: modules]
Installing module pkg.d cmd: pkg
Installing module bsdconf.d cmd: tzsetup
Installing module bsdconf.d cmd: ssh
Installing module bsdconf.d cmd: ftp
Installing module bsdconf.d cmd: adduser
Installing module bsdconf.d cmd: passwd
Installing module bsdconf.d cmd: service
Installing module bsdconf.d cmd: sysrc
Installing module bsdconf.d cmd: userlist
Installing module bsdconf.d cmd: grouplist
Installing module bsdconf.d cmd: adduser-tui
Installing module bsdconf.d cmd: pw
Installing module bsdconf.d cmd: cloudinit
Installing module zfsinstall.d cmd: zfsinstall
[Stage 9: cleanup]
 * Remove obsolete files...
Configure RSYNC services for jail migration?
[yes(1) or no(0)]
1
Shall I modify /etc/rc.conf to set cbsdrsyncd_enable="YES"
[yes(1) or no(0)]
1
/etc/rc.conf: cbsdrsyncd_enable:  -> YES
Do you want to modify /etc/rc.conf to set the cbsdrsyncd_flags="--config=/usr/jails/etc/rsyncd.conf" ?
[yes(1) or no(0)]
1
/etc/rc.conf: cbsdrsyncd_flags:  -> --config=/usr/jails/etc/rsyncd.conf
/usr/local/etc/rc.d/cbsdrsyncd: required_files:  -> 
Starting cbsdrsyncd.
Do you want to enable RACCT feature for resource accounting?
[yes(1) or no(0)]

[yes(1) or no(0)]
1
Shall i modify the /etc/rc.conf to sets cbsdd_enable=YES ?
[yes(1) or no(0)]

[yes(1) or no(0)]
1
/etc/rc.conf: cbsdd_enable:  -> YES
Shall i modify the /etc/rc.conf to sets rcshutdown_timeout="900"?
[yes(1) or no(0)]
1
/etc/rc.conf: rcshutdown_timeout: 90 -> 900
Shall i modify the /etc/sysctl.conf to sets kern.init_shutdown_timeout="900"?
[yes(1) or no(0)]
1
kern.init_shutdown_timeout: 120 -> 900
[Stage X: upgrading]
  * Prune legacy CBSD /usr/jails/etc/pfnat.conf config
>>> Done
  Congratulations! First CBSD initialization complete!

  Now your can run:
  service cbsdd start
  to run CBSD services.

  For change initenv settings in next time, use:
  cbsd initenv-tui

  Also don't forget to execute:
  cbsd initenv
  every time when you upgrade CBSD version.

  For an easy start:
  cbsd help

  General information:
  cbsd summary

  To start with jail:
  cbsd jcreate --help
  or: cbsd jconstruct-tui

  To start with bhyve:
  cbsd bcreate --help
  or: cbsd bconstruct-tui

  To start with XEN:
  cbsd xcreate --help
  or: cbsd xconstruct-tui

  To start with QEMU/NVMM:
  cbsd qcreate --help
  or: cbsd qconstruct-tui

  Enjoy CBSD!

preseedinit: Would you like a config for "cbsd init" preseed to be printed?
[yes(1) or no(0)]
1

---cut here ---
# cbsd initenv preseed file for fbhost host
# refer to the /usr/local/cbsd/share/initenv.conf
# for description.
#
nodeip="192.168.1.5"
jnameserver="114.114.114.114"
nodeippool="10.0.0.0/16"
nat_enable="pf"
fbsdrepo="1"
zfsfeat="1"
parallel="5"
stable="0"
sqlreplica="1"
statsd_bhyve_enable="0"
statsd_jail_enable="0"
statsd_hoster_enable="0"
ipfw_enable="1"
nodename="fbhost"
racct="1"
natip="192.168.1.5"
initenv_modify_sudoers="0"
initenv_modify_rcconf_hostname=""
initenv_modify_rcconf_cbsd_workdir="1"
initenv_modify_rcconf_cbsd_enable="1"
initenv_modify_rcconf_rcshutdown_timeout="1"
initenv_modify_syctl_rcshutdown_timeout="1"
initenv_modify_rcconf_cbsdrsyncd_enable="1"
initenv_modify_rcconf_cbsdrsyncd_flags="1"
initenv_modify_cbsd_homedir="1"
workdir="/usr/jails"
---end of cut---

创建一个jail

执行命令:

cbsd jconstruct-tui

首先进入配置画面

可以选择安装的软件包,cpu架构等。如果安装了qemu-devel,那么可以选择armv6、aarch64甚至riscv64       

配置好之后提示:

no base dir in: /usr/jails/basejail/base_amd64_amd64_14.1
Select base sources:
 0 .. CANCEL
 a .. build 
 b .. extract 
 c .. pkg 
 d .. populate 
 e .. repo 
选e         

自动去下载base.txz文件了

retrieve base.txz from download.freebsd.org, size: 198m
/usr/jails/tmp/src.71323/base.txz                      198 MB 2646 kBps 01m17s
然后到这一步有点慢,需要等一下:

Please wait: this will take a while...
Applying skel dir template from: /usr/jails/share/FreeBSD-jail-skel

最后安装完成:

To edit VM properties use: cbsd jconfig jname=jail1
To start VM use: cbsd jstart jail1
To stop VM use: cbsd jstop jail1
To remove VM use: cbsd jremove jail1
For attach VM console use: cbsd jlogin jail1

Creating jail1 complete: Enjoy!
/usr/jails/jails/jail1/etc already mounted
/usr/jails/jails/jail1/root already mounted
/usr/jails/jails/jail1/tmp already mounted
/usr/jails/jails/jail1/home already mounted
/usr/jails/jails/jail1/usr/local already mounted
/usr/jails/jails/jail1/compat already mounted
/usr/jails/jails/jail1/var already mounted
jcreate done in 6 minutes and 34 seconds
 

完成之后还有命令提醒,告知几个最常用的管理命令,真贴心!

启动CBSD jail

cbsd jstart jail1


Default NIC automatically selected: web
set resource limit: [ ]
jail renice: 1
Starting jail: jail1, parallel timeout=5
jail1: created
ELF ldconfig path: /lib /usr/lib /usr/lib/compat /usr/local/lib /usr/local/lib/compat/pkg /usr/local/lib/compat/pkg
32-bit compatibility ldconfig path: /usr/lib32 /usr/lib32
Updating /var/run/os-release done.
Creating and/or trimming log files.
Clearing /tmp (X related).
Updating motd:.
Starting syslogd.
Starting cron.

Fri Jun  7 00:13:02 CST 2024
CBSD setup: jail ipfw counters num: 99/100
jstart done in 5 seconds
启动也很快

登录 jail

cbsd jlogin jail1

速度好快

登进去之后,尽管无法ping通,但是网络是通了,可以使用pkg、curl 、wget等指令。太棒了!

管理 jail

使用命令来管理jail:

cbsd jconfig jname=jail1

也可以使用cbsd jls 列出当前的jail

cbsd jls
JNAME  JID  IP4_ADDR  HOST_HOSTNAME    PATH                    STATUS
jail1  13   10.0.0.2  jail1.my.domain  /usr/jails/jails/jail1  On       

另外直接执行cbsd指令,可以进入cbsd指令状态, 

CBSD的特点

同时支持jail和bhyve以及qemu,这使得它的应用范围非常广,比如创建riscv64开发环境。

CBSD速度很快,前期使用过AppJail和vm-bhyve等管理软件,CBSD是其中运行速度(响应速度)最快的。

CBSD官网提供的jail管理器生存周期统计

可以看到只有大约5种管理器还在持续更新,其它大部分都消亡了。CBDN是现存里面开发最早的。CBSD与其他项目的主要区别在于,CBSD被定位为完整的解决方案,具有尽可能简单的管理界面。

有很多人使用CBSD进行了很多有趣的工作,比如在FreeBSD上安装k8s:CBSD — FreeBSD Jail and Bhyve Management Tools

使用My-Bee管理k8s:GitHub - myb-project/guide: MyB Handbook 

基于CBSD的虚拟机管理平台ClonOS:Free Open-Source Hosting Platform «ClonOS»

总结

这样使用下来,还是CBSD创建jail最简单方便啊,关键是创建了网络就通了,pkg还能用。

当然网络那块也可能是因为AppJail前期已经配好了网络导致的。大家可以尝试下,如果确实空白机不用网络配置就能通,请大家在下面留言说明。

CBSD是很罕见的下面只有一条调试记录的一个软件,对新手友好,确实可以拿来就用!

调试

初始化报错the CBSD requires a separate dataset different from the root one

Error: on ZFS-based systems, the CBSD requires a separate dataset different from the root one (zroot/ROOT/default).
Please create a separate dataset first, e.g.:

 /sbin/zfs create -o mountpoint=/usr/jails -o atime=off zroot/jails

Then re-run: env workdir=/usr/jails /usr/local/cbsd/sudoexec/initenv

原来是zfs系统需要先创建一个/usr/jails文件系统,按照提示使用下面语句创建:

 /sbin/zfs create -o mountpoint=/usr/jails -o atime=off zroot/jails

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1798570.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Codeforces Round 951 (Div. 2) F. Kostyanych‘s Theorem(思维题 交互好题)

题目 交互题&#xff0c;n&#xff08;n<1e5&#xff09;个点的完全图&#xff0c;无向的&#xff0c;初始恰好删了n-2条边 每次询问可以输入一个d&#xff1a;? d 交互器会输出一个当前度>d的点v&#xff0c; 如果有多个这样的点&#xff0c;输出度最小的&#xff…

搭建自己的DNS服务器

个人名片 &#x1f393;作者简介&#xff1a;java领域优质创作者 &#x1f310;个人主页&#xff1a;码农阿豪 &#x1f4de;工作室&#xff1a;新空间代码工作室&#xff08;提供各种软件服务&#xff09; &#x1f48c;个人邮箱&#xff1a;[2435024119qq.com] &#x1f4f1…

STM32-呼吸灯仿真

目录 前言: 一.呼吸灯 二.跑马灯 三. 总结 前言: 本篇的主要内容是关于STM32-呼吸灯的仿真,包括呼吸灯,跑马灯的实现与完整代码,欢迎大家的点赞,评论和关注. 接上http://t.csdnimg.cn/mvWR4 既然已经点亮了一盏灯,接下来就可以做更多实验了, 一.呼吸灯 在上一个的基础上…

Informer

I n f o r m e r Informer Informer 摘要&#xff1a; 长序列时间序列的预测 i n f o r m e r informer informer优点&#xff1a; P r o b s p a r e Probspare Probspare自关注机制&#xff0c;在时间复杂度和内存使用方面达到 O ( N l o g N ) O(NlogN) O(NlogN),在序列依…

plsql 实现自动补全语句

1.打开plsql程序所在文件目录 2.在此目录下新建文件auto_complete.txt &#xff08;文件名随便起&#xff09; 3.在auto_complete.txt 中写入关系对应&#xff1a; 4.在配置-首选项-用户界面-编辑器 中引入auto_complete.txt 即可 5.开一个sql窗口&#xff0c;输入sf 后敲个…

hadoop部署hive

1.安装mysql数据库 这里采用docker部署mysql,如果没有安装docker #安装yum工具 yum install -y yum-utils device-mapper-persistent-data lvm2 --skip-broken #设置docker镜像源 yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/…

golang的函数为什么能有多个返回值?

在golang1.17之前&#xff0c;函数的参数和返回值都是放在函数栈里面的&#xff0c;比如函数A调用函数B&#xff0c;那么B的实参和返回值都是存放在函数A的栈里面&#xff0c;所以可以轻松的返回多个值。 其他的编程语言大都使用某个寄存器来存储函数的返回值。 但是从golang…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于两阶段鲁棒的多综合能源微网-共享储能电站协同优化运行策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

Android 安装调试 TelephonyProvider不生效

直接安装TelephonyProvider的时候&#xff0c;&#xff08;没有重启&#xff09;发现数据库没有生效。 猜测应该是原本的数据库没有删除后重建更新。 解决方法&#xff1a;杀掉phone进程 adb shell am force-stop com.android.phone 查看device进程 adb shell ps | grep <…

实验二、网络属性设置《计算机网络》

精神状态 be like&#xff1a;边写边崩溃&#xff0c;越写越得劲儿。 目录 一、实验目的&#xff1a; 二、实验内容 三、实验步骤&#xff1a; 四、实验小结 一、实验目的&#xff1a; 掌握 IP 地址、子网掩码等网络属性的设置。 二、实验内容 预备知识&#xff1a; 1、…

MySQL有哪些锁?

文章目录 前言一、全局锁1.全局锁是怎么用的&#xff1f;2.全局锁应用场景是什么&#xff1f;3.加全局锁又会带来什么缺点呢&#xff1f;4.既然备份数据库数据的时候&#xff0c;使用全局锁会影响业务&#xff0c;那有什么其他方式可以避免&#xff1f; 二、表级表1.MySQL 表级…

vue2组件封装实战系列之space组件

组件之 GfSpace 多个同类型的内容比如 div/span/button/li 等&#xff0c;实现水平、垂直方向的均匀布局的功能 效果预览 属性 参数类型说明可选值默认值flexBoolean是否 flex 布局true/falsefalsegapNumber内容间距-10directionString内容排列方向row/columnrow 代码实现 这…

使用Colaboratory免费GPU资源微调Llama3-8b

Llama3微调过程 准备工作 Google Colaboratory Google Colaboratory&#xff0c;也称为 Colab&#xff0c;是一个基于云的平台&#xff0c;允许用户编写和执行 Python 代码。 它为机器学习和数据分析任务提供了便利的环境&#xff0c;并内置了对 TensorFlow 等流行库的支持。…

【uniapp】带圆角渐变边框实现

1. 效果图 2. 代码实现 <image class"item-left-img" :src"url" mode"aspectFill" />.item-left-img {width: 240rpx;height: 320rpx;border: 6rpx solid transparent;background-clip: padding-box, border-box;background-origin: padd…

企业建站响应式网站建设平台版源码系统 海量模版可选择 带完整的安装代码以及搭建教程

系统概述 企业建站响应式网站建设平台版源码系统是一款集创新性、实用性和便捷性于一体的建站解决方案。它旨在为用户提供一站式的网站建设服务&#xff0c;无论你是新手还是经验丰富的开发者&#xff0c;都能通过该系统轻松实现网站的构建与部署。 该系统采用先进的技术架构…

Oracle和mysql中插入时间字段

例如有id 和 times两个字段 Oracle insert into xxx values|(1,sysdate) mysql insert into xxx values(1,now()) 在 MySQL 中&#xff0c;SYSDATE() 函数也是可用的&#xff0c;它与 NOW() 类似&#xff0c;但略有不同&#xff1a; NOW…

毫米波雷达深度学习技术-1.6目标识别1

1.6 目标识别 利用检测和跟踪在距离、多普勒和角度这两个维度中的任意一个进行精确的目标定位后&#xff0c;将检测到的目标分类到所需的类别中。与检测类似&#xff0c;提出了多种框架来同时使用图像和点云进行目标分类。使用图像进行目标分类的最常见方法是从检测到的目标特征…

基于JSP技术的社区疫情防控管理信息系统

你好呀&#xff0c;我是计算机学长猫哥&#xff01;如果有相关需求&#xff0c;文末可以找到我的联系方式。 开发语言&#xff1a;JSP 数据库&#xff1a;MySQL 技术&#xff1a;JSPJavaBeans 工具&#xff1a;MyEclipse、Tomcat、Navicat 系统展示 首页 用户注册与登录界…

Nvidia/算能 +FPGA+AI大算力边缘计算盒子:大型机械智能预警系统

三一重工股份有限公司&#xff0c;是由三一集团创建于1994年&#xff0c;通过打破国人传统的“技术恐惧症”坚持自主创新迅速崛起。2011年7月&#xff0c;三一重工以215.84亿美元的市值荣登英国《金融时报》全球市值500强&#xff0c;是迄今唯一上榜的中国机械企业。2012年1月&…

C++面向对象程序设计 - 文件操作与文件流

在实际应用中&#xff0c;常以磁盘文件作为对象&#xff0c;即能从磁盘文件读取数据&#xff0c;也能将数据输出到磁盘文件&#xff0c;磁盘是计算机的外部存储器&#xff0c;能够长期保留信息&#xff0c;能读能写&#xff0c;可以刷新重写等等。 在C中&#xff0c;文件操作通…