虚拟机磁盘与qemu-img、存储池、存储卷

kvm 专栏收录该内容
4 篇文章 0 订阅


这里是一段防爬虫文本,请读者忽略。
本文原创首发于CSDN,作者IDYS
博客首页:https://blog.csdn.net/weixin_41633902/
本文链接:https://blog.csdn.net/weixin_41633902/article/details/109405950
未经授权,禁止转载!恶意转载,后果自负!尊重原创,远离剽窃!


写在开头的话

  • 请记住:实践是掌握知识的最快方法
  • 如果你只是怀着看看的态度去快速浏览文章,而不去认认真真的把文章里面讲的任何一个知识点去实践一遍,那么你永远也掌握不了它
  • 生命不息,折腾不止!

虚拟机磁盘与qemu-img

00. 虚拟磁盘概述

0.1 虚拟化项目中存储的注意事项

  • 存储的性能几乎总是虚拟化的瓶颈
  • 通过多个硬盘驱动以分布磁盘I/O来实现存储解决方案
  • 驱动器的速度越快越好,考虑SSD与机械硬盘的混合使用
  • 考虑部署集中化的SAN/NFS来实现高可用性和实时迁移

在这里插入图片描述


0.2 kvm 存储模式

  • 基于文件系统的存储
    • dir:Filesystem Directory
    • fs:Pre-Formatted Block Device
    • netfs:Network Exported Directory
  • 基于设备的存储
    • Disk:Physical Disk Device
    • Iscsi:iSCSI Target
    • logical: LVM Volume Group
  • 通过存储池来简化存储的管理

0.3 虚拟磁盘类型

  • 固定 Fixed
    • 在配置时,指定磁盘大小
    • 不管在虚拟磁盘上实际存储多少数据,都将占用相同大小主机磁盘空间
  • 动态Dynamic
    • 增长到最大容量,但是只根据需求使用更多的空间
  • 差异Differencing
    • 因为创建是差异磁盘,所以只保存变更的数据
    • 例如:将操作系统安装在复盘,然后创建差异化磁盘来执行进一步配置

0.4 KVM 支持的磁盘类型

在这里插入图片描述


01. 使用 qemu-img管理虚拟磁盘

  • qemu-img概述
  • 创建虚拟磁盘
  • 检查虚拟磁盘
  • 预分配磁盘策略
  • 后配差异虚拟磁盘
  • 虚拟磁盘格式转换
  • 调整虚拟磁盘大小

1.1 qemu-img 概述

  • qemu-img是一个功能强制磁盘镜像管理工具
  • qemu-img --help包括以下功能
    • check:检查完整性
    • create:创建镜像
    • commit:提交更改
    • compare:比较
    • convert:转换
    • info:获得信息
    • map:映射
    • snapshot:快照管理
    • rebase:在已有的镜像的基础上创建新的镜像
    • resize:调整大小
    • amend:修订镜像格式选项

  • 查看磁盘文件信息
[root@idys1 /vm] qemu-img info centos6-disk0.qcow2 
image: centos6-disk0.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 1.2G
cluster_size: 65536
Format specific information:
    compat: 1.1
    lazy refcounts: true
  • 查看qcow2磁盘类型支持的选项
[root@idys1 /vm] qemu-img create -f qcow2 -o ?
Supported options:
size             Virtual disk size
compat           Compatibility level (0.10 or 1.1)
backing_file     File name of a base image
backing_fmt      Image format of the base image
encryption       Encrypt the image
cluster_size     qcow2 cluster size
preallocation    Preallocation mode (allowed values: off, metadata, falloc, full)
lazy_refcounts   Postpone refcount updates

1.2 qcow2 格式选项

  • backing_file
    • 用于指定后端镜像文件
  • backing_fmt
    • 设置后端镜像的镜像格式
  • cluster_size
    • 设置镜像中的簇大小,取值在5122M之间,默认值位64k
  • preallocation
    • 设置镜像文件空间的预分配模式
  • encryption
    • 用于设置加密

1.3 命令演示

  • 创建一个虚拟大小为50M,实际大小为50Mraw类型的磁盘文件
[root@idys1 /vm] dd if=/dev/zero of=./disk-test.raw bs=1024k count=50    
记录了50+0 的读入
记录了50+0 的写出
52428800字节(52 MB)已复制,0.0558294 秒,939 MB/秒
[root@idys1 /vm] qemu-img info disk-test.raw 
image: disk-test.raw
file format: raw
virtual size: 50M (52428800 bytes)
disk size: 50M

  • 创建一个虚拟大小为50M,实际大小为0Mraw类型的磁盘文件
[root@idys1 /vm] ls -lh disk-second.raw 
-rw-r--r-- 1 root root 50M 10月 24 05:12 disk-second.raw
[root@idys1 /vm] du -sh disk-second.raw 
0       disk-second.raw
[root@idys1 /vm] qemu-img info disk-second.raw 
image: disk-second.raw
file format: raw
virtual size: 50M (52428800 bytes)
disk size: 0
  • 把标准文件,实际占用50M的文件,复制为稀疏文件
[root@idys1 /vm] cp disk-test.raw disk-testa.raw  --sparse=always
[root@idys1 /vm] du -sh disk-*
0       disk-second.raw
0       disk-testa.raw
50M     disk-test.raw
  • 把稀疏文件复制为标准文件
[root@idys1 /vm] cp disk-second.raw disk-seconda.raw  --sparse=never
[root@idys1 /vm] du -sh disk-*
50M     disk-seconda.raw
0       disk-second.raw
0       disk-testa.raw
50M     disk-test.raw
  • 检查磁盘文件是否发生错误
[root@idys1 /vm] qemu-img check centos6-disk0.qcow2 
No errors were found on the image.
131072/131072 = 100.00% allocated, 0.00% fragmented, 0.00% compressed clusters
Image end offset: 8591507456

1.4 预分配策略

  • off
    • 缺省策略,即不使用预分配策略
  • metadata
    • 分配元数据(metadata),预分配后的虚拟磁盘仍然属于稀疏映像类型
  • full
    • 分配所有磁盘空间并置零,预分配后的虚拟磁盘属于非稀疏映像类型
  • falloc
    • 分配文件的块并标示它们的状态为初始化,相对于full模式来说,创建虚拟磁盘的速度要快很多

  • 创建磁盘文件时,不指定分配策略的话。默认分配策略就是off

  • 创建磁盘文件,分配策略为off

[root@idys1 /vm] qemu-img create -f qcow2 testa.img 50M -o preallocation=off
Formatting 'testa.img', fmt=qcow2 size=52428800 encryption=off cluster_size=65536 preallocation='off' lazy_refcounts=off 
[root@idys1 /vm] du -sh testa.img 
196K    testa.img
  • 创建磁盘文件,分配策略为metadata
[root@idys1 /vm] qemu-img create -f qcow2 testb.img 50M -o preallocation=metadata 
Formatting 'testb.img', fmt=qcow2 size=52428800 encryption=off cluster_size=65536 preallocation='metadata' lazy_refcounts=off 
[root@idys1 /vm] du -sh test*
196K    testa.img
264K    testb.img

可以看到,metadata创建时文件大小比off文件大一点

  • 创建磁盘文件,分配策略为falloc
[root@idys1 /vm] qemu-img create -f qcow2 testc.img 50M -o preallocation=falloc
Formatting 'testc.img', fmt=qcow2 size=52428800 encryption=off cluster_size=65536 preallocation='falloc' lazy_refcounts=off 
[root@idys1 /vm] du -sh test*
196K    testa.img
264K    testb.img
51M     testc.img
  • 创建磁盘文件,分配策略为full
[root@idys1 /vm] qemu-img create -f qcow2 testd.img 50M -o preallocation=full
Formatting 'testd.img', fmt=qcow2 size=52428800 encryption=off cluster_size=65536 preallocation='full' lazy_refcounts=off 
[root@idys1 /vm] du -sh test*
196K    testa.img
264K    testb.img
51M     testc.img
51M     testd.img
  • 使用ls -lh去查看文件大小
[root@idys1 /vm]  ls -lh test*
-rw-r--r-- 1 root root 193K 10月 24 06:09 testa.img
-rw-r--r-- 1 root root  51M 10月 24 06:09 testb.img
-rw-r--r-- 1 root root  51M 10月 24 06:10 testc.img
-rw-r--r-- 1 root root  51M 10月 24 06:10 testd.img

1.5 后备差异虚拟磁盘

  • 存储与基础镜像(父)磁盘的变化
    • 基础镜像(父)磁盘不会改变
    • 差异磁盘隔离变化
    • 多个差异磁盘可以使用相同的基础镜像(父)磁盘
  • 优点:标准化基础镜像,节省空间
  • 缺点:增加了开销,较差的性能

在这里插入图片描述


1.6 backing_file

  • 图解

在这里插入图片描述

  • 创建基础镜像
qemu-img create -f qcow2 -o backing_file=Base_CentOS7-1151-disk0.qcow2 oa-disk0-with-b.qcow2
  • 创建基于虚拟机的基础镜像
virt-install --import --name=oa --vcpus=1 --ram=1024 --disk path=/vm/oa-disk0-with-b.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=rhel6

1.7 back_file 实验演示

  • 复制出一个后备文件
[root@idys1 /vm] cp centos6-disk0.qcow2 base-centos6-disk0.qcow2 
  • 查看名为centos6.10的虚拟机所使用的磁盘镜像
[root@idys1 /vm] cat /etc/libvirt/qemu/centos6.10.xml | grep source\ file
      <source file='/vm/centos6-disk0.qcow2'/>
  • 创建基于后备文件base-centos6-disk0.qcow2的链接文件oa-disk0.qcow2
[root@idys1 /vm] qemu-img create -f qcow2 -o backing_file=base-centos6-disk0.qcow2 oa-disk0.qcow2
Formatting 'oa-disk0.qcow2', fmt=qcow2 size=8589934592 backing_file='base-centos6-disk0.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
  • 查看磁盘文件信息
[root@idys1 /vm] qemu-img info oa-disk0.qcow2 
image: oa-disk0.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: base-centos6-disk0.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
  • 再次创建一个基于base-centos6-disk0.qcow2的链接磁盘文件erp-disk0.qcow2,并且查看其信息
[root@idys1 /vm] qemu-img create -f qcow2 -o backing_file=base-centos6-disk0.qcow2 erp-disk0.qcow2
Formatting 'erp-disk0.qcow2', fmt=qcow2 size=8589934592 backing_file='base-centos6-disk0.qcow2' encryption=off cluster_size=65536 lazy_refcounts=off 
[root@idys1 /vm] qemu-img info erp-disk0.qcow2 
image: erp-disk0.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 196K
cluster_size: 65536
backing file: base-centos6-disk0.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false
  • ls -lh查看一下
[root@idys1 /vm] ls -lh
总用量 3.9G
drwxr-xr-x 2 root root 4.0K 10月 25 16:37 back_img
-rw------- 1 root root 8.1G 10月 25 17:18 base-centos6-disk0.qcow2
-rw------- 1 root root 8.1G 10月 22 00:37 centos6-disk0.qcow2
-rw-r--r-- 1 root root 1.5G 10月 23 18:15 CentOS-disk1.qcow2
-rw-r--r-- 1 root root 193K 10月 25 17:32 erp-disk0.qcow2
drwx------ 2 root root  16K 10月 21 17:01 lost+found
-rw-r--r-- 1 root root 193K 10月 25 17:24 oa-disk0.qcow2
-rw-r--r-- 1 root root 193K 10月 23 18:22 win32-disk2
  • 创建基于磁盘链接克隆的虚拟机
virt-install --import --name=oa --vcpus=1 --ram=512 --disk path=/vm/oa-disk0.qcow2 --network network=default \
> --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=rhel6
  • 直接创建出来

在这里插入图片描述

  • 再创建一个erp链接克隆
virt-install --import --name=erp --vcpus=1 --ram=512 --disk path=/vm/erp-disk0.qcow2 --network network=default --graphics vnc,listen=0.0.0.0 --os-type=linux --os-variant=rhel6
  • 立马就创建好了

在这里插入图片描述

  • 查看正在运行的域
[root@idys1 /vm] virsh list 
 Id    名称                         状态
----------------------------------------------------
 1     oa                             running
 2     erp                            running

[root@idys1 /vm] virsh shutdown 1
域 1 被关闭

[root@idys1 /vm] virsh shutdown 2
域 2 被关闭
  • 关闭域的运行
[root@idys1 /vm] virsh shutdown 1
域 1 被关闭

[root@idys1 /vm] virsh shutdown 2
域 2 被关闭
[root@idys1 /vm] virsh list  # 可以看到所有的域已经关闭
 Id    名称                         状态
----------------------------------------------------
  • 将后备文件移入到其他目录下
[root@idys1 /vm] mv base-centos6-disk0.qcow2 back_img/
  • 将基于后备文件base-centos6-disk0.qcow2而创建链接克隆的虚拟机oa打开
