PVE基于raid0創(chuàng)建LVM-thin并添加固態(tài)磁盤作為緩存池

PVE基于raid0創(chuàng)建LVM-thin并添加固態(tài)磁盤作為緩存池

關(guān)鍵詞:PVE | Proxmox VE | RAID | RAID0 | LVM | LVM-thin | 緩存 | cache | HDD | SSD

前言

最近在查閱資料各種資料掏父,看看PVE單服務(wù)器系統(tǒng)中,能用什么樣的方式,提升LVM-thin存儲的IO性能庆揪。有多服務(wù)器條件的當(dāng)然是上CEPH了届囚,沒有多服務(wù)器的條件而內(nèi)存又比較充足的情況下使用ZFS也不錯艘包。但我兩種條件都不具備。

作為垃圾佬伙单,怎么舍得再額外購置硬件多花錢呢书妻。垃圾佬當(dāng)然不愿意再購買新硬盤了船响,掏出多年前給臺式機(jī)裝系統(tǒng)的兩塊SATA接口的固態(tài)硬盤躬拢,以及以前臺式機(jī)用的兩塊機(jī)械硬盤,準(zhǔn)備將兩塊SSD組raid0后作為緩存池见间,為兩塊HDD以raid0組后創(chuàng)建的LVM-thin提供讀寫緩存服務(wù)聊闯。

硬盤類型 型號 硬盤大小 通電時(shí)長 出廠時(shí)間
SSD Samsung 840 EVO 120G 28744h 2014年3月
SSD Samsung 850 EVO 120G 22981h 2015年5月
HDD WD20EZRX 2T 55700h 2013年2月
HDD HGST HUA723020ALA640 2T 19267h 2013年12月

和我的使用場景、硬件條件一模一樣幾乎是不可能的米诉,也就幾乎不可能有人能夠完全照搬我的操作過程菱蔬,所以本文也僅是提供一種思路,LVM依靠它已經(jīng)提供的各種功能史侣,可以實(shí)現(xiàn)各種你想得到想不到的玩法拴泌。這里舉三個(gè)例子:

  • 2塊2T的HDD、1塊3T的HDD惊橱,3塊HDD分別創(chuàng)建一個(gè)2T的分區(qū)蚪腐,共3個(gè)2TiB的分區(qū)組建6T大小3個(gè)PV的raid0的LVM或LVM-thin;再將3T盤沒有用到的1T空間單獨(dú)再創(chuàng)建個(gè)dir存儲税朴,用于保存?zhèn)浞菸募丶尽㈢R像文件等。

  • 1塊256G的nvme磁盤正林,安裝系統(tǒng)已經(jīng)占用了50G泡一,余下的空間大又不大,小又不小觅廓,單獨(dú)用好像也干不了什么太多的事鼻忠。系統(tǒng)已經(jīng)默認(rèn)創(chuàng)建了local-lvm,但是可以將local-lvm刪除杈绸,然后將產(chǎn)生的約200G空間作為其他HDD磁盤的緩存池帖蔓,提升IO性能。

  • 4塊4T的HDD組raid5后再轉(zhuǎn)換為LVM蝇棉,然后一塊256G的nvme磁盤作為其緩存池讨阻。

有關(guān)概念

PV(physical volume):物理卷芥永,在邏輯卷管理系統(tǒng)最底層篡殷,可為整個(gè)物理硬盤或?qū)嶋H物理硬盤上的分區(qū)。

VG(volume group):卷組埋涧,建立在物理卷上板辽,一卷組中至少要包括一物理卷,卷組建立后可動態(tài)的添加卷到卷組中棘催,一個(gè)邏輯卷管理系統(tǒng)工程中可有多個(gè)卷組劲弦。

LV(logical volume):邏輯卷,建立在卷組基礎(chǔ)上醇坝,卷組中未分配空間可用于建立新的邏輯卷邑跪,邏輯卷建立后可以動態(tài)擴(kuò)展和縮小空間。

PE(physical extent):物理區(qū)域,是物理卷中可用于分配的最小存儲單元(本文采用默認(rèn)值4MiB)画畅,物理區(qū)域大小在建立卷組時(shí)指定砸琅,一旦確定不能更改,同一卷組所有物理卷的物理區(qū)域大小需一致轴踱,新的PV加入到VG后症脂,PE的大小自動更改為VG中定義的PE大小。

LE(logical extent):邏輯區(qū)域淫僻,是邏輯卷中可用于分配的最小存儲單元诱篷,邏輯區(qū)域的大小取決于邏輯卷所在卷組中的物理區(qū)域的大小。

