小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Linux中Software RAID的實(shí)現(xiàn)和性能分析

 農(nóng)夫子oice 2007-05-02
 Linux中Software RAID的實(shí)現(xiàn)和性能分析

摘  要:本文詳細(xì)介紹了Linux下Software RAID的實(shí)現(xiàn),進(jìn)行了性能分析,對數(shù)據(jù)的安全性及訪問的效率都進(jìn)行了深入的討論。

關(guān)鍵詞:Linux;RAID; 磁盤鏡像;性能分析

一 前言

RAID是Redundant Arrays of Independent Disks的簡稱,中文為廉價冗余磁盤陣列。明確標(biāo)準(zhǔn)級別分別是0、1、2、3、4、5等,RAID為使用者降低了成本、增加了執(zhí)行效率,并提供了系統(tǒng)運(yùn)行的穩(wěn)定性。RAID1又稱為磁盤鏡像,原理是在兩個硬盤之間建立完全的鏡像,即所有數(shù)據(jù)會被同時存放到兩個物理硬盤上,當(dāng)一個磁盤出故障時,仍可從另一個硬盤中讀取數(shù)據(jù),因此安全性得到保障。但系統(tǒng)的成本大大提高。

本人一直維護(hù)一臺Linux服務(wù)器,提供WEB、FTP、TELNETD等服務(wù)。由于管理不善,未給服務(wù)器接UPS電源,某日突然停電,造成服務(wù)器硬盤物理損傷,數(shù)據(jù)全部丟失。因?yàn)閷W(xué)業(yè)較重,服務(wù)器數(shù)據(jù)備份不及時,雖然馬上重新恢復(fù)系統(tǒng),提供服務(wù),但是仍然丟失了很多重要數(shù)據(jù)。痛定思痛,決定給服務(wù)器做兩塊硬盤的RAID1備份,以防此類事故再次發(fā)生。由于手頭有空余硬盤,所使用的又是Redhat Linux 9.0操作系統(tǒng),為了節(jié)約成本,選擇了軟件實(shí)現(xiàn)RAID1。

二 具體實(shí)現(xiàn) 1 服務(wù)器配置

服務(wù)器型號為IBM的Netfinity 5100,具體配置是:CPU:Pentium III XeonTM 900MHz;內(nèi)存:512M;磁盤控制器:U2SCSI;網(wǎng)絡(luò):內(nèi)置10/100M以太網(wǎng);硬盤:IBM SCSI 36G 一塊。裝Redhat Linux 9.0操作系統(tǒng),主要為同學(xué)提供WEB服務(wù),后臺還有數(shù)據(jù)庫服務(wù)Mysql。

現(xiàn)在用手頭空余的IBM SCSI 36G和以前的那塊硬盤一起做成RAID1。制作過程首先要保證原始數(shù)據(jù)不丟失,并在不重新安裝系統(tǒng)的基礎(chǔ)上。

服務(wù)器磁盤分區(qū)情況見表1:

 

DEVICE

MOUNTPOINT

SIZE

/dev/sda1

/

6000MB

/dev/sda2

/boot

200MB

/dev/sda3

/var

15000MB

/dev/sda4

SWAP

1024MB

表1 服務(wù)器磁盤分區(qū)

2 前期準(zhǔn)備工作

制作RAID之前,需要對系統(tǒng)進(jìn)行一些測試,看其是否支持RAID磁盤分區(qū),及從RAID分區(qū)啟動。需要進(jìn)行以下檢測:

(1)       需要檢查內(nèi)核是否支持自動識別RAID設(shè)備。

(2)       在創(chuàng)建RAID分區(qū)時必須使用持久化設(shè)備類型。

(3)       用來制作RAID分區(qū)的磁盤分區(qū)類型必須被設(shè)置成0xFD(可以使用fdisk程序,并設(shè)置磁盤分區(qū)類型為“fd”)。

如果是默認(rèn)安裝系統(tǒng),并直接運(yùn)行服務(wù),之前沒有做過RAID的機(jī)器,以上都是默認(rèn)不支持的,因此你必須完成以下的預(yù)備工作:

(1)  在Redhat Linux下有一個非常有用的命令:mkinitrd,該命令可以創(chuàng)建一個鏡像,在啟動的時候自動加載你所需要加載的內(nèi)核模塊。使用方式如下:

mkinitrd –with=<module> <ramdisk name> <kernel>

具體例子:

mkinitrd –preload raid1 –with=raid1 raid-ramdisk 2.2.5-22(注:raid-ramdisk 2.2.5-22是啟動時使用的initimg)

這樣就能保證在啟動的時候,內(nèi)核自動識別RAID設(shè)備,并能夠把根目錄掛載到RAID磁盤分區(qū)上頭。這樣就保證了,能讓兩塊硬盤完全一樣,當(dāng)一塊硬盤出故障時,能從令一塊硬盤直接啟動。

