暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

KVM虚拟机的磁盘与网卡热插拔添加卸载

孤岛鱼夫 2019-07-01
2202

kvm磁盘热插拔扩展

使用到的指令集:

  • virsh attach-disk:添加磁盘

  • virsh detach-disk:删除磁盘

  • virsh domblklist vm:查看vm虚拟机磁盘列表

挂载raw格式的磁盘

示例,将vm3虚拟机添加一块新磁盘

添加一块1G的磁盘文件

  1. [root@KVM ~]# qemu-img create -f raw /kvm/vm3/vdc.raw 1G

  2. Formatting '/kvm/vm3/vdc.raw', fmt=raw size=1073741824

将空盘添加到虚拟机vm3

  1. [root@KVM ~]# virsh attach-disk vm3 /kvm/vm3/vdc.raw vdc --cache none

  2. Disk attached successfully

连接到vm3格式化磁盘

  1. [root@KVM ~]# virsh console vm3

  2. Connected to domain vm3

  3. Escape character is ^]

  4. #回车

  5. localhost login: root

  6. Password:

  7. Last login: Sat Jul 28 12:41:23 on ttyS0


  8. #fdisk查看磁盘内容


  9. Disk /dev/vdc: 1073 MB, 1073741824 bytes, 2097152 sectors

  10. Units = sectors of 1 * 512 = 512 bytes

  11. Sector size (logical/physical): 512 bytes / 512 bytes

  12. I/O size (minimum/optimal): 512 bytes / 512 bytes

格式化并挂载

  1. [root@localhost ~]# mkfs -t ext4 /dev/vdc


  2. #挂载

  3. [root@localhost ~]# mount /dev/vdc /mnt/

  4. [ 1507.485894] EXT4-fs (vdc): mounted filesystem with ordered data mode. Opts: (null)

  5. [root@localhost ~]# df -h

  6. Filesystem Size Used Avail Use% Mounted on

  7. /dev/mapper/centos-root 8.0G 960M 7.1G 12% /

  8. devtmpfs 1.1G 0 1.1G 0% /dev

  9. tmpfs 1.2G 0 1.2G 0% /dev/shm

  10. tmpfs 1.2G 8.4M 1.1G 1% /run

  11. tmpfs 1.2G 0 1.2G 0% /sys/fs/cgroup

  12. /dev/vda1 1014M 142M 873M 14% /boot

  13. tmpfs 129M 0 129M 0% /run/user/0

  14. /dev/vdc 976M 2.6M 907M 1% /mnt #挂载成功


  15. #测试写入文件

  16. [root@localhost ~]# dd if=/dev/zero of=/mnt/bigfile bs=1M count=100

  17. 100+0 records in

  18. 100+0 records out

  19. 104857600 bytes (105 MB) copied, 0.90489 s, 116 MB/s

  20. [root@localhost ~]# du -sh /mnt/

  21. 101M /mnt/

查看vm3的磁盘列表

  1. [root@KVM ~]# virsh domblklist vm3

  2. Target Source

  3. ------------------------------------------------

  4. vda /kvm/vm3/vm3.qcow2

  5. vdb /kvm/vm3/vdb.raw

  6. vdc /kvm/vm3/vdc.raw

拔掉磁盘

注意:使用virsh指令删除磁盘会直接强制将虚拟机中磁盘删除,如果磁盘已经挂载使用,要停止该磁盘的写操作,否则会造成数据丢失,拔掉的磁盘存储在kvm宿主机的vm实例的镜像目录中,需要使用可以再挂载使用

删除磁盘

  1. [root@KVM ~]# virsh detach-disk vm3 vdb

  2. Disk detached successfully



  3. [root@KVM ~]# virsh detach-disk vm3 vdc

  4. Disk detached successfully


  5. [root@KVM ~]# virsh domblklist vm3

  6. Target Source

  7. ------------------------------------------------

  8. vda /kvm/vm3/vm3.qcow2

  9. hda -

*当继续讲vdc磁盘插入后,在虚拟机中会自动识别其名称,如果之前没有插入vdb,及时执行插入指令命名为vdc也没有用,虚拟机系统会自动命名为 /dev/vdb, 由此可间虚拟机命令是按字母顺序来的

挂载qcow2格式磁盘

创建img镜像

qcow2格式的磁盘可以动态增加,创建的镜像类型后缀可以是qcow2,或者可以是img;在创建qcow2格式镜像文件时可以指定格式,可以使用如下指令查看使用方式:

  1. [root@KVM ~]# qemu-img create -f qcow2 /kvm/vm3/vdc.img -o ?

  2. Supported options:

  3. size Virtual disk size #指定镜像大小加 -o 选项

  4. compat Compatibility level (0.10 or 1.1)

  5. backing_file File name of a base image

  6. backing_fmt Image format of the base image

  7. encryption Encrypt the image

  8. cluster_size qcow2 cluster size

  9. preallocation Preallocation mode (allowed values: off, metadata, falloc, full)

  10. #preallocation 指定磁盘划分方式,metadata:只写入磁盘元数据到磁盘,空间动态增长;full全量划分,空间全部占用

  11. lazy_refcounts Postpone refcount updates

