SayCoo論壇

查看: 11471|回復: 0

RAID理論跟實務篇

[複製鏈接]
發表於 2006-7-1 00:41:56 | 顯示全部樓層 |閱讀模式
<<L337 Red Hat Enterprise Linux 管理指南>>
第3 章 磁碟陣列(RAID)
章節內容:
3.1 什麼是RAID?
3.2 誰該使用 RAID 呢?
3.3 硬體RAID VS.軟體RAID
3.4 RAID 等級與線性支援
實例演練1 利用Disk Druid 實作Software RAID(RHEL 3 及RHEL 4)
實例演練2 利用 /etc/raidtab 實作Software RAID(RHEL 3)
實例演練3 利用 mdadm 實作Software RAID(RHEL 4)- 2005/6/19 增訂
<<L337 Red Hat Enterprise Linux 管理指南>>
3.1 什麼是RAID?
RAID 的基本概念是結合多個小型且便宜的磁碟機成為一個陣列,以達到一個大
且昂貴的磁碟機無法做到的效能表現或資料容錯的目標,這個技術是源自1987
年,有一群研究者在美國University of California – Berkeley 發表了一篇文章:
A Case for Redundant Arrays of Inexpensive Disks",而 IBM 是此一專案研究
的主要協助者,這篇文章介紹了一個新的單字“R A I D”,同時並定義了五種
RAID 代號 - RAID level(如表3-1)。
表3-1:RAID level 比較表
磁碟陣列種類 原文意義 硬碟容錯
N 顆硬碟
可用容量
RAID level 0 Stripe / Span No N
RAID level 1 Mirror Yes N ÷ 2
RAID level 3 Parallel with Parity Yes N — 1
RAID level 4 Parallel with Parity Yes N — 1
RAID level 5 Striped with Rotating Parity Yes N — 1
這篇文章的主要針對當時的硬碟科技,在容量及速度上無法追上CPU 及記憶體
的發展的現象,而提出多種改善方法,因為長期來看這種腳步的差距,會造成硬
碟無法即時供應對資料的急迫需要。所以,它利用了各式技巧,將許多較小容量
的硬碟以RAID 技術,規劃為一座大的硬碟機。
同時,在實際儲存資料時透過這項技術,將資料切割成多區段並分別同時存放於
各個硬碟機上,在實際讀取資料時,也是同時自此多顆硬碟機讀出資料。由此可
見,這項技術RAID 著實提高了大型硬碟的效率。
RAID 是用來分散資訊到許多磁碟上的一種方法,使用例如磁碟機平行儲存(disk
striping,RAID Level 0)、磁碟機映射儲存(disk mirroring,RAID level 1)與
具備分散式同位元檢查資料的磁碟機平行儲存(disk striping with parity,RAID
Level 5) 等技術來達到容錯性、較短的延遲時間亦或增加讀取或寫入到磁碟的
頻寬,並且強化硬碟毀損時的回復能力。
RAID 的概念是資料可以一致地分散到陣列中的每一個磁碟,如要做到這樣,資
料必須先劃分為一致大小的區塊(chunks,雖然仍可能使用不同的大小,通常
<<L337 Red Hat Enterprise Linux 管理指南>>
是 32K 或64K 的大小)。根據所使用的RAID 等級,再來將會寫入每一個區塊
到陣列中的硬碟。 當資料要被讀取時,過程則相反,這樣將造成多個磁碟機實
際上為一個大型磁碟機的假象。
而且藉由Parity Check(同位元檢查)的概念及方法,能在該群陣列硬碟中任一
顆硬碟故障時仍能讀出資料,並可於資料重建時,將原故障硬碟內之應有資料,
經計算後置回替代的新硬碟中,使回復成原貌,以達到資料容錯的目標。
3.2 誰該使用RAID 呢?
需要保留大量資料在手邊的任何人(如系統管理員)都可藉由使用RAID 而受
益。使用RAID 的主要原由包括了:
1.希望獲得較快的存取速度
2.將多個小容量磁碟組合成一個單一的虛擬磁碟以增加儲存的容量
3.減少磁碟發生錯誤時的衝擊
3.3 硬體RAID VS. 軟體RAID
目前有兩種實作RAID 的方法:硬體RAID 與軟體RAID。
3.3.1 硬體 RAID
以硬體為基礎的系統,以獨立於主機之外的方式管理RAID 子系統,並且以每一
個RAID 陣列就像是主機的某個單一的磁碟。
硬體RAID 裝置的一個例子是連接到一個SCSI 控制器,並且以一個單一的SCSI
磁碟機代表RAID 陣列的裝置。一個外部的RAID 系統,移動所有RAID 的處理
"能力"到位於外部磁碟子系統的一個控制器。這整個子系統是透過一個SCSI 控
制器來連接到主機,並以一個單一的磁碟呈現給主機。
對作業系統來說,RAID 控制器也是以配接卡的形式來模擬類似一個SCSI 控制
器,不過它們自己本身處理所有實際的磁碟通訊。在這些例子中,您將一個磁碟
插入RAID 控制器,就像是您對SCSI 控制器所做的一樣,不過您已將它們加入
<<L337 Red Hat Enterprise Linux 管理指南>>
到RAID 控制器的組態設定中,而作業系統從未知道發生什麼事。
3.3.2 軟體 RAID
軟體RAID 在核心磁碟(區塊裝置)程式碼上實作這許多種的RAID 等級,它能
提供最經濟的解決方案,因為並不需要昂貴的磁碟控制器或熱插拔的裝置[註
1] 。軟體RAID 可以使用在便宜的 IDE 硬碟以及SCSI 硬碟上,加上今日速度
相當快的CPU,軟體 RAID 的效能表現已經超越硬體RAID 了。
Linux 核心中的MD驅動程式是一種完全與硬體無關的RAID 解決方案例子。 軟
體為基礎之陣列的效能表現,是依賴在伺服器的CPU 效能與負載。
軟體 RAID 的特色如下:
&#1048698; 執行緒的重建程序
&#1048698; 核心為基礎的設定
&#1048698; 在 Linux 機器間不需重建的陣列可攜性
&#1048698; 使用閒置的系統資源來背景化陣列的重建
&#1048698; 支援磁碟的熱插拔 ( Hot-swappable )
&#1048698; 自動偵測CPU 以利用某些CPU 的最佳化
註1:熱插拔( Hot-swappable )的機制,可以讓您在不關機的情況下,也可以拔除一個硬碟機。
3.4. RAID 等級與線性支援
下面筆者就常見RAID 等級逐一說明其存取方式:
&#1048698; RAID 0(Striping)
<<L337 Red Hat Enterprise Linux 管理指南>>
它是一種以效能為導向的資料條狀分佈儲存的技術。 這表示要寫入到陣列的資
料會先劃分為條狀,再寫入到陣列中的成員磁碟,這個方法以較低的成本來提供
了相當高的 I/O 存取效能,不過並沒有任何的容錯能力(也就是說RAID 0 中實
體中任何一顆硬碟會造成整個RAID 0 資料無法正常讀取)。
RAID 0 陣列的儲存容量等於硬體RAID 設定中所有成員磁碟的總容量,也等於
軟體RAID 設定中成員分割區的總容量。
圖3-1:RAID 0 存取方式示意圖
&#1048698; RAID 1(Mirroring)
RAID 1 是所有RAID 模式中最普及的一種。RAID 1 藉由寫入相同的資料到陣列
中的每一個成員磁碟中以提供容錯能力,這種方式將會在每一個磁碟上留下一份
映射的複本。由於它的單純與相當高的資料可用性,使得映射儲存一直都很受歡
迎。
<<L337 Red Hat Enterprise Linux 管理指南>>
RAID 1 運用兩個以上的磁碟並使用平行式的存取,以提供讀取時相當高的資料
傳輸速率,不過通常是獨立式的運作以提供快速的I/O 處理速率。RAID 1 提供
了相當好的資料可靠性,並且改善了執行讀取密集之應用程式的效能。不過相對
的所需的成本是相當可觀的。[註1] RAID 1 陣列的可使用容量為總磁碟容量之
一半。
註[1] RAID 1 的成本是很高的,因為您會寫入相同的資訊到陣列中所有的磁碟上,這將很浪費
硬碟的空間。 舉例來說,假如您已經設定了 RAID 1,而您的根目錄分割區 (/) 存放在兩個 40G
的硬碟上,雖然您總共有80GB 的空間,不過您只能存取 80GB 中的 40GB。 另外的 40GB 空
間是用來當作第一個 40GB 的Mirroring。
圖3-2:RAID 1 存取方式示意圖
&#1048698; RAID 3(Fixed parity & parallel access)
使用分散式同位元檢查資料(parity),並將之存放在單一的磁碟機中以保護資料
而資料分散於各磁碟機,可使用容量為總磁碟數減一之容量和。RAID 3 模式中
Parity 資料放置於固定磁碟機,每次存取均使用所有磁碟機。
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-3:RAID 3 存取方式示意圖
&#1048698; RAID 4(Fixed parity & independently access)
使用分散式同位元檢查資料(parity)[註2],並將之存放在單一的磁碟機中以保
護資料。這個方式較適用在交易式的I/O 存取,而不適用於大型的檔案傳輸。因
為這個既定的parity 磁碟機代表了一個固有的瓶頸限制,因此在不使用回寫快取
(write-back caching)技術的情況下,很少用到RAID 4 模式。
雖然RAID 4 是某些RAID 磁碟分割機制的一個選擇,不過在Red Hat Enterprise
Linux RAID 安裝中並沒有如此的選擇。[註3]硬體RAI level 4 的儲存容量等於
所有成員磁碟機的容量減掉一個成員磁碟機的容量。軟體RAID level 4 的儲存容
量等於成員分割區的容量減掉一個分割區的大小(假如它們是同樣大小的話)。
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-4:RAID 4 存取方式示意圖
[註2] 分散式同位元檢測資料是根據陣列中其餘的成員磁碟之內容所計算出來的,如果陣列中的
一個磁碟發生錯誤時,這些資訊可以使用來重建資料。在發生錯誤之磁碟被取出,然後重新輸
入資料於其中之前,這些重建的資料可以被使用來滿足對該磁碟 I/O 存取的要求。
[註3] RAID 4 與 RAID 5 佔有相同的磁碟空間,不過RAID 5 擁有較多的優點,因此RAID 4 並
不被支援。
<<L337 Red Hat Enterprise Linux 管理指南>>
&#1048698; RAID 5(Distributing parity & Independently access)
這是最普遍被使用的RAID 模式,藉由分散parity 的資訊到陣列中某些或所有的
成員磁碟機中,RAID 5 減少了在RAID 4 中存在的寫入瓶頸。僅有的效能表現
瓶頸在於 parity 計算的過程,不過如果使用現今相當快的CPU 加上軟體RAID
設定,這通常不是一個很大的問題。
與RAID 4 相同的是,結果會是不對稱的效能表現,也就是讀取的速度比起寫入
速度快了很多。RAID 5 通常使用回寫快取來減少這種不對稱性。硬體RAID 5
的儲存容量等於所有成員磁碟機的容量減掉一個成員磁碟機的容量。軟體RAID
5 的儲存容量等於成員分割區的容量減掉一個分割區的大小(假如它們是同樣大
小的話)。
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-5:RAID 5 存取方式示意圖
&#1048698; 線性 RAID 模式(Linear RAID)
線性 RAID 模式是一種簡易地群組磁碟機來建立一個大型的虛擬磁碟。在線性
RAID 模式設定中,空間區塊是從一個成員磁碟依序分配下來,當第一個磁碟完
全填滿時,再分配到第二個磁碟,依此類推。 這種群組化並沒有提供任何的效
能增益,因為在成員磁碟機之間不可能會有任何分開的 I/O 操作。線性的RAID
模式也沒有提供多餘性,而且說實在的它也降低了可靠性—假如任何一個成員磁
<<L337 Red Hat Enterprise Linux 管理指南>>
碟發生錯誤,整個陣列便無法存取使用。總磁碟容量是所有成員磁碟機的容量。
備援硬碟(Spare Disk)
如果在陣列中,加上備援Spare 硬碟,當任一陣列硬碟故障時,該Spare 硬碟
可以自動將故障硬碟立即取代,並開始重建資料,縮短資修復的時間及增加維修
的方便。
筆者將最常見的RAID 0、RAID 1、RAID 5 特性整理如下圖(圖3-6):
圖3-6:RAID 0、RAID 1、RAID 5 比較圖
實例演練1:利用Disk Druid 實作Software RAID
目的:
了解RAID 的基本觀念、硬體與軟體 RAID 的相異處,以及 RAID 0, 1 5 等的
相異處後,在圖形安裝階段可以利用「Disk Druid」配置軟體 RAID 設定。此實
例演練欲將2 個100MB 的分割區組合成一個RAID 0(dev/md0),並將其掛載
至 / sharedata。
假如您要建立一個 /boot 的RAID 分割區,您必定要選擇 RAID 1,而且它必
須使用前面的兩個磁碟機的其中一個(第一個 IDE 或第二個 SCSI)。假如您
沒有設定一個 /boot 的RAID 分割區,而您要建立一個 / 的 RAID 分割區,此
時必須設定為RAID 1 而且它必須使用前面的兩個磁碟機的其中一個(第一個
IDE 或第二個 SCSI)。
<<L337 Red Hat Enterprise Linux 管理指南>>
步驟:
1..建立一個 RAID 裝置前,您必須先建立 RAID 分割區。在『磁碟分割設定』
的畫面,選擇「使用Disk Druid 分割磁碟機」。(圖3-7)
圖3-7:Disk Druid 畫面
2. 建立一個 RAID 裝置前,您必須先建立 RAID 分割區。Disk Druid 中點選
「新增」來新增一個新的分割區,「檔案系統類型」必須為「軟體 RAID」,重複
以上步驟來建立您的 RAID 設定所需的所有分割區。筆者切割二個大小為
100MB 的軟體 RAID 分割區。(圖3-8,3-9)
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-8:Disk Druid 新增軟體RAID 分割區畫面
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-9:新增兩個軟體RAID 分割區畫面
3.建立一個 RAID 裝置,在 Disk Druid 的主要磁碟分割畫面中,選取 RAID 按
鈕。會出現圖3-10 的畫面,按下「確定」
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-10:RAID 選項畫面
4.接下來你必須指定「檔案系統掛載點」、「檔案系統類型」、「RAID 裝置」及設
定RAID 類型。 ( 圖3-11 )
<<L337 Red Hat Enterprise Linux 管理指南>>
圖3-11:建立RAID 裝置
實例演練2:利用 /etc/raidtab 實作Software RAID
目的:
在實例演練1 中,利用「Disk Druid」來配置軟體RAID 設定,但「Disk Druid」
只有在安裝時才可使用。如果我們要在系統安畢後配置軟RAID,又該如何?此
實例演練目的為在系統巳安裝完畢後,新增2 個100MB 的分割區並將其組合成
一個RAID 0(dev/md0),並指定其掛載點為 /raiddata。
步驟:
1.利用「fdisk」修改Partition Table
[root@server1 ~]# fdisk /dev/hda
The number of cylinders for this disk is set to 1174.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
<<L337 Red Hat Enterprise Linux 管理指南>>
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 9663 MB, 9663676416 bytes
255 heads, 63 sectors/track, 1174 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 33 265041 83 Linux
/dev/hda2 34 951 7373835 83 Linux
/dev/hda3 952 1016 522112+ 82 Linux swap
/dev/hda4 1017 1174 1269135 f Win95 Ext'd (LBA)
/dev/hda5 1017 1049 265041 83 Linux
/dev/hda6 1050 1062 104391 83 Linux
2.新增兩個100MB 的分割區
Command (m for help): n &#1048773;新增分割區
First cylinder (1063-1174, default 1063): &#1048773;按下「Enter」鍵,採用預設值
Using default value 1063
Last cylinder or +size or +sizeM or +sizeK (1063-1174, default 1174): +100M
&#1048773; 指定分割區的大小為100MB
Command (m for help): n &#1048773;新增分割區
First cylinder (1076-1174, default 1076): &#1048773;按下「Enter」鍵,採用預設值
Using default value 1076
Last cylinder or +size or +sizeM or +sizeK (1076-1174, default 1174): +100M
&#1048773; 指定分割區的大小為100MB
3. 將分割區的類型轉換成軟體RAID 類型(0xfd)
Command (m for help): t &#1048773;轉換分割區類型
Partition number (1-8): 7 &#1048773;指定欲轉換的分割區
Hex code (type L to list codes): fd &#1048773;Linux raid autodetect 類型
Changed system type of partition 7 to fd (Linux raid autodetect)
Command (m for help): t &#1048773;轉換分割區類型
<<L337 Red Hat Enterprise Linux 管理指南>>
Partition number (1-8): 8 &#1048773;指定欲轉換的分割區
Hex code (type L to list codes): fd &#1048773;Linux raid autodetect 類型
Changed system type of partition 8 to fd (Linux raid autodetect)
3.將異動的結果寫入Partition Table,重新開機
Command (m for help): p &#1048773;查看Partition Table
Disk /dev/hda: 9663 MB, 9663676416 bytes
255 heads, 63 sectors/track, 1174 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 33 265041 83 Linux
/dev/hda2 34 951 7373835 83 Linux
/dev/hda3 952 1016 522112+ 82 Linux swap
/dev/hda4 1017 1174 1269135 f Win95 Ext'd (LBA)
/dev/hda5 1017 1049 265041 83 Linux
/dev/hda6 1050 1062 104391 83 Linux
/dev/hda7 1063 1075 104391 fd Linux raid
autodetect
/dev/hda8 1076 1088 104391 fd Linux raid
autodetect
Command (m for help): w &#1048773;將異動的結果寫入Partition Table
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 裝置或系統資源
忙碌中.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@server1 ~]# reboot
4.系統在開機的時候,會根據 /etc/raidtab 來配置軟體RAID。在實例演練1 中
<<L337 Red Hat Enterprise Linux 管理指南>>
「Disk Druid」會根據設定而產生 /etc/raidtab。但安裝後要配置軟體RAID,就
得自己編寫此設定檔。這個檔案有點複雜,不過讀者不用擔心,系統有提供一個
範例檔,位於 /usr/share/doc/raidtools-*/raidtab.sample,內容如下:
# sample raiddev configuration file
#
# 'persistent' RAID5 setup, with no spare disks:
#
raiddev /dev/md0
raid-level 5
nr-raid-disks 3
nr-spare-disks 0
persistent-superblock 1
chunk-size 4
device /dev/sdb1
raid-disk 0
device /dev/sda1
raid-disk 1
device /dev/sdc1
raid-disk 2
# compatible (old) RAID0 setup:
#
raiddev /dev/md1
raid-level 0
nr-raid-disks 3
persistent-superblock 1
chunk-size 4
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
raid-disk 2
#
<<L337 Red Hat Enterprise Linux 管理指南>>
# persistent RAID1 array with 1 spare disk.
#
raiddev /dev/md2
raid-level 1
nr-raid-disks 2
nr-spare-disks 1
persistent-superblock 1
chunk-size 4
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1
device /dev/sdc1
spare-disk 0
5.或者讀者也可利用「man raidtab」,也可得到參考的範例。
[root@server1 ~]# man raidtab
......................
raiddev /dev/md0
raid-level 0
nr-raid-disks 2
persistent-superblock 0
chunk-size 8
device /dev/hda1
raid-disk 0
device /dev/hdb1
raid-disk 1
raiddev /dev/md1
raid-level 5
nr-raid-disks 3
nr-spare-disks 1
persistent-superblock 1
parity-algorithm left-symmetric
<<L337 Red Hat Enterprise Linux 管理指南>>
device /dev/sda1
raid-disk 0
device /dev/sdb1
raid-disk 1
........................
6.編寫 /etc/raidtab
[root@server1 ~]# vi /etc/raidtab
raiddev /dev/md0 &#1048773;指定合併成 /dev/md0 的分割區
raid-level 0 &#1048773;指定RAID 的類型
nr-raid-disks 2
persistent-superblock 0
chunk-size 8
device /dev/hda7 &#1048773;改為符合系統的分割區
raid-disk 0
device /dev/hda8 &#1048773;改為符合系統的分割區
raid-disk 1
7.將其合併成 /dev/md0 的分割區
[root@server1 ~]# mkraid /dev/md0 &#1048773;根據 /etc/raidtab 配置軟體RAID
handling MD device /dev/md0
analyzing super-block
[root@server1 ~]# cat /proc/mdstat &#1048773;檢查軟體RAID 狀態
Personalities : [raid0]
read_ahead 1024 sectors
Event: 1
md0 : active raid0 hda8[1] hda7[0]
208768 blocks 8k chunks
unused devices: <none>
8.將/dev/md0 格式為ext3 的檔案系統
[root@server1 ~]# mke2fs -j /dev/md0
mke2fs 1.32 (09-Nov-2002)
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
<<L337 Red Hat Enterprise Linux 管理指南>>
Fragment size=1024 (log=0)
52208 inodes, 208768 blocks
10438 blocks (5.00%) reserved for the super user
First data block=1
26 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801
Writing inode tables: done
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 26 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
9.建立掛載點 /raiddata,並測試是否能正常寫入資料
[root@server1 ~]# mkdir /raiddata
[root@server1 ~]# mount /dev/md0 /raiddata/
[root@server1 ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda2 7.0G 2.2G 4.5G 33% /
/dev/hda1 251M 14M 225M 6% /boot
/dev/hda5 251M 8.1M 230M 4% /home
none 125M 0 125M 0% /dev/shm
/dev/hda6 99M 9.1M 85M 10% /data
/dev/md0 198M 4.1M 184M 3% /raiddata
[root@server1 ~]# cp -r /boot /raiddata/ 測試是否能正常寫入資料
[root@server1 ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda2 7.0G 2.2G 4.5G 33% /
/dev/hda1 251M 14M 225M 6% /boot
/dev/hda5 251M 8.1M 230M 4% /home
none 125M 0 125M 0% /dev/shm
/dev/hda6 99M 9.1M 85M 10% /data
<<L337 Red Hat Enterprise Linux 管理指南>>
/dev/md0 198M 9.1M 179M 5% /raiddata
10.修改 /etc/fstab 加入 /raiddata 檔案系統的記綠,檢查重新開機後是否自動掛
載 /raiddata 檔案系統。
[root@server1 /]# vi /etc/fstab
LABEL=/ / ext3 defaults 1 1
LABEL=/boot /boot ext3 defaults
1 2
none /dev/pts devpts gid=5,mode=620
0 0
LABEL=/home /home ext3 defaults 1 2
none /proc proc defaults
0 0
none /dev/shm tmpfs defaults
0 0
/dev/hda3 swap swap defaults
0 0
/dev/cdrom /mnt/cdrom udf,iso9660
noauto,owner,kudzu,ro 0 0
/dev/fd0 /mnt/floppy auto noauto,owner,kudzu
0 0
LABEL=/data /data ext3 defaults
1 2
/dev/md0 /raiddata ext3 defaults
1 2
[root@server1 /]# reboot
[root@server1 ~]# mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda5 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda6 on /data type ext3 (rw)
<<L337 Red Hat Enterprise Linux 管理指南>>
/dev/md0 on /raiddata type ext3 (rw)
實例演練3 利用 mdadm 實作Software RAID(RHEL4)
目的:
在實例演練2 中的方法適用於RHEL 3,RHEL 4 則是利用「mdadm」指令來配
置軟體RAID 設定。此實例演練目的為在系統巳安裝完畢後,新增2 個100MB
的分割區並將其組合成一個RAID 0(dev/md0),並指定其掛載點為 /raiddata。
步驟:
1.利用「fdisk」修改Partition Table
[root@server1 ~]# fdisk /dev/hda
The number of cylinders for this disk is set to 1174.
There is nothing wrong with that, but this is larger than 1024,
and could in certain setups cause problems with:
1) software that runs at boot time (e.g., old versions of LILO)
2) booting and partitioning software from other OSs
(e.g., DOS FDISK, OS/2 FDISK)
Command (m for help): p
Disk /dev/hda: 9663 MB, 9663676416 bytes
255 heads, 63 sectors/track, 1174 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 33 265041 83 Linux
/dev/hda2 34 951 7373835 83 Linux
/dev/hda3 952 1016 522112+ 82 Linux swap
/dev/hda4 1017 1174 1269135 f Win95 Ext'd (LBA)
/dev/hda5 1017 1049 265041 83 Linux
/dev/hda6 1050 1062 104391 83 Linux
2.新增兩個100MB 的分割區
Command (m for help): n &#1048773;新增分割區
First cylinder (1063-1174, default 1063): &#1048773;按下「Enter」鍵,採用預設值
<<L337 Red Hat Enterprise Linux 管理指南>>
Using default value 1063
Last cylinder or +size or +sizeM or +sizeK (1063-1174, default 1174): +100M
&#1048773; 指定分割區的大小為100MB
Command (m for help): n &#1048773;新增分割區
First cylinder (1076-1174, default 1076): &#1048773;按下「Enter」鍵,採用預設值
Using default value 1076
Last cylinder or +size or +sizeM or +sizeK (1076-1174, default 1174): +100M
&#1048773; 指定分割區的大小為100MB
3. 將分割區的類型轉換成軟體RAID 類型(0xfd)
Command (m for help): t &#1048773;轉換分割區類型
Partition number (1-8): 7 &#1048773;指定欲轉換的分割區
Hex code (type L to list codes): fd &#1048773;Linux raid autodetect 類型
Changed system type of partition 7 to fd (Linux raid autodetect)
Command (m for help): t &#1048773;轉換分割區類型
Partition number (1-8): 8 &#1048773;指定欲轉換的分割區
Hex code (type L to list codes): fd &#1048773;Linux raid autodetect 類型
Changed system type of partition 8 to fd (Linux raid autodetect)
4.將異動的結果寫入Partition Table,重新開機
Command (m for help): p &#1048773;查看Partition Table
Disk /dev/hda: 9663 MB, 9663676416 bytes
255 heads, 63 sectors/track, 1174 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/hda1 * 1 33 265041 83 Linux
/dev/hda2 34 951 7373835 83 Linux
/dev/hda3 952 1016 522112+ 82 Linux swap
/dev/hda4 1017 1174 1269135 f Win95 Ext'd (LBA)
/dev/hda5 1017 1049 265041 83 Linux
/dev/hda6 1050 1062 104391 83 Linux
/dev/hda7 1063 1075 104391 fd Linux raid
<<L337 Red Hat Enterprise Linux 管理指南>>
autodetect
/dev/hda8 1076 1088 104391 fd Linux raid
autodetect
Command (m for help): w &#1048773;將異動的結果寫入Partition Table
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 裝置或系統資源
忙碌中.
The kernel still uses the old table.
The new table will be used at the next reboot.
Syncing disks.
[root@server1 ~]# partprobe
4.利用mdadm 將其合併成 /dev/md0 的分割區
[root@server1 ~]# mdadm -C /dev/md0 -l 0 -n 2 /dev/hda7 /dev/hda8
說明:-C 建立;-l 指定RAID level;-n 硬體數量
mdadm: array /dev/md0 started.
[root@server1 ~]# cat /proc/mdstat &#1048773;檢查軟體RAID 狀態
Personalities : [raid0]
md0 : active raid0 hda8[1] hda7[0]
208640 blocks 64k chunks
unused devices: <none>
5.將/dev/md0 格式為ext3 的檔案系統
[root@server1 ~]# mke2fs -j /dev/md0
mke2fs 1.35 (28-Feb-2004)
max_blocks 213647360, rsv_groups = 26080, rsv_gdb = 256
Filesystem label=
OS type: Linux
Block size=1024 (log=0)
Fragment size=1024 (log=0)
52208 inodes, 208640 blocks
10432 blocks (5.00%) reserved for the super user
<<L337 Red Hat Enterprise Linux 管理指南>>
First data block=1
Maximum filesystem blocks=67371008
26 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801
Writing inode tables: done
inode.i_blocks = 3586, i_size = 67383296
Creating journal (4096 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
9.建立掛載點 /raiddata,並測試是否能正常寫入資料
[root@server1 ~]# mkdir /raiddata
[root@server1 ~]# mount /dev/md0 /raiddata/
[root@server1 ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda2 7.0G 2.2G 4.5G 33% /
/dev/hda1 251M 14M 225M 6% /boot
/dev/hda5 251M 8.1M 230M 4% /home
none 125M 0 125M 0% /dev/shm
/dev/hda6 99M 9.1M 85M 10% /data
/dev/md0 198M 4.1M 184M 3% /raiddata
[root@server1 ~]# cp -r /boot /raiddata/ 測試是否能正常寫入資料
[root@server1 ~]# df -h
檔案系統 容量 已用 可用 已用% 掛載點
/dev/hda2 7.0G 2.2G 4.5G 33% /
/dev/hda1 251M 14M 225M 6% /boot
/dev/hda5 251M 8.1M 230M 4% /home
none 125M 0 125M 0% /dev/shm
/dev/hda6 99M 9.1M 85M 10% /data
/dev/md0 198M 9.1M 179M 5% /raiddata
<<L337 Red Hat Enterprise Linux 管理指南>>
6.修改 /etc/fstab 加入 /raiddata 檔案系統的記綠,檢查重新開機後是否會自動
掛載 /raiddata 檔案系統。
[root@server1 /]# vi /etc/fstab
...
/dev/md0 /raiddata ext3 defaults 1 2
[root@server1 /]# reboot
[root@server1 ~]# mount
/dev/hda2 on / type ext3 (rw)
none on /proc type proc (rw)
usbdevfs on /proc/bus/usb type usbdevfs (rw)
/dev/hda1 on /boot type ext3 (rw)
none on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/hda5 on /home type ext3 (rw)
none on /dev/shm type tmpfs (rw)
/dev/hda6 on /data type ext3 (rw)
/dev/md0 on /raiddata type ext3 (rw)


[ 本帖最後由 top11221031 於 2006-7-1 12:56 AM 編輯 ]
您需要登錄後才可以回帖 登錄 | 加入會員

本版積分規則

手機版|黑名單|SayCoo論壇

GMT+8, 2024-4-16 12:56

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回復 返回頂部 返回列表