From 95603c5d275a740977913468e19547948aa7ed59 Mon Sep 17 00:00:00 2001 From: Zexi Li Date: Mon, 29 Jan 2024 20:17:11 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E7=89=A9=E7=90=86=E6=9C=BA=E6=A8=A1?= =?UTF-8?q?=E6=8B=9F=E7=8E=AF=E5=A2=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../qemu-emulated-baremetal-nettopo.png | Bin 0 -> 31503 bytes docs/guides/onpremise/baremetal/ops.md | 2 +- .../onpremise/baremetal/qemu-simulator.md | 206 ++++++++++++++++++ 3 files changed, 207 insertions(+), 1 deletion(-) create mode 100644 docs/guides/onpremise/baremetal/images/qemu-emulated-baremetal-nettopo.png create mode 100644 docs/guides/onpremise/baremetal/qemu-simulator.md diff --git a/docs/guides/onpremise/baremetal/images/qemu-emulated-baremetal-nettopo.png b/docs/guides/onpremise/baremetal/images/qemu-emulated-baremetal-nettopo.png new file mode 100644 index 0000000000000000000000000000000000000000..7cb6a818d125227220acee83343f7f94e506cb2c GIT binary patch literal 31503 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 mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000 + link/ether 00:22:00:8d:1b:af brd ff:ff:ff:ff:ff:ff + inet 10.127.100.149/24 brd 10.127.100.255 scope global br0 + valid_lft forever preferred_lft forever + inet6 fe80::222:ff:fe8d:1baf/64 scope link + valid_lft forever preferred_lft forever +``` + +:::warning +发现 br0 上的 ip 是 `10.127.100.149` ,这个 ip 需要替换成对应环境的地址。 +::: + +```bash +$ BR0_IP=10.127.100.149 +$ docker run --rm --network host -ti registry.cn-beijing.aliyuncs.com/zexi/dhcprelay:20240129.0 /opt/yunion/bin/dhcprelay --interface bmbr0 --ip 10.18.10.1 --relay $BR0_IP +``` + +## 创建 baremetal 实例 + +使用 `bmtest.py` 创建物理机实例: + +```bash +# ./bmtest.py +$ ./bmtest.py /opt/bm_dir1 bmbr0 10.18.10.99 255.255.255.0 1 +VNC port: 201 # 输出的 vnc 端口,需要加上 5900,所以实际的连接端口是 6101 +Formatting '/opt/bm_dir1/disk0', fmt=qcow2 size=104857600000 cluster_size=65536 lazy_refcounts=off refcount_bits=16 # 第一块磁盘 +Formatting '/opt/bm_dir1/disk1', fmt=qcow2 size=104857600000 cluster_size=65536 lazy_refcounts=off refcount_bits=16 # 第二块磁盘 +net interface 0 MAC: 00:22:69:d2:00:7a # 第一张网卡的 mac 地址,用于 pxe 启动 +net interface 1 MAC: 00:22:06:61:6e:26 +``` + +在平台注册物理机记录,这里需要使用第一张网卡的 MAC 地址,上面生成的是 `00:22:69:d2:00:7a`: + +```bash +$ climc host-create vbm1 00:22:69:d2:00:7a +``` + +## 启动物理机实例 + +进入 `/opt/bm_dir1`,运行 `bm_start` 脚本启动 qemu 和 OpenIPMI ,模拟物理机 pxe 启动。 + +```bash +$ cd /opt/bm_dir1 + +# 执行bm_start脚本启动,该脚本会在在screen中启动./bm_run脚本 +$ ./bm_start + +# 找到 qemu 的 vnc 端口,然后使用 vnc 客户端查看 +$ cat ./start | grep vnc +# 比如我看到的是 -vnc :201,就可以使用 vnc 客户端链接 6101 端口 +``` + +查看云平台的 baremetal 注册信息: + +```bash +$ climc host-list --host-type baremetal ++--------------------------------------+------+-------------------+--------------+---------+---------+-------------+----------+-----------+------------+-----------+--------------+-----------+--------------+ +| ID | Name | Access_mac | Access_ip | Status | enabled | host_status | mem_size | cpu_count | node_count | host_type | storage_size | domain_id | public_scope | ++--------------------------------------+------+-------------------+--------------+---------+---------+-------------+----------+-----------+------------+-----------+--------------+-----------+--------------+ +| 98e1fa87-e393-4395-8980-39e2ec3f5600 | vbm1 | 00:22:69:d2:00:7a | 10.18.10.199 | running | false | offline | 0 | 0 | 0 | baremetal | 0 | default | system | ++--------------------------------------+------+-------------------+--------------+---------+---------+-------------+----------+-----------+------------+-----------+--------------+-----------+--------------+ +*** Total: 1 Pages: 1 Limit: 20 Offset: 0 Page: 1 *** +``` + +## 其他命令 + + +```bash +# 停止 +$ sudo ./bm_stop + + +# 找到 qemu 的 vnc 端口,然后使用 vnc 客户端查看 +$ cat ./start | grep vnc +# 比如我看到的是 -vnc :201,就可以使用 vnc 客户端链接 6101 端口 + +# 查看 baremetal ipmi 信息 +$ climc host-ipmi vbm1 ++----------+---------------+ +| Field | Value | ++----------+---------------+ +| ip_addr | 192.168.0.2 | +| password | YunionDev@123 | +| present | true | +| username | root | ++----------+---------------+ + + +# 获取baremetal pxe系统 ssh 登录信息 +$ climc host-logininfo vbm1 ++----------+------------------+ +| Field | Value | ++----------+------------------+ +| ip | 192.168.0.254 | +| password | ZF6hRgRWMCmZgg9F | +| username | root | ++----------+------------------+ + + +# 装机 +$ climc host-enable vbm1 +$ climc server-create --disk centos-7.3.1611-20180104.vmdk --allow-delete --auto-start --hypervisor baremetal --ncpu 2 test-bm 2048 --host vbm1 + + +# 转换宿主机 +$ climc host-enable BM002253674848 +$ climc host-convert-hypervisor --image cloud-template-2.6.0-20190316.qcow2 vbm1 +```