[root@idys1 /vm] virsh start oa
错误:开始域 oa 失败
错误:Cannot access backing file '/vm/base-centos6-disk0.qcow2' of storage file '/vm/oa-disk0.qcow2' (as uid:107, gid:107): 没有那个文件或目录

可以看到虚拟机无法打开,因为找不到后备文件的原因

  • 把后备文件移入到/vm/目录下,然后再次启动虚拟机
[root@idys1 /vm] mv back_img/base-centos6-disk0.qcow2 ./
[root@idys1 /vm] virsh start oa                         
域 oa 已开始

此时可以看到虚拟机成功启动

1.8 虚拟磁盘格式转换

  • convert选项用法格式
convert [-c] [-p] [-q] [-n] [-f fmt] [-t cache] [-T src_cache] [-O output_fmt] [-o options] [-s snapshot_name] [-S sparse_size] filename [filename2 [...]] output_filename
  • 命令举例
qemu-img convert my-vmware.vmdk my-kvm.img
qemu-img convert -O qcow2 rhel6u3.img rhel6u3-a.img
  • 安装参数举例
virt-install
--import --name=FALC_NSS_8 --vcpus=2 --ram=4096
--disk bus=scsi,path=/vm/falc/FS6U5-NSSVA-800NK-disk1.qcow2 \
--disk bus=scsi,path=/vm/falc/FS6U5-NSSVA-800NK-disk1.qcow2 \
--network type=bridge,source=br0 \
--network type=bridge,source=br0 \
--network type=bridge,source=br0 \
--network type=bridge,source=br0 \
--graphics vnc,listen=0.0.0.0 \
--os-type=linux \
--os-variant=rhel6
--noautoconsole

2cpu

4GB内存

四个virtio网卡

将二个转换过来的磁盘,配置为scsi接口

vnc显卡

OS类型为RHEL6

--noautoconsole只导入,不启动

1.9 调整虚拟磁盘大小

  • 语法格式
resize filename [ + | -]size
  • 操作之前,一定要做好数据备份

  • 增加文件大小后,需要在客户机中使用fdiskparted等分区工具进行相应的操作才能真正让客户机使用到增加后的镜像空间。

  • 缩小镜像之前,要在客户机中保证里面的文件系统有空余空间,否则会数据丢失

  • qcow2不支持缩小镜像的操作

  • 命令演示

qemu-img resize crm-disk0-with-b.qcow2 +2G
  • 给某块链接磁盘加上10G
[root@idys1 /vm] qemu-img resize oa-disk0.qcow2 +10G
  • 查看这块磁盘的信息
[root@idys1 /vm] qemu-img info oa-disk0.qcow2 
image: oa-disk0.qcow2
file format: qcow2
virtual size: 18G (19327352832 bytes)
disk size: 102M
cluster_size: 65536
backing file: base-centos6-disk0.qcow2
Format specific information:
    compat: 1.1
    lazy refcounts: false

1.10 快照管理 Snapshot / Checkpoint

  • 磁盘快照
    • 对磁盘数据进行快照
    • 主要用于虚拟机备份等场合
  • 内存快照
    • 对虚拟机的内存/设备信息进行保存
    • 该机制同时用于休眠恢复,迁移等场景
    • 主要使用virsh save(qemu migrate to file)实现,只能对运行的虚拟机进行
  • 检查点快照
    • 同时保存虚拟机的磁盘快照和内存快照
    • 用于将虚拟机恢复到某个时间点
    • 可以保证数据的一致性

1.11 磁盘快照分类

  • 按快照信息保存为:
    • 内置快照:快照数据和base磁盘数据放在一个qcow2文件中
    • 外置快照:快照数据单独的qcow2文件存放
  • 按虚拟机状态可以分为:
    • 关机态快照:数据可以保证一致性
    • 运行快照:数据无法保证一致性,类似于系统crash后的磁盘数据。使用是可能需要fsck等操作
  • 按磁盘数量可以分为:
    • 单盘:单盘快照不涉及原子性
    • 多盘:涉及原子性。主要分为两个方面:
  1. 是所有盘快照点相同
  2. 所有盘要么都快照成功,要么都快照失败。主要依赖于qemutransaction实现

1.11 qemu-img 的快照管理

  • 语法格式
snapshot [-q] [-l | -a snapshot | -c snapshot | -d snapshot] filename
  • qemu-img
snapshot
is the name of the snapshot to create, apply or delete

-a  applies a snapshot (revert disk to saved state)

-c  creates a snapshot

-d  deletes a snapshot

-l  lists all snapshots in the given image
  • 列举出创建的虚拟机列表信息
[root@idys1 /vm] virsh list --all
 Id    名称                         状态
----------------------------------------------------
 -     CentOS6-32-virt-kickstart-test 关闭
 -     centos6.10                     关闭
 -     erp                            关闭
 -     oa                             关闭
 -     win2k3a                        关闭
  • 查看centos6.10对应的硬盘信息
[root@idys1 /vm] virsh domblklist  centos6.10
目标     源
------------------------------------------------
vda        /vm/centos6-disk0.qcow2
hda        -
  • 开启centos6.10虚拟机
[root@idys1 /vm] virsh start centos6.10
域 centos6.10 已开始
  • virt-manager图形界面连接到虚拟机

在这里插入图片描述

  • 在虚拟机的/tmp目录下创建目录和文件
mkdir /tmp/dir{1..4}/file{1..10}
  • 查看tmp下的目录结构
[root@localhost tmp] tree /tmp/ | head -15
/tmp/
├── dir1
│   ├── file1
│   ├── file10
│   ├── file2
│   ├── file3
│   ├── file4
│   ├── file5
│   ├── file6
│   ├── file7
│   ├── file8
│   └── file9
├── dir2
│   ├── file1
│   ├── file10
  • 关闭虚拟机
[root@idys1 /vm] virsh shutdown centos6.10
域 centos6.10 被关闭
  • 查看虚拟机对应的磁盘信息
[root@idys1 /vm] virsh domblklist centos6.10
目标     源
------------------------------------------------
vda        /vm/centos6-disk0.qcow2
hda        -
  • 查看磁盘对应的快照信息
[root@idys1 /vm] qemu-img snapshot -l centos6-disk0.qcow2 

可以发现没有快照

  • 创建磁盘快照
[root@idys1 /vm] qemu-img snapshot -c snap-cent6.10-1 /vm/centos6-disk0.qcow2 

快照名称为snap-cent6.10-1

  • 查看快照信息
[root@idys1 /vm] qemu-img snapshot -l centos6-disk0.qcow2                     
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap-cent6.10-1           0 2020-10-27 00:41:18   00:00:00.000
  • qemu-img也可以查看快照信息
[root@idys1 /vm] qemu-img info centos6-disk0.qcow2 
image: centos6-disk0.qcow2
file format: qcow2
virtual size: 8.0G (8589934592 bytes)
disk size: 1.2G
cluster_size: 65536
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap-cent6.10-1           0 2020-10-27 00:41:18   00:00:00.000
Format specific information:
    compat: 1.1
    lazy refcounts: true
  • 查看磁盘对应的虚拟机的快照信息
[root@idys1 /vm]  virsh snapshot-list centos6.10
 名称               生成时间              状态
------------------------------------------------------------

可以看到虽然磁盘做了快照,但是查看磁盘对应的虚拟机的快照信息是为空的

  • 再次开启虚拟机
[root@idys1 /vm] virsh start centos6.10
域 centos6.10 已开始
  • 删除掉之前创建的目录和文件
cd /tmp
rm -rf ./dir*
  • 关闭虚拟机
[root@idys1 /vm] virsh shutdown centos6.10
域 centos6.10 被关闭
  • 磁盘回滚,直接回滚到某个快照点下
[root@idys1 /vm] qemu-img snapshot -l centos6-disk0.qcow2 
Snapshot list:
ID        TAG                 VM SIZE                DATE       VM CLOCK
1         snap-cent6.10-1           0 2020-10-27 00:41:18   00:00:00.000
[root@idys1 /vm] qemu-img snapshot -a snap-cent6.10-1 centos6-disk0.qcow2

此时已经回滚到snap-cent6.10-1这个tags

  • 再次启动虚拟机
[root@idys1 /vm] virsh start centos6.10
域 centos6.10 已开始
  • 此时再次查看/tmp目录下的文件信息,发现之前的文件又回来了
[root@idys1 /vm] ssh root@192.168.122.194 tree /tmp | head -20
root@192.168.122.194's password: 
/tmp
├── dir1
│   ├── file1
│   ├── file10
│   ├── file2
│   ├── file3
│   ├── file4
│   ├── file5
│   ├── file6
│   ├── file7
│   ├── file8
│   └── file9
├── dir2
│   ├── file1
│   ├── file10
│   ├── file2
│   ├── file3
│   ├── file4
│   ├── file5
│   ├── file6

02. 存储池

2.1 存储池的基本概念

  • Libvirt可以以存储池的形式对存储进行统一管理、简化操作

  • 对于虚拟机操作来说,存储池和卷并不是必需的

  • 支持以下存储池

    • dir: Filesystem Directory
    • diskPhysical Disk Device
    • fs: Pre-Formatted Block Device
    • gluster: Gluster FileSystem
    • iscsi: iSCSI Target
    • logical: LVM Volume Group
    • mpath: Multipath Device Enumerator
    • netfs: Network Export Directory
    • rbd: RADOS Block Device/Ceph
    • scsi: SCSI Host Adapter
    • sheepdog: Sheepdog FileSystem
  • 存储池的配置文件

[root@idys1 /vm] ls /etc/libvirt/storage/
autostart  default.xml  iso.xml  virtio_dir.xml  vm.xml
  • 查看某个存储池对应的配置文件
[root@idys1 /vm] cat /etc/libvirt/storage/iso.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit iso
or other application using the libvirt API.
-->

<pool type='dir'>
  <name>iso</name>
  <uuid>4dc4371a-754b-418c-9ae6-539ee3e09845</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
  </source>
  <target>
    <path>/iso</path>
  </target>
</pool>
  • 查看autostart这个目录底下的文件
[root@idys1 /vm] ls -l /etc/libvirt/storage/autostart/
总用量 0
lrwxrwxrwx 1 root root 32 10月 21 04:03 default.xml -> /etc/libvirt/storage/default.xml
lrwxrwxrwx 1 root root 28 10月 21 19:07 iso.xml -> /etc/libvirt/storage/iso.xml
lrwxrwxrwx 1 root root 35 10月 23 18:28 virtio_dir.xml -> /etc/libvirt/storage/virtio_dir.xml
lrwxrwxrwx 1 root root 27 10月 22 00:10 vm.xml -> /etc/libvirt/storage/vm.xml

这个目录下的链接文件都是随libvirt的启动而启动的

  • virsh中存储池相关命令
 Storage Pool (help keyword 'pool')
    find-storage-pool-sources-as   找到潜在存储池源
    find-storage-pool-sources      发现潜在存储池源
    pool-autostart                 自动启动某个池
    pool-build                     建立池
    pool-create-as                 从一组变量中创建一个池
    pool-create                    从一个 XML 文件中创建一个池
    pool-define-as                 在一组变量中定义池
    pool-define                    define an inactive persistent storage pool or modify an existing persistent one from an XML file
    pool-delete                    删除池
    pool-destroy                   销毁(删除)池
    pool-dumpxml                   XML 中的池信息
    pool-edit                      为存储池编辑 XML 配置
    pool-info                      存储池信息
    pool-list                      列出池
    pool-name                      将池 UUID 转换为池名称
    pool-refresh                   刷新池
    pool-start                     启动一个(以前定义的)非活跃的池
    pool-undefine                  取消定义一个不活跃的池
    pool-uuid                      把一个池名称转换为池 UUID
    pool-event                     Storage Pool Events
  • 编辑存储池
[root@idys1 /vm] virsh pool-edit iso
  • 列举出所有的储存池
[root@idys1 /vm] virsh pool-list
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是  
  • 查看存储池的信息
[root@idys1 /vm] virsh pool-info default 
名称:       default
UUID:           2c143706-2402-4f0b-a78b-ee475a69a73a
状态:       running
持久:       是
自动启动: 是
容量:       47.46 GiB
分配:       20.77 GiB
可用:       26.69 GiB

[root@idys1 /vm] virsh pool-info vm
名称:       vm
UUID:           1693104e-8164-4151-b9a6-602a5d5f848c
状态:       running
持久:       是
自动启动: 是
容量:       78.62 GiB
分配:       4.41 GiB
可用:       74.21 GiB
  • 查看pool-autostart这个命令的帮助信息
[root@idys1 /vm] virsh pool-autostart --help
  NAME
    pool-autostart - 自动启动某个池

  SYNOPSIS
    pool-autostart <pool> [--disable]

  DESCRIPTION
    将某个池设置为在引导时自动启动。

  OPTIONS
    [--pool] <string>  池名或 uuid
    --disable        禁止自动启动

2.2 virsh中的存储卷相关命令

  • 存储卷相关命令
