天天看點

Linux安全動态磁盤存儲政策

                                    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的資料及校驗資訊進行資料恢複。三個以上硬碟的情況也相似。

繼續閱讀