網(wǎng)上有很多有關(guān)概念的詳細(xì)介紹雳灵,這里不再多說棕所。

創(chuàng)建具有緩存池的LVM-thin存儲

這里需要大致先說明一下我的思路,我打算將HDD全部空間組raid0细办,然后用作數(shù)據(jù)LV橙凳;將SSD全部空間組raid0,然后用作元數(shù)據(jù)LV和緩存池LV笑撞,最終的存儲類型是LVM-thin岛啸。分別如下:

  • 數(shù)據(jù)LV:也就是存儲LVM-thin原始數(shù)據(jù)的LV,所有數(shù)據(jù)最終需要寫入的地方茴肥,我將在HDD上創(chuàng)建它坚踩。

  • 元數(shù)據(jù)LV:LVM-thin的特色,相比LVM直接按卷大小預(yù)先分配所需空間瓤狐,LVM-thin則是需要向卷內(nèi)寫入數(shù)據(jù)時(shí)才按實(shí)際寫入數(shù)據(jù)量大小分配所需空間瞬铸。LVM-thin需要用來索引實(shí)際數(shù)據(jù)的元數(shù)據(jù)metadata空間,就是元數(shù)據(jù)LV础锐。為了提升數(shù)據(jù)索引速度嗓节,我將在SSD上創(chuàng)建它。

  • 緩存池LV:為了提升訪問數(shù)據(jù)LV中數(shù)據(jù)的IO速度皆警,使用SSD為它創(chuàng)建緩存池拦宣,這樣可以將經(jīng)常讀取的數(shù)據(jù)加載到緩存池中,后續(xù)再讀取這些數(shù)據(jù)會提升IO信姓;同時(shí)要寫入數(shù)據(jù)時(shí)也先寫入緩存池鸵隧,寫入也可以更快。緩存池LV也分為數(shù)據(jù)LV和元數(shù)據(jù)LV兩部分意推。

    • 緩存池?cái)?shù)據(jù)LV:臨時(shí)存儲緩存數(shù)據(jù)的地方豆瘫,我將在SSD上創(chuàng)建它。

    • 緩存池元數(shù)據(jù)LV:索引緩存數(shù)據(jù)的元數(shù)據(jù)存儲的地方菊值,我也將在SSD上創(chuàng)建它外驱。

  • 還有額外的備用池元數(shù)據(jù)LV育灸,后文遇到時(shí)再作介紹。

如果直接在PVE的WEBUI中來創(chuàng)建昵宇,無法實(shí)現(xiàn)我所設(shè)想的思路描扯,所以只能通過命令行來創(chuàng)建,然后再經(jīng)過多次轉(zhuǎn)換趟薄,來轉(zhuǎn)換為我所需要的LVM-thin绽诚。

先看看磁盤的識別情況

lsblk

從輸出可見,/dev/sdb和/dev/sdc是兩塊HDD杭煎,/dev/sdd和/dev/sde是兩塊SSD:

sda            8:0    0    32G  0 disk 
├─sda1         8:1    0  1007K  0 part 
├─sda2         8:2    0   512M  0 part 
└─sda3         8:3    0  31.5G  0 part 
  ├─pve-swap 253:0    0     2G  0 lvm  [SWAP]
  └─pve-root 253:1    0  29.5G  0 lvm  /
sdb            8:16   0   1.8T  0 disk 
sdc            8:32   0   1.8T  0 disk 
sdd            8:48   0 111.8G  0 disk 
sde            8:64   0 111.8G  0 disk

對磁盤初始化

給2塊SSD恩够、2塊HDD磁盤全部以GPT進(jìn)行初始化,每個(gè)磁盤只分一個(gè)區(qū)羡铲,以下以/dev/sdb為例(不分區(qū)直接創(chuàng)建整盤PV也可以):

## 進(jìn)入fdisk命令行
fdisk /dev/sdb

## 分別按g蜂桶、n,sector采用默認(rèn)的值直接回車也切,最后 wq 保存并退出
Command (m for help): g
Created a new GPT disklabel (GUID: 798FC3B9-A99E-B245-9A2E-C02B9A2D0836).

Command (m for help): n
Partition number (1-128, default 1): 
First sector (2048-41943006, default 2048): 
Last sector, +/-sectors or +/-size{K,M,G,T,P} (2048-41943006, default 41943006): 

Created a new partition 1 of type 'Linux filesystem' and of size 20 GiB.

Command (m for help): wq
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.

全部分好區(qū)再輸入lsblk檢查一下:

lsblk

輸出:

NAME         MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda            8:0    0    32G  0 disk 
├─sda1         8:1    0  1007K  0 part 
├─sda2         8:2    0   512M  0 part 
└─sda3         8:3    0  31.5G  0 part 
  ├─pve-swap 253:0    0     2G  0 lvm  [SWAP]
  └─pve-root 253:1    0  29.5G  0 lvm  /
sdb            8:16   0   1.8T  0 disk 
└─sdb1         8:17   0   1.8T  0 part 
sdc            8:32   0   1.8T  0 disk 
└─sdc1         8:33   0   1.8T  0 part 
sdd            8:48   0 111.8G  0 disk 
└─sdd1         8:49   0 111.8G  0 part 
sde            8:64   0 111.8G  0 disk 
└─sde1         8:65   0 111.8G  0 part

創(chuàng)建PV

pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

輸出:

  Physical volume "/dev/sdb1" successfully created.
  Physical volume "/dev/sdc1" successfully created.
  Physical volume "/dev/sdd1" successfully created.
  Physical volume "/dev/sde1" successfully created.

創(chuàng)建VG

采用默認(rèn)的4M大小的PE扑媚,創(chuàng)建名叫hybrid的VG:

vgcreate hybrid /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

輸出:

  Volume group "hybrid" successfully created

創(chuàng)建數(shù)據(jù)LV

給兩塊HDD組raid0,用完它們的全部空間創(chuàng)建名叫data的數(shù)據(jù)LV:

lvcreate --type raid0 --name data --extents 100%FREE --stripesize 256k hybrid /dev/sdb1 /dev/sdc1

輸出:

  Logical volume "data" created.

RAID的Stripe Size大小可以設(shè)置為8KiB雷恃、16KiB疆股、32KiB、64KiB倒槐、128KiB和256KiB旬痹,如不設(shè)置此參數(shù)則默認(rèn)采用64KiB。

對于數(shù)據(jù)庫應(yīng)用讨越,Stripe Size在4-16KiB之間被證明效果比較好两残;對于Web服務(wù)器以及文件打印服務(wù)器,建議Stripe Size設(shè)置為16-64KiB把跨;對于大文件環(huán)境人弓,比如流媒體,建議Stripe Size設(shè)置為128KiB以上着逐。

我的主要是大文件崔赌,所以我設(shè)置Stripe Size為256KiB。并且我的使用場景下滨嘱,主要目的是提升IO峰鄙,反而對數(shù)據(jù)損壞這個(gè)情況不關(guān)心浸间,壞了就壞了太雨,所以我采用的是raid0,和我使用場景不一致的不要采用raid0以及256KiB的Stripe Size魁蒜。

創(chuàng)建元數(shù)據(jù)LV和緩存池元數(shù)據(jù)LV

  • 我最終要創(chuàng)建的存儲類型是LVM-thin囊扳,這種薄存儲類型需要另外的空間存儲元數(shù)據(jù)metadata吩翻,如果直接在HDD上創(chuàng)建LVM-thin,系統(tǒng)會自動在HDD上創(chuàng)建其對應(yīng)的元數(shù)據(jù)LV锥咸。但我們現(xiàn)在創(chuàng)建的是raid0類型的LVM狭瞎,默認(rèn)不帶元數(shù)據(jù)LV,并且另一方面搏予,我希望能在SSD上創(chuàng)建元數(shù)據(jù)所需要的LV熊锭,這樣還可以提升數(shù)據(jù)索引速度,所以我需要手動在SSD上創(chuàng)建最終的LVM-thin存儲所需要的元數(shù)據(jù)LV雪侥。

  • 并且碗殷,我們后面將SSD作為緩存池cachepool時(shí),緩存池它本身也需要存儲元數(shù)據(jù)速缨,所以這里也需要為緩存池創(chuàng)建緩存池元數(shù)據(jù)LV锌妻。

  • 另外,我有兩塊SSD旬牲,我希望能最大化的提升IO仿粹,所以這兩塊SSD之間也需要組raid0。

首先為最終要創(chuàng)建的LVM-thin存儲創(chuàng)建名叫meta_thinpool的元數(shù)據(jù)LV原茅,創(chuàng)建時(shí)它默認(rèn)是數(shù)據(jù)LV大小的0.1%吭历,我取約0.3%,創(chuàng)建11.5GiB的元數(shù)據(jù)LV(不能超過15.81GiB)擂橘。