[root@idys1 /] virsh help volume
 Storage Volume (help keyword 'volume'):
    vol-clone                      克隆卷。
    vol-create-as                  从一组变量中创建卷
    vol-create                     从一个 XML 文件创建一个卷
    vol-create-from                生成卷,使用另一个卷作为输入。
    vol-delete                     删除卷
    vol-download                   将卷内容下载到文件中
    vol-dumpxml                    XML 中的卷信息
    vol-info                       存储卷信息
    vol-key                        为给定密钥或者路径返回卷密钥
    vol-list                       列出卷
    vol-name                       为给定密钥或者路径返回卷名
    vol-path                       为给定密钥或者路径返回卷路径
    vol-pool                       为给定密钥或者路径返回存储池
    vol-resize                     创新定义卷大小
    vol-upload                     将文件内容上传到卷中
    vol-wipe                       擦除卷

2.3 基于目录的存储池

  • 准备目录:设置目录权限
chown root:root /guest_images/
chmod 700 /guest_images
  • 通过virt-manager创建

  • 通过virsh创建

virsh pool-define-as guest_images dir --target "/guest_images"

  • 演示
  • 创建一个目录
[root@idys1 /] mkdir /guest_images
  • 设置目录权限
[root@idys1 /] chown root:root /guest_images
[root@idys1 /] chmod 700 /guest_images
  • 通过virt-manage创建存储池
[root@idys1 /] virt-manager 
  • 点击编辑

在这里插入图片描述

  • 连接详情

在这里插入图片描述

  • 存储

在这里插入图片描述

  • 点击左下角的+按钮

在这里插入图片描述

  • 输出名称后,点击前进

在这里插入图片描述

  • 目标路径选择之前创建的目录

在这里插入图片描述

  • 列出所有存储池
[root@idys1 /] virsh pool-list
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_dir     活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是   
  • 查看某个存储池的详细信息
[root@idys1 /] virsh pool-info guest_images_dir
名称:       guest_images_dir
UUID:           c91c62a3-5a41-4f56-93ba-cb88b42c31ed
状态:       running
持久:       是
自动启动: 是
容量:       47.46 GiB
分配:       20.77 GiB
可用:       26.69 GiB
  • 查看存储池配置文件
[root@idys1 /] cat /etc/libvirt/storage/guest_images_dir.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit guest_images_dir
or other application using the libvirt API.
-->

<pool type='dir'>
  <name>guest_images_dir</name>
  <uuid>c91c62a3-5a41-4f56-93ba-cb88b42c31ed</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>
  • 先停止存储池,然后删除存储池

在这里插入图片描述

  • virsh创建一个dir类型的存储池,目前目录为一个不存在的目录
[root@idys1 ~] virsh pool-list --all  # 先查看存储池
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是   
[root@idys1 ~] virsh pool-define-as guest_images dir --target "/guest_images2" # 创建一个存储池,它的目标路径
定义池 guest_images
  • 查看存储池状态
[root@idys1 ~] virsh pool-list --all | column -t
名称                                         状态    自动开始
-------------------------------------------
default                                      活动    是
guest_images                                 不活跃  否
iso                                          活动    是
virtio_dir                                   活动    是
vm                                           活动    是
[root@idys1 ~] 
  • 查看具体某个存储池的详细信息
[root@idys1 ~] virsh pool-info guest_images 
名称:       guest_images
UUID:           150f972f-59e2-480f-ae1f-fe019b80cce8
状态:       不活跃
持久:       是
自动启动: 否
  • 查看存储池的配置文件
[root@idys1 ~] cat /etc/libvirt/storage/guest_images.xml   
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit guest_images
or other application using the libvirt API.
-->

<pool type='dir'>
  <name>guest_images</name>
  <uuid>150f972f-59e2-480f-ae1f-fe019b80cce8</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
  </source>
  <target>
    <path>/guest_images2</path>
  </target>
</pool>
  • 启动存储池:因为存储池对应的文件夹不存在,所有启动失败
[root@idys1 ~] virsh pool-start guest_images
错误:启动池 guest_images 失败
错误:cannot open directory '/guest_images2': 没有那个文件或目录
  • 构造存储池
[root@idys1 ~] virsh pool-build guest_images
构建池 guest_images
  • 因为前面,存储池构造了,那么我们现在来查看存储池的目录是否存在
[root@idys1 ~] ls /gue*  # 可以发现 pool-bulid 之后,目录生成了
/guest_images:

/guest_images2:
  • 启动存储池,然后再来查看存储池的状态
[root@idys1 ~] virsh pool-start guest_images  # 启动存储池
池 guest_images 已启动

[root@idys1 ~] virsh pool-list   # 查看存储池
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images         活动     否       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是 
  • 将存储池设置为自启动
[root@idys1 ~] virsh pool-autostart guest_images
池 guest_images 标记为自动启动

[root@idys1 ~] virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images         活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是   
  • 终止存储池的运行
[root@idys1 ~] virsh pool-destroy guest_images
销毁池 guest_images

[root@idys1 ~] ls /guest_images*  # 查看目录
/guest_images:

/guest_images2:
[root@idys1 ~] virsh pool-list --all | column -t  # 查看存储池状态
名称                                         状态    自动开始
-------------------------------------------
default                                      活动    是
guest_images                                 不活跃  是
iso                                          活动    是
virtio_dir                                   活动    是
vm                                           活动    是
  • 删除存储池
[root@idys1 ~] virsh pool-delete guest_images
池 guest_images 被删除
  • 查看目录,存储池配置文件是否存在
[root@idys1 ~] ls -d /gue*  # 目录以及消失
/guest_images
[root@idys1 ~] virsh pool-list --all  # 但是内容信息还在
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images         不活跃  是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是 
[root@idys1 ~] ls /etc/libvirt/storage/guest_images.xml  # 存储池配置文件也在
/etc/libvirt/storage/guest_images.xml
  • 彻底删除存储池
[root@idys1 ~] virsh pool-undefine guest_images 
池 guest_images 已经被取消定义

[root@idys1 ~] virsh pool-list --all  # 以及没有关于guest_images 的信息了
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 ~] ls /etc/libvirt/storage/  # 配置文件也已经消失了
autostart  default.xml  iso.xml  virtio_dir.xml  vm.xml
[root@idys1 ~] ls -d /gue*
/guest_images

2.4 基于分区的存储池:fs

  • libvirtd会自动mount分区
  • 准备分区并创建文件系统
fdisk /dev/sdc
mkfs.ext4 /dev/sdc1
  • 创建
  • Source Path:块设备名
  • Target Pathmount到的目录名
virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdc1" --target "/guest_images2"
  • vm里面添加一块硬盘:虚拟机处于运行状态,直接插入硬盘
[root@idys1 ~] for i in {0..2};do echo "- - -" >> /sys/class/scsi_host/host$i/scan;done
# 重新扫描系统总线
[root@idys1 ~] fdisk -l  # 可以看到插入的硬盘以及被检测
磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
  • 为硬盘分区,为其分40G容量
[root@idys1 ~] fdisk /dev/sdd 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0x74008775 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):1
起始 扇区 (2048-167772159,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-167772159,默认为 167772159):+40G     
分区 1 已设置为 Linux 类型,大小设为 40 GiB

命令(输入 m 获取帮助):p  

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74008775

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    83888127    41943040   83  Linux

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 查看分区信息是否写入
[root@idys1 ~] fdisk -l /dev/sdd

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74008775

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdd1            2048    83888127    41943040   83  Linux
  • 将分区格式化文件系统
[root@idys1 ~] mkfs.ext4 /dev/sdd1 
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
2621440 inodes, 10485760 blocks
524288 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2157969408
320 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208, 
        4096000, 7962624

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成  
  • 删除某个目录
[root@idys1 ~] ls -d /guest_image*
/guest_images
[root@idys1 ~] ls /guest_images/
[root@idys1 ~] rm -rf /guest_images/
  • virt-manager创建基于分区的存储池
  1. 第一步

在这里插入图片描述

  1. 第二步

在这里插入图片描述

  1. 第三步

在这里插入图片描述

  • 查看创建的信息
[root@idys1 ~]  virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_fs      活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是 
[root@idys1 ~] virsh pool-info guest_images_fs
名称:       guest_images_fs
UUID:           2a0c9588-e3bd-4d8d-b5af-59776de735c2
状态:       running
持久:       是
自动启动: 是
容量:       39.25 GiB
分配:       48.02 MiB
可用:       39.20 GiB
  • 查看新存储池的xml文档
[root@idys1 ~] cat /etc/libvirt/storage/guest_images_fs.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit guest_images_fs
or other application using the libvirt API.
-->

<pool type='fs'>
  <name>guest_images_fs</name>
  <uuid>2a0c9588-e3bd-4d8d-b5af-59776de735c2</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
    <device path='/dev/sdd1'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>
  • 查看文件夹是否存在和mount点是否挂载
[root@idys1 ~] mount | grep /dev/sdd1
/dev/sdd1 on /guest_images type ext4 (rw,nosuid,nodev,noexec,relatime,data=ordered)
  • libvirt服务停止掉,查看是否mount点的挂载会断开
[root@idys1 ~] systemctl stop libvirtd.service 
[root@idys1 ~] ls /guest_images/  # 可以看到 mount 点仍然可以可以访问,没有断开
lost+found
[root@idys1 ~] umount /guest_images  # 手动断开挂载点
[root@idys1 ~] ls /guest_images/  # 此时 /dev/sdd1 的内容已经无法访问
[root@idys1 ~] 
  • 启动libvirt服务
[root@idys1 ~] systemctl restart libvirtd.service
[root@idys1 ~] ls /guest_images/  # 可以发现 libvirt 又被自动挂载上去了
lost+found
  • virt-manager关闭、删除这个存储池

在这里插入图片描述

  • 再来查看这个存储池是否存在
[root@idys1 /] virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是  
  • virsh创建基于分区的存储池,目标文件夹为不存在的文件夹
[root@idys1 /] virsh pool-define-as guest_images_fs fs --source-dev "/dev/sdd1" --target "/guest_images2"
定义池 guest_images_fs
  • 查看存储池信息
[root@idys1 /] virsh pool-list --all | column -t
名称                                         状态    自动开始
-------------------------------------------
default                                      活动    是
guest_images_fs                              不活跃  否
iso                                          活动    是
virtio_dir                                   活动    是
vm                                           活动    是
  • 启动存储池
[root@idys1 /]  virsh pool-start guest_images_fs
错误:启动池 guest_images_fs 失败
错误:内部错误:子进程(/usr/bin/mount -t auto /dev/sdd1 /guest_images2 -o nodev,nosuid,noexec)意外 退出状态 32: mount: 挂载点 /guest_images2 不存在

因为目标文件夹不存在,所以报错

  • 构建存储池
[root@idys1 /] virsh pool-build guest_images_fs 
构建池 guest_images_fs
  • 再来启动查看存储池
[root@idys1 /] virsh pool-build guest_images_fs 
构建池 guest_images_fs

[root@idys1 /] ls -d /guest_images*   # 构建存储池之后,目录是存在的
/guest_images  /guest_images2

[root@idys1 /] virsh pool-start guest_images_fs 
池 guest_images_fs 已启动

[root@idys1 /] virsh pool-info guest_images_fs 
名称:       guest_images_fs
UUID:           73368013-781d-41f2-a581-46af051ea099
状态:       running
持久:       是
自动启动: 否
容量:       39.25 GiB
分配:       48.02 MiB
可用:       39.20 GiB
  • 设置存储池的自动启动
[root@idys1 /] virsh pool-autostart guest_images_fs 
池 guest_images_fs 标记为自动启动
  • 命令行删除存储池
[root@idys1 /] virsh pool-destroy guest_images_fs 
销毁池 guest_images_fs

[root@idys1 /] virsh pool-delete guest_images_fs 
池 guest_images_fs 被删除

[root@idys1 /] virsh pool-undefine guest_images_fs 
池 guest_images_fs 已经被取消定义

2.5 基于磁盘的存储池

  • 准备xml文件
vi /tmp/guest_images_disk.xml
<pool type='disk'>
  <name>guest_images_disk</name>
  <source>
  	<device path='/dev/sdc'>
  	<format type='gpt'>
  </source>
  <target>
    <path>/dev</path>
  </target>
</pool>
  • 通过virsh创建
virsh pool-define /tmp/guest_images_disk.xml
  • 删除之前创建的分区
[root@idys1 /] fdisk /dev/sdd 
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74008775

   设备 Boot      Start         End      Blocks   Id  System

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@idys1 /] partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

[root@idys1 /] fdisk -l /dev/sdd

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x74008775

   设备 Boot      Start         End      Blocks   Id  System
  • 修改/dev/sdd的磁盘类型为gpt
[root@idys1 /]  parted /dev/sdd 
GNU Parted 3.1
使用 /dev/sdd
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel             
新的磁盘标签类型? gpt                
警告: The existing disk label on /dev/sdd will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes  
(parted) quit              
信息: You may need to update /etc/fstab.
[root@idys1 /] fdisk -l /dev/sdd                                          
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
  • 定义xml文件
