VirtualDataOptimizer(VDO)是一种块虚拟化技术,提供透明的重复数据删除。通过消除冗余数据块,VDO可以大大减少实际使用的磁盘容量。VDO由两个内核模块和两个命令组成:它由以下两个内核模块组成:kvdo-该模块加载到设备管理层,为重复数据删除提供块存储卷。uds-该模块负责与VDO磁盘上的通用重复数据删除索引进行通信。包括两个命令行工具:vdo-用于创建、删除、启动和停止VDO卷,以及执行其他配置操作。vdostats-用于报告VDO卷的各个方面,包括物理卷的有效减少和利用。系统环境Centos8installVDO以下命令安装vdo及相关依赖,安装完成后重启系统:[root@localhost~]#yum-yinstallvdo[root@localhost~]#reboot在Centos8中安装配置VDO即可优化存储空间Centos8安装和配置VDO以优化存储空间创建VDO设备确保有空闲磁盘或分区可用于VDO。虽然可以在LVM逻辑卷之上创建VDO卷,但是当系统重新引导时可能会出现引导顺序问题。所以在裸盘上创建一个vdo卷之后,再在上面创建一个LVM逻辑卷。Centos8安装配置VDO,优化存储空间Centos8安装配置VDO,优化存储空间下面使用一块20GB的磁盘,/dev/sda作为vdo卷下面创建一个vdo卷:[root@localhost~]#vdocreate--name=vdolvm--device/dev/sda--vdoLogicalSize60G--writePolicyasync创建VDOvdolvmVDO卷可以在8个数据块中寻址16GB,每个2GB。它可以增长到在8192个平板中处理最多16TB的物理存储。如果可能需要更大的最大大小,请使用更大的平板。启动VDOvdolvm在VDOvdolvmVDO实例0卷上准备好压缩Centos8安装和配置VDO以优化存储空间在Centos8中安装和配置VDO以优化存储空间我们把命令分解一下,看看用到的选项:--device——指定在哪个硬盘上创建vdo卷——vdoLogicalSize——这里我们指定容量为60G,比我们实际的磁盘20G要大很多。假设我们将从重复数据删除中获得至少3:1的减少,这对于大多数数据来说是相当保守的,但如果您的数据没有大量重复,则该比率应该不同。日志文件和其他纯文本文件通常可以很好地进行重复数据删除,可能获得10:1甚至更高的重复数据删除率。但二进制文件,如视频、音频或压缩文件,将远低于3:1,在某些情况下甚至为1:1。在这种情况下不建议使用vdo卷。--writePolicy-vdo有三种写入策略:sync:只有在数据写入物理设备后,才会确认对VDO卷的写入。异步:数据写入缓存后确认。如果在设备故障或断电之前未刷新缓存,则可能会导致数据丢失。auto:默认模式下,VDO会检查存储设备,判断是否支持刷新。如果是这样,VDO将使用异步模式。如果没有,它将使用同步模式。查看有关新创建的VDO卷的信息从上一步的输出中我们可以看到,VDO创建了一个名为/dev/mapper/vdolvm的新dm设备。这是我们在创建lvm卷组时将使用的设备。[root@localhost~]#ll/dev/mapper/vdolvmlrwxrwxrwx1rootroot7Mar413:31/dev/mapper/vdolvm->../dm-2在Centos8中安装配置VDO优化存储空间安装在Centos8并配置VDO优化存储空间让我们看看我们可以使用vdostats获得关于vdo卷的什么样的信息:[root@localhost~]#vdostats--huDeviceSizeUsedAvailableUse%Spacesaving%/dev/mapper/vdolvm20.0G4.0G16.0G20%N/ACentos8InstallandconfigureVDOtooptimizestoragespaceInstallandconfigureVDOinCentos8tooptimizestoragespace由于我们没有向该卷写入任何数据,因此Spacesaving%字段为N/A。稍后我们将写入一些数据时,请在此处查看更多有用的信息。上图中可以看到,我们还没有写入任何数据,但是已经有4GB了,其中20%已经被使用了!这是因为“GeneralDeduplicationIndex”已经写入磁盘。这基本上是一个记录平板指纹及其位置的数据库。这就是使重复数据删除成为可能的原因。将VDO卷设置为普通磁盘设备现在我们已经创建了VDO设备,我们可以对其进行分区和格式化,或者在这个vod卷之上创建lvm逻辑卷。接下来我们创建逻辑卷:创建物理卷[root@localhost~]#pvcreate/dev/mapper/vdolvm成功创建物理卷“/dev/mapper/vdolvm”。创建卷组vdo_vg[root@localhost~]#vgcreatevdo_vg/dev/mapper/vdolvm卷组“vdo_vg”创建成功查看vdo_vg卷组信息[root@localhost~]#vgdisplayvdo_vg---卷组---VGNamevdo_vgSystemIDFormatlvm2MetadataAreas1MetadataSequenceNo1VGAccessread/writeVGStatusresizableMAXLV0CurLV0OpenLV0MaxPV0CurPV1ActPV1VGSize<60.00GiBPESize4.00MiBTotalPE15359AllocPE/Size0/0FreePE/Size15359/<60.00GiBVGUUIDqfPiH6-eMCU-Z6kr-eeCu-jd0J-8lmf-49daZX正如你在上面看到的,lvm认为我们的基础磁盘是120GB,甚至尽管我们知道它只有40GB。由于LVM不知道VDO后端磁盘的大小。Centos8安装配置VDO优化存储空间~]#lvcreate-L15G-nvdo_lv02vdo_vg[root@localhost~]#lvcreate-L15G-nvdo_lv03vdo_vg查看创建的逻辑卷[root@localhost~]#lvs-o+devicesCentos8InstallandconfigureVDOtoOptimizingstoragespaceInstallandconfigureVDOinCentos8tooptimizingstoragespace创建挂载点并挂载文件系统一般情况下,文件系统创建后,会在设备上运行Trim操作。这在使用VDO时并不理想,因为磁盘容量是按需分配的。因此,我们要告诉mkfs在文件系统创建期间不要丢弃块。对于XFS,使用-K选项。对于EXT4,使用-Enodiscard。下面使用for循环将三个逻辑卷格式化为一个XFS文件系统:[root@localhost~]#foriinseq13;执行mkfs.xfs-K/dev/vdo_vg/vdo_lv0$i;donemeta-data=/dev/vdo_vg/vdo_lv01isize=512agcount=4,agsize=983040blks=sectsz=4096attr=2,projid32bit=1=crc=1finobt=1,sparse=1,rmapbt=0=reflink=1data=bsize=4096blocks=3932160,imaxpct=25=sunit=0width=0blksnaming=version2bsize=4096ascii-ci=0,ftype=1log=internallogbsize=4096blocks=2560,version=2=sectsz=4096sunit=1blks,lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=0meta-data=/dev/vdo_vg/vdo_lv02isize=512agcount=4,agsize=983040blks=sectsz=4096attr=2、projid32bit=1=crc=1finobt=1,sparse=1,rmapbt=0=reflink=1data=bsize=4096blocks=3932160,imaxpct=25=sunit=0swidth=0blksnaming=version2bsize=4096ascii-ci=0,ftype=1log=internallogbsize=4096blocks=2560,version=2=sectsz=4096sunit=1blks,lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=0meta-data=/dev/vdo_vg/vdo_lv03isize=512agcount=4,agsize=983040blks=sectsz=4096attr=2,projid32bit=1=crc=1finobt=1,sparse=1,rmapbt=0=reflink=1data=bsize=4096blocks=3932160,imaxpct=25=sunit=0swidth=0blksnaming=version2bsize=4096ascii-ci=0,ftype=1log=内部日志bsize=4096blocks=2560,version=2=sectsz=4096sunit=1blks,lazy-count=1realtime=noneextsz=4096blocks=0,rtextents=0在Centos8中安装配置VDO优化存储空间在Centos8中安装配置VDO优化存储空间当我们安装新的时候文件系统当挂载到挂载点时,我们要告诉XFS丢弃块,因为这将大大加快文件删除速度[root@localhost~]#mkdir-p/data/{01..03}[root@localhost~]#foriinseq13;做mount-odiscard/dev/vdo_vg/vdo_lv0$i/data/0$i;doneInstallandconfigureVDOinCentos8tooptimizestoragespaceInstallandconfigureVDOinCentos8tooptimizestoragespace现在,我们向设备写入了少量数据,我们可以再次查看VDO卷,看情况是否有变化。[root@localhost~]#vdostats--huDeviceSizeUsedAvailableUse%Spacesaving%/dev/mapper/vdolvm20.0G4.0G16.0G20%86%Centos8安装配置VDO优化存储空间Centos8安装配置VDO优化存储空间并设置为开机。接下来,将三个逻辑卷设置为引导。您需要将x-systemd.device-timeout=0和x-systemd.requires=vdo.service添加到fstab文件。使用blkid查看三个逻辑卷的UUID。Centos8安装配置VDO,优化存储空间Centos8安装配置VDO,优化存储空间使用上面获取的UUID,添加到/etc/fstab文件中:[root@localhostsystemd]#vim/etc/fstabUUID=“bd2c1c61-4656-4065-b5a0-3ca53ef0f949”/data/01xfsdefaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service00UUID="1e53579b-f1da-4f77-80e6-d61a40515525“/data/02xfs默认值,x-systemd.device-timeout=0,x-systemd.requires=vdo.service00UUID="d41bf7e2-bf75-4db7-b323-a923375f6a6e"/data/03xfs默认值,x-systemd.device-timeout=0,x-systemd.requires=vdo.service00摘要VirtualDataOptimizer(VDO)是一种提供透明重复数据删除的块虚拟化技术。通过消除冗余数据块,VDO可以大大减少实际使用的磁盘容量。