存儲元數(shù)據(jù)的raid0組Stripe Size我就保持默認(rèn)的64KiB吧(不添加--stripesize即使用默認(rèn)值)毒涧。

lvcreate --type raid0 --name meta_thinpool --size 11.5G hybrid /dev/sdd1 /dev/sde1

輸出

  Using default stripesize 64.00 KiB.
  Logical volume "meta_thinpool" created.

再為后面馬上要創(chuàng)建的的緩存池LV創(chuàng)建名叫meta_cachepool的緩存池元數(shù)據(jù)LV,raid0組也使用默認(rèn)的Stripe Size贝室,大小就取528M(大約也是緩存池LV的0.3%)吧契讲。

lvcreate --type raid0 --name meta_cachepool --size 528M hybrid /dev/sdd1 /dev/sde1

有關(guān)元數(shù)據(jù)LV大小應(yīng)該設(shè)置多大,可以查看官方建議:lvmthin.7.en#Size_of_pool_metadata_LV

輸出

  Using default stripesize 64.00 KiB.
  Logical volume "meta_cachepool" created.

創(chuàng)建緩存池?cái)?shù)據(jù)LV

在SSD上已經(jīng)創(chuàng)建好了兩個(gè)metadata的LV滑频,占了一點(diǎn)空間捡偏,為了最大化利用磁盤空間,先把兩塊SSD余下的空間全部分配給緩存池?cái)?shù)據(jù)LV峡迷。不過如果后續(xù)進(jìn)行l(wèi)vconvert轉(zhuǎn)換存儲類型操作時(shí)银伟,如未設(shè)置關(guān)閉自動創(chuàng)建備用池元數(shù)據(jù)LV(即命令中添加--poolmetadataspare n,在PVE的WEBUI中創(chuàng)建LVM-thin绘搞,系統(tǒng)也會默認(rèn)創(chuàng)建備用池元數(shù)據(jù)LV)彤避,在進(jìn)行轉(zhuǎn)換操作時(shí)就需要額外的等同于hybrid/meta_thinpool大小(我這里就是11.5GiB)的空間夯辖。我打算讓其自動創(chuàng)建備用池元數(shù)據(jù)LV琉预,所以我需要預(yù)留11.5GiB(即2944個(gè)PE)。

如果已經(jīng)在LVM-thin創(chuàng)建了虛擬磁盤蒿褂,沒有任何剩余空間的話圆米,后續(xù)再調(diào)整就不太好調(diào)整了卒暂,所以如果不太放心的話,你多保留一些空間不完全創(chuàng)建LV也是可以的娄帖。

為了最大化的提升IO性能也祠,緩存池也采用raid0。同樣采用默認(rèn)的Stripe Size近速。

## 先檢查一下hybrid這個(gè)VG還剩下多少個(gè)PE
vgdisplay hybrid

## 從輸出可以看出還剩下54144個(gè)PE
  --- Volume group ---
  VG Name               hybrid
  System ID             
  Format                lvm2
  Metadata Areas        4
  Metadata Sequence No  4
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                3
  Open LV               0
  Max PV                0
  Cur PV                4
  Act PV                4
  VG Size               <3.86 TiB
  PE Size               4.00 MiB
  Total PE              1010894
  Alloc PE / Size       956750 / <3.65 TiB
  Free  PE / Size       54144 / 211.50 GiB
  VG UUID               13c6EC-n2E4-nQvh-hD5J-q8F1-Hl73-77pkji

## 為后面的轉(zhuǎn)換預(yù)留2944個(gè)PE即11.5GiB用作備用池元數(shù)據(jù)LV诈嘿,其他的共51200個(gè)PE創(chuàng)建緩存池?cái)?shù)據(jù)LV
lvcreate --type raid0 --name cache --extents 51200 hybrid /dev/sdd1 /dev/sde1

## 輸出
  Using default stripesize 64.00 KiB.
  Logical volume "cache" created.

轉(zhuǎn)換存儲類型

  1. 轉(zhuǎn)換hybrid/cache這個(gè)LV的類型為緩存池cache-pool,設(shè)置chunksize為256KiB削葱,指定緩存池元數(shù)據(jù)LV為之前已經(jīng)在SSD上以raid0創(chuàng)建的hybrid/meta_cachepool
lvconvert --type cache-pool --poolmetadata hybrid/meta_cachepool --chunksize 256 hybrid/cache