[root@idys1 /tmp] cat guest_images.xml 
<pool type='disk'>
  <name>guest_images_disk</name>
  <source>
        <device path='/dev/sdd'/>
        <format type='gpt'/>
  </source>
  <target>
    <path>/guest_images</path>
  </target>
</pool>
  • 基于xml文件定义存储池
[root@idys1 /tmp] virsh pool-define guest_images.xml 
在 guest_images_disk 中定义池 guest_images.xml
  • 查看所有存储池
[root@idys1 /tmp] virsh pool-list  --all # 发现存储池定义成功
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_disk    不活跃  否       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是  
  • 启动存储池,同时设置为自启动
[root@idys1 /tmp] virsh pool-start guest_images_disk
池 guest_images_disk 已启动

[root@idys1 /tmp] virsh pool-autostart guest_images_disk
池 guest_images_disk 标记为自动启动
[root@idys1 /tmp] virsh pool-info guest_images_disk
名称:       guest_images_disk
UUID:           3868dc6e-db23-48f5-8e2c-ea447a871460
状态:       running
持久:       是
自动启动: 是
容量:       80.00 GiB
分配:       0.00 B
可用:       80.00 GiB
  • 删除存储池
[root@idys1 /tmp] virsh pool-destroy guest_images_disk 
销毁池 guest_images_disk
[root@idys1 /tmp] virsh pool-undefine guest_images_disk       
池 guest_images_disk 已经被取消定义

2.6 基于 LVM的存储池

  • 划分分区,类型为lvm
[root@idys1 /tmp] fdisk  /dev/sdd  
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
分区号 (1-128,默认 1):
第一个扇区 (34-167772126,默认 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-167772126,默认 167772126):+30G
已创建分区 1


命令(输入 m 获取帮助):P

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
 1         2048     62916607     30G  Linux filesyste 

命令(输入 m 获取帮助):t
已选择分区 1
分区类型(输入 L 列出所有类型):l
  1 EFI System                     C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  2 MBR partition scheme           024DEE41-33E7-11D3-9D69-0008C781F39F
  3 Intel Fast Flash               D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
  4 BIOS boot                      21686148-6449-6E6F-744E-656564454649
  5 Sony boot partition            F4019732-066E-4E12-8273-346C5641494F
  6 Lenovo boot partition          BFBFAFE7-A34F-448A-9A5B-6213EB736C22
  7 PowerPC PReP boot              9E1A2D38-C612-4316-AA26-8B49521E5A8B
  8 ONIE boot                      7412F7D5-A156-4B13-81DC-867174929325
  9 ONIE config                    D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
 10 Microsoft reserved             E3C9E316-0B5C-4DB8-817D-F92DF00215AE
 11 Microsoft basic data           EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
 12 Microsoft LDM metadata         5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
 13 Microsoft LDM data             AF9B60A0-1431-4F62-BC68-3311714A69AD
 14 Windows recovery environment   DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
 15 IBM General Parallel Fs        37AFFC90-EF7D-4E96-91C3-2D7AE055B174
 16 Microsoft Storage Spaces       E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
 17 HP-UX data                     75894C1E-3AEB-11D3-B7C1-7B03A0000000
 18 HP-UX service                  E2A1E728-32E3-11D6-A682-7B03A0000000
 19 Linux swap                     0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
 20 Linux filesystem               0FC63DAF-8483-4772-8E79-3D69D8477DE4
 21 Linux server data              3B8F8425-20E0-4F3B-907F-1A25A76F98E8
 22 Linux root (x86)               44479540-F297-41B2-9AF7-D131D5F0458A
 23 Linux root (ARM)               69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
 24 Linux root (x86-64)            4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
 25 Linux root (ARM-64)            B921B045-1DF0-41C3-AF44-4C6F280D3FAE
 26 Linux root  (IA-64)             993D8D3D-F80E-4225-855A-9DAF8ED7EA97
 27 Linux reserved                 8DA63339-0007-60C0-C436-083AC8230908
 28 Linux home                     933AC7E1-2EB4-4F13-B844-0E14E2AEF915
 29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
 30 Linux extended boot            BC13C2FF-59E6-4262-A352-B275FD6F7172
 31 Linux LVM                      E6D6D379-F507-44C2-A23C-238F2A3DF928
 32 FreeBSD data                   516E7CB4-6ECF-11D6-8FF8-00022D09712B
 33 FreeBSD boot                   83BD6B9D-7F41-11DC-BE0B-001560B84F0F
 34 FreeBSD swap                   516E7CB5-6ECF-11D6-8FF8-00022D09712B
 35 FreeBSD UFS                    516E7CB6-6ECF-11D6-8FF8-00022D09712B
 36 FreeBSD ZFS                    516E7CBA-6ECF-11D6-8FF8-00022D09712B
 37 FreeBSD Vinum                  516E7CB8-6ECF-11D6-8FF8-00022D09712B
 38 Apple HFS/HFS+                 48465300-0000-11AA-AA11-00306543ECAC
 39 Apple UFS                      55465300-0000-11AA-AA11-00306543ECAC
 40 Apple RAID                     52414944-0000-11AA-AA11-00306543ECAC
 41 Apple RAID offline             52414944-5F4F-11AA-AA11-00306543ECAC
 42 Apple boot                     426F6F74-0000-11AA-AA11-00306543ECAC
 43 Apple label                    4C616265-6C00-11AA-AA11-00306543ECAC
 44 Apple TV recovery              5265636F-7665-11AA-AA11-00306543ECAC
 45 Apple Core storage             53746F72-6167-11AA-AA11-00306543ECAC
 46 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 47 Solaris root                   6A85CF4D-1DD2-11B2-99A6-080020736631
 48 Solaris /usr & Apple ZFS       6A898CC3-1DD2-11B2-99A6-080020736631
 49 Solaris swap                   6A87C46F-1DD2-11B2-99A6-080020736631
 50 Solaris backup                 6A8B642B-1DD2-11B2-99A6-080020736631
 51 Solaris /var                   6A8EF2E9-1DD2-11B2-99A6-080020736631
 52 Solaris /home                  6A90BA39-1DD2-11B2-99A6-080020736631
 53 Solaris alternate sector       6A9283A5-1DD2-11B2-99A6-080020736631
 54 Solaris reserved 1             6A945A3B-1DD2-11B2-99A6-080020736631
 55 Solaris reserved 2             6A9630D1-1DD2-11B2-99A6-080020736631
 56 Solaris reserved 3             6A980767-1DD2-11B2-99A6-080020736631
 57 Solaris reserved 4             6A96237F-1DD2-11B2-99A6-080020736631
 58 Solaris reserved 5             6A8D2AC7-1DD2-11B2-99A6-080020736631
 59 NetBSD swap                    49F48D32-B10E-11DC-B99B-0019D1879648
 60 NetBSD FFS                     49F48D5A-B10E-11DC-B99B-0019D1879648
 61 NetBSD LFS                     49F48D82-B10E-11DC-B99B-0019D1879648
 62 NetBSD concatenated            2DB519C4-B10E-11DC-B99B-0019D1879648
 63 NetBSD encrypted               2DB519EC-B10E-11DC-B99B-0019D1879648
 64 NetBSD RAID                    49F48DAA-B10E-11DC-B99B-0019D1879648
 65 ChromeOS kernel                FE3A2A5D-4F32-41A7-B725-ACCC3285A309
 66 ChromeOS root fs               3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
 67 ChromeOS reserved              2E0A753D-9E48-43B0-8337-B15192CB1B5E
 68 MidnightBSD data               85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7
 69 MidnightBSD boot               85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7
 70 MidnightBSD swap               85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7
 71 MidnightBSD UFS                0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7
 72 MidnightBSD ZFS                85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7
 73 MidnightBSD Vinum              85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7
 74 Ceph Journal                   45B0969E-9B03-4F30-B4C6-B4B80CEFF106
 75 Ceph Encrypted Journal         45B0969E-9B03-4F30-B4C6-5EC00CEFF106
 76 Ceph OSD                       4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
 77 Ceph crypt OSD                 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D
 78 Ceph disk in creation          89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE
 79 Ceph crypt disk in creation    89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE
 80 OpenBSD data                   824CC7A0-36A8-11E3-890A-952519AD3F61
 81 QNX6 file system               CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1
 82 Plan 9 partition               C91818F9-8025-47AF-89D2-F030D7000C2C

分区类型(输入 L 列出所有类型):31
已将分区“Linux filesystem”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):p

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
 1         2048     62916607     30G  Linux LVM       

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 创建PV
[root@idys1 /tmp] pvcreate /dev/sdd1
WARNING: ext4 signature detected on /dev/sdd1 at offset 1080. Wipe it? [y/n]: y
  Wiping ext4 signature on /dev/sdd1.
  Physical volume "/dev/sdd1" successfully created.
  • 查看PV详情
[root@idys1 /tmp] pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos          lvm2 [<50.00 GiB / <20.04 GiB free]
  PV /dev/sdb1   VG vmvg            lvm2 [<80.00 GiB / 0    free]
  PV /dev/sdd1                      lvm2 [30.00 GiB]
  Total: 4 [179.50 GiB] / in use: 3 [149.50 GiB] / in no VG: 1 [30.00 GiB]
[root@idys1 /tmp] pvdisplay /dev/sdd1
  "/dev/sdd1" is a new physical volume of "30.00 GiB"
  --- NEW Physical volume ---
  PV Name               /dev/sdd1
  VG Name               
  PV Size               30.00 GiB
  Allocatable           NO
  PE Size               0   
  Total PE              0
  Free PE               0
  Allocated PE          0
  PV UUID               qpoDjx-xKWj-FcY8-cbXc-dlmd-55Uc-ShlSrI
  • 创建VG
[root@idys1 /tmp] vgcreate guest_images
  No command with matching syntax recognised.  Run 'vgcreate --help' for more information.
  Correct command syntax is:
  vgcreate VG_new PV ...
  • 查看VG
[root@idys1 /tmp] vgscan
  Reading volume groups from cache.
  Found volume group "guest_images_lvm" using metadata type lvm2
  Found volume group "centos" using metadata type lvm2
  Found volume group "vmvg" using metadata type lvm2
[root@idys1 /tmp] vgdisplay guest_images_lvm
  --- Volume group ---
  VG Name               guest_images_lvm
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  1
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <30.00 GiB
  PE Size               4.00 MiB
  Total PE              7679
  Alloc PE / Size       0 / 0   
  Free  PE / Size       7679 / <30.00 GiB
  VG UUID               OOzbjM-chBX-ewwB-8zUT-5cu2-dWAI-331Pks
  • 实验virt-manager创建基于lvm的存储池

在这里插入图片描述

  • 按照图中所示创建,点击完成

在这里插入图片描述

  • 查看储存池
[root@idys1 /tmp] virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_lvm     活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /tmp] virsh pool-info guest_images_lvm
名称:       guest_images_lvm
UUID:           8da1dca2-9c82-49fb-868d-086f25818aea
状态:       running
持久:       是
自动启动: 是
容量:       30.00 GiB
分配:       0.00 B
可用:       30.00 GiB

可以看到创建成功

  • 删除存储池

在这里插入图片描述

  • 查看存储池,可与看到存储池已经不存在了
[root@idys1 /tmp] virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是  
  • 删除vgpv,分区
[root@idys1 /tmp] vgremove guest_images_lvm
  Volume group "guest_images_lvm" successfully removed
[root@idys1 /tmp] pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos          lvm2 [<50.00 GiB / <20.04 GiB free]
  PV /dev/sdb1   VG vmvg            lvm2 [<80.00 GiB / 0    free]
  PV /dev/sdd1                      lvm2 [30.00 GiB]
  Total: 4 [179.50 GiB] / in use: 3 [149.50 GiB] / in no VG: 1 [30.00 GiB]
[root@idys1 /tmp] pvremove /dev/sdd1
  Labels on physical volume "/dev/sdd1" successfully wiped.

[root@idys1 /tmp] fdisk /dev/sdd 
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

  • 既是没有创建分区、pvvg也可以直接构建

  • 首先使用virt-manager构建

  • 首先创建一个LVM分区

[root@idys1 /] fdisk /dev/sdd
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n  
分区号 (1-128,默认 1):
第一个扇区 (34-167772126,默认 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-167772126,默认 167772126):+30G  
已创建分区 1


命令(输入 m 获取帮助):P

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
 1         2048     62916607     30G  Linux filesyste 

