创建虚拟机
1 | virt-install --name ubuntu --memory 4096 --vcpus=2 \ |
--os-variant
可用值选项查看 virt-install --osinfo list
, 但ubuntu22.04
不在列表里貌似也没问题
安装linux用lvm创建分区,方便后期扩容
可使用vnc viewer连接安装操作系统, 端口5911,密码000000 会持久化,一直可用,配置保存到/etc/libvirt/qemu/ubuntu.xml ,命令virsh dumpxml ubuntu
可查看配置
如果是从已装好的硬盘文件导入:
1 | virt-install --name ubuntu2 --memory 4096 --vcpus=2 \ |
日常操作
开启虚拟机
1 | virsh start ubuntu |
关闭虚拟机
1 | virsh shutdown ubuntu |
查看状态
1 | virsh list --all |
设置开机启动
1 | virsh autostart ubuntu |
取消开机启动
1 | virsh autostart --disable ubuntu |
查看虚拟机IP
在桥接模式下,我暂时没找到在宿主机上查看虚拟机ip的办法,目前用Vnc viewer连接vnc端口进入虚拟机查看ip
磁盘扩容
基于lvm文件系统
查看磁盘信息
1 | qemu-img info /home/xxx/vm/ubuntu/ubuntu.qcow2 |
扩容10G
1 | qemu-img resize /home/xxx/vm/ubuntu/ubuntu.qcow2 +10G |
重启虚拟机
以上在母机中操作
查看硬盘是否变大sudo fdisk -l
/dev/vda
已经从30g变成40g
给新加的10g分区sudo fdisk /dev/vda
输入p
命令,所有选项直接回车,默认分配所有可用空间
创建物理卷sudo pvcreate /dev/vda4
查看物理卷, 加入物理卷/dev/vda4
到卷组ubuntu-vg
sudo pvs
查看逻辑卷sudo lvdisplay
记录逻辑卷 LV Path: /dev/ubuntu-vg/ubuntu-lv
查看物理卷sudo pvs
有14G可用
执行逻辑卷扩容
1 | sudo lvextend -L +14G /dev/ubuntu-vg/ubuntu-lv |
或者
sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
分配全部空间
ext4文件系统用resize2fs,xfs系统用xfs_growfs
执行文件系统扩容
sudo resize2fs /dev/ubuntu-vg/ubuntu-lv
可以看到,可用空间变大了
快照
给ubuntu
虚拟机创建快照
virsh snapshot-create ubuntu
查看ubuntu
虚拟机快照
virsh snapshot-list ubuntu
快照配置文件在 /var/lib/libvirt/qemu/snapshot/ubuntu
恢复快照
virsh snapshot-revert ubuntu 1669277133
秒级恢复,不需要先关机
磁盘管理
创建磁盘
qemu-img create -f qcow2 ubuntu-1.qcow2 10G
查看磁盘信息qemu-img info ubuntu-3.qcow2
磁盘被挂载时会被锁住,无法查看信息
添加磁盘
virsh edit ubuntu
打开虚拟机配置文件,将刚刚创建的文件加到虚拟机中
1 | <disk type='file' device='disk'> |
图中的address标签,会在保存后自动生成, 也可以用命令添加磁盘:
virsh attach-disk --domain ubuntu --source ~/vm/ubuntu/ubuntu-1.qcow2 --target vdb --subdriver qcow2 --persistent
--persistent
选项会将配置持久化保存到xml中,重启后仍然有效。
添加后再按上面的扩容方法,分区扩容
查看挂载的磁盘virsh domblklist ubuntu
卸载磁盘virsh detach-disk ubuntu /home/xxx/vm/ubuntu/ubuntu-3.qcow2
删除虚拟机
查看快照
1 | virsh snapshot-list --domain vm-name |
删除快照
1 | virsh snapshot-delete --domain vm-name --snapshotname 3sep2016u1 |
删除虚拟机
1 | virsh undefine vm-name |
最后一步,删除磁盘文件