(2)  要創(chuàng)建RAID分區(qū)時使用持久化設(shè)備類型,就需要在RAID配置文件中加上以下語句:

Persistent-superblock 1

(3)  使用fdisk程序,能夠修改磁盤分區(qū)的類型,把所有的Linux分區(qū)都改成fd類型,此修改不會傷及磁盤分區(qū)上的數(shù)據(jù)。

3 具體步驟

(1)  用Redhat的安裝啟動盤啟動機(jī)器,在啟動前需要選擇啟動模式,輸入:linux rescue,進(jìn)入救援模式,需要注意的是,不要選擇掛載磁盤分區(qū),磁盤分區(qū)必須在沒有掛載的情況下,才能做成RAID。

(2)  用fdisk對新硬盤進(jìn)行分區(qū),保證新硬盤的每個分區(qū)的大小都和老硬盤分區(qū)大小都相近。具體步驟就不詳細(xì)介紹了。需要注意的是,在新硬盤上頭最好也分處SWAP分區(qū),如果老硬盤出故障,需要從新硬盤啟動,但是新硬盤又沒有SWAP分區(qū),這樣對系統(tǒng)性能會有影響。

(3)  創(chuàng)建RAID配置文件。該文件默認(rèn)是沒有的,需要自己創(chuàng)建,默認(rèn)的配置文件保存在/etc目錄下,文件名為raidtab,詳細(xì)見表2。

(4)  創(chuàng)建md設(shè)備,即RAID設(shè)備,執(zhí)行以下命令:

(rescue)#  mknod  /dev/md0  b  9  0

(rescue)#  mknod  /dev/md1  b  9  0

(rescue)#  mknod  /dev/md2  b  9  0

(5)  開始創(chuàng)建RAID設(shè)備,使用mkraid命令,執(zhí)行如下:

(rescue)#  mkdir  -really-force  /dev/md0

(rescue)#  mkdir  -really-force  /dev/md1

(rescue)#  mkdir  -really-force  /dev/md2

注意,在執(zhí)行完以上一條命令的時候,可以使用命令:cat  /proc/mdstat 察看制作RAID分區(qū)的完成程度,一般10G的分區(qū)大概需要20-30分鐘,視機(jī)器性能而定。當(dāng)制作完一個分區(qū),才能繼續(xù)制作下一個RAID分區(qū),不要同時執(zhí)行兩條命令。

 

raiddev /dev/md0

raid-level        1

nr-raid-disks      2

nr-spare-disks     0

chunk-size       4

persistent-superblock 1

device     /dev/sda1

raid-disk   0

device     /dev/sdb1

raid-disk   1

raiddev /dev/md1

raid-level        1

nr-raid-disks      2

nr-spare-disks     0

chunk-size       4

persistent-superblock 1

device     /dev/sda2

raid-disk   0

device     /dev/sdb2

raid-disk   1

raiddev /dev/md2

raid-level        1

nr-raid-disks      2

nr-spare-disks     0

chunk-size       4

persistent-superblock 1

device     /dev/sda3

raid-disk   0

device     /dev/sdb3

raid-disk   1

 

表2 /etc/raidtab文件

(6)  掛載做好的RAID磁盤分區(qū),對應(yīng)的分區(qū)和系統(tǒng)目錄的關(guān)系是:md0對應(yīng)根目錄,md1對應(yīng)/boot目錄,md2對應(yīng)/var目錄。掛載好分區(qū)后,用chroot命令切換到根目錄下。

(7)  接下來你需要修改兩個配置文件:/etc/fstab和/boot/grub/grub.conf。

/etc/fstab文件是系統(tǒng)分區(qū)的配置文件,修改它的目的是在啟動的時候掛載各個RAID磁盤分區(qū)。修改后的/etc/fstab文件見表3:

 

/dev/md0        /                ext3           defaults       1 1

/dev/md1        /boot             ext3           defaults       1 2

/dev/md2        /var              ext3           defaults       1 2

/dev/sda4        swap             swap          defaults       0 0

表3 /etc/fstab文件

 

/boot/grub/grub.conf文件是啟動時候的配置文件,修改它的目的是在啟動的時候能找到RAID磁盤的根目錄,并找到啟動的鏡像文件。修改后的/boot/grub/grub.conf見表4:

# grub.conf generated by anaconda

#

# Note that you do not have to rerun grub after making changes to this file

# NOTICE:  You have a /boot partition.  This means that

#          all kernel and initrd paths are relative to /boot/, eg.

#          root (hd0,0)

#          kernel /vmlinuz-version ro root=/dev/md1

#          initrd /initrd-version.img

#boot=/dev/sda1

default=0

timeout=5

splashimage=(hd0,0)/grub/splash.xpm.gz

hiddenmenu

