md RAID

md:
mdadm: 将任何块设备做成RAID

模式化的命令:
1.创建模式

-C  专用选项:

-l: 级别
-n #: 设备个数
-a {yes|no}: 是否自动为其创建设备文件
-c: CHUNK大小, 2^n,默认为64KB,最好为块的倍数 ,为了提高raid 0/5 的性能 mke2fs -E stride=16 -b 4096 /dev/md0 
-x #: 指定空闲盘个数


3.管理模式

--add, --remove, --fail
mdadm /dev/md# --fail /dev/sda7


4.监控模式

-F


5.增长模式

-G


6.装配模式

-A

查看RAID阵列的详细信息

mdadm -D /dev/md#
--detail


停止阵列:

mdadm -S /dev/md#
--stop

删除设备文件

rm /dev/md#

创建功能:

1.创建一个空间大小为6G的RAID0设备 

RAID0 6G:
  2: 3GB

首先创建2个3G大小的分区,并把类型调成read的类型

root@VM_160_34_centos:~> fdisk /dev/xvdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         262     2104452   83  Linux
/dev/xvdb6             263         655     3156741   83  Linux
/dev/xvdb7             656        1048     3156741   83  Linux
/dev/xvdb8            1049        1441     3156741   83  Linux
/dev/xvdb9            1442        1834     3156741   83  Linux

Command (m for help): d
Partition number (1-9): 4

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e
Partition number (1-4): 4
First cylinder (1-6527, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): 
Using default value 6527

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (1-6527, default 1): 
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-6527, default 6527): +3G

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  83  Linux

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (394-6527, default 394): 
Using default value 394
Last cylinder, +cylinders or +size{K,M,G} (394-6527, default 6527): +3G

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  83  Linux
/dev/xvdb6             394         786     3156741   83  Linux