這一步操作中chunksize的值應(yīng)該參考下方說明中lvmcache有關(guān)的說明進(jìn)行設(shè)置永淌。輸出如下,這樣佩耳,緩存池元數(shù)據(jù)LVhybrid/meta_cachepool和緩存池?cái)?shù)據(jù)LVhybrid/cache就合并成新的緩存池LV了遂蛀。

  WARNING: Converting hybrid/cache and hybrid/meta_cachepool to cache pool's data and metadata volumes with metadata wiping.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Do you really want to convert hybrid/cache and hybrid/meta_cachepool? [y/n]: y
  Converted hybrid/cache and hybrid/meta_cachepool to cache pool.

有關(guān)chunksize的說明

The size of chunks in a snapshot, cache pool or thin pool. For snapshots, the value must be a power of 2 between 4KiB and 512KiB and the default value is 4. For a cache pool the value must be between 32KiB and 1GiB and the default value is 64. For a thin pool the value must be between 64KiB and 1GiB and the default value starts with 64 and scales up to fit the pool metadata size within 128MiB, if the pool metadata size is not specified. The value must be a multiple of 64KiB. See lvmthin(7) and lvmcache(7) for more information.
機(jī)翻:快照、緩存池或精簡池中的塊大小干厚。對于快照李滴,該值必須是2的冪,介于4KB和512KB之間蛮瞄,默認(rèn)值為4所坯。對于緩存池,該值須介于32KiB和1GiB之間挂捅,并且默認(rèn)值為64芹助。對于精簡池,該數(shù)值必須介于64KiB和1GiB之間闲先,如果未指定池元數(shù)據(jù)大小状土,則默認(rèn)值從64開始,并按比例放大以適應(yīng)128MiB內(nèi)的池元數(shù)據(jù)大小伺糠。該值必須是64KiB的倍數(shù)蒙谓。有關(guān)更多信息,請參見lvmthinlvmcache训桶。

lvmthin:

When a thin pool is used primarily for the thin provisioning feature, a larger value is optimal. To optimize for many snapshots, a smaller value reduces copying time and consumes less space.
機(jī)翻:當(dāng)精簡池主要用于精簡資源調(diào)配功能時(shí)累驮,最好使用較大的值。要優(yōu)化多個(gè)快照舵揭,較小的值可以減少復(fù)制時(shí)間并消耗更少的空間谤专。

lvmcache:

Using a chunk size that is too large can result in wasteful use of the cache, in which small reads and writes cause large sections of an LV to be stored in the cache. It can also require increasing migration threshold which defaults to 2048 sectors (1 MiB). Lvm2 ensures migration threshold is at least 8 chunks in size. This may in some cases result in very high bandwidth load of transfering data between the cache LV and its cache origin LV. However, choosing a chunk size that is too small can result in more overhead trying to manage the numerous chunks that become mapped into the cache. Overhead can include both excessive CPU time searching for chunks, and excessive memory tracking chunks.
機(jī)翻:使用過大的塊大小可能會導(dǎo)致緩存的浪費(fèi)使用,在這種情況下午绳,較小的讀取和寫入會導(dǎo)致LV的較大部分存儲在緩存中置侍。它還可能需要增加遷移閾值,默認(rèn)為2048個(gè)扇區(qū)(1個(gè)MiB)。Lvm2確保遷移閾值的大小至少為8個(gè)塊墅垮。在某些情況下,這可能導(dǎo)致在高速緩存LV與其高速緩存源LV之間傳輸數(shù)據(jù)的非常高的帶寬負(fù)載耕漱。然而算色,選擇太小的塊大小可能會導(dǎo)致管理映射到緩存中的大量塊的更多開銷。開銷可能包括過多的CPU時(shí)間搜索塊螟够,以及過多的內(nèi)存跟蹤塊灾梦。

  1. 把之前在HDD上創(chuàng)建的hybrid/data這個(gè)LV的類型轉(zhuǎn)換為帶緩存池LV(hybrid/cache)的存儲類型,指定緩存池為剛剛合并后的緩存池LVhybrid/cache妓笙,設(shè)置緩存模式為writeback
lvconvert --type cache --cachepool hybrid/cache --cachemode writeback hybrid/data

輸出如下若河,這樣,數(shù)據(jù)LVhybrid/data就和緩存池LVhybrid/cache合并成新的帶緩存池的LVM存儲hybrid/data了寞宫,這個(gè)時(shí)候它還不是LVM-thin存儲萧福。

Do you want wipe existing metadata of cache pool hybrid/cache? [y/n]: y
  WARNING: Data redundancy could be lost with writeback caching of raid logical volume!
  Logical volume hybrid/data is now cached.

