KVM 的虚拟化环境里, 只有 domain name 这一说, domain ID 是会随着每次重启, ID 会改变的。
Proxmox 创建虚拟机如果不指定 ID,这个 ID 会自动递增,而且这个 ID 在一个集群里是唯一的,是一直绑定虚拟机的。为了方便管理,类似网络环境的 DHCP IP Pool 的管理,我们会对某一段 ID 做一个特定的用途,加以区分。例如 100-199 是基础架构类的, 200-299 是模版,300-399 是数据库层, 400-499 是应用层, 500-599 是测试机, 600-699 是Windows 客户机。
如果不小心分配错了 VM ID,没有按照我们自定义的规则,需要修改 VM ID,怎么办呢?
在虚拟机已经关闭的情况下, ssh 登录进入集群内的任意一个节点,例如 pve-01,把 VM ID 111 修改为 211: # cd /etc/pve/nodes/pve-01/qemu-server # mv 111.conf 211.conf # vim 211.conf 把里面的虚拟机磁盘映像路径修改掉,同时去真实的物理路径,把磁盘映像的文件名修改掉 假定磁盘 NFS Pool 的顶层路径为: /mnt/pve/vmpool/images,那么就是: # mkdir 211 # mv 111/vm-111-disk-0.qcow2 211/vm-211-disk-0.qcow2 就可以
Proxmox VE 是一款开源的虚拟化管理软件。内核基于 Debian,如果需要测试的话,其实也是蛮快可以上手的。 当然 前提是有 KVM 基础。
当然先是去官网下载最新版本的 iso,用 Bitrorrent 种子的下载速度可以达到 8Mb 每秒, 700 多兆的 iso,11分钟就下载完成。把 iso 拷贝到 Linux 机器上,插入 U盘,fdisk -l 查看,假设盘符为 /dev/sdb,然后 dd if=xxxx.iso of=/sdb bs=1M 就可以把 iso 烧录到 U 盘上了。 在要安装的物理服务器上,打开 UEFI 引导,然后就可以看到 Proxmos 的安装界面了,配置好服务器的网络和 root 口令后,安装十分快捷,重启会提示通过 https://ip:8006/ 就可以进入管理界面。
安装就大功告成了!接下来,添加存储和虚拟机。在 Web 界面用 root 用户登录后,设置语言为中文,进入存储界面,添加我们之前已经设置好的 NFS Share,设置好不同的类别,例如 iso 还是 vm 。记住,原先的存在的目录要按照 Proxmox 的约定重新移动到新的目录 iso 为挂接点下的 template/iso , vm 为 挂节点下的 images/<VMID>/ ,只有这样才能看到 Proxmox 之前的那些 iso 或者 qcow2 文件。
接下来,我们就可以开始创建虚拟机了,点击右上角的“创建虚拟机”,设置好虚拟机名称,从 isopool 里下拉,可以看到之前的 iso 文件,选择对应的映像,然后一步一步点选,就设置完成了。然后启动虚拟机,如果看到 No VNC,那是因为浏览器所在的 PC 客户端没有安装过 VNC ,不要紧,如果安装过 virt-view,我们在显卡设置里去修改成 Spice 就可以。然后会自动下载一个 .vv 文件,会自动用 virt-viewer 打开,我们就可以连接到虚拟机的 console 开始通过 iso 安装操作系统了。
In our dev enviroment, we use several KVM desktop machine to create lot VMs to test all kinds of new stuff. Compared with CentOS 7, Ubuntu 1804 or 1904 are more easy to install any new software just with apt install, don’t even need to update package list.
Though we found Ubuntu had big issue in change the vg name or doing what ever LVM init (aka virt-sysprep) . We already found the solution to it. But for regular Ubuntu VG name change, we still should have a separate way to do. Here it is.
# vgrename oldvg newvg
# perl -p -i -e ‘s/oldvg/newvg/g’ /etc/fstab /boot/grub/grub.cfg /etc/initramfs-tools/conf.d/resume if vg name contain dash (“-“), we need to run one more time with this: # perl -p -i -e ‘s/oldvg–/newvg–/g’ /etc/fstab /boot/grub/grub.cfg /etc/initramfs-tools/conf.d/resume