Skip to content

KVM存储

默认存储池在/var/lib/libvirt/images KVM必须配置一个目录当做存储磁盘镜像(存储卷的目录),我们称这个目录为存储池

存储池管理

shell
virsh -c qemu:///system

1、创建基于文件夹的存储池

shell
mkdir -p /data/vmfs

2、定义存储池与其目录

shell
virsh pool-define-as vmdisk --type dir --target /data/vmfs
pool-define-as 定义池的名字

3、创建已定义的存储池

(1) 创建已定义的存储池

shell
virsh pool-build vmdisk

(2) 查看已经定义存储池,存储池不激活无法使用

shell
virsh pool-list --all
pool-dumpxml default
pool-info  default

4、激活并自动启动已定义的存储池

shell
virsh pool-start vmdisk
virsh pool-autostart vmdisk

到这里vimdisk存储池已经创建完成,可以直接在这个存储池中创建虚拟磁盘文件

5、存储池中创建虚拟存储卷

shell
virsh vol-create-as vmdisk oeltest03.qcow2 20G --format qcow2

oeltest03.qcow2:名字和后缀都可以自定义也可以img结尾 注意:KVM存储主要体现一种管理方式,可以通过挂载存储目录,lvm逻辑卷的方式 创建存储池,虚拟机存储卷创建完成后,剩下的操作与无存储卷的方式无任何区别了 注意:KVM存储池也要用于虚拟机迁移任务

6、存储池相关管理命令 (1)在存储池中删除虚拟机存储卷

shell
virsh vol-delete --pool vmdisk oeltest03.qcow2

(2)取消活跃存储池

shell
virsh pool-destroy vmdisk

(3)删除存储池定义目录

shell
virsh pool-delete vmdisk

(4)取消存储池定义

shell
virsh pool-undefine vmdisk

如图

如图

存储池使用

添加lvm和远程即可

磁盘格式

1、磁盘镜像文件格式

  • raw 原始格式,性能最好
  • qcow 性能不能和raw比所有出现了qcow2
  • qcow2 性能还是不如raw,但是ram不支持快照,qcow2支持
  • qed 性能不怎么好

什么叫做写时拷贝?

  • raw 创建的时候立刻分配空间,不管你有没有用到那么多空间
  • qcow2 只是承诺给你分配空间,但是你需要的时候,就给你空间

创建磁盘文件

建立qcow2磁盘文件

shell
qemu-img create -f qcow2 /data/vmfs/test.qcow2 1G

建立raw格式磁盘文件

shell
qemu-img create -f raw /data/vmfs/test.raw 1G

查看已经创建的虚拟磁盘文件

shell
qemu-img info test.qcow2

如图

挂载磁盘

当你的虚拟机开不了机了,但是文件系统没有损坏,可以通过挂载磁盘的方式把虚拟机文件系统挂载到宿主机进行拷贝查看磁盘镜像分区信息

shell
virt-df -h -d VM-ceshi
virt-filesystems -d VM-ceshi

查看镜像内磁盘分区

shell
sudo virt-filesystems --long -a debian-11-generic-amd64-20241111-1928.qcow2 --all
Name        Type        VFS      Label  MBR  Size        Parent
/dev/sda1   filesystem  ext4     -      -    1941159936  -
/dev/sda14  filesystem  unknown  -      -    3145728     -
/dev/sda15  filesystem  vfat     -      -    129718272   -
/dev/sda1   partition   -        -      -    2012217344  /dev/sda
/dev/sda14  partition   -        -      -    3145728     /dev/sda
/dev/sda15  partition   -        -      -    130023424   /dev/sda
/dev/sda    device      -        -      -    2147483648  -

挂载磁盘分区

shell
guestmount -d VM-ceshi1 -m  /dev/centos/root --rw /mnt/
guestmount -a debian-11-generic-amd64-20241111-1928.qcow2 -m /dev/sda1 --rw /mnt/kvmdisk
# 切换到 root 用户,可对 /mnt/kvmdisk 操作
sudo -i

取消挂载

shell
guestunmount /mnt/

如图

采用 guestfish 分区操作

使用guestfish命令进入交互命令界面依次执行run、list-filesystems、mount等指令

shell
guestfish --rw -a debian-10.2.0-openstack-amd64.qcow2
Welcome to guestfish, the guest filesystem shell for
editing virtual machine filesystems and disk images.

Type: 'help' for help on commands
      'man' to read the manual
      'quit' to quit the shell

run
list-filesystems
/dev/sda1: ext4
mount /dev/sda1 /