命令(输入 m 获取帮助):T
已选择分区 1
分区类型(输入 L 列出所有类型):l
  1 EFI System                     C12A7328-F81F-11D2-BA4B-00A0C93EC93B
  2 MBR partition scheme           024DEE41-33E7-11D3-9D69-0008C781F39F
  3 Intel Fast Flash               D3BFE2DE-3DAF-11DF-BA40-E3A556D89593
  4 BIOS boot                      21686148-6449-6E6F-744E-656564454649
  5 Sony boot partition            F4019732-066E-4E12-8273-346C5641494F
  6 Lenovo boot partition          BFBFAFE7-A34F-448A-9A5B-6213EB736C22
  7 PowerPC PReP boot              9E1A2D38-C612-4316-AA26-8B49521E5A8B
  8 ONIE boot                      7412F7D5-A156-4B13-81DC-867174929325
  9 ONIE config                    D4E6E2CD-4469-46F3-B5CB-1BFF57AFC149
 10 Microsoft reserved             E3C9E316-0B5C-4DB8-817D-F92DF00215AE
 11 Microsoft basic data           EBD0A0A2-B9E5-4433-87C0-68B6B72699C7
 12 Microsoft LDM metadata         5808C8AA-7E8F-42E0-85D2-E1E90434CFB3
 13 Microsoft LDM data             AF9B60A0-1431-4F62-BC68-3311714A69AD
 14 Windows recovery environment   DE94BBA4-06D1-4D40-A16A-BFD50179D6AC
 15 IBM General Parallel Fs        37AFFC90-EF7D-4E96-91C3-2D7AE055B174
 16 Microsoft Storage Spaces       E75CAF8F-F680-4CEE-AFA3-B001E56EFC2D
 17 HP-UX data                     75894C1E-3AEB-11D3-B7C1-7B03A0000000
 18 HP-UX service                  E2A1E728-32E3-11D6-A682-7B03A0000000
 19 Linux swap                     0657FD6D-A4AB-43C4-84E5-0933C84B4F4F
 20 Linux filesystem               0FC63DAF-8483-4772-8E79-3D69D8477DE4
 21 Linux server data              3B8F8425-20E0-4F3B-907F-1A25A76F98E8
 22 Linux root (x86)               44479540-F297-41B2-9AF7-D131D5F0458A
 23 Linux root (ARM)               69DAD710-2CE4-4E3C-B16C-21A1D49ABED3
 24 Linux root (x86-64)            4F68BCE3-E8CD-4DB1-96E7-FBCAF984B709
 25 Linux root (ARM-64)            B921B045-1DF0-41C3-AF44-4C6F280D3FAE
 26 Linux root  (IA-64)             993D8D3D-F80E-4225-855A-9DAF8ED7EA97
 27 Linux reserved                 8DA63339-0007-60C0-C436-083AC8230908
 28 Linux home                     933AC7E1-2EB4-4F13-B844-0E14E2AEF915
 29 Linux RAID                     A19D880F-05FC-4D3B-A006-743F0F84911E
 30 Linux extended boot            BC13C2FF-59E6-4262-A352-B275FD6F7172
 31 Linux LVM                      E6D6D379-F507-44C2-A23C-238F2A3DF928
 32 FreeBSD data                   516E7CB4-6ECF-11D6-8FF8-00022D09712B
 33 FreeBSD boot                   83BD6B9D-7F41-11DC-BE0B-001560B84F0F
 34 FreeBSD swap                   516E7CB5-6ECF-11D6-8FF8-00022D09712B
 35 FreeBSD UFS                    516E7CB6-6ECF-11D6-8FF8-00022D09712B
 36 FreeBSD ZFS                    516E7CBA-6ECF-11D6-8FF8-00022D09712B
 37 FreeBSD Vinum                  516E7CB8-6ECF-11D6-8FF8-00022D09712B
 38 Apple HFS/HFS+                 48465300-0000-11AA-AA11-00306543ECAC
 39 Apple UFS                      55465300-0000-11AA-AA11-00306543ECAC
 40 Apple RAID                     52414944-0000-11AA-AA11-00306543ECAC
 41 Apple RAID offline             52414944-5F4F-11AA-AA11-00306543ECAC
 42 Apple boot                     426F6F74-0000-11AA-AA11-00306543ECAC
 43 Apple label                    4C616265-6C00-11AA-AA11-00306543ECAC
 44 Apple TV recovery              5265636F-7665-11AA-AA11-00306543ECAC
 45 Apple Core storage             53746F72-6167-11AA-AA11-00306543ECAC
 46 Solaris boot                   6A82CB45-1DD2-11B2-99A6-080020736631
 47 Solaris root                   6A85CF4D-1DD2-11B2-99A6-080020736631
 48 Solaris /usr & Apple ZFS       6A898CC3-1DD2-11B2-99A6-080020736631
 49 Solaris swap                   6A87C46F-1DD2-11B2-99A6-080020736631
 50 Solaris backup                 6A8B642B-1DD2-11B2-99A6-080020736631
 51 Solaris /var                   6A8EF2E9-1DD2-11B2-99A6-080020736631
 52 Solaris /home                  6A90BA39-1DD2-11B2-99A6-080020736631
 53 Solaris alternate sector       6A9283A5-1DD2-11B2-99A6-080020736631
 54 Solaris reserved 1             6A945A3B-1DD2-11B2-99A6-080020736631
 55 Solaris reserved 2             6A9630D1-1DD2-11B2-99A6-080020736631
 56 Solaris reserved 3             6A980767-1DD2-11B2-99A6-080020736631
 57 Solaris reserved 4             6A96237F-1DD2-11B2-99A6-080020736631
 58 Solaris reserved 5             6A8D2AC7-1DD2-11B2-99A6-080020736631
 59 NetBSD swap                    49F48D32-B10E-11DC-B99B-0019D1879648
 60 NetBSD FFS                     49F48D5A-B10E-11DC-B99B-0019D1879648
 61 NetBSD LFS                     49F48D82-B10E-11DC-B99B-0019D1879648
 62 NetBSD concatenated            2DB519C4-B10E-11DC-B99B-0019D1879648
 63 NetBSD encrypted               2DB519EC-B10E-11DC-B99B-0019D1879648
 64 NetBSD RAID                    49F48DAA-B10E-11DC-B99B-0019D1879648
 65 ChromeOS kernel                FE3A2A5D-4F32-41A7-B725-ACCC3285A309
 66 ChromeOS root fs               3CB8E202-3B7E-47DD-8A3C-7FF2A13CFCEC
 67 ChromeOS reserved              2E0A753D-9E48-43B0-8337-B15192CB1B5E
 68 MidnightBSD data               85D5E45A-237C-11E1-B4B3-E89A8F7FC3A7
 69 MidnightBSD boot               85D5E45E-237C-11E1-B4B3-E89A8F7FC3A7
 70 MidnightBSD swap               85D5E45B-237C-11E1-B4B3-E89A8F7FC3A7
 71 MidnightBSD UFS                0394EF8B-237E-11E1-B4B3-E89A8F7FC3A7
 72 MidnightBSD ZFS                85D5E45D-237C-11E1-B4B3-E89A8F7FC3A7
 73 MidnightBSD Vinum              85D5E45C-237C-11E1-B4B3-E89A8F7FC3A7
 74 Ceph Journal                   45B0969E-9B03-4F30-B4C6-B4B80CEFF106
 75 Ceph Encrypted Journal         45B0969E-9B03-4F30-B4C6-5EC00CEFF106
 76 Ceph OSD                       4FBD7E29-9D25-41B8-AFD0-062C0CEFF05D
 77 Ceph crypt OSD                 4FBD7E29-9D25-41B8-AFD0-5EC00CEFF05D
 78 Ceph disk in creation          89C57F98-2FE5-4DC0-89C1-F3AD0CEFF2BE
 79 Ceph crypt disk in creation    89C57F98-2FE5-4DC0-89C1-5EC00CEFF2BE
 80 OpenBSD data                   824CC7A0-36A8-11E3-890A-952519AD3F61
 81 QNX6 file system               CEF5A9AD-73BC-4601-89F3-CDEEEEE321A1
 82 Plan 9 partition               C91818F9-8025-47AF-89D2-F030D7000C2C

分区类型(输入 L 列出所有类型):31
已将分区“Linux filesystem”的类型更改为“Linux LVM”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。

在这里插入图片描述

在这里插入图片描述

  • 查看存储池
[root@idys1 /] virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_lvm2    活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /] virsh pool-info guest_images_lvm2 
名称:       guest_images_lvm2
UUID:           7ad5eed2-2b24-460a-8166-4e2aac7e3179
状态:       running
持久:       是
自动启动: 是
容量:       30.00 GiB
分配:       0.00 B
可用:       30.00 GiB
  • 查看lvm创建详情
[root@idys1 /] pvscan 
  PV /dev/sda2   VG centos              lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos              lvm2 [<50.00 GiB / <20.04 GiB free]
  PV /dev/sdb1   VG vmvg                lvm2 [<80.00 GiB / 0    free]
  PV /dev/sdd1   VG guest_images_lvm2   lvm2 [<30.00 GiB / <30.00 GiB free]
  Total: 4 [<179.50 GiB] / in use: 4 [<179.50 GiB] / in no VG: 0 [0   ]
[root@idys1 /] vgscan 
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vmvg" using metadata type lvm2
  Found volume group "guest_images_lvm2" using metadata type lvm2
  • 继续删除存储池
[root@idys1 /] virsh pool-destroy guest_images_lvm2 
销毁池 guest_images_lvm2

[root@idys1 /] virsh pool-delete guest_images_lvm2       
池 guest_images_lvm2 被删除

[root@idys1 /] virsh pool-undefine guest_images_lvm2       
池 guest_images_lvm2 已经被取消定义
  • 删除分区
[root@idys1 /] fdisk /dev/sdd 
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@idys1 /] fdisk -l /dev/sdd
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
  • 利用命令行创建分区
# 前面已经创建过 /dev/sdd1 的lvm分区
[root@idys1 /] virsh pool-define-as guest_images_lvm logical --source-dev=/dev/sdd1 --source-name=libvirt_lvm --target=/guest_images_lvm
定义池 guest_images_lvm
[root@idys1 /] virsh pool-build guest_images_lvm 
构建池 guest_images_lvm  # 构建lvm存储池

[root@idys1 /] virsh pool-start guest_images_lvm #启动lvm存储池
池 guest_images_lvm 已启动

[root@idys1 /] virsh pool-autostart guest_images_lvm   #设置存储池的自动启动   
池 guest_images_lvm 标记为自动启动

--source-name=libvirt_lvm代表vg名称

  • 查看存储池信息
[root@idys1 /] virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 guest_images_lvm     活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /] virsh pool-info guest_images_lvm 
名称:       guest_images_lvm
UUID:           a994c0c3-0796-4df1-83ec-bbcf09b39265
状态:       running
持久:       是
自动启动: 是
容量:       30.00 GiB
分配:       0.00 B
可用:       30.00 GiB
  • 创建存储池
[root@idys1 /etc/yum.repos.d] virsh pool-destroy guest_images_lvm 
销毁池 guest_images_lvm

[root@idys1 /etc/yum.repos.d] virsh pool-delete guest_images_lvm         
池 guest_images_lvm 被删除

[root@idys1 /etc/yum.repos.d] virsh pool-undefine guest_images_lvm       
池 guest_images_lvm 已经被取消定义

[root@idys1 /etc/yum.repos.d] virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /etc/yum.repos.d] pvscan
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos          lvm2 [<50.00 GiB / <20.04 GiB free]
  PV /dev/sdb1   VG vmvg            lvm2 [<80.00 GiB / 0    free]
  Total: 3 [149.50 GiB] / in use: 3 [149.50 GiB] / in no VG: 0 [0   ]
[root@idys1 /etc/yum.repos.d] vgscan
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vmvg" using metadata type lvm2
  • 删除分区
[root@idys1 /etc/yum.repos.d] fdisk /dev/sdd 
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):d
已选择分区 1
分区 1 已删除

命令(输入 m 获取帮助):p

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@idys1 /etc/yum.repos.d] partprobe 
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。

2.7 iscsi存储池

2.7.1 基本概念

  • SAN中,主机一般是Initator,存储设备则是Target

  • Initiator

    • SCSI会话的发起方
    • Target请求LUN,并将数据的读写指令发送给Target
  • Target

    • 接受scsi会话的一方
    • 它接受来自initiator的指令,为Initiator提供LUN,并实现对LUN的读写

2.7.2 Linux-IO Target概述

  • http://linux-iscsi.org/wiki/Main Page

  • Linux-IO TargetLinux内核,用软件实现各种SCSI Target

  • 前端

    • FCFCoEiSCSI1394InfiniBandUSBvHost
  • 后端:

    • SATASASSCSISSDFLASHUSBramdisk
  • 架构

    • 支持SSE4.2高性能、多线程
    • 支持x86ia64AlphaCellPPCARMMIPS等多种CPU
    • 支持高可用,负载

2.7.3 实验环境准备:安装linux的存储服务器

  • 最小化安装的linux
  • 安装targetcli软件包
yum -y install targetcli
  • 使用targetcli配置存储

  • kickstart应答文件配置