緩存模式可選擇如下,我都raid0了辈赋,已經(jīng)無所畏懼了鲫忍,所以我選擇writeback,數(shù)據(jù)丟了就丟了吧:

writeback: writeback considers a write complete as soon as it is stored in the cache pool.

writethough: writethough considers a write complete only when it has been stored in both the cache pool and on the origin LV. While writethrough may be slower for writes, it is more resilient if something should happen to a device associated with the cache pool LV.

passthrough: With passthrough, all reads are served from the origin LV (all reads miss the cache) and all writes are forwarded to the origin LV; additionally, write hits cause cache block invalidates. See lvmcache(7) for more information.

  1. 再把剛剛合并的帶緩存池的LVM存儲hybrid/data與之前創(chuàng)建的元數(shù)據(jù)LVhybrid/meta_thinpool合并轉(zhuǎn)換為最終需要的LVM-thin存儲:
lvconvert --type thin-pool --poolmetadata hybrid/meta_thinpool hybrid/data

有關(guān)chunksize的具體說明見上方钥屈,這一步操作中chunksize的值應(yīng)該參考上方說明中lvmthin有關(guān)的說明進(jìn)行設(shè)置悟民。如采用默認(rèn)64KiB的chunksize,最大可支持15.81TiB的LVM-thin篷就。我的輸出如下:

  Thin pool volume with chunk size 64.00 KiB can address at most 15.81 TiB of data.
  WARNING: Converting hybrid/data and hybrid/meta_thinpool to thin pool's data and metadata volumes with metadata wiping.
  THIS WILL DESTROY CONTENT OF LOGICAL VOLUME (filesystem etc.)
Do you really want to convert hybrid/data and hybrid/meta_thinpool? [y/n]: y
  Converted hybrid/data and hybrid/meta_thinpool to thin pool.

檢查

最后射亏,我們來看看LV和物理磁盤的情況

lvs -a -o lv_full_name,parent,lv_size,modules,devices

輸出如下:

LV                                Parent              LSize   Modules              Devices                                                    
hybrid/cache_cpool                                    200.00g cache,raid           cache_cpool_cdata(0)                                       
hybrid/cache_cpool_cdata          [cache_cpool]       200.00g raid                 cache_cpool_cdata_rimage_0(0),cache_cpool_cdata_rimage_1(0)
hybrid/cache_cpool_cdata_rimage_0 [cache_cpool_cdata] 100.00g                      /dev/sdd1(1538)                                            
hybrid/cache_cpool_cdata_rimage_1 [cache_cpool_cdata] 100.00g                      /dev/sde1(1538)                                            
hybrid/cache_cpool_cmeta          [cache_cpool]       528.00m raid                 cache_cpool_cmeta_rimage_0(0),cache_cpool_cmeta_rimage_1(0)
hybrid/cache_cpool_cmeta_rimage_0 [cache_cpool_cmeta] 264.00m                      /dev/sdd1(0)                                               
hybrid/cache_cpool_cmeta_rimage_1 [cache_cpool_cmeta] 264.00m                      /dev/sde1(0)                                               
hybrid/data                                            <3.64t cache,raid,thin-pool data_tdata(0)                                              
hybrid/data_tdata                 data                 <3.64t cache,raid           data_tdata_corig(0)                                        
hybrid/data_tdata_corig                                <3.64t raid                 data_tdata_corig_rimage_0(0),data_tdata_corig_rimage_1(0)  
hybrid/data_tdata_corig_rimage_0  [data_tdata_corig]   <1.82t                      /dev/sdb1(0)                                               
hybrid/data_tdata_corig_rimage_1  [data_tdata_corig]   <1.82t                      /dev/sdc1(0)                                               
hybrid/data_tmeta                 data                 11.50g raid                 data_tmeta_rimage_0(0),data_tmeta_rimage_1(0)              
hybrid/data_tmeta_rimage_0        [data_tmeta]          5.75g                      /dev/sdd1(66)                                              
hybrid/data_tmeta_rimage_1        [data_tmeta]          5.75g                      /dev/sde1(66)                                              
hybrid/lvol0_pmspare                                   11.50g                      /dev/sdd1(27138)                                           
hybrid/lvol0_pmspare                                   11.50g                      /dev/sde1(27138)                                           
pve/root                                              <29.50g                      /dev/sda3(512)                                             
pve/swap                                                2.00g                      /dev/sda3(0) 

