kvm实战

1. 安装环境

# yum install qemu-kvm libvirt virt-install virt-manager virt-viewer -y
# systemctl start libvirtd
# virt-host-validate

 

授予 qemu 用户访问某个目录的权限:

# setfacl -R -m u:qemu:rwx YOUR_DIRECTORY

 

 

2. VM相关操作

从 ISO 文件启动 VM

# 创建一个虚拟磁盘
# qemu-img create -f raw -o size=10G ./ubuntu16.img

# 在虚拟磁盘上安装操作系统
# virt-install --name ubuntu16-server --ram 1024 --disk path=./ubuntu16.img --vcpus 2 \
               --os-variant ubuntu16.04 --network bridge=virbr0 \
               --cdrom ./ubuntu-16.04.7-server-amd64.iso

查看 os-variant:  osinfo-query os 

 

从磁盘映像启动 VM

# virt-install --name ubuntu16 --ram 1024 --disk path=./ubuntu16.img --vcpus 2 \
               --os-variant ubuntu16.04 --network bridge=virbr0 --import

 

查看 VM

# 查看有哪些 VM 及其状态
# virsh list --all

# 查看某个 VM 的详细信息(数字表示 vm id)
# virsh dominfo 6

# 查看 VM 定义文件
# cat /etc/libvirt/qemu/ubuntu16.xml

 

启停 VM:

# 关机
# virsh shutdown 6

# 强制关机
# virsh destroy 6

# 删除:再也查看不到,但不删除磁盘映像
# virsh undefine ubuntu16-server

# 启动
# virsh start ubuntu16

# 重启
# virsh reboot ubuntu16

# 自动启动:随 hypervisor 的启动而启动
# virsh autostart ubuntu16


# 取消自动启动:随 hypervisor 的启动而启动
# virsh autostart --disable ubuntu16

 

启动 virt-manager

# virt-manager

 

通过控制台连接 VM

# 在 ubuntu16 vm 中执行
sudo systemctl enable serial-getty@ttyS0.service
sudo systemctl start serial-getty@ttyS0.service

# 在宿主机上执行
virsh console 8

ps1:需要按一次回车键才会显示登陆。

ps2:centos vm设置方法参考 https://www.cnblogs.com/heiguu/p/10121084.html

按 ctrl+] 退出控制台连接。

 

查看 vm 挂载了哪些块设备

# virsh domblklist 1

 

3. 虚拟磁盘相关操作

创建虚拟磁盘

# qemu-img create -f raw -o size=2G ./disk1.img

 

磁盘格式转换

# qemu-img convert -f raw -O qcow2 ./disk1.img ./disk1.qcow2

 

查看磁盘信息

# qemu-img info ./disk1.qcow2

 

挂载磁盘

# 1 是 vm id;vdb是磁盘在 vm 中的名称
# virsh attach-disk 1 /home/ming/kvm/disk1.img vdb --live --config

 

卸载磁盘

# virsh detach-disk 1 vdb

 

创建快照

# qemu-img snapshot -c s1 disk1.qcow2 

ps:不支持 raw 格式。

 

查看快照

# qemu-img snapshot -l disk1.qcow2

 

从快照中恢复

# qemu-img snapshot -a s1 disk1.qcow2

 

删除快照

# qemu-img snapshot -d s1 disk1.qcow2

 

4. 网络相关操作(使用 ovs)

创建网络配置文件

# cat net1.xml 
<network>
  <name>net1</name>
  <forward mode="bridge"/>
  <bridge name="br0"/>
  <virtualport type="openvswitch"/>
</network>

 

定义网络

# virsh net-define net1.xml

 

启动网络

# virsh net-start net1

 

终止网络

# virsh net-destroy net1

 

删除网络

# virsh net-undefine net1

 

查看网络

# virsh net-list --all
# virsh net-info net1

 

网络自启动

# virsh net-autostart net1

# 取消自启动
# virsh net-autostart --disable net1

 

创建 ovs 网桥,设置 vm 使用指定的网络

# ovs-vsctl add-br br0

# virt-install --name vm1 --ram 512 --disk path=./ubuntu16-1.img --vcpus 1 \
               --os-variant ubuntu16.04 --network bridge=virbr0 --import
# virt-install --name vm2 --ram 512 --disk path=./ubuntu16-2.img --vcpus 1 \
               --os-variant ubuntu16.04 --network network=net1 --import

# ovs-vsctl show
98c62161-cb7e-44e9-a94d-8bc0b01e60af
    Bridge "br0"
        Port "vnet0"
            Interface "vnet0"
        Port "vnet1"
            Interface "vnet1"
        Port "br0"
            Interface "br0"
                type: internal

配置 vm 的 IP地址

# vm1
root@ubuntu:~# ip addr add 10.0.0.3/24 dev ens3

# vm2
root@ubuntu:~# ip addr add 10.0.0.4/24 dev ens3

# vm2
root@ubuntu:~# ping 10.0.0.3
PING 10.0.0.3 (10.0.0.3) 56(84) bytes of data.
64 bytes from 10.0.0.3: icmp_seq=1 ttl=64 time=2.21 ms

 

 

参考资料

https://www.cnblogs.com/zrp2013/p/4529820.html

https://blog.csdn.net/s7799653/article/details/106024674

https://blog.csdn.net/wuliangtianzu/article/details/81870551

上一篇:【leetcode】590. N-ary Tree Postorder Traversal


下一篇:Ubuntu16安装深度学习环境流程