auth --enableshadow --passalgo=sha512
cdrom
text
firstboot --enable
ignoredisk --only-use=vda
keyboard --vckeymap=us --xlayouts='us'
lang en_US.UTF-8
network --onboot yes --bootproto dhcp --noipv6
network --hostname=idys3.com
rootpw 123456
firewall --disable
selinux --disable
timezone --utc Asia/Shanghai
bootloader --location=mbr --boot-drive=vda
autopart --type=lvm
clearpart --none --initlabel
reboot
@packages
@core
@base
net-tools
%end
  • 系统详情
[root@idys1 ~] uname -a
Linux idys1.com 3.10.0-1127.19.1.el7.x86_64 #1 SMP Tue Aug 25 17:23:54 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
[root@idys1 ~] cat /etc/redhat-release 
CentOS Linux release 7.8.2003 (Core)
  • 本地yum配置文件的基本编写
# vi CentOS-local.repo
[localcdrom]
name=CentOS-$releaserver - Local CDROM
baseurl=file://mnt/cdrom
gpgcheck=0
enabled=1  # 该项如果没有的话,默认就是 enabled=1
  • 安装targetcli
[root@idys1 /etc/yum.repos.d] yum -y install targetcli
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
软件包 targetcli-2.1.fb49-1.el7.noarch 已安装并且是最新版本
无须任何处理
  • 进入targetcli的交互模式
[root@idys1 /etc/yum.repos.d] targetcli
Warning: Could not load preferences file /root/.targetcli/prefs.bin.
targetcli shell version 2.1.fb49
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/> help

GENERALITIES
============
This is a shell in which you can create, delete and configure
configuration objects.

The available commands depend on the current path or target
path you want to run a command in: different path have
different sets of available commands, i.e. a path pointing at
an iscsi target will not have the same availaible commands as,
say, a path pointing at a storage object.

The prompt that starts each command line indicates your
current path. Alternatively (useful if the prompt displays
an abbreviated path to save space), you can run the
pwd command to display the complete current path.

Navigating the tree is done using the cd command. Without
any argument, cd will present you with the full objects
tree. Just use arrows to select the destination path, and
enter will get you there. Please try help cd for navigation
tips.

COMMAND SYNTAX
==============
Commands are built using the following syntax:

[TARGET_PATH] COMMAND_NAME [OPTIONS]

The TARGET_PATH indicates the path to run the command from.
If ommited, the command will be run from your current path.

The OPTIONS depend on the command. Please use help
COMMAND to get more information.


AVAILABLE COMMANDS
==================
The following commands are available in the
current path:

  - bookmarks action [bookmark] 
  - cd [path] 
  - clearconfig [confirm] 
  - exit 
  - get [group] [parameter...] 
  - help [topic] 
  - ls [path] [depth] 
  - pwd 
  - refresh 
  - restoreconfig [savefile] [clear_existing] 
  - saveconfig [savefile] 
  - sessions [action] [sid] 
  - set [group] [parameter=value...] 
  - status 
  - version 
  • 退出命令
/>  exit
Global pref auto_save_on_exit=true
Configuration saved to /etc/target/saveconfig.json
  • 查看目录树
/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
  • 进入目录树查看
/> cd iscsi 
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 0]

2.7.4 配置target

  • 创建存储对象
    • 创建块存储对象 create block1 dev=/dev/vdb1
    • 创建fileio对象create fileio1 /foo.img 50M
    • 创建ramdisk对象create ramdisk1 1M
  • 创建iSSCI Targetcreate iqn.2010-05.org.linuxplus.srv1:stor1
  • 配置target portal group(TPG)
    • 配置portals
    • 配置LUN:添加块设备,ramdiskfileio三个LUN
    • 配置ACL
      • 查看iSCSI initiator查看其IQN
      • 为每个initiator创建ACL
  • 保存配置
  • 设置target服务为自动启动
  • 检查配置

  • /dev/sdd设备创建分区
[root@idys1 /etc/yum.repos.d] fdisk /dev/sdd
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。


命令(输入 m 获取帮助):n
分区号 (1-128,默认 1):
第一个扇区 (34-167772126,默认 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-167772126,默认 167772126):
已创建分区 1


命令(输入 m 获取帮助):p

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
 1         2048    167772126     80G  Linux filesyste 

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
  • 查看/dev/sdd这个硬盘
[root@idys1 /etc/yum.repos.d] fdisk -l /dev/sdd
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.

磁盘 /dev/sdd:85.9 GB, 85899345920 字节,167772160 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:gpt
Disk identifier: F96CFC18-0055-40FD-B8EE-CEB407F8B888


#         Start          End    Size  Type            Name
 1         2048    167772126     80G  Linux filesyste 
  • 使用targetcli进入到存储目录树里面
[root@idys1 /etc/yum.repos.d] targetcli 
targetcli shell version 2.1.fb49
Copyright 2011-2013 by Datera, Inc and others.
For help on commands, type 'help'.

/iscsi> cd /
/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 0]
  | o- fileio ................................................................................................. [Storage Objects: 0]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 0]
  o- iscsi ............................................................................................................ [Targets: 0]
  o- loopback ......................................................................................................... [Targets: 0]
/> cd backstores/
/backstores> ls
o- backstores ................................................................................................................ [...]
  o- block .................................................................................................... [Storage Objects: 0]
  o- fileio ................................................................................................... [Storage Objects: 0]
  o- pscsi .................................................................................................... [Storage Objects: 0]
  o- ramdisk .................................................................................................. [Storage Objects: 0]
/backstores> cd block 
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 0]
  • 查看create帮助
/backstores/block> help create

SYNTAX
======
create name dev [readonly] [wwn] 


DESCRIPTION
===========

Creates an Block Storage object. dev is the path to the TYPE_DISK
block device to use.
  • 使用create创建块设备存储
/backstores/block> create block1 dev=/dev/sdd1 
Created block storage object block1 using /dev/sdd1.
/backstores/block> ls
o- block ...................................................................................................... [Storage Objects: 1]
  o- block1 ........................................................................... [/dev/sdd1 (80.0GiB) write-thru deactivated]
    o- alua ....................................................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
  • 使用filoio作为存储
/backstores/block> cd /backstores/fileio 
/backstores/fileio> ls
o- fileio ..................................................................................................... [Storage Objects: 0]
/backstores/fileio> create fileio1 /tmp/foo1.img 50M  
Created fileio fileio1 with size 52428800

此时会在/tmp/目录下创建foo1.img,大小为50M

  • 查看文件是否存在
[root@idys1 ~] ls /tmp/foo1.img 
/tmp/foo1.img
[root@idys1 ~] file /tmp/foo1.img   # 查看文件类型
/tmp/foo1.img: data
  • 可以查看文件实际占用大小可表面占用大小
[root@idys1 /tmp] ls -lhF foo1.img 
-rw-r--r-- 1 root root 50M 10月 31 03:41 foo1.img
[root@idys1 /tmp] du -sh foo1.img 
0       foo1.img
  • 根据内存创建存储(ramdisk
/backstores/ramdisk> create ramdisk1 1M  # 创建 内存的存储 ,大小为 1M
Created ramdisk ramdisk1 with size 1M.
/backstores/ramdisk> ls
o- ramdisk .................................................................................................... [Storage Objects: 1]
  o- ramdisk1 ............................................................................................... [(1.0MiB) deactivated]
    o- alua ....................................................................................................... [ALUA Groups: 1]
      o- default_tg_pt_gp ........................................................................... [ALUA state: Active/optimized]
  • 创建iscsi Target存储
/iscsi> create iqn.2020-10.com.idys.srv1:tomstor1   
Created target iqn.2020-10.com.idys.srv1:tomstor1.
Created TPG 1.
Global pref auto_add_default_portal=true
Created default portal listening on all IPs (0.0.0.0), port 3260.
  • 查看如何创建portals
/iscsi> ls
o- iscsi .............................................................................................................. [Targets: 1]
  o- iqn.2020-10.com.idys.srv1:tomstor1 .................................................................................. [TPGs: 1]
    o- tpg1 ................................................................................................. [no-gen-acls, no-auth]
      o- acls ............................................................................................................ [ACLs: 0]
      o- luns ............................................................................................................ [LUNs: 0]
      o- portals ...................................................................................................... [Portals: 1]
        o- 0.0.0.0:3260 ....................................................................................................... [OK]
/iscsi> cd iqn.2020-10.com.idys.srv1:tomstor1/tpg1/portals/
/iscsi/iqn.20.../tpg1/portals> help create

SYNTAX
======
create [ip_address] [ip_port] 


DESCRIPTION
===========

Creates a Network Portal with specified ip_address and
ip_port.  If ip_port is omitted, the default port for
the target fabric will be used. If ip_address is omitted,
INADDR_ANY (0.0.0.0) will be used.

Choosing IN6ADDR_ANY (::0) will listen on all IPv6 interfaces
as well as IPv4, assuming IPV6_V6ONLY sockopt has not been
set.

Note: Portals on Link-local IPv6 addresses are currently not
supported.

SEE ALSO
========
delete
  • 创建luns
/iscsi/iqn.20...or1/tpg1/luns> create /backstores/block/block1 
Created LUN 0.
/iscsi/iqn.20...or1/tpg1/luns> create /backstores/fileio/fileio1 
Created LUN 1.
/iscsi/iqn.20...or1/tpg1/luns> create /backstores/ramdisk/ramdisk1 
Created LUN 2.

基于前面的blockfileioramdisk创建LUN1LUN1LUN2

  • 另外开启一台主机作为initiator,其ip地址为192.168.1.150,为其安装iscsi-initiator-utils
[root@master ~] yum -y install iscsi-initiator-utils
  • 查看这台主机的initiator
[root@master ~] cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:2596a1841fd
  • 设置initiator冒号后面的字段,让其更加有价值
[root@master ~] cat /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:2596a1841fd
[root@master ~] vim /etc/iscsi/initiatorname.iscsi 
InitiatorName=iqn.1994-05.com.redhat:tomkvm1
  • initiator创建ACL
/iscsi/iqn.20...or1/tpg1/acls> create iqn.1994-05.com.redhat:tomkvm1  # 为其赋予 访问 LUN1 LUN2 LUN0 的访问权限
Created Node ACL for iqn.1994-05.com.redhat:tomkvm1
Created mapped LUN 2.
Created mapped LUN 1.
Created mapped LUN 0.
  • 保存配置
/iscsi/iqn.20...or1/tpg1/acls> cd /
/> saveconfig 
Configuration saved to /etc/target/saveconfig.json
  • 设置开机自启动
[root@idys1 /etc/yum.repos.d] systemctl enable target.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/target.service to /usr/lib/systemd/system/target.service.
  • 重启服务
[root@idys1 /etc/yum.repos.d] systemctl restart target.service
  • 看重启服务之后,配置是否存在
/> ls
o- / ......................................................................................................................... [...]
  o- backstores .............................................................................................................. [...]
  | o- block .................................................................................................. [Storage Objects: 1]
  | | o- block1 ......................................................................... [/dev/sdd1 (80.0GiB) write-thru activated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- fileio ................................................................................................. [Storage Objects: 1]
  | | o- fileio1 .................................................................... [/tmp/foo1.img (50.0MiB) write-back activated]
  | |   o- alua ................................................................................................... [ALUA Groups: 1]
  | |     o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  | o- pscsi .................................................................................................. [Storage Objects: 0]
  | o- ramdisk ................................................................................................ [Storage Objects: 1]
  |   o- ramdisk1 ............................................................................................. [(1.0MiB) activated]
  |     o- alua ................................................................................................... [ALUA Groups: 1]
  |       o- default_tg_pt_gp ....................................................................... [ALUA state: Active/optimized]
  o- iscsi ............................................................................................................ [Targets: 1]
  | o- iqn.2020-10.com.idys.srv1:tomstor1 ................................................................................ [TPGs: 1]
  |   o- tpg1 ............................................................................................... [no-gen-acls, no-auth]
  |     o- acls .......................................................................................................... [ACLs: 1]
  |     | o- iqn.1994-05.com.redhat:tomkvm1 ....................................................................... [Mapped LUNs: 3]
  |     |   o- mapped_lun0 ................................................................................ [lun0 block/block1 (rw)]
  |     |   o- mapped_lun1 .............................................................................. [lun1 fileio/fileio1 (rw)]
  |     |   o- mapped_lun2 ............................................................................ [lun2 ramdisk/ramdisk1 (rw)]
  |     o- luns .......................................................................................................... [LUNs: 3]
  |     | o- lun0 .................................................................... [block/block1 (/dev/sdd1) (default_tg_pt_gp)]
  |     | o- lun1 .............................................................. [fileio/fileio1 (/tmp/foo1.img) (default_tg_pt_gp)]
  |     | o- lun2 ............................................................................ [ramdisk/ramdisk1 (default_tg_pt_gp)]
  |     o- portals .................................................................................................... [Portals: 1]
  |       o- 0.0.0.0:3260 ..................................................................................................... [OK]
  o- loopback ......................................................................................................... [Targets: 0]

2.7.5 实验: Initiator连接 Target

  • 发现Target
[root@master ~]   iscsiadm --mode discovery --type sendtargets --portal 192.168.1.170
192.168.1.170:3260,1 iqn.2020-10.com.idys.srv1:tomstor1
  • 连接Target
[root@master ~] iscsiadm -d2 -m node --login
iscsiadm: Max file limits 1024 4096
iscsiadm: default: Creating session 1/1
Logging in to [iface: default, target: iqn.2020-10.com.idys.srv1:tomstor1, portal: 192.168.1.170,3260] (multiple)
Login to [iface: default, target: iqn.2020-10.com.idys.srv1:tomstor1, portal: 192.168.1.170,3260] successful.
  • Initiator查看存储
[root@master ~] fdisk -l

Disk /dev/sda: 53.7 GB, 53687091200 bytes, 104857600 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x0009dd53

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048      411647      204800   83  Linux
/dev/sda2          411648    42354687    20971520   83  Linux
/dev/sda3        42354688    44451839     1048576   82  Linux swap / Solaris

Disk /dev/sdb: 85.9 GB, 85898280448 bytes, 167770079 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes


Disk /dev/sdc: 1 MB, 1048576 bytes, 2048 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 52 MB, 52428800 bytes, 102400 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 4194304 bytes
  • 断开与Target的连接
[root@master ~] iscsiadm -d2 -m node --logout
iscsiadm: Max file limits 1024 4096
Logging out of session [sid: 1, target: iqn.2020-10.com.idys.srv1:tomstor1, portal: 192.168.1.170,3260]
Logout of [sid: 1, target: iqn.2020-10.com.idys.srv1:tomstor1, portal: 192.168.1.170,3260] successful.

2.7.6 参考资料

  • http://linux-iscsi.org/wiki/Target
  • http://linux-iscsi.org/wiki/ISCSI
  • http://en.wikipedia.org/wiki/SCSI initiator and Target

2.7.7 基于iSCSI的存储池 iscsi: iSCSI Target

  • 使用图形界面做iscsi存储池

在这里插入图片描述

  • 下面的图片里面
    • 主机名选择Target端的主机名或者ip地址
    • IQN选择,TargetIQN
    • initiator IQN顾名思义
    • 主机名填写target的主机名

在这里插入图片描述

  • 在另外一个系统添加一块硬盘,在不关机的情况下扫描硬盘,检测出硬盘
[root@master ~] for i in {0..3};do echo "- - -" >/sys/class/scsi_host/host$i/scan;done
  • 对检测出来的硬盘进程分区
[root@master ~] fdisk /dev/sde 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x593b96fa.

Command (m for help): n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
Partition number (1-4, default 1): 
First sector (2048-167772159, default 2048): 
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-167772159, default 167772159): 
Using default value 167772159
Partition 1 of type Linux and of size 80 GiB is set

Command (m for help): p

Disk /dev/sde: 85.9 GB, 85899345920 bytes, 167772160 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x593b96fa

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1            2048   167772159    83885056   83  Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
  • 对分区进行检测,让系统检测出分区
[root@master ~] partprobe 
Warning: Unable to open /dev/sr0 read-write (Read-only file system).  /dev/sr0 has been opened read-only.
  • 查看创建的存储池
[root@idys1 /] virsh pool-list  # 查看之前创建的 iSCSI 存储池
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 storm1               活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /] virsh pool-info storm1
名称:       storm1
UUID:           9d705861-7847-4eb9-840d-998b5416f7b3
状态:       running
持久:       是
自动启动: 是
容量:       80.15 GiB
分配:       80.15 GiB
可用:       0.00 B
  • 查看存储池的文件
[root@idys1 /] cat /etc/libvirt/storage/storm1.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit storm1
or other application using the libvirt API.
-->

<pool type='iscsi'>
  <name>storm1</name>
  <uuid>9d705861-7847-4eb9-840d-998b5416f7b3</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
    <host name='192.168.1.150'/>
    <device path='iqn.2020-10.com.idys1.srv2:torage1'/>
    <initiator>
      <iqn name='iqn.1994-05.com.redhat:idysstor'/>
    </initiator>
  </source>
  <target>
    <path>/dev/disk/by-path</path>
  </target>
</pool>

  • 通过virsh创建iSCSI存储池
[root@idys1 /] virsh pool-define-as --name stor2 --type=iscsi --source-host 192.168.1.150 --source-dev iqn.2020-10.com.idys1.srv2:torage1 --target /dev/disk/by-path
定义池 stor2

记得把 target端的3260端口对initiator端打开

  • 设置启动和启动重启
[root@idys1 /] virsh  pool-start stor2
池 stor2 已启动

[root@idys1 /] virsh  pool-autostart stor2
池 stor2 标记为自动启动

2.8 基于NFS的存储池

  • 首先在存储端安装NFS
[root@master ~] yum -y install nfs-utils
  • 创建目录,并且配置访问权限
[root@master ~] mkdir /nfsshare
[root@master ~] vi /etc/exports
/nfsshare *(rw)
  • 开启rpcbindnfs服务
[root@master ~] systemctl start rpcbind
[root@master ~] systemctl start nfs
  • 查看挂载列表
[root@idys1 /] showmount -e 192.168.1.150
Export list for 192.168.1.150:
/nfsshare *
  • 使用virt-manager挂载nfs存储池
  • 主机名为nfs存储端的主机名或者ip地址
  • 源路径为nfs分享出来的的目录

在这里插入图片描述

  • 查看挂载,此时可以看到它会自动的做一些挂载mount操作,当你创建存储池后就无需挂载了
[root@idys1 /] mount | grep 192.168
192.168.1.150:/nfsshare on /var/lib/libvirt/images/nfs1 type nfs4 (rw,nosuid,nodev,noexec,relatime,vers=4.1,rsize=262144,wsize=262144,namlen=255,hard,proto=tcp,timeo=600,retrans=2,sec=sys,clientaddr=192.168.1.170,local_lock=none,addr=192.168.1.150)
  • 查看存储池信息
[root@idys1 /] cat /etc/libvirt/storage/nfs1.xml 
<!--
WARNING: THIS IS AN AUTO-GENERATED FILE. CHANGES TO IT ARE LIKELY TO BE
OVERWRITTEN AND LOST. Changes to this xml configuration should be made using:
  virsh pool-edit nfs1
or other application using the libvirt API.
-->

<pool type='netfs'>
  <name>nfs1</name>
  <uuid>e3da613a-3685-4129-a05c-84d3a81266ff</uuid>
  <capacity unit='bytes'>0</capacity>
  <allocation unit='bytes'>0</allocation>
  <available unit='bytes'>0</available>
  <source>
    <host name='192.168.1.150'/>
    <dir path='/nfsshare'/>
    <format type='auto'/>
  </source>
  <target>
    <path>/var/lib/libvirt/images/nfs1</path>
  </target>
</pool>

[root@idys1 /] virsh pool-info nfs1
名称:       nfs1
UUID:           e3da613a-3685-4129-a05c-84d3a81266ff
状态:       running
持久:       是
自动启动: 是
容量:       19.99 GiB
分配:       4.61 GiB
可用:       15.38 GiB
  • 使用virsh创建nfs存储池
[root@idys1 /] virsh pool-define-as --name nfs1 --type netfs --source-host 192.168.1.150 --source-path /nfsshare --target /var/lib/libvirt/images/nfs1
定义池 nfs1
  • 因为本地的存储路径不存在,所以需要构建路径
[root@idys1 /] virsh pool-build nfs1
构建池 nfs1
  • 启动存储池,同时设置自启动
[root@idys1 /] virsh pool-start nfs1
池 nfs1 已启动
[root@idys1 /] virsh pool-autostart nfs1 
池 nfs1 标记为自动启动
  • 停止,删除存储池
[root@idys1 /] virsh pool-destroy nfs1 
销毁池 nfs1

[root@idys1 /] ls /var/lib/libvirt/images/nfs1/
[root@idys1 /] virsh pool-delete nfs1                
池 nfs1 被删除

[root@idys1 /] ls /var/lib/libvirt/images/nfs1/
ls: 无法访问/var/lib/libvirt/images/nfs1/: 没有那个文件或目录
[root@idys1 /] virsh pool-undefine nfs1                
池 nfs1 已经被取消定义

03. 存储卷

