Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1028934
  • 博文数量: 179
  • 博客积分: 10080
  • 博客等级: 上将
  • 技术积分: 2580
  • 用 户 组: 普通用户
  • 注册时间: 2006-02-10 09:26
文章分类

全部博文(179)

文章存档

2015年(1)

2014年(1)

2012年(1)

2011年(3)

2010年(14)

2009年(11)

2008年(10)

2007年(42)

2006年(96)

我的朋友

分类: LINUX

2006-02-10 14:53:18

F.3. 利用 mdadm 設定 RAID 類與多路徑(Multipath)的儲存裝置

raidtools 套件組中的工具一樣,mdadm 指令可以用來執行所有與管理多裝置組相關的功能。在本節中,我們將告訴您如何利用 mdadm 指令,以:

  • 建立 RAID 裝置
  • 建立多路徑(multipath)裝置

F.3.1. 使用 mdadm 指令建立 RAID 裝置

要建立 RAID 裝置,請編輯 /etc/mdadm.conf 檔案,設定適切的 DEVICE ARRAY 值。

DEVICE /dev/sd[abcd]1

ARRAY /dev/md0 devices=/dev/sda1,/dev/sdb1,/dev/sdc1,/dev/sdd1

在本例中,DEVICE 一行使用的是傳統檔名的 glob 指令(請參閱 glob(7) man page 獲得更多訊息),以定義以下的 SCSI 裝置:

  • /dev/sda1
  • /dev/sdb1
  • /dev/sdc1
  • /dev/sdd1

ARRAY 一行則定義了 DEVICE 行中,組成 RAID 的裝置(/dev/md0)。

在建立或使用任何 RAID 裝置前,/proc/mdstat 檔案顯示目前系統並無任何 RAID 裝置運作中:

Personalities :

read_ahead not set

Event: 0

unused devices:

接下來,使用以上設定與 mdadm 指令,以建立 RAID 0 陣列:

mdadm -C /dev/md0 --level=raid0 --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 \

/dev/sdd1

Continue creating array? yes

mdadm: array /dev/md0 started.

 

 

我的配置方法

分区,用fdiskraid53个分区以上,用在fdiskt命令把分区标识fd

例如:

Disk /dev/hdb: 62.9 GB, 62913208320 bytes

255 heads, 63 sectors/track, 7648 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

 

   Device Boot    Start       End    Blocks   Id  System

/dev/hdb1             1      7648  61432528+   5  Extended

/dev/hdb5             1      1217   9775489+  fd  Linux raid autodetect

/dev/hdb6          1218      2434   9775521   fd  Linux raid autodetect

/dev/hdb7          2435      3651   9775521   fd  Linux raid autodetect

/dev/hdb8          3652      4868   9775521   fd  Linux raid autodetect

 

配置命令:

mdadm --create /dev/md0 --level=raid5 --chunk=8 --raid-devices=4 /dev/hdb5 /dev/hdb6 /dev/hdb7 /dev/hdb8

格式化 mkfs.ext3 /dev/md0

mount /dev/md0 /mnt 测试看看是否可以挂上。

 

编辑mdadm.conf ,没有内容没有问题

echo "DEVICE partitions" > /etc/mdadm.conf
mdadm --detail --scan >> /etc/mdadm.conf

 

man mdadm.conf

EXAMPLE

       DEVICE /dev/sd[bcdjkl]1

       DEVICE /dev/hda1 /dev/hdb1

 

       # /dev/md0 is known by it's UID.

       ARRAY /dev/md0 UUID=3aaa0122:29827cfa:5331ad66:ca767371

       # /dev/md1 contains all devices with a minor number of

       #   1 in the superblock.

       ARRAY /dev/md1 superminor=1

       # /dev/md2 is made from precisey these two devices

       ARRAY /dev/md2 devices=/dev/hda1,/dev/hda2

 

       # /dev/md4 and /dev/md5 are a spare-group and spares

       #  can be moved between them

       ARRAY /dev/md4 uuid=b23f3c6d:aec43a9f:fd65db85:369432df

                  spare-group=group1

       ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977

                  spare-group=group1

 

       MAILADDR root@mydomain.tld

       PROGRAM /usr/sbin/handle-mdadm-events

 