Command (m for help): t
Partition number (1-6): 5
Hex code (type L to list codes): l

 0  Empty           24  NEC DOS         81  Minix / old Lin bf  Solaris        
 1  FAT12           39  Plan 9          82  Linux swap / So c1  DRDOS/sec (FAT-
 2  XENIX root      3c  PartitionMagic  83  Linux           c4  DRDOS/sec (FAT-
 3  XENIX usr       40  Venix 80286     84  OS/2 hidden C:  c6  DRDOS/sec (FAT-
 4  FAT16 <32M      41  PPC PReP Boot   85  Linux extended  c7  Syrinx         
 5  Extended        42  SFS             86  NTFS volume set da  Non-FS data    
 6  FAT16           4d  QNX4.x          87  NTFS volume set db  CP/M / CTOS / .
 7  HPFS/NTFS       4e  QNX4.x 2nd part 88  Linux plaintext de  Dell Utility   
 8  AIX             4f  QNX4.x 3rd part 8e  Linux LVM       df  BootIt         
 9  AIX bootable    50  OnTrack DM      93  Amoeba          e1  DOS access     
 a  OS/2 Boot Manag 51  OnTrack DM6 Aux 94  Amoeba BBT      e3  DOS R/O        
 b  W95 FAT32       52  CP/M            9f  BSD/OS          e4  SpeedStor      
 c  W95 FAT32 (LBA) 53  OnTrack DM6 Aux a0  IBM Thinkpad hi eb  BeOS fs        
 e  W95 FAT16 (LBA) 54  OnTrackDM6      a5  FreeBSD         ee  GPT            
 f  W95 Ext'd (LBA) 55  EZ-Drive        a6  OpenBSD         ef  EFI (FAT-12/16/
10  OPUS            56  Golden Bow      a7  NeXTSTEP        f0  Linux/PA-RISC b
11  Hidden FAT12    5c  Priam Edisk     a8  Darwin UFS      f1  SpeedStor      
12  Compaq diagnost 61  SpeedStor       a9  NetBSD          f4  SpeedStor      
14  Hidden FAT16 <3 63  GNU HURD or Sys ab  Darwin boot     f2  DOS secondary  
16  Hidden FAT16    64  Novell Netware  af  HFS / HFS+      fb  VMware VMFS    
17  Hidden HPFS/NTF 65  Novell Netware  b7  BSDI fs         fc  VMware VMKCORE 
18  AST SmartSleep  70  DiskSecure Mult b8  BSDI swap       fd  Linux raid auto
1b  Hidden W95 FAT3 75  PC/IX           bb  Boot Wizard hid fe  LANstep        
1c  Hidden W95 FAT3 80  Old Minix       be  Solaris boot    ff  BBT            
1e  Hidden W95 FAT1
Hex code (type L to list codes): fd
Changed system type of partition 5 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-6): 6
Hex code (type L to list codes): fd
Changed system type of partition 6 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  fd  Linux raid autodetect
/dev/xvdb6             394         786     3156741   fd  Linux raid autodetect

确认一下分区已被内核识别

root@VM_160_34_centos:~> cat /proc/partitions 
major minor  #blocks  name

 202        0    8388608 xvda
 202        1    8385898 xvda1
 202       16   52428800 xvdb
 202       20          1 xvdb4
 202       21    3156709 xvdb5
 202       22    3156741 xvdb6
 202       32    2097152 xvdc

执行创建命令

root@VM_160_34_centos:~> mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/xvdb{5,6}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

我们 看一下 /proc/mdstat 文件, 这个文件里面记录着系统中所有启动在的raid 设备

root@VM_160_34_centos:~> cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 xvdb6[1] xvdb5[0]
      6310912 blocks super 1.2 512k chunks
      
unused devices: <none>

我们把它们格式化,

root@VM_160_34_centos:~> mke2fs -j /dev/md0
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=128 blocks, Stripe width=256 blocks
395136 inodes, 1577728 blocks
78886 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=1619001344
49 block groups
32768 blocks per group, 32768 fragments per group
8064 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376, 294912, 819200, 884736

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 37 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

然后挂载到mnt下

root@VM_160_34_centos:~> mount /dev/md0 /mnt/
root@VM_160_34_centos:~> ll /mnt/
total 16
drwx------ 2 root root 16384 Nov 21 15:30 lost+found

 到此这个 raid 成功可以使用

创建1G的 raid1 

  我们首先创建2个1G的分区,并调整它的类型

root@VM_160_34_centos:~> fdisk /dev/xvdb

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  fd  Linux raid autodetect
/dev/xvdb6             394         786     3156741   fd  Linux raid autodetect

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (787-6527, default 787): 
Using default value 787
Last cylinder, +cylinders or +size{K,M,G} (787-6527, default 6527): +1G

Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (919-6527, default 919): 
Using default value 919
Last cylinder, +cylinders or +size{K,M,G} (919-6527, default 6527): +1G

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  fd  Linux raid autodetect
/dev/xvdb6             394         786     3156741   fd  Linux raid autodetect
/dev/xvdb7             787         918     1060258+  83  Linux
/dev/xvdb8             919        1050     1060258+  83  Linux

Command (m for help): t
Partition number (1-8): 7
Hex code (type L to list codes): fd
Changed system type of partition 7 to fd (Linux raid autodetect)

Command (m for help): t
Partition number (1-8): 8
Hex code (type L to list codes): fd
Changed system type of partition 8 to fd (Linux raid autodetect)

Command (m for help): p

Disk /dev/xvdb: 53.7 GB, 53687091200 bytes
255 heads, 63 sectors/track, 6527 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xc77f92d7

    Device Boot      Start         End      Blocks   Id  System
/dev/xvdb4               1        6527    52428096    5  Extended
/dev/xvdb5               1         393     3156709+  fd  Linux raid autodetect
/dev/xvdb6             394         786     3156741   fd  Linux raid autodetect
/dev/xvdb7             787         918     1060258+  fd  Linux raid autodetect
/dev/xvdb8             919        1050     1060258+  fd  Linux raid autodetect

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

Calling ioctl() to re-read partition table.

WARNING: Re-reading the partition table failed with error 16: Device or resource busy.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.

确保内核已经识别了我们的分区,如果没有执行 partx -a /dev/xvdb 来识别(可能需要umount 该盘其他挂载点) ,

root@VM_160_34_centos:~> mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/xvdb{7,8}
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90

执行创建命令

root@VM_160_34_centos:~> mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/xvdb{7,8}
mdadm: Note: this array has metadata at the start and
    may not be suitable as a boot device.  If you plan to
    store '/boot' on this device please ensure that
    your boot-loader understands md/v1.x metadata, or use
    --metadata=0.90
Continue creating array? y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md1 started.

执行的时候它会问你是否需要创建, 这个是毫无疑问的.

我们查看一下它的状态

root@VM_160_34_centos:~> cat /proc/mdstat 
Personalities : [raid0] [raid1] 
md1 : active raid1 xvdb8[1] xvdb7[0]
      1059222 blocks super 1.2 [2/2] [UU]
      [==========>..........]  resync = 54.6% (579524/1059222) finish=0.0min speed=144881K/sec
      
md0 : active raid0 xvdb6[1] xvdb5[0]
      6310912 blocks super 1.2 512k chunks
      
unused devices: <none>

格式化,

root@VM_160_34_centos:~> mke2fs -j /dev/md1
mke2fs 1.41.12 (17-May-2010)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
66240 inodes, 264805 blocks
13240 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=272629760
9 block groups
32768 blocks per group, 32768 fragments per group
7360 inodes per group
Superblock backups stored on blocks: 
        32768, 98304, 163840, 229376

Writing inode tables: done                            
Creating journal (8192 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.

挂载

root@VM_160_34_centos:~> mount /dev/md1 /storage/
root@VM_160_34_centos:~> ll /storage/
total 16
drwx------ 2 root root 16384 Nov 21 15:51 lost+found

我们查看一下这个阵列的属性:

root@VM_160_34_centos:~> mdadm -D /dev/md1       
/dev/md1:
        Version : 1.2
  Creation Time : Fri Nov 21 15:48:21 2014
     Raid Level : raid1
     Array Size : 1059222 (1034.57 MiB 1084.64 MB)
  Used Dev Size : 1059222 (1034.57 MiB 1084.64 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Nov 21 15:53:44 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : VM_160_34_centos:1  (local to host VM_160_34_centos)
           UUID : 4e1ea263:6297d669:9d5877af:6e5fc1e0
         Events : 17

    Number   Major   Minor   RaidDevice State
       0     202       23        0      active sync   /dev/xvdb7
       1     202       24        1      active sync   /dev/xvdb8

然后拷贝个文件进去,模拟损坏一个设备,文件照常访问

root@VM_160_34_centos:~> mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Fri Nov 21 15:48:21 2014
     Raid Level : raid1
     Array Size : 1059222 (1034.57 MiB 1084.64 MB)
  Used Dev Size : 1059222 (1034.57 MiB 1084.64 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Nov 21 15:57:29 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : VM_160_34_centos:1  (local to host VM_160_34_centos)
           UUID : 4e1ea263:6297d669:9d5877af:6e5fc1e0
         Events : 17

    Number   Major   Minor   RaidDevice State
       0     202       23        0      active sync   /dev/xvdb7
       1     202       24        1      active sync   /dev/xvdb8
root@VM_160_34_centos:~> mdadm /dev/md1  -f /dev/xvdb8
mdadm: set /dev/xvdb8 faulty in /dev/md1
root@VM_160_34_centos:~> mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Fri Nov 21 15:48:21 2014
     Raid Level : raid1
     Array Size : 1059222 (1034.57 MiB 1084.64 MB)
  Used Dev Size : 1059222 (1034.57 MiB 1084.64 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Nov 21 15:59:05 2014
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 1
  Spare Devices : 0

           Name : VM_160_34_centos:1  (local to host VM_160_34_centos)
           UUID : 4e1ea263:6297d669:9d5877af:6e5fc1e0
         Events : 18

    Number   Major   Minor   RaidDevice State
       0     202       23        0      active sync   /dev/xvdb7
       1       0        0        1      removed

       1     202       24        -      faulty spare   /dev/xvdb8
root@VM_160_34_centos:~> cat /storage/passwd 
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin
operator:x:11:0:operator:/root:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
nobody:x:99:99:Nobody:/:/sbin/nologin
dbus:x:81:81:System message bus:/:/sbin/nologin
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin
abrt:x:173:173::/etc/abrt:/sbin/nologin
haldaemon:x:68:68:HAL daemon:/:/sbin/nologin
ntp:x:38:38::/etc/ntp:/sbin/nologin
saslauth:x:499:76:"Saslauthd user":/var/empty/saslauth:/sbin/nologin
postfix:x:89:89::/var/spool/postfix:/sbin/nologin
sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin
tcpdump:x:72:72::/:/sbin/nologin
nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
nslcd:x:65:55:LDAP Client User:/:/sbin/nologin
dd:x:500:500::/home/dd:/bin/bash
mysql:x:501:501::/home/mysql:/sbin/nologin
vsftpd:x:502:502::/home/vsftpd:/sbin/nologin
www:x:503:503::/storage/www:/sbin/nologin
hadoop:x:504:504::/home/hadoop:/bin/bash

我们替换1一个好的设备进去

root@VM_160_34_centos:~> mdadm -D /dev/md1 
/dev/md1:
        Version : 1.2
  Creation Time : Fri Nov 21 15:48:21 2014
     Raid Level : raid1
     Array Size : 1059222 (1034.57 MiB 1084.64 MB)
  Used Dev Size : 1059222 (1034.57 MiB 1084.64 MB)
   Raid Devices : 2
  Total Devices : 1
    Persistence : Superblock is persistent

    Update Time : Fri Nov 21 16:01:42 2014
          State : clean, degraded 
 Active Devices : 1
Working Devices : 1
 Failed Devices : 0
  Spare Devices : 0

           Name : VM_160_34_centos:1  (local to host VM_160_34_centos)
           UUID : 4e1ea263:6297d669:9d5877af:6e5fc1e0
         Events : 25

    Number   Major   Minor   RaidDevice State
       0     202       23        0      active sync   /dev/xvdb7
       1       0        0        1      removed

添加 xvdb 9 

root@VM_160_34_centos:~> mdadm /dev/md1 -a /dev/xvdb9
mdadm: added /dev/xvdb9
root@VM_160_34_centos:~> mdadm -D /dev/md1
/dev/md1:
        Version : 1.2
  Creation Time : Fri Nov 21 15:48:21 2014
     Raid Level : raid1
     Array Size : 1059222 (1034.57 MiB 1084.64 MB)
  Used Dev Size : 1059222 (1034.57 MiB 1084.64 MB)
   Raid Devices : 2
  Total Devices : 2
    Persistence : Superblock is persistent

    Update Time : Fri Nov 21 16:04:46 2014
          State : clean 
 Active Devices : 2
Working Devices : 2
 Failed Devices : 0
  Spare Devices : 0

           Name : VM_160_34_centos:1  (local to host VM_160_34_centos)
           UUID : 4e1ea263:6297d669:9d5877af:6e5fc1e0
         Events : 46

    Number   Major   Minor   RaidDevice State
       0     202       23        0      active sync   /dev/xvdb7
       2     202       25        1      active sync   /dev/xvdb9

如果我们再 raid 中添加了3个设备, 那么空余那个会在其中一个设备坏了的之后制动替换掉坏掉的那个.

为了方便以后装载,我们把配置写入配置文件

将当前RAID信息保存至配置文件,以便以后进行装配:
mdamd -D --scan > /etc/mdadm.conf

创建一个 2G的 raid5(只要有冗余的都支持空闲盘,所以我们需要4个1G的设备,跟raid1的用法是一样的)

  

原文地址:https://www.cnblogs.com/mjorcen/p/4113180.html