歡迎您光臨本站 註冊首頁

Linux安全動態磁碟存儲策略

←手機掃碼閱讀     火星人 @ 2014-03-09 , reply:0

Linux安全動態磁碟存儲策略

1.軟體RAID技術:
RAID0/RAID1/RAID5
2.LVM邏輯卷管理技術:
PV/VG/LV
3.案例:整合RAID和LVM的磁碟管理策略

一,軟體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).

(三) RAID0,RAID1,RAID5介紹
1,RAID0又稱Striping(磁碟擴展).
原理:RAID0通過把連續的數據按先後順序分散到多個磁碟上來提高存儲性能,這樣,數據請求就可以被多個磁碟并行的執行,每個磁碟執行屬於它自已的那部分數據請求.這種數據上的并行操作可以充分利用匯流排的帶寬,顯著提高磁碟整體的存取性能.但由於數據是按順序先後連續的寫入多個磁碟的,如果其中一個磁碟的數據受到損壞,則必然會打破數據的連續性,從而大大地降低RAID的安全性.


評價:速度最快,安全性偏低.適用於只要求存取速度但安全性要求不嚴格的數據存儲應用.

(四) 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配置文件成功實現掛載選項.

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的數據及校驗信息進行數據恢復.三個以上硬碟的情況也相似.

2,數據冗餘的功能是在用戶數據一旦發生損壞后,利用冗餘信息可以使損壞的數據得以恢復,從而保障了用戶數據的安全性.

3,在用戶看起來,組成的磁碟組就像是一個硬碟,對磁碟陣列的操作與單個硬碟的一模一樣.
註:關於RAID級別目前有0-6共7種不用的級別,不過常用的是Level0,Level1,Level5三種.支持RAID磁碟陣列不但需要主板的主持,通常還要安裝一種稱為RAID控制器的PC適配器為管理硬碟陣列.Linux內核可以模擬RAID控制器,用來管理硬碟,但只支持級別0,1,4,5.

本文出自 「楊冬的博客」 博客,請務必保留此出處http://yangdong.blog.51cto.com/2959198/540883


[火星人 ] Linux安全動態磁碟存儲策略已經有640次圍觀

http://coctec.com/docs/linux/show-post-48889.html