文章目录
创建磁盘映像文件的两种方式(dd和qemu-img)
1、dd创建raw格式的磁盘文件(预分配方式)
dd if=/dev/zero of=/root/test1.img bs=1M count=1024
2、精简置备
dd if=/dev/zero of=/root/test2-seek.img bs=1M seek=1024 count=0
#seek选项会在开头跳过1024个块儿,再开始复制,由于count=0 所以dd没有进行复制,这就有了1M*1024的空洞文件
将虚拟机固定到numa节点或指定的逻辑cpu上
[root@node100 ~]# virsh capabilities | grep cpu
<cpu>
</cpu>
<cpus num='24'>
<cpu id='0' socket_id='0' core_id='0' siblings='0,12'/>
<cpu id='1' socket_id='1' core_id='0' siblings='1,13'/>
<cpu id='2' socket_id='0' core_id='1' siblings='2,14'/>
<cpu id='3' socket_id='1' core_id='1' siblings='3,15'/>
<cpu id='4' socket_id='0' core_id='2' siblings='4,16'/>
<cpu id='5' socket_id='1' core_id='2' siblings='5,17'/>
<cpu id='6' socket_id='0' core_id='3' siblings='6,18'/>
<cpu id='7' socket_id='1' core_id='3' siblings='7,19'/>
<cpu id='8' socket_id='0' core_id='4' siblings='8,20'/>
<cpu id='9' socket_id='1' core_id='4' siblings='9,21'/>
<cpu id='10' socket_id='0' core_id='5' siblings='10,22'/>
<cpu id='11' socket_id='1' core_id='5' siblings='11,23'/>
<cpu id='12' socket_id='0' core_id='0' siblings='0,12'/>
<cpu id='13' socket_id='1' core_id='0' siblings='1,13'/>
<cpu id='14' socket_id='0' core_id='1' siblings='2,14'/>
<cpu id='15' socket_id='1' core_id='1' siblings='3,15'/>
<cpu id='16' socket_id='0' core_id='2' siblings='4,16'/>
<cpu id='17' socket_id='1' core_id='2' siblings='5,17'/>
<cpu id='18' socket_id='0' core_id='3' siblings='6,18'/>
<cpu id='19' socket_id='1' core_id='3' siblings='7,19'/>
<cpu id='20' socket_id='0' core_id='4' siblings='8,20'/>
<cpu id='21' socket_id='1' core_id='4' siblings='9,21'/>
<cpu id='22' socket_id='0' core_id='5' siblings='10,22'/>
<cpu id='23' socket_id='1' core_id='5' siblings='11,23'/>
</cpus>
<bank id='0' level='3' type='both' size='15' unit='MiB' cpus='0,2,4,6,8,10,12,14,16,18,20,22'/>
<bank id='1' level='3' type='both' size='15' unit='MiB' cpus='1,3,5,7,9,11,13,15,17,19,21,23'/>
<cpuselection/>
<cpuselection/>
[root@node100 ~]# virsh dumpxml kvm6058 | grep vcpu
<vcpu placement='static'>8</vcpu>
关闭kvm6058虚拟机,将他的xml文件cpu那儿的内容改成
[root@node100 ~]# virsh dumpxml kvm6058 | grep vcpu
<vcpu cpuset='6-9'>4</vcpu>
启动kvm6058后查看cpu的亲和性
[root@node100 ~]# virsh vcpupin kvm6058
VCPU: CPU Affinity
----------------------------------
0: 6-9
virsh domblkerror #显示块设备上的错误
virsh domblkinfo #显示块设备的基本信息
virsh domblklist #显示所有块设备的列表
virsh domblkstat #显示块设备的状态
[root@node100 ~]# virsh freecell --all #确定numa节点的可用内存
0: 43237448 KiB
--------------------
Total: 43237448 KiB
[root@node100 ~]# virsh nodeinfo #确认cpu和numa拓扑
CPU model: x86_64
CPU(s): 24
CPU frequency: 1620 MHz
CPU socket(s): 2
Core(s) per socket: 6
Thread(s) per core: 2
NUMA cell(s): 1
Memory size: 65782568 KiB
[root@node100 ~]# virsh vcpuinfo kvm6060 #显示虚拟机vcpu运行在哪些物理cpu核心上
VCPU: 0
CPU: 11 #表示虚拟cpu0运行在物理cpu11 这个核心上
State: running
CPU time: 20980.8s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyy #有多少个y,就表示这个vcpu可以在多少个物理cpu核心上切换(往往是物理cpu的核心数)
VCPU: 1
CPU: 22
State: running
CPU time: 22370.1s
CPU Affinity: yyyyyyyyyyyyyyyyyyyyyyyy
qemu-img命令常见用法
qemu-img info Ubuntu-18.04-x64.qcow2 #查看磁盘镜像信息
qemu-img check -f qcow2 test.img #检查磁盘镜像文件是否有error
qemu-img convert -p -f vmdk ./CentOS-6.9.vmdk -O qcow2 ./CentOS-6.9.qcow2 #-p显示进度,-f指定转换前的格式,-O指定转换后的格式
qemu-img convert -p -c -O qcow2 CentOS-6.9.qcow2 CentOS-6.9-compress.qcow2 #压缩镜像(原理是,将未使用的空间,全部写0)
#qemu-img 2.9之前的磁盘镜像文件加密方式
qemu-img convert -f qcow2 -O qcow2 -o encryption original.qcow2 encryption.qcow2
虚拟机安装qemu guest agent 后可使用的实用命令
#注意,宿主机通过qemu guest agent与虚拟机交互的范围大小和功能多少还取决于虚拟机os的版本,比如windows2003仅支持很少的命令
(本地磁盘虚拟机和ceph磁盘虚拟机都支持)
virsh qemu-agent-command kvm7022 '{"execute":"guest-info"}' #查询宿主机能通过qemu guest anget 向虚拟机发送哪些指令
获取虚拟机网卡信息
virsh domifaddr kvm7022 --source agent #获取虚拟机各个网卡的ip(需要qemu-guest-agent支持)
virsh domiflist kvm7022 #获取虚拟机网卡信息
重启|关闭虚拟机
virsh shutdown kvm7022 --mode=agent #在内部关闭虚拟机,比--mode=acpi 更可靠(acpi高级电源管理,这也是从内部关闭虚拟机)
virsh reboot kvm7022 --mode agent #重启虚拟机(相当于在虚拟机内部进行重启),比 virsh reboot kvm7022 --mode acpi 更可靠
重置虚拟机密码
virsh set-user-password kvm7022 --user root --password test@123 #将kvm7022的root密码修改成test@123
virsh set-user-password kvm7023 --user administrator --password test@123 #将kvm7023的root密码修改成test@123
动态内存管理(内存气球:虚拟机安装了virtio-balloon驱动和通道后可使用)
查看内存气球信息
[root@node100 ~]# virsh qemu-monitor-command kvm7309 --hmp --cmd info balloon
balloon: actual=8192 #当前实际可以使用的内存为8192,虚拟机内部看到7.6G,即目前内存气球中的内存为0
对内存气球充气
#(即使用ballon命令将虚拟机可使用的内存设置为4096)(若是要还原再次设置为8192即可,若是设置值大于虚拟机启动时的值,多出部分是不生效的)
#注意:内存充气需要一定时间,可以在虚拟机内部多次使用内存查看命令来观察变化
[root@node100 ~]# virsh qemu-monitor-command kvm6708 --hmp --cmd balloon 4096
给虚拟机附加|分离磁盘
附加磁盘
virsh attach-disk kvm1011 /root/test1.img vdb --config --live #--live 给正在运行的虚拟机附加一块镜像(处于停止状态的虚拟机不能使用--live)
virsh attach-disk kvm1011 /root/test2-seek.img vdc --config #给处于停止状态的虚拟机附件一块磁盘镜像
分离磁盘
virsh detach-disk kvm1011 vdb --config --live #给处于运行状态的虚拟机分离磁盘
宿主机安装libguestfs-tools后virt相关命令用法(常用于镜像制作)
(注意:只支持本地磁盘虚拟机,基于ceph的虚拟机是不支持的)
#rpm -qa|grep libguestfs-tools #确保计算节点该工具已经安装
#-d 指定虚拟机域名
#查看虚拟机或磁盘内部文件
virt-cat -d kvm7187 /etc/passwd #查看虚拟机内部文件(类似于cat,开关机下都可以)
virt-cat -a kvm7187-system.qcow2 /etc/passwd #直接读取磁盘文件中的内容
#直接编辑虚拟机内部文件(虚拟机必须关机)
virt-edit kvm6973 /etc/shadow #变相破密
virt-edit -a /home/kvm/local/kvm6973/kvm6973-system.qcow2 /etc/shadow
#向虚拟机内部拷贝文件(虚拟机必须处于关机状态,启动后验证)
virt-copy-in -d kvm7022 /tmp/test.txt /home/ #将本地/tmp/test.txt拷贝到虚拟机的/home下
virt-copy-in -a kvm7187-system.qcow2 /tmp/test.txt /home/ #将/tmp/test.txt拷贝到虚拟磁盘的/home下
#将虚拟机内的文件拷贝出来
virt-copy-out -d kvm7022 /etc/passwd /tmp/ #-d 指定虚拟机,拷贝到/tmp目录下
virt-copy-out -a /kvm/img/vm01.qcow2 /etc/passwd /tmp/ #从磁盘拷贝出来
如果文章对你有帮助,欢迎点击上方按钮打赏作者
暂无评论