從輸出中的LayoutDevices字段可以看出,hybrid/data這個(gè)綜合了raid0竭业、緩存池和具有thin功能的LVM-thin智润,內(nèi)部的各個(gè)下級LV:

  1. 它的數(shù)據(jù)LVdata_tdata大小是3.64TiB,其實(shí)就是兩塊HDD大小之和(2T盤的實(shí)際大小是1.82TiB)未辆,它的原始(orig)數(shù)據(jù)LV是data_tdata_corig做鹰,而data_tdata_corig是由兩塊HDD的/dev/sdb1/dev/sdc1分區(qū)組的raid0(data_tdata_corig_rimage_0data_tdata_corig_rimage_1);

  2. 它所需要的元數(shù)據(jù)LV(即data_tmeta)大小是11.5GiB鼎姐,也是raid0組钾麸,這個(gè)raid0組位于兩塊SSD上,即data_tmeta_rimage_0data_tmeta_rimage_1炕桨;

  3. 它有一個(gè)緩存池LVcache_cpool饭尝,而緩存池LVcache_cpool本身又分為數(shù)據(jù)和元數(shù)據(jù)兩部分:

  • 緩存池?cái)?shù)據(jù)LV是cache_cpool_cdata,總大小200GiB献宫,是位于兩塊SSD上的cache_cpool_cdata_rimage_0cache_cpool_cdata_rimage_1組成的raid0钥平;

  • 緩存池元數(shù)據(jù)LV是cache_cpool_cmeta,總大小528MiB姊途,也是由位于兩塊SSD上的cache_cpool_cmeta_rimage_0cache_cpool_cmeta_rimage_1組成的raid0涉瘾。

  1. 轉(zhuǎn)換存儲類型還生成了lvol0_pmspare知态,這個(gè)是自動創(chuàng)建的備用池元數(shù)據(jù)LV,備用池元數(shù)據(jù)LV是在修復(fù)池時(shí)可以使用的保留空間立叛。它的大小等同于最大的元數(shù)據(jù)LV大懈好簟(我創(chuàng)建的兩個(gè)元數(shù)據(jù)LV中較大的是11.5GiB)。如想關(guān)閉自動創(chuàng)建這種類型的LV秘蛇,需要在與元數(shù)據(jù)LV有關(guān)的兩次轉(zhuǎn)換命令lvconvert中添加--poolmetadataspare n其做。如果設(shè)置了不自動創(chuàng)建,那么前面的存儲類型轉(zhuǎn)換時(shí)也就不需要提前預(yù)留空間赁还。雖然看起來有兩個(gè)(因?yàn)槲疫M(jìn)行了兩次與元數(shù)據(jù)有關(guān)的轉(zhuǎn)換lvconvert)妖泄,但實(shí)際上是在兩塊SSD上總共占用11.5GiB,每塊SSD各5.75GiB艘策。

每塊SSD上的LV有:緩存池?cái)?shù)據(jù)LV(cache_cpool_cdata)100GiB蹈胡,緩存池元數(shù)據(jù)LV(cache_cpool_cmeta)264MiB,元數(shù)據(jù)LV(data_tmeta)5.75GiB朋蔫,備用池元數(shù)據(jù)LV(lvol0_pmspare)5.75GiB审残。以上總計(jì)111.76GiB,這就是120G的SSD的真實(shí)大小斑举。

這樣搅轿,將元數(shù)據(jù)LV緩存池?cái)?shù)據(jù)LV富玷、緩存池元數(shù)據(jù)LV全部放在SSD上以提升IO性能璧坟,兩塊HDD組成數(shù)據(jù)LV以保存原始數(shù)據(jù),那么HDD大小之和3.64TiB就是這個(gè)LVM-thin存儲的最終大小赎懦。

再以另外一個(gè)角度來看:

lsblk

從輸出也可以看到HDD上只有data雀鹃,兩個(gè)metadata和cache全部位于SSD:

NAME                                  MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                                     8:0    0    32G  0 disk 
├─sda1                                  8:1    0  1007K  0 part 
├─sda2                                  8:2    0   512M  0 part 
└─sda3                                  8:3    0  31.5G  0 part 
  ├─pve-swap                          253:0    0     2G  0 lvm  [SWAP]
  └─pve-root                          253:1    0  29.5G  0 lvm  /
sdb                                     8:16   0   1.8T  0 disk 
└─sdb1                                  8:17   0   1.8T  0 part 
  └─hybrid-data_tdata_corig_rimage_0  253:11   0   1.8T  0 lvm  
    └─hybrid-data_tdata_corig         253:13   0   3.6T  0 lvm  
      └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
        └─hybrid-data                 253:15   0   3.6T  0 lvm  
