国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
how to sovle the common problem of raid

Linux 中軟件 RAID 使用常見問題解決

張 志斌 (linuxaid@tom.com), 軟件工程師, 軟件工程師

簡(jiǎn)介: 在文章“Linux 中軟件 RAID 的使用”中我們講述了 Linux 系統(tǒng)中軟 RAID 的基本概念和如何使用 mdadm 程序來管理軟 RAID 設(shè)備,通過對(duì) mdadm命令的主要參數(shù)來介紹軟 RAID 設(shè)備的創(chuàng)建,刪除,停止和擴(kuò)展等操作,以及其元數(shù)據(jù)和位圖 bitmap 數(shù)據(jù)的管理方法。在本文中我們討論使用軟RAID 設(shè)備常見的問題以及解決的方法。

發(fā)布日期: 2007 年 11 月 08 日
級(jí)別: 中級(jí)
建議: 0 (添加評(píng)論)

平均分 (共 0 個(gè)評(píng)分 )

1. RAID 的子設(shè)備物理上要獨(dú)立不相關(guān)

對(duì)一個(gè)磁盤上的多個(gè)磁盤分區(qū)做RAID是沒有價(jià)值的,因?yàn)椴坏`背了RAID陣列中設(shè)備獨(dú)立性的原則,不能增加陣列的可靠性,當(dāng)這個(gè)磁盤失效后必然不可避免的導(dǎo)致數(shù)據(jù)丟失,而且還導(dǎo)致陣列的性能顯著降低,當(dāng)數(shù)據(jù)讀寫時(shí)磁頭在磁盤的多個(gè)分區(qū)上來回抖動(dòng)帶來長(zhǎng)時(shí)間的搜索耗時(shí)。

2. RAID 0 沒有數(shù)據(jù)冗余功能

RAID 0 只能使用數(shù)據(jù)塊條帶化(stripping)功能來提高性能,如果有磁盤失效則會(huì)導(dǎo)致MD設(shè)備上的數(shù)據(jù)丟失,在讀寫MD設(shè)備時(shí)出錯(cuò)。

3. 快速測(cè)試命令

當(dāng)創(chuàng)建磁盤時(shí),如果已知設(shè)備上的數(shù)據(jù)已經(jīng)是同步(sync)成功過,或者僅僅是用來測(cè)試陣列,可以使用--assume-clean參數(shù)來通知MD驅(qū)動(dòng)不必初始化陣列。

 mdadm -C /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --assume-clean

如果想避免mdadm每次創(chuàng)建命令時(shí),因?yàn)樵O(shè)備上還有以前的元數(shù)據(jù)的提示,避免手工輸入,可以使用--run(或者其縮寫-R)通知陣列直接運(yùn)行。

 mdadm --create --run /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --assume-clean

4. 異構(gòu)磁盤組成的RAID

RAID0可以支持不同大小的磁盤構(gòu)造多個(gè)區(qū)域(zone)的RAID,每個(gè)區(qū)域有不同的磁盤個(gè)數(shù)。使用fdisk命令查詢/dev/sdi1為2GB, /dev/sdj1為4GB,/dev/sdk1為1GB,所以做成RAID0設(shè)備為7GB。


                
mdadm -C /dev/md0 -l5 -n6 /dev/sd[b-g] -x1 /dev/sdh --assume-clean

而RAID1,RAID456,RAID10等對(duì)不同大小的磁盤只能使用最小的磁盤的容量作為公共的大小,多余的部分被浪費(fèi)掉。/dev/sdi1,/dev/sdj1,/dev/sdk1做成的RAID5設(shè)備為2GB,是最小的設(shè)備/dev/sdk1的2倍,設(shè)備/dev/sdi1和sdj1分別浪費(fèi)了1GB和3GB。

[root@fc5 mdadm-2.6.3]# ./mdadm –CR /dev/md1 -l0 -n3 /dev/sd[i-k]1
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 7337664 (7.00 GiB 7.51 GB)

在陣列的狀態(tài)信息查詢中的大小(ArraySize)前面使用的是KB,也表示MD塊設(shè)備的實(shí)際大??;而后面的兩個(gè)值只是為了顯示處理后的結(jié)果。

[root@fc5 mdadm-2.6.3]#  ./mdadm –CR /dev/md1 -l0 -n3 /dev/sd[i-k]1 
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 7337664 (7.00 GiB 7.51 GB)
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md1 -l5 -n3 /dev/sd[i-k]1
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1 | grep "Array Size"
Array Size : 2096896 (2048.09 MiB 2147.22 MB)

5. 配置共享的熱備盤

mdadm程序是允許多個(gè)RAID組共享冗余磁盤的。例如有/dev/md0和/dev/md1兩個(gè)陣列,在創(chuàng)建時(shí)/dev/md0里面有一個(gè)熱備磁盤,而/dev/md1沒有熱備磁盤。我們只要在/etc/mdadm.conf中配置兩個(gè)陣列使用相同的spare-group組。

[root@fc5 mdadm-2.6.3]#  cat /etc/mdadm.conf 
DEVICE /dev/sdb /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg /dev/sdh
/dev/sdi1 /dev/sdj1 /dev/sdk1
ARRAY /dev/md1 level=raid0 num-devices=3 spare-group=sparedisks
UUID=dcff6ec9:53c4c668:58b81af9:ef71989d
ARRAY /dev/md0 level=raid10 num-devices=6 spare-group=sparedisks
UUID=0cabc5e5:842d4baa:e3f6261b:a17a477a

并運(yùn)行mdadm 的監(jiān)控(monitor)模式命令。當(dāng)/dev/md1陣列中的一個(gè)磁盤/dev/sdi1失效時(shí),mdadm會(huì)自動(dòng)從/dev/md0組中上移走spare磁盤,并加入/dev/md1中。

[root@fc5 mdadm-2.6.3]#./mdadm --monitor --mail=root@localhost --syslog 
--program=/root/md.sh --delay=300 /dev/md* --daemonise
8105
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md1 -f /dev/sdi1
mdadm: set /dev/sdi1 faulty in /dev/md1
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md1
/dev/md1:
Version : 00.90.03
Creation Time : Mon Aug 23 00:10:00 1999
Raid Level : raid5
Array Size : 2096896 (2048.09 MiB 2147.22 MB)
Used Dev Size : 1048448 (1024.05 MiB 1073.61 MB)
Raid Devices : 3
Total Devices : 4
Preferred Minor : 1
Persistence : Superblock is persistent

Update Time : Mon Aug 23 00:13:15 1999
State : clean, degraded, recovering
Active Devices : 2
Working Devices : 3
Failed Devices : 1
Spare Devices : 1

Layout : left-symmetric
Chunk Size : 64K

Rebuild Status : 78% complete

UUID : 34d3de75:6912dc24:e1316607:4e72cd01
Events : 0.4

Number Major Minor RaidDevice State
3 8 112 0 spare rebuilding /dev/sdh
1 8 145 1 active sync /dev/sdj1
2 8 161 2 active sync /dev/sdk1

4 8 129 - faulty spare /dev/sdi1

6. 多種元數(shù)據(jù)格式

目前MD設(shè)備有兩種主要的元數(shù)據(jù)格式(0.9版本和1.x版本),主要是元數(shù)據(jù)占用的空間不同和支持的底層設(shè)備個(gè)數(shù)不同,而且1.x版本還可以指定元數(shù)據(jù)寫入設(shè)備的具體位置(1.0為在設(shè)備尾部,1.1為在設(shè)備開始,1.2為在設(shè)備開始的4KB位置)。創(chuàng)建陣列通過--metadata(或者其縮寫-e)參數(shù)來指定元數(shù)據(jù)格式版本。

[root@fc5 mdadm-2.6.3]#  ./mdadm -CR /dev/md0 -l5 -n6 -x1  /dev/sd[b-h]  
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 00.90.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.0 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.00.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.1 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.01.03
[root@fc5 mdadm-2.6.3]# ./mdadm -CR /dev/md0 -l5 -n6 -x1 -e1.2 /dev/sd[b-h]
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0 | grep Version
Version : 01.02.03

當(dāng)陣列將磁盤移走后,也使用--zero-superblock清空設(shè)備上面的元數(shù)據(jù)信息。

[root@fc5 mdadm-2.6.3]#  ./mdadm -Es /dev/sdh 
ARRAY /dev/md0 level=raid5 num-devices=6
UUID=acd2b182:4695ee20:37689502:eb0423e1
spares=1
[root@fc5 mdadm-2.6.3]# ./mdadm /dev/md0 -f /dev/sdh -r /dev/sdh
mdadm: set /dev/sdh faulty in /dev/md0
mdadm: hot removed /dev/sdh
[root@fc5 mdadm-2.6.3]# ./mdadm --zero-superblock /dev/sdh
[root@fc5 mdadm-2.6.3]# ./mdadm -Es /dev/sdh
[root@fc5 mdadm-2.6.3]#

7. 可分區(qū)的RAID設(shè)備

如果想對(duì)支持分區(qū)的MD設(shè)備(Partitionable raid array)進(jìn)行分區(qū),需要在創(chuàng)建時(shí)使用/dev/md_d0來替代前面的/dev/md0。創(chuàng)建陣列是通過--auto=mdp(或者其縮寫-ap)參數(shù)指定。

[root@fc5 mdadm-2.6.3]#./mdadm -Cv --auto=mdp /dev/md_d0 -l5 -n6 /dev/sd[b-g] 
-x1 /dev/sdh
mdadm: layout defaults to left-symmetric
mdadm: chunk size defaults to 64K
mdadm: size set to 1048512K
mdadm: array /dev/md_d0 started.
[root@fc5 mdadm-2.6.3]# fdisk /dev/md_d0
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

The number of cylinders for this disk is set to 1310640.
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)
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-1310640, default 1): 1
Using default value 1
Last cylinder or +size or +sizeM or +sizeK (1-1310640, default 1310640): +1024M

Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (250002-1310640, default 250002): 250002
Using default value 250002
Last cylinder or +size or +sizeM or +sizeK (250002-1310640, default 1310640): 1310640
Using default value 1310640

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[root@fc5 mdadm-2.6.3]# fdisk -l /dev/md_d0

Disk /dev/md_d0: 5368 MB, 5368381440 bytes
2 heads, 4 sectors/track, 1310640 cylinders
Units = cylinders of 8 * 512 = 4096 bytes

Device Boot Start End Blocks Id System
/dev/md_d0p1 1 250001 1000002 83 Linux
/dev/md_d0p2 250002 1310640 4242556 83 Linux

MD設(shè)備支持兩種塊設(shè)備,一種是不可分區(qū)類型的名字是md設(shè)備,主設(shè)備號(hào)是9,另一種是可分區(qū)的名字是mdp設(shè)備,mdp的主設(shè)備號(hào)是動(dòng)態(tài)分配的,一個(gè)mdp設(shè)備最多能支持63個(gè)分區(qū)。查看/proc/device信息能看到mdp的主設(shè)備號(hào),查詢/proc/partitions信息能看到md和mdp設(shè)備的主設(shè)備號(hào)和從設(shè)備號(hào)。

[root@fc5 mdadm-2.6.3]#  cat /proc/devices | grep md 
1 ramdisk
9 md
253 mdp
[root@fc5 mdadm-2.6.3]# cat /proc/partitions | grep md
9 1 2096896 md1
253 0 5242560 md_d0
253 1 1000002 md_d0p1
253 2 1000002 md_d0p2

8. 怎樣擴(kuò)展RAID設(shè)備

Grow模式中的容量擴(kuò)展(resize)功能不但支持設(shè)備大小增加,也可以支持設(shè)備大小減少,但要求使用者自己來保證MD設(shè)備有效數(shù)據(jù)上不被截?cái)鄬?dǎo)致丟失。

[root@fc5 mdadm-2.6.3]#  ./mdadm /dev/md0 --grow --size=102400 
[root@fc5 mdadm-2.6.3]# ./mdadm -Q /dev/md0
/dev/md0: 600.00MiB raid5 7 devices, 0 spares. Use mdadm --detail for more detail.

而磁盤個(gè)數(shù)擴(kuò)展(reshape)功能不支持設(shè)備個(gè)數(shù)減少,如果在陣列中空閑的熱備盤而且也沒有指定backup文件,則不能擴(kuò)展。如果對(duì)于RAID5陣列有備份(backup)文件可以支持?jǐn)U展一個(gè)磁盤,擴(kuò)展后的磁盤陣列是降級(jí)模式的,不支持?jǐn)U展多個(gè)磁盤或者對(duì)降級(jí)的RAID5陣列再擴(kuò)展。這些擴(kuò)展模式不夠安全,僅僅是暫時(shí)沒有熱備盤的權(quán)宜之計(jì),一般合理的操作還是先增加空閑的熱備磁盤再執(zhí)行擴(kuò)展命令。

[root@fc5 mdadm-2.6.3]#  ./mdadm --grow /dev/md0 -n6 
mdadm: /dev/md0: Cannot reduce number of data disks (yet).
[root@fc5 mdadm-2.6.3]# ./mdadm --grow /dev/md0 -n8
mdadm: Need to backup 2688K of critical section.
mdadm: /dev/md0: Cannot grow - need a spare or backup-file to backup critical section
[root@fc5 mdadm-2.6.3]# ./mdadm -G /dev/md0 -n9 --backup-file=/root/bak-reshape
mdadm: Need to backup 1024K of critical section..
mdadm: /dev/md0: failed to initiate reshape

[root@fc5 mdadm-2.6.3]#  ./mdadm -G /dev/md0 -n8 --backup-file=/root/bak-reshape 
mdadm: Need to backup 2688K of critical section..
mdadm: ... critical section passed.
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
6291072 blocks super 0.91 level 5, 64k chunk, algorithm 2 [8/7] [UUUUUUU_]
[>..................] reshape = 2.6% (28608/1048512) finish=4.1min speed=4086K/sec
md1 : active raid0 sdk1[2] sdj1[1] sdi1[0]
7337664 blocks 64k chunks

unused devices: < none >
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.91.03
Creation Time : Sun Aug 22 23:46:29 1999
Raid Level : raid5
Array Size : 6291072 (6.00 GiB 6.44 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 8
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 23:46:56 1999
State : clean, degraded, recovering
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

Reshape Status : 4% complete
Delta Devices : 1, (7->8)

UUID : 50e886b9:9e28d243:a7f6457d:5eb47f2e
Events : 0.94

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
7 0 0 7 removed
[root@fc5 mdadm-2.6.3]# cat /proc/mdstat
Personalities : [raid0] [raid10] [raid6] [raid5] [raid4]
md0 : active raid5 sdh[6] sdg[5] sdf[4] sde[3] sdd[2] sdc[1] sdb[0]
7339584 blocks level 5, 64k chunk, algorithm 2 [8/7] [UUUUUUU_]

md1 : active raid0 sdk1[2] sdj1[1] sdi1[0]
7337664 blocks 64k chunks

unused devices: < none >
[root@fc5 mdadm-2.6.3]# ./mdadm -D /dev/md0
/dev/md0:
Version : 00.90.03
Creation Time : Sun Aug 22 23:46:29 1999
Raid Level : raid5
Array Size : 7339584 (7.00 GiB 7.52 GB)
Used Dev Size : 1048512 (1024.11 MiB 1073.68 MB)
Raid Devices : 8
Total Devices : 7
Preferred Minor : 0
Persistence : Superblock is persistent

Update Time : Sun Aug 22 23:50:18 1999
State : clean, degraded
Active Devices : 7
Working Devices : 7
Failed Devices : 0
Spare Devices : 0

Layout : left-symmetric
Chunk Size : 64K

UUID : 50e886b9:9e28d243:a7f6457d:5eb47f2e
Events : 0.766

Number Major Minor RaidDevice State
0 8 16 0 active sync /dev/sdb
1 8 32 1 active sync /dev/sdc
2 8 48 2 active sync /dev/sdd
3 8 64 3 active sync /dev/sde
4 8 80 4 active sync /dev/sdf
5 8 96 5 active sync /dev/sdg
6 8 112 6 active sync /dev/sdh
7 0 0 7 removed
[root@fc5 mdadm-2.6.3]# ./mdadm -G /dev/md0 -n9 --backup-file=/root/bak-reshape
mdadm: Need to backup 3584K of critical section..
mdadm: /dev/md0: failed to find device 7. Array might be degraded.
--grow aborted

9. 為什么不能擴(kuò)展RAID設(shè)備

當(dāng)使用grow模式時(shí),如果內(nèi)核不支持sysfs或者M(jìn)D驅(qū)動(dòng)版本較低不支持時(shí)則會(huì)返回錯(cuò)誤。另外使用strace命令跟蹤能導(dǎo)致在哪個(gè)函數(shù)調(diào)用上出錯(cuò)返回。

[root@fc5 mdadm-2.6.3]#  ./mdadm --grow /dev/md0 -n6 
mdadm: Need to backup 1280K of critical section..
mdadm: /dev/md0: Cannot get array details from sysfs

如果系統(tǒng)沒有加載sysfs,需要使用mount命令加載。

                 mount –t sysfs sysfs /sys/ 

10. 為什么不能停止MD設(shè)備

當(dāng)停止MD陣列時(shí),有時(shí)被返回MD設(shè)備正在被使用錯(cuò)誤,需要檢查MD設(shè)備被哪個(gè)上層設(shè)備使用。一個(gè)情況是被文件系統(tǒng)使用,如已經(jīng)被mount起來:

[root@fc5 mdadm-2.6.3]#  df -h | grep md 
/dev/md0 485M 11M 449M 3% /mnt/md-test

另一種情況是MD設(shè)備被用戶層其他程序打開使用,如nbd-server導(dǎo)出MD設(shè)備:

[root@fc5 md0]# fuser -u /dev/md0 
/dev/md0: 3507(root)
[root@fc5 md0]# ps ax| grep 3507
3507 ?

還有可能是內(nèi)核驅(qū)動(dòng)程序打開使用,如被LVM程序當(dāng)作物理卷(PV)使用:

[root@fc5 mdadm-2.6.3]#  ls -l /sys/block/md0/holders/ 
total 0
lrwxrwxrwx 1 root root 0 08-22 23:31 dm-0 -> ../../../block/dm-0

小結(jié)

如果在軟RAID使用中遇到問題不能解決,應(yīng)該首先查看mdadm的幫助信息;如果還不能解決,可以到mdadm的郵件列表尋找是否有相關(guān)的問題解答或者詳細(xì)描述該問題的發(fā)生過程請(qǐng)求大家?guī)椭?/p>

參考資料

學(xué)習(xí)

  • man mdadm命令來查看mdadm程序的幫助信息有每個(gè)參數(shù)解釋和簡(jiǎn)單例子。

  • mdadm源程序tests目錄內(nèi)的mdadm命令的測(cè)試集給出了典型的命令和參數(shù),給出了mdadm命令的各種參數(shù)的詳細(xì)的使用方法。

獲得產(chǎn)品和技術(shù)

  • 下載mdadm是Linux系統(tǒng)中軟件RAID用戶層管理軟件。

討論

mdadm 的郵件列表linux-raid@vger.kernel.org討論了很多軟RAID的使用技巧和問題解決方法,如果在使用軟RAID中遇到問題,可以到上面尋找相關(guān)的問題或者請(qǐng)求幫助。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
Raid的學(xué)習(xí)和基礎(chǔ)知識(shí) v0.1b
mdadm使用詳解及RAID 5簡(jiǎn)單分析
在RHEL6系統(tǒng)上配置磁盤陣列(RAID)
軟RAID管理命令mdadm詳解 | 旺旺知識(shí)庫(kù)
RAID原理基礎(chǔ)及Linux下軟件RAID配置
RAID磁盤陣列的原理與搭建
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服