$ sudo lvcreate --wipesignatures y -n thinpool docker -l 95%VG Logical volume "thinpool" created. $ sudo lvconvert -y \ --zero n \ -c 512K \ --thinpool docker/thinpool \ --poolmetadata docker/thinpoolmeta WARNING: Converting logical volume docker/thinpool and docker/thinpoolmeta to thin pool's data and Converted docker/thinpool to thin pool. 8、通过lvm配置文件配置精简池的自动扩展。 $ sudo lvchange --metadataprofile docker-thinpool docker/thinpool Logical volume docker/thinpool changed
lv_vm_root宿主机根分区50GB数据盘(ext4/XFS)lv_vm_data虚拟机磁盘存放动态扩展thinpoollv_snapshots保留快照空间20GBthinsnapshotpool创建thinpool 四、虚拟机磁盘创建与部署接下来,使用thinpool作为存储池为虚拟机创建逻辑卷(例如50GB大小):展开代码语言:BashAI代码解释lvcreate-V50G--thin-nlv_vm1tp_vm通过 fullsnapshots更高效:展开代码语言:BashAI代码解释lvcreate-s-nlv_vm1_snap-L10G/dev/vg_vm_storage/lv_vm1注意:Snapshots所占容量来自thinpool 八、常见故障与解决问题可能原因解决方式LVMpool空间耗尽thinpool未扩容增加pool空间或迁移卷虚拟机磁盘I/O突然下降共享资源冲突检查调度器与NUMA分配Snapshot成本过高Snapshot snapshot九、总结与最佳实践本文方案在SLES15SP4上结合NVMe硬件、thinprovisioning与libvirt存储集成,实现了高效的LVM存储管理与优化的虚拟化性能:合理划分卷组与thinpool
五、把本地磁盘变成“集群存储”1️⃣ 创建 LVM Thin Poolvgcreate linstor_vg /dev/vdb lvcreate -l 80%FREE -T linstor_vg/thinpool2️⃣ 在 LINSTOR 中注册存储池 linstor storage-pool create lvmthin proxmox-0 pve-storage linstor_vg/thinpool linstor storage-pool create lvmthin proxmox-1 pve-storage linstor_vg/thinpool linstor storage-pool create lvmthin proxmox-2 pve-storage linstor_vg/thinpool 六、资源组:定义“副本规则”资源组决定了:副本放在哪放几份linstor resource-group create
to all hosts copy: src=docker-thinpool.sh dest=/usr/bin/docker-thinpool mode=0755 when: dev_sda6 那我如何去做多种条件的判断呢,比如我还需要判断是否有 docker-thinpool 存在,则还需要为它注册一个变量。 - name: Create a register to represent the status if the docker-thinpool exsited shell: lsblk | grep docker-thinpool register: docker_thinpool_result ignore_errors: True tags: docker 然后在when中用and 比如当两种条件之一成功,都对docker配置文件进行修改: - name: Special config for docker-thinpool devicemapper lineinfile: dest
- dir: local path /var/lib/vz content iso,vztmpl,backup lvmthin: local-lvm thinpool
lvcreate -T thin-pool/data -l +99%FREE pvesm add lvmthin thin-pool-data --content rootdir,images --thinpool
数据家目录以及默认容器的私有地址等等 Docker 启动参数的配置 1.docker存储驱动的配置,devicemapper下的direct-lvm模式,创建一个/dev/mapper/docker-thinpool /bin/bash pvcreate /dev/vda1 vgcreate docker /dev/vda1 lvcreate --wipesignatures y -n thinpool docker -l 95%VG lvcreate --wipesignatures y -n thinpoolmeta docker -l 1%VG lvconvert -y --zero n -c 512K --thinpool docker/thinpool --poolmetadata docker/thinpoolmeta echo "activation { thin_pool_autoextend_threshold docker-thinpool docker/thinpool echo "Print the vgs:" vgdisplay echo "Print the lvs:" lvdisplay lvs
可以查看目录DIR_NAME中的目录数 在docker中有一个重要的存储器,以centos系统为例,使用docker info可以看到docker的存储系统类型为devicemapper,docker使用thinpool
Create a thin volume in the thin pool with the lvcreate command. lvcreate -L 20G --thinpool Data_Pool
因此,对支持device mapper(LVM thinpool)成为替换 AUFS 兼容老版本的可选项。
6.2 精简池与精简卷管理创建精简池:# 创建精简池(自动创建元数据卷)sudo lvcreate -L 100G --thinpool thin_pool vg_data# 手动指定元数据卷大小sudo lvcreate -L 100G --poolmetadatasize 2G --thinpool thin_pool vg_data# 使用单独磁盘创建高性能元数据卷sudo pvcreate /dev sdfsudo vgextend vg_data /dev/sdfsudo lvcreate -L 2G -n thin_meta vg_data /dev/sdfsudo lvcreate -L 100G --thinpool details"6.4 性能优化策略I/O性能优化:# 使用SSD作为元数据存储sudo lvcreate -L 50G -n thin_pool_ssd vg_ssdsudo lvconvert --thinpool vg_ssd/thin_pool_ssd# 调整块大小(需要重新创建池)sudo lvcreate -L 100G --chunksize 256K --thinpool thin_pool_large
ExecStart=/usr/bin/docker daemon —storage-driver=overlay -H fd:// 也可以使用devicemapper做为存储驱动,那就需要通过lvm创建thinpool
接下来,为Docker Direct LVM创建一个卷组,以便像下面那样设置LVM Thinpool。
PV 3 [root@servera ~]# vgcreate vg0 /dev/sdb1 #创建vg 4 [root@servera ~]# lvcreate -L 15G -T vg0/thinpool #创建支持thin的lv池 5 [root@servera ~]# lvcreate -V 10G -T vg0/thinpool -n datalv #创建相应brick的lv 6 [root
storage.cfg dir: local path /var/lib/vz content vztmpl,iso,backup lvmthin: local-lvm thinpool
storage-satellitesspec: storagePools: - name: vg1-thin lvmThinPool: volumeGroup: vg1 thinPool
-K 或 --thinpool:创建精简存储池。 -T 或 --thin:在精简存储池中创建精简逻辑卷。
当 Docker 使用 Devicemapper 作为文件存储驱动时,Docker 将镜像和容器的文件存储在瘦供给池(thinpool)中,并将这些内容挂载在 /var/lib/docker/devicemapper Stopped: 1 Images: 1 Server Version: 19.03.12 Storage Driver: devicemapper Pool Name: docker-thinpool 省略部分输出 当我们看到 Storage Driver 为 devicemapper,并且 Pool Name 为 docker-thinpool 时,这表示 Devicemapper 的 direct-lvm