sdc                                     8:32   0   1.8T  0 disk 
└─sdc1                                  8:33   0   1.8T  0 part 
  └─hybrid-data_tdata_corig_rimage_1  253:12   0   1.8T  0 lvm  
    └─hybrid-data_tdata_corig         253:13   0   3.6T  0 lvm  
      └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
        └─hybrid-data                 253:15   0   3.6T  0 lvm  
sdd                                     8:48   0 111.8G  0 disk 
└─sdd1                                  8:49   0 111.8G  0 part 
  ├─hybrid-data_tmeta_rimage_0        253:2    0   5.8G  0 lvm  
  │ └─hybrid-data_tmeta               253:4    0  11.5G  0 lvm  
  │   └─hybrid-data                   253:15   0   3.6T  0 lvm  
  ├─hybrid-cache_cpool_cdata_rimage_0 253:5    0   100G  0 lvm  
  │ └─hybrid-cache_cpool_cdata        253:7    0   200G  0 lvm  
  │   └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
  │     └─hybrid-data                 253:15   0   3.6T  0 lvm  
  └─hybrid-cache_cpool_cmeta_rimage_0 253:8    0   264M  0 lvm  
    └─hybrid-cache_cpool_cmeta        253:10   0   528M  0 lvm  
      └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
        └─hybrid-data                 253:15   0   3.6T  0 lvm  
sde                                     8:64   0 111.8G  0 disk 
└─sde1                                  8:65   0 111.8G  0 part 
  ├─hybrid-data_tmeta_rimage_1        253:3    0   5.8G  0 lvm  
  │ └─hybrid-data_tmeta               253:4    0  11.5G  0 lvm  
  │   └─hybrid-data                   253:15   0   3.6T  0 lvm  
  ├─hybrid-cache_cpool_cdata_rimage_1 253:6    0   100G  0 lvm  
  │ └─hybrid-cache_cpool_cdata        253:7    0   200G  0 lvm  
  │   └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
  │     └─hybrid-data                 253:15   0   3.6T  0 lvm  
  └─hybrid-cache_cpool_cmeta_rimage_1 253:9    0   264M  0 lvm  
    └─hybrid-cache_cpool_cmeta        253:10   0   528M  0 lvm  
      └─hybrid-data_tdata             253:14   0   3.6T  0 lvm  
        └─hybrid-data                 253:15   0   3.6T  0 lvm

添加存儲

把創(chuàng)建好的LVM-thin存儲添加到PVE,就大功告成了:

添加LVM-thin存儲励两,ID自己取
1000進(jìn)制看起來就是4T

順便再看看磁盤空間有沒有100%利用完全:

4塊磁盤都100%利用了

參考資料

lvm, pvcreate, vgcreate, lvcreate, lvconvert, lvreduce, lvremove, lvs, lvmraid, lvmthin, lvmcache

在上述參考資料鏈接下方可以看見全部命令的幫助文檔黎茎,同時(shí)也可以直接在PVE命令行中輸入man <cmd>來查閱上述文檔。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末当悔,一起剝皮案震驚了整個(gè)濱河市傅瞻,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌盲憎,老刑警劉巖嗅骄,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異饼疙,居然都是意外死亡溺森,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屏积,“玉大人医窿,你說我怎么就攤上這事〈读郑” “怎么了姥卢?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長铛铁。 經(jīng)常有香客問我隔显,道長却妨,這世上最難降的妖魔是什么饵逐? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮彪标,結(jié)果婚禮上倍权,老公的妹妹穿的比我還像新娘。我一直安慰自己捞烟,他們只是感情好薄声,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著题画,像睡著了一般默辨。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上苍息,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天缩幸,我揣著相機(jī)與錄音,去河邊找鬼竞思。 笑死表谊,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盖喷。 我是一名探鬼主播爆办,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼课梳!你這毒婦竟也來了距辆?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤暮刃,失蹤者是張志新(化名)和其女友劉穎挑格,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體沾歪,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡漂彤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挫望。...
    茶點(diǎn)故事閱讀 38,137評論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡立润,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出媳板,到底是詐尸還是另有隱情桑腮,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布蛉幸,位于F島的核電站破讨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏奕纫。R本人自食惡果不足惜提陶,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匹层。 院中可真熱鬧隙笆,春花似錦、人聲如沸升筏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽您访。三九已至铅忿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間灵汪,已是汗流浹背檀训。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留识虚,地道東北人肢扯。 一個(gè)月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像担锤,于是被迫代替她去往敵國和親蔚晨。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,901評論 2 345

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