本章主要介紹虛擬化數據優化器。
- 什么是虛擬數據優化器VDO
- 創建VDO設備以節約硬盤空間
16.1 了解什么是VDO
VDO全稱是Virtual Data Optimize(虛擬數據優化),主要是為了節省硬盤空間。
現在假設有兩個文件file1和 file2,大小都是10G。file1和 file2中包含了8G的相同數據,
如圖16-1中的灰色部分。這個相同數據在硬盤中存儲了兩份,所以這兩個文件占用的硬盤空
間是20G。
如果采用了VDO,效果如圖16-2所示。

file1和 file2大小都是10G,兩個文件中都有8G的相同數據。那么,這個相同數據在硬盤
中只存儲一份,讓filel和 file2共同使用。所以,最終在硬盤上占用的空間是12G,這樣一個
20G大小的硬盤,完全可以存儲大于20G的文件,主要看這些文件中到底有多少相同數據。
所以,VDO實現的效果是,多個文件中有相同數據,這個相同數據只存儲一份,從而實現
節省硬盤空間的目的。
16.2 配置VDO
首先要安裝VDO相關軟件包(關于軟件包的管理在第23章和第24章中有詳細講解),步驟
如下。
步驟①:掛載光盤,命令如下。
[root@pp ~]# mount /dev/cdrom /mnt/
mount: /mnt: WARNING: device write-protected, mounted read-only.
[root@pp ~]#
這里準備把光盤作為yum 源。
步驟②:編寫repo文件,命令如下。
[root@pp ~]# cat /etc/yum.repos.d/aa.repo
[aa]
name=aa
baseurl=file:///mnt/AppStream
enabled=1
gpgcheck=0[bb]
name=bb
baseurl=file:///mnt/BaseOS
enabled=1
gpgcheck=0
[root@pp ~]#
步驟③:安裝VDO,命令如下。
[root@pp ~]# yum -y install vdo kmod-kvdo
查看 VDO設備,命令如下。
[root@pp ~]# vdo list [root@pp ~]#
沒有任何輸出,說明現在還沒有任何VDO設備。
因為相同數據只存儲一份,大大地節省了存儲空間,所以本來20G的磁盤空間現在存儲
30G、40G、50G的數據是完全有可能的。
下面創建一個名稱為vdo1、底層設備為/dev/sdc的VDO設備,邏輯大小為50G,命令如
下。
[root@pp ~]# vdo create --name vdo1 --device /dev/nvme0n2 --vdoLogicalSize 50G
Creating VDO vdo1The VDO volume can address 46 GB in 23 data slabs, each 2 GB.It can grow to address at most 16 TB of physical storage in 8192 slabs.If a larger maximum size might be needed, use bigger slabs.
Starting VDO vdo1
Starting compression on VDO vdo1
VDO instance 0 volume is ready at /dev/mapper/vdo1
[root@pp ~]#
上面提示的一堆信息不用管,最終能看到的是vdo1已經創建好了,可以通
過/dev/mapper/vdo1來使用。 再次查看有多少VDO設備,命令如下。
[root@pp ~]# vdo list
vdo1
[root@pp ~]#
格式化這個VDO設備,命令如下。
[root@pp ~]# mkfs.xfs -K /dev/mapper/vdo1
meta-data=/dev/mapper/vdo1 isize=512 agcount=4, agsize=3276800 blks= sectsz=4096 attr=2, projid32bit=1= crc=1 finobt=1, sparse=1, rmapbt=0= reflink=1
data = bsize=4096 blocks=13107200, imaxpct=25= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=6400, version=2= sectsz=4096 sunit=1 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@pp ~]#
這里-K(大寫)的意思類似于Windows中的快速格式化。
把這個 VDO設備掛載到/vdo1目錄上,命令如下。
[root@pp ~]# mkdir /vdo1
[root@pp ~]# mount /dev/mapper/vdo1 /vdo1/
[root@pp ~]#
如果希望能永久掛載,需要寫入/etc/fstab中,命令如下。
[root@pp ~]# grep vdo /etc/fstab
/dev/mapper/vdo1 /vdo1 xfs defaults,_netdev 0 0
[root@pp ~]#
需要注意的是,這里一定要有_netdev選項,否則重啟系統時,系統是啟動不起來的。
查看vdo1的空間使用情況,命令如下。
[root@pp ~]# vdostats --hu
Device Size Used Available Use% Space saving%
/dev/mapper/vdo1 50.0G 4.0G 46.0G 8% 99%
[root@pp ~]#
這里自身就消耗了4G空間(Used那列),因為這里不存在文件,所以空間節省率為99%
(Space saving%那列)。