title Red Hat Enterprise Linux AS (2.6.9-5.EL)

       root (hd0,0)

       kernel /vmlinuz-2.6.9-5.EL ro root=/dev/md1

       initrd /initrd-2.6.9-5.EL.img

表4:/boot/grub/grub.conf文件

(8)  制作完RAID磁盤分區(qū)后,由于做成一個RAID分區(qū)的兩個物理磁盤分區(qū)大小不可能完全一樣,一般都會偏小,因此要重新調(diào)整文件系統(tǒng)的大小。以/dev/md0為例,需要執(zhí)行以下命令:

(rescue)#  e2fsck  -f  /dev/md0

(rescue)#  resize2fs  /dev/md0

對其他的RAID磁盤分區(qū)也執(zhí)行同樣的命令,然后你就可以重新啟動機(jī)器了,如果順利的話,機(jī)器就運(yùn)行在RAID1狀態(tài)下了。

(9)  收尾工作,你可能希望機(jī)器可以從任何一快硬盤啟動,因?yàn)槿绻饔脖P出故障,只需要重新啟動,就可以繼續(xù)提供服務(wù),因此,你必須在輔硬盤上把啟動程序grub重新安裝一遍。

三 分析 1 安全性分析

在使用了RAID磁盤分區(qū)后,只要是對該類分區(qū)進(jìn)行的數(shù)據(jù)寫操作,數(shù)據(jù)會被寫到兩塊硬盤的對應(yīng)分區(qū)上,兩塊硬盤保持同步更新。這樣就保證了數(shù)據(jù)的安全性,也無需經(jīng)常備份數(shù)據(jù)了。制作過程中使用的是一塊空余硬盤,RAID1的實(shí)現(xiàn)是系統(tǒng)提供的軟件方式,節(jié)省了RAID卡的開銷,以最小的成本實(shí)現(xiàn)了我們的目標(biāo)。

2 效率分析

在選擇RAID1方式的時候,一直擔(dān)心它的效率問題,RAID1只提供數(shù)據(jù)冗余備份,RAID0能提供較高的數(shù)據(jù)訪問速度,如果選擇實(shí)現(xiàn)RAID0+1的話,至少需要4塊硬盤。成本將大大提高。在制作完RAID1后,馬上進(jìn)行了磁盤讀些測驗(yàn),分析性能。

進(jìn)行磁盤性能測驗(yàn)是使用Linux自帶的工具h(yuǎn)dparm。該命令的測試原理是往磁盤分區(qū)上反復(fù)讀寫大量數(shù)據(jù),并計(jì)算時間,以此來測試磁盤性能。在系統(tǒng)下執(zhí)行該命令,則可以得到硬盤數(shù)據(jù)讀寫的測驗(yàn)結(jié)果。實(shí)驗(yàn)數(shù)據(jù)見表5:

 

[root@panda ~]# hdparm -Tt /dev/sda1

 

/dev/sda1:

 Timing cached reads:   696 MB in  2.01 seconds = 346.67 MB/sec

 Timing buffered disk reads:  154 MB in  3.01 seconds =  51.10 MB/sec

[root@panda ~]# hdparm -Tt /dev/sdb1

 

/dev/sdb1:

 Timing cached reads:   796 MB in  2.01 seconds = 396.28 MB/sec

 Timing buffered disk reads:  146 MB in  3.03 seconds =  48.21 MB/sec

[root@panda ~]# hdparm -Tt /dev/md0

 

/dev/md0:

 Timing cached reads:   824 MB in  2.01 seconds = 410.22 MB/sec

 Timing buffered disk reads:  130 MB in  3.00 seconds =  43.31 MB/sec

表5 硬盤性能測驗(yàn)數(shù)據(jù)

從上表的實(shí)驗(yàn)數(shù)據(jù)看出,第一行數(shù)據(jù)是對主硬盤性能測驗(yàn)的數(shù)據(jù),從硬盤cache讀寫數(shù)據(jù)的速度是346.67 MB/sec,從硬盤盤面上讀寫數(shù)據(jù)的速度是51.10 MB/sec;第二行是對輔硬盤性能測驗(yàn)的數(shù)據(jù),從硬盤cache讀寫數(shù)據(jù)的速度是396.28 MB/sec,從硬盤盤面上讀寫數(shù)據(jù)的速度是48.21 MB/sec;第三行是對RAID磁盤分區(qū)性能測驗(yàn)的數(shù)據(jù),從cache讀寫數(shù)據(jù)的速度是410.22 MB/sec,從盤面讀寫數(shù)據(jù)的速度是43.31 MB/sec??梢钥闯鰪腸ache讀寫數(shù)據(jù)的速度有所提高,從盤面讀寫數(shù)據(jù)的速度有所下降??偟膩碚f,差距不是太大,在可以接受的范圍內(nèi)。

 
 
 

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多