Linux培訓教程之安全的動態磁碟儲存策略(轉)

BSDLite發表於2007-08-11
Linux培訓教程之安全的動態磁碟儲存策略(轉)[@more@]本節要點:
1.軟體RAID技術
RAID0/RAID1/RAID5
2.LVM邏輯卷管理技術
PV/VG/LV
3.案例:整合RAID和LVM的磁碟管理策略

系統環境:Windows XP + VMware 5.0 + Redhat Fedora Core3

一,軟體RAID技術
*RAID技術有軟體RAID以及硬體RAID之分,簡稱軟RAID和硬RAID

(一) RAID技術產生的背景
1,普通的IDE硬碟速度不夠快,效能不夠穩定,不能應用於企業級的關鍵任務
2,高效並且穩定的SCSI硬碟價格非常昂貴,中小企業承受不起
3,RAID(Redundant Array of Inexpensive/Independent Disks),好廉價/獨立磁碟冗餘陣列(或簡稱磁碟陣列),它的出現,可以讓我們把普通的IDE硬碟組成快速且安全可靠的儲存裝置。RAID技術的出現改變了企業級的儲存結果,更多的IDE被企業使用來儲存企業級的資料

(二) RAID的原理
1,RAID是一種把多塊獨立的硬碟按不同方式組合起來形成一個磁碟組,從而提供比單個硬碟更高的儲存效能和提供資料冗餘的技術。不同的組織方式成為RAID級別(RAID Levels).
2,資料冗餘的功能是在使用者資料一旦發生損壞後,利用冗餘資訊可以使損壞的資料得以恢復,從而保障了使用者資料的安全性。
3,在使用者看起來,組成的磁碟組就像是一個硬碟,對磁碟陣列的操作與單個硬碟的一模一樣。
注:關於RAID級別目前有0-6共7種不用的級別,不過常用的是Level0,Level1,Level5三種。支援RAID磁碟陣列不但需要主機板的主持,通常還要安裝一種稱為RAID控制器的PC介面卡為管理硬碟陣列。Linux核心可以模擬RAID控制器,用來管理硬碟,但只支援級別0,1,4,5。

(三) RAID0,RAID1,RAID5介紹
1,RAID0又稱Striping(磁碟擴充套件)。
原理:RAID0透過把連續的資料按先後順序分散到多個磁碟上來提高儲存效能,這樣,資料請求就可以被多個磁碟並行的執行,每個磁碟執行屬於它自已的那部分資料請求。這種資料上的並行操作可以充分利用匯流排的頻寬,顯著提高磁碟整體的存取效能。但由於資料是按順序先後連續的寫入多個磁碟的,如果其中一個磁碟的資料受到損壞,則必然會打破資料的連續性,從而大大地降低RAID的安全性。
評價:速度最快,安全性偏低。適用於只要求存取速度但安全性要求不嚴格的資料儲存應用。
2,RAID1又稱Mirroring(映象存取)
原理:RAID1的宗旨是最大限度的保證使用者資料的可用性和可修復性,需要偶數個硬碟才可以實現。其操作方式是把使用者寫入硬碟的資料百分之百地自動複製到別外一個或若干個硬碟上。RAID-1的磁碟利用率是1/2
評價:RAID1可以說是RAID0的一種極端,其資料安全係數極高,畢竟多個硬碟同一時間損壞的情況幾乎不大可能發生,只要當其中一個硬碟中的資料發生損壞,就可以在讀取時從別外資料完好的磁碟得到一致的資料複製。但由於資料是並行一致的儲存進入各個磁碟的,勢必會造成資料重複儲存,且當硬碟的容量不相同時,映象儲存將以最小容量的那個磁碟為準,因而容易浪費磁碟空間,且存取速度也會大打折扣。
3,RAID5
原理:RAID5不對儲存的資料進行備份,而是把資料和相對應的奇偶校驗資訊儲存到組成RAID5的各個磁碟上,並且奇偶校驗資訊和相對應的資料分別儲存於不用的磁碟上,這樣每個磁碟上就分別儲存有資料和校驗碼。當RAID5的一個磁碟資料發生損壞後,利用剩下的資料和相應的奇偶校驗資訊去恢復被損壞的資料。RAID-5的磁碟利用率是(n-1)/n(為什麼?)
評價:RAID5相當是RAID0和RAID1的綜合應用,取長補短,資料的儲存風險被各硬碟分擔了,存取速度和資料安全性都很不錯。構建RAID5磁碟陣列至少需要三塊硬碟。
以下舉例說明這種結構的原理:假設有三塊磁碟分別為Disk0,Disk1,Disk2.它們構成了RAID5結構,最簡單的情況是Disk0和Disk1除了儲存本身的資料外還儲存著Disk2的資料校驗資訊,這樣當Disk2發生資料損壞時,就可以利用Disk0和Disk1的資料及校驗資訊進行資料恢復。三個以上硬碟的情況也相似。