3.1 存储卷概述

  • 存储池被分割为存储卷(storage volume

  • 存储卷

    • 文件
    • 块设备(如物理分区、LVM逻辑卷)
    • libvirt管理的其他类型存储的抽象
  • virsh存储卷管理命令

[root@idys1 /] virsh help volume
 Storage Volume (help keyword 'volume'):
    vol-clone                      克隆卷。
    vol-create-as                  从一组变量中创建卷
    vol-create                     从一个 XML 文件创建一个卷
    vol-create-from                生成卷,使用另一个卷作为输入。
    vol-delete                     删除卷
    vol-download                   将卷内容下载到文件中
    vol-dumpxml                    XML 中的卷信息
    vol-info                       存储卷信息
    vol-key                        为给定密钥或者路径返回卷密钥
    vol-list                       列出卷
    vol-name                       为给定密钥或者路径返回卷名
    vol-path                       为给定密钥或者路径返回卷路径
    vol-pool                       为给定密钥或者路径返回存储池
    vol-resize                     创新定义卷大小
    vol-upload                     将文件内容上传到卷中
    vol-wipe                       擦除卷

3.2 存储卷管理

  • 创建
  • 克隆
  • 删除
  • 移动
  • 修改大小

  • vol-create的参数信息
[root@idys1 /] virsh vol-create-as --help
  NAME
    vol-create-as - 从一组变量中创建卷

  SYNOPSIS
    vol-create-as <pool> <name> <capacity> [--allocation <string>] [--format <string>] [--backing-vol <string>] [--backing-vol-format <string>] [--prealloc-metadata] [--print-xml]

  DESCRIPTION
    创建一个卷。

  OPTIONS
    [--pool] <string>  卷名称
    [--name] <string>  卷的名称
    [--capacity] <string>  卷大小,以整数计(默认为字节)
    --allocation <string>  初始化分配大小,以整数计(默认为 KiB)
    --format <string>  文件格式类型:raw、bochs、qcow、qcow2、qed、vmdk
    --backing-vol <string>  提取快照时的后端卷
    --backing-vol-format <string>  提取快照时的后端卷格式
    --prealloc-metadata  预先分配的元数据(用于 qcow2 而不是整个分配)
    --print-xml      打印 XML 文档,但不能定义/创建

3.3 存储卷管理

  • 基于目录的存储池中的存储卷管理
  • 基于LVM的存储池中的存储卷管理

3.3.1 基于目录的存储池中的存储卷管理

  • 查看存储池信息
[root@idys1 /] virsh pool-list 
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 stor2                活动     是       
 virtio_dir           活动     是       
 vm                   活动     是       

[root@idys1 /] virsh pool-info vm
名称:       vm
UUID:           1693104e-8164-4151-b9a6-602a5d5f848c
状态:       running
持久:       是
自动启动: 是
容量:       78.62 GiB
分配:       4.45 GiB
可用:       74.16 GiB

[root@idys1 /] virsh pool-dumpxml vm
<pool type='dir'>
  <name>vm</name>
  <uuid>1693104e-8164-4151-b9a6-602a5d5f848c</uuid>
  <capacity unit='bytes'>84412882944</capacity>
  <allocation unit='bytes'>4780724224</allocation>
  <available unit='bytes'>79632158720</available>
  <source>
  </source>
  <target>
    <path>/vm</path>
    <permissions>
      <mode>0755</mode>
      <owner>0</owner>
      <group>0</group>
    </permissions>
  </target>
</pool>
  • 查看存储池中的存储卷有那些
[root@idys1 /] virsh vol-list vm
 名称               路径                                  
------------------------------------------------------------------------------
 back_img             /vm/back_img                            
 base-centos6-disk0.qcow2 /vm/base-centos6-disk0.qcow2            
 CentOS-disk1.qcow2   /vm/CentOS-disk1.qcow2                  
 centos6-disk0.qcow2  /vm/centos6-disk0.qcow2                 
 erp-disk0.qcow2      /vm/erp-disk0.qcow2                     
 lost+found           /vm/lost+found                          
 oa-disk0.qcow2       /vm/oa-disk0.qcow2                      
 win32-disk2          /vm/win32-disk2   
  • 在存储池当中创建存储卷
[root@idys1 /] virsh vol-create-as vm test_vol.qcow2 2G --format qcow2
创建卷 test_vol.qcow2 
  • 列举存储池里面的存储卷
[root@idys1 /] virsh vol-list vm
 名称               路径                                  
------------------------------------------------------------------------------
 back_img             /vm/back_img                            
 base-centos6-disk0.qcow2 /vm/base-centos6-disk0.qcow2            
 CentOS-disk1.qcow2   /vm/CentOS-disk1.qcow2                  
 centos6-disk0.qcow2  /vm/centos6-disk0.qcow2                 
 erp-disk0.qcow2      /vm/erp-disk0.qcow2                     
 lost+found           /vm/lost+found                          
 oa-disk0.qcow2       /vm/oa-disk0.qcow2                      
 test_vol.qcow2       /vm/test_vol.qcow2                      
 win32-disk2          /vm/win32-disk2   
  • 查看存储卷信息
[root@idys1 /] virsh vol-info /vm/test_vol.qcow2 
名称:       test_vol.qcow2
类型:       文件
容量:       2.00 GiB
分配:       196.00 KiB
[root@idys1 /] virsh vol-info test_vol.qcow2 --pool vm
名称:       test_vol.qcow2
类型:       文件
容量:       2.00 GiB
分配:       196.00 KiB

3.3.2 基于LVM的存储池中的存储卷管理

  • 查看存储池信息
[root@idys1 /] virsh pool-list --all
 名称               状态     自动开始
-------------------------------------------
 default              活动     是       
 iso                  活动     是       
 stor2                活动     是       
 virtio_dir           活动     是       
 vm                   活动     是 
  • vmware里面再加一块盘,然后重新扫描系统总线,对添加的硬盘检测
[root@idys1 /] for i in {0..2};do echo "- - -" > /sys/class/scsi_host/host$i/scan;done 
[root@idys1 /] echo "- - -" > /sys/class/scsi_host/host7/scan
[root@idys1 /] fdisk -l /dev/sdh  # 此时可以看到硬盘检测出来了

磁盘 /dev/sdh:53.7 GB, 53687091200 字节,104857600 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
  • 基于lvm构建存储池
[root@idys1 /] virsh pool-define-as guest_images_lvm logical --source-dev=/dev/sdh --target=/dev/vg_libvirt
定义池 guest_images_lvm

[root@idys1 /] virsh pool-build guest_images_lvm 
构建池 guest_images_lvm
  • 启动存储池,设置存储池开机自启动
[root@idys1 /] virsh pool-start guest_images_lvm 
池 guest_images_lvm 已启动

[root@idys1 /] virsh pool-autostart guest_images_lvm      
池 guest_images_lvm 标记为自动启动
  • 查看pvvg
[root@idys1 /] pvscan 
  PV /dev/sda2   VG centos             lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos             lvm2 [<50.00 GiB / 0    free]
  PV /dev/sdb1   VG vmvg               lvm2 [<80.00 GiB / 0    free]
  PV /dev/sdh    VG guest_images_lvm   lvm2 [<50.00 GiB / <50.00 GiB free]
  Total: 4 [<199.50 GiB] / in use: 4 [<199.50 GiB] / in no VG: 0 [0   ]
[root@idys1 /] vgscan 
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vmvg" using metadata type lvm2
  Found volume group "guest_images_lvm" using metadata type lvm2
  • 基于lvm的存储池,创建三个存储卷lv
[root@idys1 /] virsh vol-create-as guest_images_lvm lvvol1 1G
创建卷 lvvol1 

[root@idys1 /] virsh vol-create-as guest_images_lvm lvvol2 2G
创建卷 lvvol2 

[root@idys1 /] virsh vol-create-as guest_images_lvm lvvol3 3G
创建卷 lvvol3 

[root@idys1 /] virsh vol-list guest_images_lvm 
 名称               路径                                  
------------------------------------------------------------------------------
 lvvol1               /dev/guest_images_lvm/lvvol1            
 lvvol2               /dev/guest_images_lvm/lvvol2            
 lvvol3               /dev/guest_images_lvm/lvvol3  
  • 查看lv,发现已经自动创建了三个lv逻辑卷
[root@idys1 /] lvscan
  ACTIVE            '/dev/centos/swap' [2.00 GiB] inherit
  ACTIVE            '/dev/centos/root' [67.50 GiB] inherit
  ACTIVE            '/dev/vmvg/lvvm1' [<80.00 GiB] inherit
  ACTIVE            '/dev/guest_images_lvm/lvvol1' [1.00 GiB] inherit
  ACTIVE            '/dev/guest_images_lvm/lvvol2' [2.00 GiB] inherit
  ACTIVE            '/dev/guest_images_lvm/lvvol3' [3.00 GiB] inherit
  • 查看vg
[root@idys1 /] vgdisplay guest_images_lvm 
  --- Volume group ---
  VG Name               guest_images_lvm
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <50.00 GiB
  PE Size               4.00 MiB
  Total PE              12799
  Alloc PE / Size       1536 / 6.00 GiB
  Free  PE / Size       11263 / <44.00 GiB
  VG UUID               ynUxcB-jtXu-8bve-7U69-9ebg-HdA8-ZobNoQ
  • 克隆存储卷
[root@idys1 /] virsh vol-clone test_vol.qcow2 test_vol1.qcow2 --pool vm
使用 test_vol1.qcow2 克隆的卷 test_vol.qcow2
[root@idys1 /] virsh vol-list vm  # 再次查看存储卷,发现 test_vol.qcow2 已经存在
 名称               路径                                  
------------------------------------------------------------------------------
 back_img             /vm/back_img                            
 base-centos6-disk0.qcow2 /vm/base-centos6-disk0.qcow2            
 CentOS-disk1.qcow2   /vm/CentOS-disk1.qcow2                  
 centos6-disk0.qcow2  /vm/centos6-disk0.qcow2                 
 erp-disk0.qcow2      /vm/erp-disk0.qcow2                     
 lost+found           /vm/lost+found                          
 oa-disk0.qcow2       /vm/oa-disk0.qcow2                      
 test_vol.qcow2       /vm/test_vol.qcow2                      
 test_vol1.qcow2      /vm/test_vol1.qcow2                     
 win32-disk2          /vm/win32-disk2                 
  • 查看克隆卷信息
[root@idys1 /] virsh vol-info test_vol1.qcow2 --pool vm
名称:       test_vol1.qcow2
类型:       文件
容量:       2.00 GiB
分配:       196.00 KiB
  • 基于lvm卷克隆
[root@idys1 /] virsh vol-clone lvvol2 lvvol4 guest_images_lvm 
使用 lvvol4 克隆的卷 lvvol2
  • 再来查看lvm的卷
[root@idys1 /] virsh vol-list guest_images_lvm 
 名称               路径                                  
------------------------------------------------------------------------------
 lvvol1               /dev/guest_images_lvm/lvvol1            
 lvvol2               /dev/guest_images_lvm/lvvol2            
 lvvol3               /dev/guest_images_lvm/lvvol3            
 lvvol4               /dev/guest_images_lvm/lvvol4  

  • 删除lvm存储卷里面的存储池
[root@idys1 /] for i in {1..4};do virsh vol-delete lvvol$i --pool guest_images_lvm ;done
卷 lvvol1 被删除

卷 lvvol2 被删除

卷 lvvol3 被删除

卷 lvvol4 被删除
  • 查看vg信息
[root@idys1 /] vgdisplay guest_images_lvm 
  --- Volume group ---
  VG Name               guest_images_lvm
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  9
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                0
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               <50.00 GiB
  PE Size               4.00 MiB
  Total PE              12799
  Alloc PE / Size       0 / 0   
  Free  PE / Size       12799 / <50.00 GiB
  VG UUID               ynUxcB-jtXu-8bve-7U69-9ebg-HdA8-ZobNoQ
  • 删除lvm存储池
[root@idys1 /] virsh pool-destroy guest_images_lvm 
销毁池 guest_images_lvm

[root@idys1 /] virsh pool-delete guest_images_lvm       
池 guest_images_lvm 被删除

[root@idys1 /] virsh pool-undefine guest_images_lvm       
池 guest_images_lvm 已经被取消定义
  • 再来查看pvvg,发现他们已经不存在了
[root@idys1 /] pvscan 
  PV /dev/sda2   VG centos          lvm2 [<19.51 GiB / 0    free]
  PV /dev/sdc1   VG centos          lvm2 [<50.00 GiB / 0    free]
  PV /dev/sdb1   VG vmvg            lvm2 [<80.00 GiB / 0    free]
  Total: 3 [149.50 GiB] / in use: 3 [149.50 GiB] / in no VG: 0 [0   ]
[root@idys1 /] vgscan 
  Reading volume groups from cache.
  Found volume group "centos" using metadata type lvm2
  Found volume group "vmvg" using metadata type lvm2
  • 删除dir存储池里面的存储卷
[root@idys1 /] virsh vol-delete /vm/test_vol1.qcow2 
卷 /vm/test_vol1.qcow2 被删除

3.3.3 向虚拟机添加卷

  • attach-device
    • 通过XML添加新的设备
<disk type='file' device='disk'>
	<driver name='qemu' type='raw' cache='none' />
	<source file='/vm/testdisk1.img' />
	<target dev='vdb' />
</disk>
  • 另外
<disk type='file' device='cdrom'>
	<driver name='qemu' type='raw' cache='none' />
	<source file='/iso/CentOS.iso' />
	<readonly />
	<target dev='hdc' />
</disk>
  • attach-disk
virsh attach-disk --domin VM1 --source=/vm/t2.img --target=vdb --cache=none
  • 创建一个表面大小50M,实际大小0M的稀疏文件
[root@idys1 /vm] dd if=/dev/zero of=./mytest1.raw bs=1024k count=0 seek=50  
记录了0+0 的读入
记录了0+0 的写出
0字节(0 B)已复制,0.00011147 秒,0.0 kB/秒
  • qemu-img创建稀疏文件
[root@idys1 /vm] qemu-img create -f qcow2 mytest2 2G
Formatting 'mytest2', fmt=qcow2 size=2147483648 encryption=off cluster_size=65536 lazy_refcounts=off 
  • virsh vol-create创建
[root@idys1 /vm] virsh vol-create-as vm mytest3.qcow2 60G --format=qcow2
创建卷 mytest3.qcow2
[root@idys1 /vm] qemu-img info mytest3.qcow2 
image: mytest3.qcow2
file format: qcow2
virtual size: 60G (64424509440 bytes)
disk size: 196K
cluster_size: 65536
Format specific information:
    compat: 0.10
[root@idys1 /vm] virsh vol-info mytest3.qcow2 vm 
名称:       mytest3.qcow2
类型:       文件
容量:       60.00 GiB
分配:       196.00 KiB
  • 编辑文件
[root@idys1 /vm] vim /tmp/vdbxml
<disk type='file' device='disk'>
        <driver name='qemu' type='qcow2' cache='none' />
        <source file='/vm/testdisk1.qcow2' />
        <target dev='vdb' />
</disk>
  • 列举虚拟机的块设备文件
[root@idys1 /vm] virsh domblklist win2k3a 
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/win2k3a.qcow2
hdb        /iso/virtio_stable/virtio-win-0.1.185.iso
  • 创建磁盘文件
[root@idys1 /vm] qemu-img create -f qcow2 testdisk1.qcow2 60G
Formatting 'testdisk1.qcow2', fmt=qcow2 size=64424509440 encryption=off cluster_size=65536 lazy_refcounts=off 
  • 永久挂接设备
[root@idys1 /vm] virsh attach-device win2k3a /tmp/vdbxml --persistent 
成功附加设备
  • 查看挂接设备
[root@idys1 /vm] virsh domblklist win2k3a 
目标     源
------------------------------------------------
vda        /var/lib/libvirt/images/win2k3a.qcow2
vdb        /vm/testdisk1.qcow2
hdb        /iso/virtio_stable/virtio-win-0.1.185.iso
  • 再次挂接磁盘
[root@idys1 /vm] virsh attach-disk win2k3a --source=/vm/test_vol.qcow2 --target=vdc  #这次使用的是命令行
成功附加磁盘
  • 创建lvm存储池,并且设置为自启动
[root@idys1 /vm] virsh pool-define-as lvm_test logical --source-dev=/dev/sdh --target=/dev/vg_libvirt                
定义池 lvm_test

[root@idys1 /vm] virsh pool-build lvm_test 
构建池 lvm_test

[root@idys1 /vm] virsh pool-start lvm_test      
池 lvm_test 已启动

[root@idys1 /vm] virsh pool-autostart lvm_test      
池 lvm_test 标记为自动启动
  • lvm存储池里面创建lv
[root@idys1 /vm] virsh vol-create-as lvm_test lvtest 30G
创建卷 lvtest 
  • 查看lv
[root@idys1 /vm] lvscan 
  ACTIVE            '/dev/lvm_test/lvtest' [30.00 GiB] inherit
  • lvm存储卷作为虚拟机的磁盘
[root@idys1 /vm] virsh attach-disk --domain win2k3a --source=/dev/lvm_test/lvtest --target=vdd
成功附加磁盘


写在最后的话:

  • 无论每个知识点的难易程度如何,我都会尽力将它描绘得足够细致
  • 欢迎关注我的CSDN博客,IDYS’BLOG
  • 持续更新内容
    linux基础 | 数据通信(路由交换,WLAN) | Python基础 | 云计算
  • 如果你有什么疑问,或者是难题。欢迎评论或者私信我。你若留言,我必回复!
  • 虽然我现在还很渺小,但我会做好每一篇内容。谢谢关注!

  • 3
    点赞
  • 1
    评论
  • 7
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

IDYS • 元帅

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值