服务器虚拟机配置记录
第一节:Linux 环境下使用KVM创建虚拟机
VM1:
virt-install -n obmc-build --memory 131072 --vcpus=96 --os-variant=ubuntu22.04 --accelerate --cdrom /home/ubuntu-22.04.5-live-server-amd64.iso --disk /home/vmsets/obmc-build.vm,format=qcow2,bus=virtio,size=786 --network network=default --vnc --vncport=5996 --vnclisten=0.0.0.0
VM2:
virt-install -n g-server --memory 32768 --vcpus=16 --os-variant=ubuntu22.04 --accelerate --cdrom /home/ubuntu-22.04.5-live-server-amd64.iso --disk /home/vmsets/g-server.vm,format=qcow2,bus=virtio,size=786 --network network=default --vnc --vncport=5997 --vnclisten=0.0.0.0
参数解析:
参数 | 含义 |
---|---|
-n | 指定虚拟机的名称 |
--memory | 指定虚拟机分配的内存大小(以 MB 为单位) |
--vcpus | 指定虚拟机分配的虚拟 CPU 数量 |
--os-variant | 指定操作系统的变体,以优化虚拟机的配置。这里指定为 ubuntu20.04 ,表示虚拟机将运行 Ubuntu 20.04。 |
--accelerate | 启用加速功能(如 KVM 加速),以提高虚拟机的性能。 |
-c/--cdrom | 指定用于安装操作系统的 ISO 镜像文件路径。 |
--disk | 指定虚拟机的磁盘配置。 |
path | 生成磁盘文件的路径。 |
format | 磁盘文件的格式为qcow2,这是一种支持动态分配和快照的磁盘格式。支持稀疏文件(动态分配),这意味着磁盘文件的实际大小会随着数据写入而增长,而不是一次性分配全部空间。 |
bus | 磁盘总线类型为virtio,这是一种高性能的虚拟化设备接口。 |
size | 磁盘的大小(单位GB) |
--network | 指定虚拟机的网络配置。 1. bridge=br0;虚拟机将连接到名为 2. network=default;使用 libvirt 的默认 NAT 网络(通常名为 default)。 |
--vnc | 启用 VNC(Virtual Network Computing)来远程访问虚拟机的图形界面。 |
--vncport | 指定 VNC 服务的端口号。同时存在多个虚拟机时,端口号需要区分。 |
--vnclisten | 指定 VNC 服务监听的 IP 地址。0.0.0.0 表示监听所有网络接口,允许从任何 IP 地址连接。127.0.0.1表示这样只允许本地访问。 |
第二节:常用的虚拟机管理命令
命令参数 | 含义 |
---|---|
attach-disk | 附加一个磁盘到虚拟机 |
detach-disk | 拆除虚拟机上附加的磁盘 |
dumpxml | 输出虚拟机的信息,XML格式 |
edit | 编辑虚拟机的信息,XML格式 |
reboot | 重启虚拟机 |
restore | 重置虚拟机(通过保存的镜像) |
resume | 恢复虚拟机 |
save | 创建虚拟机镜像 |
setmaxmem | 修改虚拟机最大内存限制 |
setmem | 修改虚拟机内存分配 |
setvcpus | 修改虚拟机虚拟CPU核心的数量 |
shutdown | 优雅地关闭一个虚拟机 |
start | 启动一个不活动的虚拟机 |
suspend | 挂起一个虚拟机 |
vcpucount | 查询虚拟机vCPU核心数量 |
vcpuinfo | 详细的虚拟机vCPU信息 |
setvcpu | 添加或者拆除虚拟机vCPU核心 |
domifaddr | 查询正在运行虚拟机的网络信息 |
domiflist | 查询所有虚拟机的虚拟接口 |
domifstat | 查询虚拟机网络接口的状态 |
dominfo | 查询虚拟机信息 |
dommemstat | 查询虚拟机内存统计信息 |
domstate | 查询虚拟机状态 |
domstats | 查询一个或者多个虚拟机的统计信息 |
list | 列出所有的虚拟机 |
第三节:图形化访问工具virt-viewer
virt-viewer <虚拟机名称>
第四节:虚拟网络控制台访问工具vnc
1. 查询虚拟机的VNC端口(输出是1,表示端口为5901,2对应 5902,以此类推)
virsh vncdisplay <虚拟机名称>
2. 使用VNC 客户端连接到虚拟机
- 如果 VNC 监听地址是127.0.0.1,可以在物理主机上运行:
vncviewer 127.0.0.1:5901
- 如果 VNC 监听地址是0.0.0.0,可以从远程机器运行:
vncviewer <物理主机IP>:5901
第五节:Linux环境下使用mdadm创建RAID
- 安装mdadm:
sudo apt-get install mdadm
- 使用lsblk或fdisk -l命令确认两块硬盘的设备名称(如 /dev/nvme1n1p1 和 /dev/nvme2n1p1)
lsblk
- 对硬盘进行分区(使用fdisk或者parted),例如 sudo fdisk /dev/nvme1n1p1
-
输入n创建新分区。
-
选择分区类型(通常选择主分区p)。
-
设置分区大小(默认使用整个硬盘)。
-
输入
w
保存并退出。
-
-
使用mkfs命令格式化分区
sudo mkfs.ext4 /dev/nvme1n1p1 sudo mkfs.ext4 /dev/nvme2n1p1
-
创建RAID1阵列
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/nvme1n1p1 /dev/nvme2n1p1
参数含义:
--create:指定待创建RAID设备的名称。
--level=1:指定创建RAID的类型,RAID1。
--raid-devices=2:指定使用两块硬盘。 -
在RAID设备上创建文件系统
sudo mkfs.ext4 /dev/md0
-
挂载RAID设备
sudo mkdir /mnt/raid1 sudo mount /dev/md0 /mnt/raid1
-
设置系统启动自动挂载RAID设备
a. 为了在系统重启后自动挂载RAID设备,需要更新 /etc/fstab 文件,首先获取RAID设备sudo blkid /dev/md0
b. 然后在 /etc/fstab 中添加一行
UUID=36a3a564-7575-4a62-b6af-e5b5ab3a4209 /mnt/data-raid1 ext4 defaults 0 0
c. 保存RAID配置以便系统重启后自动加载
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
-
验证RAID状态
- 检查RAID设备挂载状态
第六节:创建虚拟磁盘
根据前几节,在宿主机上已经创建了RAID1设备/dev/md0(已挂载在 /mnt/data/raid1),现在需要将其容量分为三份,分别分配给宿主机以及两个虚拟机。
- 创建虚拟磁盘文件
sudo qemu-img create -f qcow2 /mnt/data-raid1/obmc-build-vmdisk.qcow2 2T sudo qemu-img create -f qcow2 /mnt/data-raid1/g-server-vmdisk.qcow2 1T
- 将虚拟磁盘分配
virsh attach-disk obmc-build /mnt/data-raid1/vmdisk/obmc-build-vmdisk.qcow2 vdb --persistent --subdriver qcow2 --targetbus virtio --cache none virsh attach-disk g-server /mnt/data-raid1/vmdisk/g-server-vmdisk.qcow2 vdb --persistent --subdriver qcow2 --targetbus virtio --cache none