创建vdc.img磁盘镜像

  1. [root@KVM ~]# qemu-img create -f qcow2 -o size=1G,preallocation=metadata /kvm/vm4/vdc.img

查看磁盘信息

  1. [root@KVM ~]# qemu-img info /kvm/vm4/vdc.img

  2. image: /kvm/vm4/vdc.img

  3. file format: qcow2

  4. virtual size: 1.0G (1073741824 bytes)

  5. disk size: 332K

  6. cluster_size: 65536

  7. Format specific information:

  8. compat: 1.1

  9. lazy refcounts: false

添加插入磁盘vdf.img

  1. [root@KVM ~]# virsh attach-disk vm4 /kvm/vm4/vdc.img vdc

  2. Disk attached successfully

console连接到vm4虚拟机,格式化挂载磁盘

  1. #磁盘信息


  2. Disk /dev/vdb: 1074 MB, 1074135040 bytes, 2097920 sectors #变成了vdb

  3. Units = sectors of 1 * 512 = 512 bytes

  4. Sector size (logical/physical): 512 bytes / 512 bytes

  5. I/O size (minimum/optimal): 512 bytes / 512 bytes

  1. #格式化

  2. [root@localhost ~]# mkfs -t ext4 /dev/vdb


  3. #挂载

  4. [root@localhost ~]# mount /dev/vdb /opt/

复制一个大文件查看磁盘占用

  1. [root@localhost opt]# dd if=/dev/zero of=/opt/bigfile bs=1M count=300

查看KVM宿主机中vm3的镜像文件大小

  1. [root@KVM vm4]# du -sh vdc.img

  2. 349M vdc.img

qcow2镜像文件

删除上面所有的镜像,重新创建一个后缀为qcow2的镜像文件

  1. [root@KVM ~]# qemu-img create -f qcow2 -o size=1G,preallocation=metadata /kvm/vm4/vdb.qcow2

查看文件类型

  1. [root@KVM ~]# qemu-img info /kvm/vm4/vdb.qcow2

  2. image: /kvm/vm4/vdb.qcow2

  3. file format: qcow2

  4. virtual size: 1.0G (1073741824 bytes)

  5. disk size: 332K

  6. cluster_size: 65536

  7. Format specific information:

  8. compat: 1.1

  9. lazy refcounts: false

添加插入磁盘

  1. [root@KVM ~]# virsh attach-disk vm4 /kvm/vm4/vdb.qcow2 vdb

  2. Disk attached successfully

连接到vm4 格式化挂载

  1. [root@localhost ~]# mkfs -t ext4 /dev/vdb


  2. [root@localhost ~]# mount /dev/vdb /mnt/


  3. [root@localhost mnt]# dd if=/dev/zero of=/mnt/bigfile bs=1M count=232

查看磁盘镜像文件

  1. [root@KVM vm4]# du -sh vdb.qcow2

  2. 281M vdb.qcow2

KVM网卡热插拔

网卡的热插拔添加方式与磁盘的方式差不多,指令也差不多

  • virsh attach-interface :添加一块网卡

  • virsh detach-interface:删除一块网卡,指定MAC

  • virsh domiflist :查看虚拟机网卡列表

添加一个网卡到物理桥br0上

  1. [root@KVM ~]# virsh attach-interface vm4 bridge br0

  2. Interface attached successfully

  1. [root@localhost opt]# ip a

  2. 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1

  3. link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

  4. inet 127.0.0.1/8 scope host lo

  5. valid_lft forever preferred_lft forever

  6. inet6 ::1/128 scope host

  7. valid_lft forever preferred_lft forever

  8. 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

  9. link/ether 52:54:00:9b:4a:12 brd ff:ff:ff:ff:ff:ff

  10. inet 192.168.214.160/24 brd 192.168.214.255 scope global dynamic eth0

  11. valid_lft 1055sec preferred_lft 1055sec

  12. inet6 fe80::e210:b7c:a67b:5f0/64 scope link

  13. valid_lft forever preferred_lft forever

  14. inet6 fe80::8df2:2e2f:c5dd:912/64 scope link tentative dadfailed

  15. valid_lft forever preferred_lft forever

  16. 3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

  17. link/ether 52:54:00:25:ad:60 brd ff:ff:ff:ff:ff:ff

  18. inet 192.168.214.164/24 brd 192.168.214.255 scope global dynamic ens10

  19. valid_lft 1758sec preferred_lft 1758sec

  20. inet6 fe80::19f7:b5b1:90fd:4664/64 scope link

  21. valid_lft forever preferred_lft forever

ens10是新加的网卡

撤销网卡,撤销网卡前先关闭网卡

  1. [root@localhost ~]# ip link set dev ens10 down

注意:撤销某一块网卡要指定该网卡的MAC,要不会撤销该网卡所在网桥上所有的网卡

  1. [root@KVM ~]# virsh detach-interface vm4 bridge --mac 52:54:00:25:ad:60

  2. Interface detached successfully

查看虚拟机网卡列表

  1. [root@KVM ~]# virsh domiflist vm4

  2. Interface Type Source Model MAC

  3. -------------------------------------------------------

  4. vnet1 bridge br0 virtio 52:54:00:9b:4a:12


文章转载自孤岛鱼夫,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论