在LVM中設置精簡資源調配卷(第四部分)
邏輯卷管理有許多特性,比如像快照和精簡資源調配。在先前(第三部分中),我們已經介紹了如何為邏輯卷創建快照。在本文中,我們將了解如何在LVM中設置精簡資源調配。
在LVM中設置精簡資源調配
精簡資源調配是什麼?
精簡資源調配用於LVM以在精簡池中創建虛擬磁碟。我們假定我伺服器上有15GB的存儲容量,而我已經有2個客戶各自佔去了5GB存儲空間。你是第三個客戶,你也請求5GB的存儲空間。在以前,我們會提供整個5GB的空間(富卷)。然而,你可能只使用5GB中的2GB,其它3GB以後再去填滿它。
而在精簡資源調配中我們所做的是,在其中一個大卷組中定義一個精簡池,再在精簡池中定義一個精簡卷。這樣,不管你寫入什麼文件,它都會保存進去,而你的存儲空間看上去就是5GB。然而,這所有5GB空間不會全部鋪滿整個硬碟。對其它客戶也進行同樣的操作,就像我說的,那兒已經有兩個客戶,你是第三個客戶。
那麼,讓我們想想,我到底為客戶分配了總計多少GB的空間呢?所有15GB的空間已經全部分配完了,如果現在有某個人來問我是否能提供5GB空間,我還可以分配給他么?答案是「可以」。在精簡資源調配中,我可以為第四位客戶分配5GB空間,即使我已經把那15GB的空間分配完了。
警告:從那15GB空間中,如果我們對資源調配超過15GB了,那就是過度資源調配了。
它是怎麼工作的?我們又是怎樣為客戶提供存儲空間的?
我已經提供給你5GB空間,但是你可能只用了2GB,而其它3GB還空閑著。在富資源調配中,我們不能這麼做,因為它一開始就分配了整個空間。
在精簡資源調配中,如果我為你定義了5GB空間,它就不會在定義卷時就將整個磁碟空間全部分配,它會根據你的數據寫入而增長,希望你看懂了!跟你一樣,其它客戶也不會使用全部卷,所以還是有機會為一個新客戶分配5GB空間的,這稱之為過度資源調配。
但是,必須對各個卷的增長情況進行監控,否則結局會是個災難。在過度資源調配完成後,如果所有4個客戶都盡量寫入數據到磁碟,你將碰到問題了。因為這個動作會填滿15GB的存儲空間,甚至溢出,從而導致這些卷下線。
前置閱讀
我的伺服器設置
操作系統 — 安裝有LVM的CentOS 6.5
伺服器IP — 192.168.0.200
步驟1: 設置精簡池和卷
理論講太多了,讓我們還是來點實際的吧,我們一起來設置精簡池和精簡卷。首先,我們需要一個大尺寸的卷組。這裡,我創建了一個15GB的卷組用於演示。現在,用下面的命令來列出卷組。
# vgcreate -s 32M vg_thin /dev/sdb1
列出卷組
接下來,在創建精簡池和精簡卷之前,檢查邏輯卷有多少空間可用。
# vgs
# lvs
檢查邏輯卷
我們可以在上面的lvs命令輸出中看到,只顯示了一些默認邏輯用於文件系統和交換分區。
創建精簡池
使用以下命令在卷組(vg_thin)中創建一個15GB的精簡池。
# lvcreate -L 15G --thinpool tp_tecmint_pool vg_thin
- -L – 卷組大小
- –thinpool – 創建精簡池
- tp_tecmint_poolThin - 精簡池名稱
- vg_thin – 我們需要創建精簡池的卷組名稱
創建精簡池
使用『lvdisplay』命令來查看詳細信息。
# lvdisplay vg_thin/tp_tecmint_pool
邏輯卷信息
這裡,我們還沒有在該精簡池中創建虛擬精簡卷。在圖片中,我們可以看到分配的精簡池數據為0.00%。
創建精簡卷
現在,我們可以在帶有-V(Virtual)選項的『lvcreate』命令的幫助下,在精簡池中定義精簡卷了。
# lvcreate -V 5G --thin -n thin_vol_client1 vg_thin/tp_tecmint_pool
我已經在我的vg_thin卷組中的tp_tecmint_pool內創建了一個精簡虛擬卷,取名為thin_vol_client1。現在,使用下面的命令來列出邏輯卷。
# lvs
列出邏輯卷
剛才,我們已經在上面創建了精簡卷,這就是為什麼沒有數據,顯示為0.00%M。
好吧,讓我為其它2個客戶再創建2個精簡卷。這裡,你可以看到在精簡池(tp_tecmint_pool)下有3個精簡卷了。所以,從這一點上看,我們開始明白,我已經使用所有15GB的精簡池。
創建文件系統
現在,使用下面的命令為這3個精簡卷創建掛載點並掛載,然後拷貝一些文件進去。
# mkdir -p /mnt/client1 /mnt/client2 /mnt/client3
列出創建的目錄。
# ls -l /mnt/
創建掛載點
使用『mkfs』命令為這些創建的精簡卷創建文件系統。
# mkfs.ext4 /dev/vg_thin/thin_vol_client1 && mkfs.ext4 /dev/vg_thin/thin_vol_client2 && mkfs.ext4 /dev/vg_thin/thin_vol_client3
創建文件系統
使用『mount』命令來掛載所有3個客戶卷到創建的掛載點。
# mount /dev/vg_thin/thin_vol_client1 /mnt/client1/ && mount /dev/vg_thin/thin_vol_client2 /mnt/client2/ && mount /dev/vg_thin/thin_vol_client3 /mnt/client3/
使用『df』命令來列出掛載點。
# df -h
顯示掛載點
這裡,我們可以看到所有3個客戶卷已經掛載了,而每個客戶卷只使用了3%的數據空間。那麼,讓我們從桌面添加一些文件到這3個掛載點,以填充一些空間。
添加文件到卷
現在列出掛載點,並查看每個精簡卷使用的空間,然後列出精簡池來查看池中已使用的大小。
# df -h
# lvdisplay vg_thin/tp_tecmint_pool
檢查掛載點大小
檢查精簡池大小
上面的命令顯示了3個掛載點及其使用大小百分比。
13% of datas used out of 5GB for client1
29% of datas used out of 5GB for client2
49% of datas used out of 5GB for client3
在查看精簡池時,我們看到總共只有30%的數據被寫入,這是上面3個客戶虛擬卷的總使用量。
過度資源調配
現在,第四個客戶來申請5GB的存儲空間。我能給他嗎?因為我已經把15GB的池分配給了3個客戶。能不能再給另外一個客戶分配5GB的空間呢?可以,這完全可能。在我們使用過度資源調配時,就可以實現。過度資源調配可以給我們比我們所擁有的更大的空間。
讓我來為第四位客戶創建5GB的空間,然後再驗證一下大小吧。
# lvcreate -V 5G --thin -n thin_vol_client4 vg_thin/tp_tecmint_pool
# lvs
創建精簡存儲
在精簡池中,我只有15GB大小的空間,但是我已經在精簡池中創建了4個卷,其總量達到了20GB。如果4個客戶都開始寫入數據到他們的卷,並將空間填滿,到那時我們將面對嚴峻的形勢。如果不填滿空間,那不會有問題。
現在,我已經創建在thin_vol_client4中創建了文件系統,然後掛載到了/mnt/client4下,並且拷貝了一些文件到裡頭。
# lvs
驗證精簡存儲
我們可以在上面的圖片中看到,新創建的client 4總計使用空間達到了89.34%,而精簡池的已用空間達到了59.19。如果所有這些用戶不再過度對卷寫入,那麼它就不會溢出,下線。要避免溢出的話,我們需要擴展精簡池大小。
重要:精簡池只是一個邏輯卷,因此,如果我們需要對其進行擴展,我們可以使用和擴展邏輯卷一樣的命令,但我們不能縮減精簡池大小。
# lvextend
這裡,我們可以看到怎樣來擴展邏輯精簡池(tptecmintpool)。
# lvextend -L +15G /dev/vg_thin/tp_tecmint_pool
擴展精簡存儲
接下來,列出精簡池大小。
# lvs
驗證精簡存儲
前面,我們的tptecmintpool大小為15GB,而在對第四個精簡卷進行過度資源配置後達到了20GB。現在,它擴展到了30GB,所以我們的過度資源配置又回歸常態,而精簡卷也不會溢出下線了。通過這種方式,我們可以添加更多的精簡卷到精簡池中。
在本文中,我們已經了解了怎樣來使用一個大尺寸的卷組創建一個精簡池,以及怎樣通過過度資源配置在精簡池中創建精簡卷和擴著精簡池。在下一篇文章中,我們將介紹怎樣來移除邏輯卷。
via: http://www.tecmint.com/setup-thin-provisioning-volumes-in-lvm/
作者:Babin Lonston 譯者:GOLinux 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive