Centos8中安裝并配置VDO來(lái)優(yōu)化存儲(chǔ)空間

虛擬數(shù)據(jù)優(yōu)化器(VDO)是一種塊虛擬化技術(shù)诗力,可提供透明的數(shù)據(jù)重復(fù)刪除功能。通過(guò)消除冗余的數(shù)據(jù)塊,VDO可以大大減少實(shí)際使用的磁盤(pán)容量患蹂。

VDO由兩個(gè)內(nèi)核模塊和兩個(gè)命令組成:

由下面兩個(gè)內(nèi)核模塊組成:

kvdo - 該模塊加載到設(shè)備管理器層夭禽,提供用于重復(fù)數(shù)據(jù)刪除的塊存儲(chǔ)卷霞掺。

uds - 該模塊負(fù)責(zé)與VDO磁盤(pán)上的通用的重復(fù)數(shù)據(jù)刪除索引進(jìn)行通信。

包括兩個(gè)命令行工具:

vdo - 用于創(chuàng)建讹躯,刪除菩彬,啟動(dòng)和停止VDO卷,以及執(zhí)行其他配置操作潮梯。

vdostats - 用于報(bào)告VDO卷的各個(gè)方面骗灶,包括有效的減少和物理卷的利用率。

系統(tǒng)環(huán)境

Centos8

安裝VDO

下面命令安裝vdo和相關(guān)依賴秉馏,安裝完成之后重啟系統(tǒng):

[root@localhost ~]# yum -y install vdo

[root@localhost ~]# reboot

創(chuàng)建一個(gè)VDO設(shè)備

確保有一個(gè)空余磁盤(pán)或分區(qū)可供VDO使用耙旦。盡管可以在LVM邏輯卷上面創(chuàng)建VDO卷,但是重新引導(dǎo)系統(tǒng)時(shí)會(huì)出現(xiàn)引導(dǎo)順序問(wèn)題萝究。所以再裸盤(pán)上面創(chuàng)建vdo卷之后在它之上創(chuàng)建LVM邏輯卷免都。

下面使用一塊20GB的磁盤(pán)锉罐,/dev/sda做vdo卷

下面創(chuàng)建vdo卷:

[root@localhost ~]# vdo create --name=vdolvm --device /dev/sda --vdoLogicalSize 60G --writePolicy async

Creating VDO vdolvm

? ? ? The VDO volume can address 16 GB in 8 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 vdolvm

Starting compression on VDO vdolvm

VDO instance 0 volume is ready at /dev/mapper/vdolvm

下面分解一下命令,看看所使用的選項(xiàng):

--device - 指定在哪個(gè)硬盤(pán)上創(chuàng)建vdo卷

--vdoLogicalSize - 這里我們指定了容量大小為60G绕娘,比我們實(shí)際磁盤(pán)20G大了許多脓规。假設(shè)我們將從重復(fù)數(shù)據(jù)刪除中至少得到3:1的減少,對(duì)于大多數(shù)的數(shù)據(jù)险领,這是相當(dāng)保守的抖拦,但如果你的數(shù)據(jù)沒(méi)有很多重復(fù)的,那么比率應(yīng)該是不同的舷暮。日志文件和其他純文本文件通程铮可以很好地進(jìn)行重復(fù)數(shù)據(jù)刪除,可能會(huì)得到10:1甚至更高的重復(fù)數(shù)據(jù)刪除率下面。但是二進(jìn)制文件复颈,如視頻、音頻或壓縮包沥割,將遠(yuǎn)遠(yuǎn)低于3:1耗啦,甚至在某些情況下1:1。這種情況下不建議使用vdo卷机杜。

--writePolicy - vdo有三種寫(xiě)策略:sync:只有在數(shù)據(jù)寫(xiě)入物理設(shè)備后帜讲,才會(huì)確認(rèn)對(duì)VDO卷的寫(xiě)入。async:在數(shù)據(jù)寫(xiě)入緩存后被確認(rèn)椒拗。如果在設(shè)備故障或掉電之前沒(méi)有刷新緩存纺棺,可能會(huì)導(dǎo)致數(shù)據(jù)丟失兵琳。auto:在這種默認(rèn)模式下宾舅,VDO將檢查存儲(chǔ)設(shè)備并確定它是否支持刷新糊识。如果是這樣,VDO將使用異步模式堵未。如果沒(méi)有腋舌,它將使用同步模式。

