不信你不学!虚拟化技术之kvm宿主机存储池管理命令用法及排错

Posted Friends of the wind

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了不信你不学!虚拟化技术之kvm宿主机存储池管理命令用法及排错相关的知识,希望对你有一定的参考价值。

宿主机命令

前提:yum -y install libguestfs libguestfs-tools

1.virt-inspector 查看虚拟磁盘文件所有信息
注意
1)尽量输入绝对路径,否则提示找不到;后面可以加管道符more,以分页显示
2)建议虚拟机关机操作,只有少数操作支持开机操作

virt-inspector --format=qcow2 -a /kvm_store/centos7.1.qcow2 | more

2.virt-cat 查看虚拟机内部文件信息
virt-cat -a centos7.qcow2 /etc/hostname

3.virt-edit 修改虚拟机文件
virt-edit -a /kvm_store/vmtest03.qcow2 /etc/hostname
修改为:resize

4.virt-df 统计查看虚拟机磁盘使用情况
virt-df -h -a centos7.qcow2

5.virt-copy-out 复制虚拟机文件到外部
virt-copy-out -d clone01 /etc/hostname /tmp/
本地Linux主机查看导出的文件

6.virt-copy-in复制本地文件到虚拟机内部
echo “hehehe” > /root/hehe.txt
virt-copy-in -d clone01 /root/resize.txt /tmp/
virt-cat -a centos7.qcow2 /tmp/hehe.txt

7.guestfish 交互式查看虚拟机内部文件
仅支持部分命令。
guestfish --rw -i -d centos7.0

8.guestmount 挂载虚拟机分区到外部目录,并测试
mkdir /centos7_root
guestmount -a centos7.qcow2 -m /dev/cl/root --rw /centos7_root/

echo "haha" > /centos7_root/test.txt
virt-cat -a centos7.qcow2 /test.txt

管理磁盘

1.虚拟磁盘类型
fixed: 定盘、厚盘,指定固定大小,占用绝对空间
dynamic:动盘、瘦盘,指定大小,但用多少占多少
Differencing:差分盘,一般用于链接克隆机,只记录和母盘差异的数据

2.常见的虚拟磁盘格式
kvm: raw qcow2
vmware: vmdk
microsoft: vhd vhdx
oracle: vdi

3.查看qemu-img支持的磁盘格式
qemu-img --help | grep Supported

4.qemu-img用法

创建raw格式磁盘文件
qemu-img create t1.img 1g

创建qcow2格式磁盘文件
qemu-img create -f qcow2 test1.qcow2 1g

创建qcow2格式的厚盘文件
qemu-img create -f qcow2 test2.qcow2 1g -o preallocation=full

5.创建链接克隆虚拟机磁盘文件
qemu-img create -f qcow2 -o backing_file=centos7.qcow2 centos7_clone.qcow2

基于链接克隆文件创建克隆虚拟机
virt-install --import --name=centos7_clone --vcpus=1 --ram=1024 --disk path=centos7_clone.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=centos7.0

6.修改虚拟磁盘大小(注意:磁盘可以扩展,但谨慎压缩,不能有快照)
qemu-img resize centos7.qcow2 +2G

报错:无法调整有快照的图像的大小;这个图像不支持调整大小

解决:删除快照

管理存储池

1.kvm存储模式
文件系统:方便;存储数据需要经过宿主机的文件系统,稍慢
设备:速度快,但不易于扩展,不能做快照

2.存储池:对存储进行统一管理、简化操作

3.存储池相关命令

列出存储池
virsh pool-list --details

查看某个存储池详细信息
virsh pool-info kvm

列出存储池中卷的信息
virsh vol-list kvm

4.创建基于目录的存储池

创建目录:mkdir /kvm_store2

定义存储池:
virsh pool-define-as test dir --target “/kvm_store/”

启动存储池
virsh pool-start test

设置存储池自动启动

virsh pool-autostart test
验证:

5.创建基于分区的存储池
创建分区
fdisk /dev/sdd

格式化文件系统
mkfs.ext4 /dev/sdd1

创建挂载点目录
mkdir /resize

定义基于分区的存储池
virsh pool-define-as test1 fs --source-dev “/dev/sde1” --target “/fenqu”

启用
virsh pool-start test1

验证:

6.创建基于磁盘的存储池
注意:只支持gpt格式的磁盘,默认磁盘是MBR,必须先转换格式

cat /etc/libvirt/storage/test2.xml

<pool type='disk'> 
<name>test2</name> 
<source> <device path='/dev/sdc'/> <format type='gpt'/> 
</source> 
<target> <path>/dev</path> 
</target> 
</pool> 

virsh pool-define test2.xml
virsh pool-start test2

报错:需要生成的设备’/dev/sdb '无法识别;

解决:配置文件device类型是gpt,而默认创建的均是MBR类型,所以找不到需要的gpt格式/dev/sdc;转换格式为gpt即可!
转换方法:
1)进入交互式界面

2)输入转化命令,mklabel
3)输入转换成什么标签类型gpt
验证:成功

virsh pool-autostart test2

7.基于LVM的存储池

先建卷组kvmvg


定义存储池

virsh pool-define-as kvmvg logical --source-name=kvmvg --target=/dev/kvmvg

8.基于iscsi的存储池
virsh pool-define-as --name storage01 --type iscsi --source-host 192.168.2.20 --source-dev iqn.2017-10.com.cloud.www:storage001 --target /dev/disk/by-path

virsh pool-start storage01
virsh pool-autostart storage01

9.基于nfs的存储池
相当于将存储的数据可在本地操作挂载点目录,实际是将数据存储于远端的nfs服务器的共享目录

1)检查nfs共享目录:

2)执行命令挂载

virsh pool-define-as --name kvmnfs --type netfs --source-host 172.16.0.136 --source-path /nfsshare(NFS共享目录) --target /nfstest(宿主机本地目录)

3)验证:


以上是关于不信你不学!虚拟化技术之kvm宿主机存储池管理命令用法及排错的主要内容,如果未能解决你的问题,请参考以下文章

2021年最危险的七大攻击技术,我不信你不知道

KVM虚拟化存储管理

kvm虚拟化存储管理

kvm虚拟化存储管理

kvm虚拟化存储管理

kvm虚拟化存储管理