磁盘阵列软RAID实例.
前言:raid0, 容量倍增,加速。 raid1, 安全镜像备份。 raid5, 奇偶数据校验保证安全,磁盘利用率(n-1)。
****************************************
1. 准备硬盘分区。
****************************************
   raid5 至少需要3快硬盘,我手上只有一块闲置硬盘,就拿它练手。
   在一块硬盘上实现raid 是没有意义的,这里仅是为了实验,知道其过程。
   分区如下:
    主分区 /sdb1, 扩展分区/sdb10 随便干别的事情。
    扩展分区/sdb{5..9} 做raid5
----------------------------------------
[root@hjj ~]# fdisk -l /dev/sdb
----------------------------------------

Disk /dev/sdb: 160.0 GB, 160041885696 bytes
255 heads, 63 sectors/track, 19457 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: 0x86ea33f5

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        3241    26033301   83  Linux
/dev/sdb2            3242       19457   130255020    5  Extended
/dev/sdb5            3242        6482    26033301   fd  Linux raid autodetect
/dev/sdb6            6483        9723    26033301   fd  Linux raid autodetect
/dev/sdb7            9724       12964    26033301   fd  Linux raid autodetect
/dev/sdb8           12965       16205    26033301   fd  Linux raid autodetect
/dev/sdb9           16206       19446    26033301   fd  Linux raid autodetect
/dev/sdb10          19447       19457       88326   83  Linux

----------------------------------------
[root@hjj ~]# partprobe /dev/sdb
----------------------------------------
重新检测分区要通过, 可能需要重启系统。

****************************************
2. 创建raid5 设备/dev/md0
****************************************
raid 设备文件名,习惯上用md0, md1....等命名
注意: 创建需要内核支持, 选中相应的raid 选项,重编译内核,否则该命令不能通过,错误为invalid parameter
2.1 创建
--------------------------------------------------------------------------------
[root@hjj ~]# mdadm -C /dev/md0 -a yes -l 5 -n 4 -x 1 /dev/sdb{5..9}
--------------------------------------------------------------------------------
mdadm: Defaulting to version 1.2 metadata
解释一下:
-C ---> create
-a ---> autodetected
-l ---> level raid5
-n ---> raid devices 4 (使用)
-x ---> spare devices 1(备用)

给一个参考多硬盘命令
[root@hjj ~]# mdadm -C /dev/md0 -a yes -l 5 -n 3  /dev/sd[bcd]1

2.2: 设备名称查询
[root@hjj ~]# ll /dev/md* -d
drwxr-xr-x 2 root root   60 Nov  7 01:51 /dev/md
brw-rw---- 1 root disk 9, 0 Nov  7 01:52 /dev/md0
2.3: 设备信息查询
----------------------------------------
[root@hjj ~]# mdadm --detail /dev/md0
----------------------------------------
/dev/md0:
        Version : 1.2
  Creation Time : Thu Nov  7 01:14:01 2013
     Raid Level : raid5
     Array Size : 78096384 (74.48 GiB 79.97 GB)
  Used Dev Size : 26032128 (24.83 GiB 26.66 GB)
   Raid Devices : 4
  Total Devices : 5
    Persistence : Superblock is persistent

    Update Time : Thu Nov  7 01:43:21 2013
          State : clean, degraded, recovering
 Active Devices : 3
Working Devices : 5
 Failed Devices : 0
  Spare Devices : 2

         Layout : left-symmetric
     Chunk Size : 512K

 Rebuild Status : 63% complete

           Name : hjj.localdomain:0  (local to host hjj.localdomain)
           UUID : 9dee9c47:58dfe491:5c8db1c6:9686eba5
         Events : 25

    Number   Major   Minor   RaidDevice State
       0       8       21        0      active sync   /dev/sdb5
       1       8       22        1      active sync   /dev/sdb6
       2       8       23        2      active sync   /dev/sdb7
       5       8       24        3      spare rebuilding   /dev/sdb8

       4       8       25        -      spare   /dev/sdb9


****************************************
3: 格式化raid 设备(磁盘)
[root@hjj ~]# mkfs -t ext4 /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=384 blocks
4882432 inodes, 19524096 blocks
976204 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=4294967296
596 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
    32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
    4096000, 7962624, 11239424

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

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

****************************************
4. 挂载及使用raid 磁盘
****************************************
[root@hjj ~]# mount /dev/md0 /mnt
[root@hjj ~]# cd /mnt
[root@hjj /mnt]# ls
lost+found

使用raid 设备(虚拟盘)
[root@hjj /mnt]# echo "haha" > abc.txt
[root@hjj /mnt]# cat abc.txt
haha
[root@hjj ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/mapper/VolGroup-lv_root
                      51475068  40659416   8177828  84% /
tmpfs                  1015868       224   1015644   1% /dev/shm
/dev/sda1               487652     67236    390720  15% /boot
/dev/mapper/VolGroup-lv_home
                      97521332  10652080  81892408  12% /home
/dev/md0              76739624     53016  72765408   1% /mnt

****************************************
5. 设置开机启动RAID
****************************************
[root@hjj ~]# mdadm --detail --scan
ARRAY /dev/md0 metadata=1.2 spares=2 name=hjj.localdomain:0 UUID=9dee9c47:58dfe491:5c8db1c6:9686eba5
[root@hjj ~]# mdadm --detail --scan >/etc/mdadm.conf
经以上操作,系统重启时自动命名为md0, 否则会是md127 等等值, 不固定。
[root@hjj ~]# vim /etc/fstab
添加:
/dev/md0                /mnt                ext4    defaults        0 0


****************************************
6. 其它:停用设备,插拔磁盘
更详细文档: man mdadm
****************************************
停用raid 盘:
[root@hjj ~]# mdadm --stop /dev/md0
查询
[root@hjj ~]# ll /dev/md* , 无设备

mdadm 还可模拟拔出硬盘,修复硬盘,插入硬盘
[root@hjj ~]# mdadm /dev/md0 --remove /dev/sdb5
验证:
[root@hjj ~]# mdadm --zero-superblock --force /dev/md0
[root@hjj ~]# mdadm /dev/md0 --add /dev/sdb5
验证:

验证方法:

[root@hjj ~]# mdadm --detail /dev/md0


删除该raid 设备, 完整的操作过程如下示例。  比较规范,系统无错误。

当然,不按规范删除也可以。反正你也不要设备上的所有数据了。

mdadm /dev/md0 --fail /dev/sdb5 --remove /dev/sdb5
mdadm /dev/md0 --fail /dev/sdb6 --remove /dev/sdb6
mdadm /dev/md0 --fail /dev/sdb7 --remove /dev/sdb7
mdadm /dev/md0 --fail /dev/sdb8 --remove /dev/sdb8
mdadm /dev/md0 --fail /dev/sdb9 --remove /dev/sdb9


mdadm --remove /dev/md0
mdadm --stop /dev/md0


mdadm --misc --zero-superblock /dev/sdb5
mdadm --misc --zero-superblock /dev/sdb6
mdadm --misc --zero-superblock /dev/sdb7
mdadm --misc --zero-superblock /dev/sdb8
mdadm --misc --zero-superblock /dev/sdb9

即: 先删除RAID中的所有设备,然后停止,删除该RAID即可
为了防止系统启动时候启动raid, 应检查,修改相应的配置。
例如mdadm.conf, fstab 等



Logo

更多推荐