查看新建VDO卷相關(guān)的信息

正如我們?cè)谏弦徊降妮敵鲋锌吹降纳罚琕DO創(chuàng)建了一個(gè)名為/dev/mapper/vdolvm的新dm設(shè)備块饺。當(dāng)我們創(chuàng)建lvm卷組時(shí),這就是我們將要使用的設(shè)備雌芽。

[root@localhost ~]# ll /dev/mapper/vdolvm

lrwxrwxrwx 1 root root 7 Mar? 4 13:31 /dev/mapper/vdolvm -> ../dm-2

讓我們看看使用vdostats可以獲得有關(guān)vdo卷的什么樣的信息:

[root@localhost ~]# vdostats --hu

Device? ? ? ? ? ? ? ? ? ? Size? ? ? Used Available Use% Space saving%

/dev/mapper/vdolvm? ? ? 20.0G? ? ? 4.0G? ? 16.0G? 20%? ? ? ? ? N/A

由于我們尚未將任何數(shù)據(jù)寫(xiě)入該卷授艰,因此Space saving%字段為N/A。稍后我們將寫(xiě)一些數(shù)據(jù)時(shí)膘怕,在此處看到更多有用的信息想诅。

可以看到上圖中,我們還沒(méi)有寫(xiě)任何數(shù)據(jù)岛心,但是已經(jīng)有4GB来破,20%的空間正在使用中了!這是因?yàn)椤巴ㄓ弥貜?fù)數(shù)據(jù)刪除索引”已被寫(xiě)入磁盤(pán)忘古。這基本上是一個(gè)數(shù)據(jù)庫(kù)徘禁,用于記錄slab指紋及其位置。這就是使重復(fù)數(shù)據(jù)刪除成為可能的原因髓堪。

將VDO卷作為普通磁盤(pán)設(shè)備進(jìn)行設(shè)置

現(xiàn)在我們已經(jīng)創(chuàng)建了VDO設(shè)備送朱,我們可以對(duì)其進(jìn)行分區(qū)并格式化,或者在這個(gè)vod卷上面創(chuàng)建lvm邏輯卷干旁。下面我們創(chuàng)建邏輯卷:

# 創(chuàng)建物理卷

[root@localhost ~]# pvcreate /dev/mapper/vdolvm

? Physical volume "/dev/mapper/vdolvm" successfully created.

# 創(chuàng)建卷組vdo_vg

[root@localhost ~]# vgcreate vdo_vg /dev/mapper/vdolvm

? Volume group "vdo_vg" successfully created

# 查看vdo_vg卷組的信息

[root@localhost ~]# vgdisplay vdo_vg

? --- Volume group ---

? VG Name? ? ? ? ? ? ? vdo_vg

? 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? ? ? ? ? ? ? <60.00 GiB

? PE Size? ? ? ? ? ? ? 4.00 MiB

? Total PE? ? ? ? ? ? ? 15359

? Alloc PE / Size? ? ? 0 / 0?

? Free? PE / Size? ? ? 15359 / <60.00 GiB

? VG UUID? ? ? ? ? ? ? qfPiH6-eMCU-Z6kr-eeCu-jd0J-8lmf-49daZX

從上面可以看到驶沼,lvm認(rèn)為我們的基礎(chǔ)磁盤(pán)為120GB,盡管我們知道它只有40GB争群。由于LVM不知道VDO后端磁盤(pán)的大小回怜。

現(xiàn)在,讓我們創(chuàng)建幾個(gè)邏輯卷吧:

[root@localhost ~]# lvcreate -n vdo_lv01 -L 15G vdo_vg

[root@localhost ~]# lvcreate -L 15G -n vdo_lv02 vdo_vg

[root@localhost ~]# lvcreate -L 15G -n vdo_lv03 vdo_vg