建立完成之後,您就可以隨時查詢該 RAID 裝置,獲得狀態資訊。底下的範例顯示了使用 mdadm --detail /dev/md0 指令的結果:

/dev/md0:

Version : 00.90.00

Creation Time : Mon Mar  1 13:49:10 2004

Raid Level : raid0

Array Size : 15621632 (14.90 GiB 15.100 GB)

Raid Devices : 4

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

 

Update Time : Mon Mar  1 13:49:10 2004

State : dirty, no-errors

Active Devices : 4

Working Devices : 4

Failed Devices : 0

Spare Devices : 0

 

Chunk Size : 64K

 

      Number   Major   Minor   RaidDevice State

         0       8        1        0      active sync   /dev/sda1

         1       8       17        1      active sync   /dev/sdb1

         2       8       33        2      active sync   /dev/sdc1

         3       8       49        3      active sync   /dev/sdd1

           UUID : 25c0f2a1:e882dfc0:c0fe135e:6940d932

         Events : 0.1

F.3.2. 使用 mdadm 指令建立多路徑(multipath)裝置

除了建立 RAID 陣列外,只要硬體支援,mdadm 指令也可以透過多個 I/O 路徑,連到每個 SCSI LUN (磁碟機)去。即使硬體失效,或是某個路徑的容量過於飽和,多路徑儲存也能繼續提供服務。由於這設定包括多條路徑(每條路徑都以獨立的虛擬控制卡來運作)存取一個共同的 SCSI LUN (磁碟機),所以 Linux 核心會「透過」每條路徑偵測每個磁碟機。換句話說,視為 /dev/sda SCSI LUN (磁碟機)也可以透過 /dev/sdb/dev/sdc 等等來存取,端看設定而定。

要在 I/O 路徑失效或過度飽和時,單一裝置還是可以提供服務,mdadm 為 每每level 選項提供了額外的參數。這參數 〞 multipath 〞 會指向 Linux 核心的 md 層,在一條 I/O 路徑失效時,將 I/O 需求引導到另一條路徑去。

要建立多路徑裝置,請編輯 /etc/mdadm.conf 檔,定義 DEVICE ARRAY 兩行的值,以反映您的硬體設定。

注意

跟之前 RAID 的範例不同(在 RAID 範例中,每個 /etc/mdadm.conf 中的磁碟都代表不同的實體磁碟機),這檔案中的每個裝置都指向同一台分享磁碟機。

這用於建立多路徑裝置的指令跟建立 RAID 裝置的指令類似;不同之處在於將 RAID 等級的參數改為 multipath 參數:

mdadm -C /dev/md0 --level=multipath --raid-devices=4 /dev/sda1 /dev/sdb1 /dev/sdc1 /dev/sdd1

Continue creating array? yes

mdadm: array /dev/md0 started.

由於 mdadm 指令的長度關係,我們把它分成兩行來顯示。

在這例子裡,包括一個 SCSI LUN 的硬體代表四個獨立的 SCSI 裝置,每組裝置都使用不同的路徑存取同一個儲存空間。一旦建立路徑裝置 /dev/md0 之後,所有參照 /dev/md0 I/O 都會導向到 /dev/sda1/dev/sdb1/dev/sdc1、或 /dev/sdd1 (視目前哪一條路徑在運行中,並且是可用的)。

您可以使用 mdadm --detail /dev/md0 指令,查詢/dev/md0 的細部設定,以確定它的確是多路徑裝置:

/dev/md0:

Version : 00.90.00

Creation Time : Tue Mar  2 10:56:37 2004

Raid Level : multipath

Array Size : 3905408 (3.72 GiB 3.100 GB)

Raid Devices : 1

Total Devices : 4

Preferred Minor : 0

Persistence : Superblock is persistent

 

Update Time : Tue Mar  2 10:56:37 2004

State : dirty, no-errors

Active Devices : 1

Working Devices : 4

Failed Devices : 0

Spare Devices : 3

 

    Number   Major   Minor   RaidDevice State

       0       8       49        0      active sync   /dev/sdd1

       1       8       17        1      spare   /dev/sdb1

       2       8       33        2      spare   /dev/sdc1

       3       8        1        3      spare   /dev/sda1

           UUID : 4b564608:fa01c716:550bd8ff:735d92dc

         Events : 0.1