(四) Linux中軟體RAID的實現
1,首行Linux中實現軟體RAID需要核心的支援(通常是預設支援的),Linux的核心可以模擬軟體RAID控制器,實現Linux中的軟體RAID。
2,硬體RAID(在主機板上加插RAID控制卡)在Linux中的裝置名對應於(虛擬)SCSI硬碟,即/dev/sdN (N=0,1,2...)。軟體RAID裝置檔名如/dev/mdN (N=0,1,2...)。
3,我們需要相應的應用軟體(raidtools)建立管理RAID裝置。
4,軟體RAID裝置可以當分割槽看待,需要格式化後掛載:
[root]#mkfs.ext3 /dev/md1
[root]#mount /dev/md1 /mnt/raid

(五)軟體RAID的具體建立過程
1.新增硬碟
RAID裝置是由多個硬碟組成的,其基本成員是硬碟分割槽,即需要先對硬碟分割槽,具分割槽不能同在一個物理硬碟上(一個硬碟的不同分割槽建立RAID是沒有效果的)
2.安裝raidtools
raidtools中包含有RAID建立管理工具和預設的示範性配置檔案
3.編寫配置檔案/etc/raidtab
該配置檔案可以從raidtools中的示範性配置檔案裡複製過來使用.具體的目錄如下所示,注意選擇對應的RAID裝置檔案:/usr/share/doc/raidtools-*/raid[0145].conf.sample
4.建立RAID裝置
例:[root]#mkraid /dev/md0
5.格式化RAID裝置
例:[root]#mkfs.ext3 /dev/md0
6.掛載使用.
例:[root]#mount /dev/md0 /opt
7.解除安裝md0.
例:[root]#umount /opt
8.停止RAID裝置
例:[root]#raidstop /dev/md0

以建立RAID0為例,請參考:
1.新增硬碟,併為硬碟分割槽.
假設現有兩個硬碟為/dev/sdb和/dev/sdc.使用fdisk分別在各硬碟上只建立一個分割槽如:/dev/sdb1以及/dev/sdc1.
2.複製RAID0的示例檔案為/etc/raidtab
[root]#cp /usr/share/doc/raidtools-*/raid0.conf.sample /etc/raidtab
3.編輯/etc/raidtab檔案.注意指定建立RAID裝置的硬碟數和對應分割槽,修改後儲存退出
4.建立raid裝置md0. [root]#mkraid md0
5.格式化md0 [root]#mkfs.ext3 /dev/md0
6.掛載md0 (在不使用RAID裝置後需要先解除安裝RAID裝置再使用raidstop命令去除RAID)


注意:還可以使用以下命令檢測構面raid裝置的元件是否有損壞及應用狀態:
[root]#lsraid -A -a /dev/md0
透過以下命令檢視RAID裝置的核心狀態:
[root]#more /proc/mdstat
透過以下命令可以模擬RAID裝置失效,通常用於測試RAID裝置:
[root]#raidsetfaulty /dev/md0 /dev/sdb1 (指定md0裝置的sdb1出現問題)
以下命令當RAID裝置成員出現損壞時向RAID裝置中新增新的硬碟分割槽成員:
[root]#raidhotadd /dev/md0 /dev/sdd1 (如果此時檢視RAID裝置的核心狀態則 可以發現RAID1或RAID5會利用新增的成員自動對資料進行恢復)
以下命令用於去除RAID裝置成員
[root]#raidhotremove /dev/md0 /dev/sdb1

(六) 使用冗餘磁碟自動修復RAID裝置
方法是直接修改/etc/raidtab檔案。
首先指定冗餘裝置的個數(nr-spare-disks),並新增以下欄位:
raiddev /dev/sdd1
spare-disk (順序編號)
這樣在RAID裝置出現問題時可以對RAID1以及RAID5自運呼叫冗餘裝置對RAID裝置進行修復


二,LVM邏輯卷磁碟儲存技術
*LVM技術就是使用軟體技術在物理分割槽上模擬出新的分割槽

(一) LVM產生的背景
企業級應用對資料儲存的要求日益增強使得傳統的磁碟分割槽儲存技術顯得不夠靈活。LVM技術可以實現對儲存裝置容量的動態調整已適合儲存需求,因而是重要的儲存技術手段.
重要概念:PV (Phisical Volume) VG (Volume Group) LV (Logical Volume)

