標籤:紅帽儲存管理 可信任儲存池 brick建立
紅帽儲存管理1
一、可信任儲存池的管理
儲存池是一個儲存伺服器的集合,當一台伺服器開啟glusterd服務時,可信任儲存池只有它自己本身,那麼我們要將其他的伺服器加入可信任儲存池該怎麼加呢?命令# gluster peer probe [server],前提是其他的伺服器也必須開啟glusterd服務,[Server]可以是ip地址也可以是伺服器名,前提是伺服器名必須能夠被解析。
[[email protected] ~]# gluster peer probe rhs1peer probe: success.[[email protected] ~]# gluster peer probe rhs2peer probe: success.
查看儲存池狀態
[[email protected] ~]# gluster peel statusNumber of Peers: 2Hostname: rhs1Uuid: 149365ef-448e-421f-8971-e81183240c49State: Peer in Cluster (Connected)Hostname: rhs2Uuid: 7a131594-9b15-4e4d-8a50-86ec4126e89cState: Peer in Cluster (Connected)
或者可以用一下命令查看儲存池中都有哪些伺服器
[[email protected] ~]# gluster pool listUUID Hostname State149365ef-448e-421f-8971-e81183240c49 rhs1 Connected7a131594-9b15-4e4d-8a50-86ec4126e89c rhs2 Connecteddb270220-90e7-4368-805e-7c7d39db37c8 localhost Connected
當然儲存池可以加入伺服器,也可以剔除伺服器,命令如下
# gluster peer detach [server]
server是伺服器名,前提也是要能夠被解析。
[[email protected] ~]# gluster peer detach rhs2peer detach: success[[email protected] ~]# gluster pool listUUID Hostname State149365ef-448e-421f-8971-e81183240c49 rhs1 Connecteddb270220-90e7-4368-805e-7c7d39db37c8 localhost Connected
拓展:
如果要利用儲存池建立volume,那麼儲存池中的所有伺服器都必須有RDMA裝置(RDMA或者RDMA over TCP)。那到底什麼是RDMA裝置?
RDMA(Remote Direct Memory Access)全名是"遠程直接資料存取",讓電腦可以直接存取其它電腦的記憶體,而不需要經過處理器耗時的傳輸。
RDMA是一種使一台電腦可以直接將資料通過網路傳送到另一台電腦記憶體中的特性,將資料從一個系統快速移動到遠程系統儲存空間中,而不對作業系統造成任何影響,這項技術通過消除外部儲存空間複製和文本交換操作,因而能騰出匯流排空間和CPU周期用於改進應用系統效能,從而減少對頻寬和處理器開銷的需要,顯著降低了時延。
RDMA是一種網卡技術,採用該技術可以使一台電腦直接將資訊放入另一台電腦的記憶體中。通過最小化處理過程的開銷和頻寬的需求降低時延。RDMA通過在網卡上將可靠傳輸協議固化於硬體,以及支援零複製網路技術和核心記憶體旁路技術這兩種途徑來達到這一目標。(拓展資料來源於百度文庫 http://wenku.baidu.com/link?url=vSklCvlJfBUTTDaYq7707SghZt7WB1z_VozGaD0HdvNYTHeB16JX58kYmmtGxzEFZBLvBH7EBuZvZCmzMShOJgxu7I2VvEvMmZM4BPf-TAC)
二、brick的建立與管理
Brick是紅帽儲存的基本單元,是伺服器提供儲存服務的物理空間,是真正的資料存放區的地方,一台伺服器上可以建立許多brick,但是前提是要控制宕機產生的資料丟失的風險。
建立brick的方法和建立邏輯卷的方法基本相同。
之前我們搭建紅帽儲存學習環境的時候建立了一個邏輯分區/dev/vda5(見第一篇部落格:環境搭建)
Device Boot Start End Blocks Id System/dev/vda1 * 3 506 253952 83 LinuxPartition 1 does not end on cylinderboundary./dev/vda2 506 6602 3072000 83 LinuxPartition 2 does not end on cylinderboundary./dev/vda3 6602 7618 512000 82 Linux swap / SolarisPartition 3 does not end on cylinderboundary./dev/vda4 7618 20805 6646744 5 Extended/dev/vda5 7618 20805 6646712+ 8e Linux LVM
建立pv(phsical volume物理卷)
[[email protected] ~]#pvcreate /dev/vda5 (這裡還有個選項的,以後再詳細講)
建立vg(volume group卷組)
[[email protected] ~]#vgcreate vg_bricks /dev/vda5 (這裡也有個選項的,也以後再講)
接下來我們查看vg
[[email protected] ~]# vgs VG #PV #LV #SN Attr VSize VFree vg_bricks 1 0 0wz--n- 6.34g 6.34g
下面我們就可以在vg中建立brick了
建立瘦池(thinly pool)
[[email protected] ~]# lvcreate -L 1G -T vg_bricks/thinlypool (–T:瘦池thinlypool為瘦池的名字) Logical volume "lvol0" created Logical volume "thinlypool" created
在瘦池中建立名為brick0的brick
[[email protected] ~]# lvcreate -V 1G -T vg_bricks/thinlypool -n brick0 (-n:名字) Logical volume "brick0" created
查看lvs
[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert brick0 vg_bricks Vwi-a-tz-- 1.00gthinlypool 0.00 thinlypool vg_bricks twi-a-tz--1.00g 0.00
拓展:
thinly-provisioned LVs是在rhel6.3中作為技術預覽引入,在rhel6.5和rhel7中全部支持的lvm技術
工作原理:
在建立Thin“瘦”卷時,預分配一個虛擬邏輯卷容量大小,而只是在實際寫入資料時才分配物理空間給這個卷。這樣我們可以輕易的建立出總邏輯容量超出物理磁碟空間的多個“精簡卷”,而無須為將來可能達到的資料量提前“買單”。在應用產生的資料確實需要增加磁碟機時,我們也可以靈活地線上調整卷的大小。
Thin provisioned的功能。Thin Provisioned的最大特點在於可以對儲存資源進行按需動態分配,即對儲存進行了虛擬化管理。例如,某位使用者向伺服器管理員請求分配10TB的資源。雖然可能確實需要10TB的實體儲存體容量,但根據當前使用方式,分配2TB就已足夠。因此,系統管理員準備2TB的實體儲存體,並給伺服器分配10TB的虛擬卷。伺服器即可基於僅占虛擬卷容量1/5的現有物理磁碟池開始運行。這樣的“始於小”方案能夠實現更高效地利用儲存容量。
在標準的邏輯卷中磁碟空間在建立時就會佔用卷組的空間,但是在瘦(thin)卷中只有在寫入時才會佔用儲存池"thinpoolLV"中的空間。一個thin邏輯卷建立前必須建立thinpoolLV,一個thinpoolLV由兩部分組成:一個大的dataLV(資料卷)用來儲存資料區塊,和一個metadateLV(中繼資料卷)。metadata中記錄了thin卷中每個塊資料的所屬關係。(說簡單點就是metadata中儲存索引,data中儲存真實資料,當你訪問資料時,先通過索引再訪問資料,因為你每次首先訪問的不是真實資料,所有就像C語言中鏈表一樣,理論上儲存的資料可以無限大,並且動態可調)(拓展資料來源於百度文庫http://wenku.baidu.com/link?url=iEAKTAIj4Iw8EE5nu16fUaYk7oNilxV203CDyWPKHaQpV7Tnf03H2nXKYbSAHszP7Og0F8xeVwxQofm1dDYc7tkbO80Aaz9kO7aiIblRTu_)
關於瘦池我在這裡示範一個例子
建立一個1G的瘦池,在瘦池裡面可以建立一個遠大於1G的brick
[[email protected] ~]# lvcreate -L 1G -T vg_bricks/spool Logical volume "lvol0"created Logical volume "spool"created[[email protected] ~]# lvcreate -V 2G -T vg_bricks/spool -n brick0 Logical volume "brick0"created[[email protected] ~]# lvs LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert brick0 vg_bricks Vwi-a-tz-- 2.00g spool 0.00 spool vg_bricks twi-a-tz-- 1.00g 0.00
brick建立後要進行格式化,並掛載在本地
[[email protected] ~]# mkfs.xfs -i size=512 /dev/vg_bricks/brick0meta-data=/dev/vg_bricks/brick0 isize=512 agcount=8, agsize=32768 blks = sectsz=512 attr=2, projid32bit=0data = bsize=4096 blocks=262144,imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0log =internal log bsize=4096 blocks=2560,version=2 = sectsz=512 sunit=0 blks,lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
這裡有一個選項-i,表示inode size必須為512位元組
建立掛載點
[[email protected] ~]# mkdir /bricks/brick0 -p
必須設定開機自動掛載
[[email protected] ~]# echo"/dev/vg_bricks/brick0 /bricks/brick0 xfs defaults 0 0" >>/etc/fstab[[email protected] ~]# mount –a[[email protected] ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/vda2 ext4 2.9G 1.6G 1.2G 58% /tmpfs tmpfs 499M 0 499M 0% /dev/shm/dev/vda1 ext4 241M 30M 199M 13% /boot/dev/mapper/vg_bricks-brick0 xfs 1014M 33M 982M 4% /bricks/brick0
我們的brick就已經做好了
紅帽儲存管理伺服器3之前的版本volume是直接使用掛載位置/bricks/brick0,而最新的版本是必須要在掛載目錄/bricks/brick0下建立一個或者多個子目錄,volume可使用其中任何一個子目錄,所以在這裡還要在/bricks/brick0下面建立一個子目錄,這裡取名為brick
[[email protected] ~]# mkdir /bricks/brick0/brick
為了以後操作方便快捷,在這裡我把建立brick寫成了一個指令碼,方便以後操作
[[email protected] ~]# cat createbricks.sh#!/bin/bashlvcreate -L 1G -Tvg_bricks/thinlypool_"$1";lvcreate -V 1G -Tvg_bricks/thinlypool_"$1" -n brick"$1";mkfs.xfs -i size=512/dev/vg_bricks/brick"$1" -f;mkdir /bricks/brick"$1" -p;echo "/dev/vg_bricks/brick"$1"/bricks/brick"$1" xfs defaults 0 0" >> /etc/fstab;mount -a;mkdir /bricks/brick"$1"/brick;[[email protected] ~]# chmod a+x createbricks.sh
然後發布下去
[[email protected] ~]# ./distributefiles.sh /root/createbricks.sh /root/createbricks.sh
Rhs0裡面的brick編號就是1,2,3…
Rhs1裡面的brick編號就是11,12,13…
Rhs2裡面的brick編號就是21,22,23…
…
指令碼用法就是#./createbricks.sh [數字]例如
[[email protected]~]# ./createbricks.sh 1 Logical volume "lvol0" created Logical volume "thinlypool_1" created Logical volume "brick1" createdmeta-data=/dev/vg_bricks/brick1 isize=512 agcount=8, agsize=32768 blks = sectsz=512 attr=2, projid32bit=0data = bsize=4096 blocks=262144,imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0log =internal log bsize=4096 blocks=2560,version=2 = sectsz=512 sunit=0 blks,lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0[[email protected] ~]# df -ThFilesystem Type Size Used Avail Use% Mounted on/dev/vda2 ext4 2.9G 1.6G 1.2G 58% /tmpfs tmpfs 499M 0 499M 0% /dev/shm/dev/vda1 ext4 241M 30M 199M 13% /boot/dev/mapper/vg_bricks-brick1 xfs 1014M 33M 982M 4% /bricks/brick1
那麼移除brick的方法和移除邏輯卷的方法一樣
第一步,先卸載
[[email protected] bricks]# umount /bricks/brick1
第二步,刪除/etc/fstab中的條目
第三步,刪除建立的掛載點
[[email protected] bricks]# rm -rf /bricks/brick1
第四步,刪除邏輯卷
[[email protected] bricks]# lvremove vg_bricks
本文出自 “0基礎學linux” 部落格,請務必保留此出處http://huangmh77.blog.51cto.com/10041435/1660789
紅帽儲存管理1——可信任儲存池和brick的管理