###1.RAID(獨立冗餘磁盤陣列,Redundant Arrays of Independent Disks)安全
RAID技術經過把多個硬盤設備組合成一個容量更大、安全性更好的磁盤陣列,並把數據切割成多個區段後分別存放在各個不一樣的物理硬盤設備上,而後利用分散讀寫技術來提高磁盤陣列總體的性能,同時把多個重要數據的副本同步到不一樣的物理硬盤設備上,從而起到了很是好的數據冗餘備份效果,可是它也相應地提升了成本支出。服務器
RAID技術的設計初衷是減小由於採購硬盤設備帶來的費用支出,可是與數據自己的價值相比較,現代企業更看重的則是RAID技術所具有的冗餘備份機制以及帶來的硬盤吞吐量的提高。也就是說,RAID不只下降了硬盤設備損壞後丟失數據的概率,還提高了硬盤設備的讀寫速度,因此它在絕大多數運營商或大中型企業中得以普遍部署和應用。架構
下面來看RAID 0、RAID 一、RAID 5和RAID 10這四種最多見的RAID磁盤陣列的方案。佈局
####1.1 RAID 0性能
RAID 0技術把多塊物理硬盤設備(至少兩塊)經過硬件或軟件的方式串聯在一塊兒,組成一個大的卷組,並將數據依次寫入到各個物理硬盤中。這樣一來,在最理想的狀態下,硬盤設備的讀寫性能會提高數倍,可是若任意一塊硬盤發生故障將致使整個系統的數據都受到破壞。通俗來講,RAID 0技術可以有效地提高硬盤數據的吞吐速度,可是不具有數據備份和錯誤修復能力。以下圖,數據被分別寫入到不一樣的硬盤設備中,即disk1和disk2硬盤設備會分別保存數據資料,最終實現提高讀取、寫入速度的效果。設計
<div align=center>  </div> ####1.2 RAID 1blog
儘管RAID 0技術提高了硬盤設備的讀寫速度,可是它是將數據依次寫入到各個物理硬盤中,也就是說,它的數據是分開存放的,其中任何一塊硬盤發生故障都會損壞整個系統的數據。所以,若是生產環境對硬盤設備的讀寫速度沒有要求,而是但願增長數據的安全性時,就須要用到RAID 1技術了。繼承
以下圖,它是把兩塊以上的硬盤設備進行綁定,在寫入數據時,是將數據同時寫入到多塊硬盤設備上(能夠將其視爲數據的鏡像或備份)。當其中某一塊硬盤發生故障後,通常會當即自動以熱交換的方式來恢復數據的正常使用。資源
<div align=center>  </div> > RAID 1技術雖然十分注重數據的安全性,可是由於是在多塊硬盤設備中寫入了相同的數據,所以硬盤設備的利用率得如下降,從理論上來講,上圖所示的硬盤空間的真實可用率只有50%,由三塊硬盤設備組成的RAID 1磁盤陣列的可用率只有33%左右,以此類推。並且,因爲須要把數據同時寫入到兩塊以上的硬盤設備,這無疑也在必定程度上增大了系統計算功能的負載。部署
####1.3 RAID 5
以下圖,RAID5技術是把硬盤設備的數據奇偶校驗信息保存到其餘硬盤設備中。RAID 5磁盤陣列組中數據的奇偶校驗信息並非單獨保存到某一塊硬盤設備中,而是存儲到除自身之外的其餘每一塊硬盤設備上,這樣的好處是其中任何一設備損壞後不至於出現致命缺陷;圖中parity部分存放的就是數據的奇偶校驗信息,換句話說,就是RAID 5技術實際上沒有備份硬盤中的真實數據信息,而是當硬盤設備出現問題後經過奇偶校驗信息來嘗試重建損壞的數據。RAID這樣的技術特性「妥協」地兼顧了硬盤設備的讀寫速度、數據安全性與存儲成本問題。
<div align=center>  </div> ####1.4 RAID 10
鑑於RAID 5技術是由於硬盤設備的成本問題對讀寫速度和數據的安全性能而有了必定的妥協,可是大部分企業更在意的是數據自己的價值而非硬盤價格,所以生產環境中主要使用RAID 10技術。
RAID 10技術是RAID 1+RAID 0技術的一個「組合體」。以下圖,RAID 10技術須要至少4塊硬盤來組建,其中先分別兩兩製做成RAID 1磁盤陣列,以保證數據的安全性;而後再對兩個RAID 1磁盤陣列實施RAID 0技術,進一步提升硬盤設備的讀寫速度。這樣從理論上來說,只要壞的不是同一組中的全部硬盤,那麼最多能夠損壞50%的硬盤設備而不丟失數據。因爲RAID 10技術繼承了RAID 0的高讀寫速度和RAID 1的數據安全性,在不考慮成本的狀況下RAID 10的性能都超過了RAID 5,所以當前成爲普遍使用的一種存儲技術。
<div align=center>  </div> ####1.5 部署磁盤陣列
經過虛擬機模擬部署。
mdadm 命令 用於管理Linux系統中的軟件RAID硬盤陣列,格式:mdadm [模式] <RAID設備名稱> [選項] [成員設備名稱]。
生產環境中用到的服務器通常都配備RAID陣列卡,儘管服務器的價格愈來愈便宜,可是沒有必要爲了作一個實驗而單獨購買一臺服務器,而是能夠用mdadm命令在Linux系統中建立和管理軟件RAID磁盤陣列,並且它涉及的理論知識的操做過程與生產環境中的徹底一致。mdadm命令的經常使用參數以及做用以下:
接下來,使用mdadm命令建立RAID 10,名稱爲「/dev/md0」。
-C參數表明建立一個RAID陣列卡;-v參數顯示建立的過程,同時在後面追加一個設備名稱/dev/md0,這樣/dev/md0就是建立後的RAID磁盤陣列的名稱;-a yes參數表明自動建立設備文件;-n 4參數表明使用4塊硬盤來部署這個RAID磁盤陣列;而-l 10參數則表明RAID 10方案;最後再加上4塊硬盤設備的名稱就能夠了。
接着,把製做好的RAID磁盤陣列格式化爲 ext4 格式。
而後,建立掛載點掛載硬盤設備。掛載成功後能夠看到可用空間爲40GB。
最後,查看 /dev/md0 磁盤陣列的詳細信息,並把掛載信息寫入配置文件中,使其永久生效。
####1.6 損壞磁盤陣列及修復
在確認有一塊物理硬盤設備出現損壞而不能繼續正常使用後,應該使用mdadm命令將其移除,而後查看RAID磁盤陣列的狀態,能夠發現狀態已經改變。
......
在RAID 10級別的磁盤陣列中,當RAID 1磁盤陣列中存在一個故障盤時並不影響RAID 10磁盤陣列的使用。當購買了新的硬盤設備後再使用mdadm命令來予以替換便可,在此期間咱們能夠在/RAID目錄中正常地建立或刪除文件。因爲是在虛擬機中模擬硬盤,因此先重啓系統,而後再把新的硬盤添加到RAID磁盤陣列中。
......
####1.7 磁盤陣列+備份盤
RAID 10磁盤陣列中最多容許50%的硬盤設備發生故障,可是存在這樣一種極端狀況,即同一RAID 1磁盤陣列中的硬盤設備若所有損壞,也會致使數據丟失。 在這樣的狀況下,該怎麼辦呢?其實,咱們徹底可使用RAID備份盤技術來預防這類事故。該技術的核心理念就是準備一塊足夠大的硬盤,這塊硬盤平時處於閒置狀態,一旦RAID磁盤陣列中有硬盤出現故障後則會立刻自動頂替上去。(作試驗前需將虛擬機還原到初始狀態)
參數-n 3表明建立這個RAID 5磁盤陣列所需的硬盤數,參數-l 5表明RAID的級別,而參數-x 1則表明有一塊備份盤。當查看/dev/md0(即RAID 5磁盤陣列的名稱)磁盤陣列的時候就能看到有一塊備份盤在等待中了。
......
將部署好的RAID 5磁盤陣列格式化爲 ext4 文件格式,而後掛載便可使用。
這裏再次把 /dev/sdb 移出磁盤陣列,而後查看 /dev/md0 的狀態發現備份盤已被自動頂替上去並開始了數據同步。
......
###2. LVM(邏輯卷管理器, Logical Volume Manager)
上文的硬盤設備管理技術雖然可以有效地提升硬盤設備的讀寫速度以及數據的安全性,可是在硬盤分好區或者部署爲RAID磁盤陣列以後,再想修改硬盤分區大小就不容易了。換句話說,當用戶想要隨着實際需求的變化調整硬盤分區的大小時,會受到硬盤「靈活性」的限制。這時就須要用到另一項很是普及的硬盤設備資源管理技術了—LVM(邏輯卷管理器)。LVM能夠容許用戶對硬盤資源進行動態調整。 邏輯卷管理器是Linux系統用於對硬盤分區進行管理的一種機制,理論性較強,其建立初衷是爲了解決硬盤設備在建立分區後不易修改分區大小的缺陷。儘管對傳統的硬盤分區進行強制擴容或縮容從理論上來說是可行的,可是卻可能形成數據的丟失。而LVM技術是在硬盤分區和文件系統之間添加了一個邏輯層,它提供了一個抽象的卷組,能夠把多塊硬盤進行卷組合並。這樣一來,用戶沒必要關心物理硬盤設備的底層架構和佈局,就能夠實現對硬盤分區的動態調整。LVM的技術架構以下圖:
物理卷(PV,Physical Volume)處於LVM中的最底層,能夠將其理解爲物理硬盤、硬盤分區或者RAID磁盤陣列,這均可以。卷組(VG,Volume Group)創建在物理卷之上,一個卷組能夠包含多個物理卷,並且在卷組建立以後也能夠繼續向其中添加新的物理卷。邏輯卷(LV,Logical Volume)是用卷組中空閒的資源創建的,而且邏輯卷在創建後能夠動態地擴展或縮小空間。這就是LVM的核心理念。
####2.1 部署邏輯卷
部署LVM時,須要逐個配置物理卷、卷組和邏輯卷。經常使用的部署命令以下表:
初始化虛擬機狀態,在虛擬機中添加兩塊新硬盤設備並開機。
第一步:讓新添加的兩塊硬盤設備支持 LVM 技術。
第二步:把兩塊硬盤設備加入到 storage 卷組中,而後查看卷組的狀態。
第三步:切割出一個約 150MB 的邏輯卷設備。
這裏須要注意切割單位的問題。在對邏輯捲進行切割時有兩種計量單位。第一種是以容量爲單位,所使用的參數爲-L。例如,使用-L 150M生成一個大小爲150MB的邏輯卷。另一種是以基本單元的個數爲單位,所使用的參數爲-l。每一個基本單元的大小默認爲4MB。例如,使用-l 37能夠生成一個大小爲37×4MB=148MB的邏輯卷。
第四步:把生成好的邏輯捲進行格式化,而後掛載使用。
Linux系統會把LVM中的邏輯卷設備存放在/dev設備目錄中(其實是作了一個符號連接),同時會以卷組的名稱來創建一個目錄,其中保存了邏輯卷的設備映射文件(即/dev/卷組名稱/邏輯卷名稱)。
第五步:查看掛載狀態,並寫入配置文件,使其永久有效。
####2.2 擴容邏輯卷
擴展前要卸載設備和掛載點的關聯。
第一步:把上文的邏輯卷 vo 擴展至 290MB。
第二步:檢查硬盤完整性,並重置硬盤容量。
第三步:從新掛載設備並查看狀態。
####2.3 縮小邏輯卷
相較於擴容邏輯卷,在對邏輯捲進行縮容操做時,其丟失數據的風險更大。因此在生產環境中執行相應操做時,必定要提早備份好數據。另外Linux系統規定,在對LVM邏輯捲進行縮容操做以前,要先檢查文件系統的完整性(固然這也是爲了保證咱們的數據安全)。在執行縮容操做前記得先把文件系統卸載掉。
第一步:檢查文件系統的完整性。
第二步:把邏輯卷 vo 的容量減少到120MB。
第三步:從新掛載文件系統並查看系統狀態。
####2.4 邏輯卷快照
LVM還具有有「快照卷」功能,該功能相似於虛擬機軟件的還原時間點功能。例如,能夠對某一個邏輯卷設備作一次快照,若是往後發現數據被改錯了,就能夠利用以前作好的快照捲進行覆蓋還原。LVM的快照卷功能有兩個特色:
首先查看卷組的信息
能夠看到,卷組中已使用了 120MB 的容量,空閒容量有約 39.88GB。接下來用重定向往邏輯卷設備所掛載的目錄中寫入一個文件。
第一步:使用 -s 參數生成一個快照卷,使用 -L 參數指定切割大小。在命令最後寫入須要執行快照操做的邏輯卷。
第二步:在邏輯卷所掛載的目錄中建立一個 100 MB的垃圾文件,而後再查看快照卷的狀態,發現存儲空間佔用量(Allocated to snapshot *%)提高了。
第三步:爲了校驗 SNAP 快照卷的效果,須要對邏輯捲進行快照還原操做,在此以前需先卸載邏輯卷設備與目錄的掛載。
第四步:快照卷會被自動刪除,而且剛剛建立的100MB垃圾文件也被清除了。
####2.5 刪除邏輯卷
當生產環境中想要從新部署LVM或者再也不須要使用LVM時,則須要執行LVM的刪除操做。爲此,須要提早備份好重要的數據信息,而後依次刪除邏輯卷、卷組、物理卷設備,這個順序不可顛倒。
第一步:取消邏輯卷與目錄的掛載關聯,刪除配置文件中永久生效的設備參數。
第二步:刪除邏輯卷操做,輸入 y 確認。
第三步:刪除卷組,此處只寫卷組名便可,不須要設備的絕對路徑。
第四步:刪除物理卷設備。
上述操做執行完畢以後,再執行 lvdisplay、vgdisplay、pvdisplay 命令來查看 LVM 的信息時就不會再看到vo、storage、/dev/sdb /dev/sdc等的相關信息了。