(二) LVM管理器
命令語法:
[root]#pvscan (列示系統中現有的物理卷)
[root]#pvcreate /dev/sda1 /dev/sda2 /dev/sda3 (對物理分割槽進行初始化)
[root]#vgscan (在建立卷組之前必須要執行該命令,它會掃描系統中現存的物理卷,並生成一個配置文
件/etc/lvmtab和一個資料庫檔案/etc/lvmtab.d)
[root]#vgcreate vg0 /dev/sda1 /dev/sda2 (將物理分割槽合併成為卷組,加-s引數可以指定物理擴充套件塊PE的大小以滿足不同要求的邏輯卷儲存要求,PE越大,則LVM的容量上限越大)
[root]#vgdisplay vg0 (列示指定卷組詳細資訊)
[root]#lvcreate -n (*LVM-name*) -L (指定邏輯卷大小) vg0 (表示從vg0產生出來)
該命令執行後會在/dev/vg0/目錄下產生對應名稱為LVM-name的邏輯卷LVM.
[root]#lvscan (列示當前系統中的LVM狀態和數量)
[root]#lvdisplay (*LVM-name*) (可以檢視LVM的詳細資訊)
[root]#lvresize -L +10M /dev/vg0/LVM-name (為ext2及ext3檔案系統的LVM無損擴容,注意使用前需先解除安裝欲擴容LVM裝置。)
[root]#vgextend vg0 /dev/sdc1 (為卷組新增成員)
[root]#pvmove /dev/sda1 [/dev/sda2] (可以透過LVM透明地對物理卷PV資料進行移動操作,省略第二個參數列示移除/dev/sda1上的資料,並把資料移動到LV上空餘的空間上儲存起來,這樣做的結果是/dev/sda1就可以空餘出來)

注意:
使用FDISK可以在新建分割槽上建立Linux LVM的檔案系統(編號為8e)
lvcreate新建好的LVM可以當成普通的分割槽看待,需經過格式化並掛載操作才可以使用

(三) 從卷組中刪掉指定的物理卷
命令語法:
[root]#pvmove /dev/sda1 (刪除sda1中的資料,並把資料轉移到剩餘的空閒PV中)
[root]#vgreduce /dev/sda1 (將sda1從卷組中刪除,該命令與vgextend相對應。sda1從卷組中刪除後可使用fdisk進行型別轉化再經格化後即可成為自由的分割槽了)

(四) 為指定的邏輯卷生成快照,用於資料備份
[root]#lvcreate -s -l 8 -n SNAPSHOT /dev/vg0/LVM-NAME (該命令可以生成指定邏輯卷當前時刻的快照,常用於備份資料。-s表於snapshot, -l 指定物理擴充套件塊PE的個數,-n 快照名稱. 這樣會在/dev/vg0/目錄下生成名為SNAPSHOT的快照檔案,可以格式化並掛載)

(五) 去除邏輯卷功能
如果不想使用邏輯卷功能,我們可以利用與建立邏輯卷時相反的思路逆向來實現,具體步驟如下:
1.確定當前系統指定的邏輯卷沒有正在掛載使用,並且不處於快照狀態(刪除時會有提示),可直接輸入mount命令檢視
2.再使用lvremove命令刪除已經建立過的邏輯卷
[root]#lvremove /dev/vg0/LVM-NAME
3.使用vgchange命令來停止vg0 的工作
[root]#vgchange -an vg0 (-ay 表示啟用指定卷組工作)
4.使用vgremove刪除指定的卷組
[root]#vgremove vg0
5.剩下的物理卷裝置經掛載即可自由使用


三,案例:整合RAID及LVM磁碟管理技術

實驗環境:Windows XP + VMware 5.0 + Redhat Fedora Core3

要求:使用三個硬碟構建RAID-5儲存資料,在保證資料安全性的同時還能讓磁碟空間根據需要動態的縮放。並嘗試在RAID-5實現邏輯卷掛載/home目錄.


*提示:建立RAID裝置--建立邏輯卷---修改/etc/fstab檔案---修改/etc/rc.d/rc.sysinit在啟動時啟用RAID裝置

*注意:
1.使用RAID裝置來建立LVM的方法同使用普通IDE硬碟構建LVM邏輯卷的方法一樣:
[root]#pvcreate /dev/RAID裝置名稱
2.修改/etc/fstab自動掛載RAID裝置後還要修改/etc/rc.d/rc.sysinit啟動指令碼,定位到指令碼的以下欄位(或相近欄位)update_boot_stage RCraid並在第一個if條件語句的then程式碼塊中新增以下命令:raidstart /dev/md0(RAID裝置). 這樣做的目的是為了在啟用RAID裝置的前提下,LVM邏輯卷管理器才能夠依次啟用PV,VG,LV並最後由/etc/fstab配置檔案成功實現掛載選項

筆記對某些重要問題做了必要註釋,希望有利於大家的理解。另外由於使用到的命令比較多,大家在練習時還要多注意結全shell提供的功能,例如按兩下tab鍵的命令補全功能,簡單的shell指令碼語法實現迴圈工作等等......

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617542/viewspace-947123/,如需轉載,請註明出處,否則將追究法律責任。

相關文章