# 查看創(chuàng)建好的邏輯卷

[root@localhost ~]# lvs -o +devices

創(chuàng)建掛載點(diǎn)并掛載文件系統(tǒng)

通常换薄,創(chuàng)建文件系統(tǒng)后玉雾,它將在設(shè)備上運(yùn)行Trim操作。使用VDO時(shí)轻要,這不是理想的選擇复旬,因?yàn)榇疟P(pán)容量是按需分配的。因此冲泥,我們要告訴mkfs在文件系統(tǒng)創(chuàng)建過(guò)程中不要丟棄塊驹碍。對(duì)于XFS,請(qǐng)使用-K選項(xiàng)凡恍。對(duì)于EXT4幸冻,請(qǐng)使用-E nodiscard。下面使用了一個(gè)for循環(huán)咳焚,將三個(gè)邏輯卷格式化為XFS文件系統(tǒng):

[root@localhost ~]# for i in `seq 1 3`; do mkfs.xfs -K /dev/vdo_vg/vdo_lv0$i ; done

meta-data=/dev/vdo_vg/vdo_lv01? isize=512? ? agcount=4, agsize=983040 blks

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? attr=2, projid32bit=1

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? crc=1? ? ? ? finobt=1, sparse=1, rmapbt=0

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? reflink=1

data? ? =? ? ? ? ? ? ? ? ? ? ? bsize=4096? blocks=3932160, imaxpct=25

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sunit=0? ? ? swidth=0 blks

naming? =version 2? ? ? ? ? ? ? bsize=4096? ascii-ci=0, ftype=1

log? ? ? =internal log? ? ? ? ? bsize=4096? blocks=2560, version=2

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? sunit=1 blks, lazy-count=1

realtime =none? ? ? ? ? ? ? ? ? extsz=4096? blocks=0, rtextents=0

meta-data=/dev/vdo_vg/vdo_lv02? isize=512? ? agcount=4, agsize=983040 blks

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? attr=2, projid32bit=1

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? crc=1? ? ? ? finobt=1, sparse=1, rmapbt=0

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? reflink=1

data? ? =? ? ? ? ? ? ? ? ? ? ? bsize=4096? blocks=3932160, imaxpct=25

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sunit=0? ? ? swidth=0 blks

naming? =version 2? ? ? ? ? ? ? bsize=4096? ascii-ci=0, ftype=1

log? ? ? =internal log? ? ? ? ? bsize=4096? blocks=2560, version=2

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? sunit=1 blks, lazy-count=1

realtime =none? ? ? ? ? ? ? ? ? extsz=4096? blocks=0, rtextents=0

meta-data=/dev/vdo_vg/vdo_lv03? isize=512? ? agcount=4, agsize=983040 blks

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? attr=2, projid32bit=1

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? crc=1? ? ? ? finobt=1, sparse=1, rmapbt=0

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? reflink=1

data? ? =? ? ? ? ? ? ? ? ? ? ? bsize=4096? blocks=3932160, imaxpct=25

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sunit=0? ? ? swidth=0 blks

naming? =version 2? ? ? ? ? ? ? bsize=4096? ascii-ci=0, ftype=1

log? ? ? =internal log? ? ? ? ? bsize=4096? blocks=2560, version=2

? ? ? ? =? ? ? ? ? ? ? ? ? ? ? sectsz=4096? sunit=1 blks, lazy-count=1

realtime =none? ? ? ? ? ? ? ? ? extsz=4096? blocks=0, rtextents=0

當(dāng)我們將新文件系統(tǒng)掛載到掛載點(diǎn)時(shí)洽损,我們要告訴XFS放棄塊,因?yàn)檫@將大大加快文件刪除的速度革半。

[root@localhost ~]# mkdir -p /data/{01..03}

[root@localhost ~]# for i in `seq 1 3`; do mount -o discard /dev/vdo_vg/vdo_lv0$i /data/0$i; done

現(xiàn)在碑定,我們向設(shè)備寫(xiě)入了少量數(shù)據(jù),我們可以再次檢查VDO卷以查看情況是否已更改又官。