另一個 mdadm 的特點是能從操作設定中,強迫移除裝置(不管是 RAID 陣列或多路徑設定的裝置皆可)。在接下來的例子中,/dev/sda1 已經被標示為發生錯誤,然後將被移除,最後在加回設定中。對多路徑的設定來說,這些動作不會對 I/O 活動產生任何衝擊:

# mdadm /dev/md0 -f /dev/sda1

mdadm: set /dev/sda1 faulty in /dev/md0

# mdadm /dev/md0 -r /dev/sda1

mdadm: hot removed /dev/sda1

# mdadm /dev/md0 -a /dev/sda1

mdadm: hot added /dev/sda1

#

 

mdadm 使用参考

JesseLee 2004 1217 发表

mdadmlinux下用于管理软件 raid 的工具

以下内容来自 manpage :

基本语法 ?mdadm [mode] [options]

[mode] ?7种:

    Assemble:将以前定义的某个阵列加入当前在用阵列。

    BuildBuild a legacy array ,每个device 没有 superblocks

    Create:创建一个新的阵列,每个device 具有 superblocks

    Manage 管理阵列,比如 add remove

    Misc:允许单独对阵列中的某个 device 做操作,比如抹去superblocks 终止在用的阵列。

    Follow or Monitor:监控 raid 1,4,5,6 multipath 的状态

    Grow:改变raid 容量或 阵列中的 device 数目

可用的 [options]:

    -A, --assemble:加入一个以前定义的阵列

    -B, --buildBuild a legacy array without superblocks.

    -C, --create:创建一个新的阵列

    -Q, --query:查看一个device,判断它为一个 md device 或是 一个 md 阵列的一部分

    -D, --detail:打印一个或多个 md device 的详细信息

    -E, --examine:打印 device 上的 md?superblock 的内容

    -F, --follow, --monitor:选择 Monitor 模式

    -G, --grow:改变在用阵列的大小或形态

    -h, --help:帮助信息,用在以上选项后,则显示该选项信息

    --help-options

    -V, --version

    -v, --verbose:显示细节

    -b, --brief:较少的细节。用于 --detail??--examine 选项

    -f, --force

    -c, --config= :指定配置文件,缺省为 /etc/mdadm/mdadm.conf

    -s, --scan:扫描配置文件或 /proc/mdstat以搜寻丢失的信息。配置文件/etc/mdadm/mdadm.conf

create? build 使用的选项:

    -c, --chunk=:Specify chunk size of kibibytes.??缺省为 64.

    --rounding=: Specify rounding factor for linear array (==chunk size)

    -l, --level=:设定 raid level.

        --create可用:linear, raid0, 0, stripe, raid1,1, mirror, raid4, 4, raid5, 5, raid6, 6, multipath, mp.

        --build可用:linear, raid0, 0, stripe.

-p, --parity=:设定 raid5 的奇偶校验规则:

left-asymmetric, left-symmetric, right-asymmetric, right-symmetric, la, ra, ls, rs.缺省为left-symmetric

    --layout=:类似于--parity

    -n, --raid-devices=:指定阵列中可用? device 数目,这个数目只能由 --grow 修改

    -x, --spare-devices=:指定初始阵列的富余device 数目

    -z, --size=:组建RAID1/4/5/6后从每个device获取的空间总数

    --assume-clean:目前仅用于 --build 选项

    -R, --run:阵列中的某一部分出现在其他阵列或文件系统中时,mdadm会确认该阵列。此选项将不作确认。

    -f, --force:通常mdadm不允许只用一个device创建阵列,而且创建raid5时会使用一个device作为missing drive。此选项正相反。

-a, --auto{=no,yes,md,mdp,part,p}{NN}

 

1. mdadm 新增一個 hdd 請用

 

mdadm --manage /dev/md0 --add /dev/hdg1

主功能 MD Driver 副功能 副功能 function.

 

2. 新建一個 Raid 請用

mdadm --create /dev/md0 --chunk=32 --level=0 --raid-devices=4

/dev/hd[efgh]1

 

以上請接成一行

 

3. rebuild 上面那個 Raid

mdadm --build /dev/md0 --chunk=32 --level=0 [...]

阅读(1668) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~