[root@localhost ~]# vdostats --hu

Device? ? ? ? ? ? ? ? ? ? Size? ? ? Used Available Use% Space saving%

/dev/mapper/vdolvm? ? ? 20.0G? ? ? 4.0G? ? 16.0G? 20%? ? ? ? ? 86%

設(shè)置為開(kāi)機(jī)啟動(dòng)

下面將三個(gè)邏輯卷設(shè)置為開(kāi)機(jī)啟動(dòng)延刘,需要在fstab文件中添加x-systemd.device-timeout=0和x-systemd.requires=vdo.service。

使用blkid查看這三個(gè)邏輯卷的UUID六敬。

使用上面獲取到的UUID碘赖,添加在/etc/fstab文件中:

[root@localhost systemd]# vim /etc/fstab

UUID="bd2c1c61-4656-4065-b5a0-3ca53ef0f949" /data/01? xfs? defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0

UUID="1e53579b-f1da-4f77-80e6-d61a40515525" /data/02? xfs? defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0

UUID="d41bf7e2-bf75-4db7-b323-a923375f6a6e" /data/03? xfs? defaults,x-systemd.device-timeout=0,x-systemd.requires=vdo.service 0 0

總結(jié)

虛擬數(shù)據(jù)優(yōu)化器(VDO)是一種塊虛擬化技術(shù),可提供透明的數(shù)據(jù)重復(fù)刪除功能。通過(guò)消除冗余的數(shù)據(jù)塊普泡,VDO可以大大減少實(shí)際使用的磁盤(pán)容量播掷。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撼班,隨后出現(xiàn)的幾起案子歧匈,更是在濱河造成了極大的恐慌,老刑警劉巖砰嘁,帶你破解...
    沈念sama閱讀 211,817評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件件炉,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡矮湘,警方通過(guò)查閱死者的電腦和手機(jī)斟冕,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)缅阳,“玉大人磕蛇,你說(shuō)我怎么就攤上這事∪保” “怎么了孤里?”我有些...
    開(kāi)封第一講書(shū)人閱讀 157,354評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)橘洞。 經(jīng)常有香客問(wèn)我捌袜,道長(zhǎng),這世上最難降的妖魔是什么炸枣? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,498評(píng)論 1 284
  • 正文 為了忘掉前任虏等,我火速辦了婚禮,結(jié)果婚禮上适肠,老公的妹妹穿的比我還像新娘霍衫。我一直安慰自己,他們只是感情好侯养,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,600評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布敦跌。 她就那樣靜靜地躺著,像睡著了一般逛揩。 火紅的嫁衣襯著肌膚如雪柠傍。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 49,829評(píng)論 1 290
  • 那天辩稽,我揣著相機(jī)與錄音惧笛,去河邊找鬼。 笑死逞泄,一個(gè)胖子當(dāng)著我的面吹牛患整,可吹牛的內(nèi)容都是我干的拜效。 我是一名探鬼主播,決...
    沈念sama閱讀 38,979評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼各谚,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼紧憾!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起嘲碧,我...
    開(kāi)封第一講書(shū)人閱讀 37,722評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤稻励,失蹤者是張志新(化名)和其女友劉穎父阻,沒(méi)想到半個(gè)月后愈涩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,189評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡加矛,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,519評(píng)論 2 327
  • 正文 我和宋清朗相戀三年履婉,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片斟览。...
    茶點(diǎn)故事閱讀 38,654評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡毁腿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出苛茂,到底是詐尸還是另有隱情已烤,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布妓羊,位于F島的核電站胯究,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏躁绸。R本人自食惡果不足惜裕循,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,940評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望净刮。 院中可真熱鬧剥哑,春花似錦、人聲如沸淹父。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,762評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)暑认。三九已至困介,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間穷吮,已是汗流浹背逻翁。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留捡鱼,地道東北人八回。 一個(gè)月前我還...
    沈念sama閱讀 46,382評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親缠诅。 傳聞我的和親對(duì)象是個(gè)殘疾皇子溶浴,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,543評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容