软raid实现
几种raid类型,我就不在这里赘述了,企业一般都是用raid卡,所以一般使用软raid的非常少,但是也有用的,所以就写一个软raid的实验吧,其实用处不大。
实验环境:centos6.9
需要的硬件:5块硬盘,或者5个分区勉强当做试验也行。
#添加两个小技巧
测试磁盘读速
dd if=a_big_file of=/dev/null bs=1M count=2048 可以测试每秒的读速度
dd if=/dev/zero of=a_big_file bs=1M count=2048 可以测试每秒的写速度
一、我们先做创建raid10的试验
1、创建raid设备
cat /proc/partitions如果没有被识别,可以执行命令:kpartx /dev/sdb或者partprobe/dev/sdb
- [root@joker-7-01 ~]# mdadm -C /dev/md0 -a yes -l 10 -n 4 -x 1 /dev/sdc /dev/sdd /dev/sde /dev/sdf /dev/sdg
- mdadm: Defaulting to version 1.2 metadata
- mdadm: array /dev/md0 started.
#上面命令 -a 表示“自动创建目标RAID设备的设备文件” yes表示创建,no表示不创建
#-l 表示要创建的raid的类型,我们使用的是10。
#-n表示使用几个磁盘来创建raid,我们raid10最少4块,我们就使用4块
#-x表示备用磁盘的个数, 备用磁盘的用处是,当有raid磁盘损坏时,备用磁盘会自动添补上损坏磁盘的空缺,确保系统的健壮。
创建raid设备md0成功。
2、查看一下我们刚刚创建的md0设备信息
- [root@joker-7-01 ~]# mdadm -D /dev/md0
- /dev/md0:
- Version : 1.2
- Creation Time : Wed Dec 6 19:49:33 2017
- Raid Level : raid10
- Array Size : 10477568 (9.99 GiB 10.73 GB)
- Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
- Raid Devices : 4
- Total Devices : 5
- Persistence : Superblock is persistent
- Update Time : Wed Dec 6 19:50:26 2017
- State : clean
- Active Devices : 4
- Working Devices : 5
- Failed Devices : 0
- Spare Devices : 1
- Layout : near=2
- Chunk Size : 512K
- Consistency Policy : resync
- Name : joker-7-01:0 (local to host joker-7-01)
- UUID : c7b0daed:33040e1e:24afaba0:f4162d26
- Events : 17
- Number Major Minor RaidDevice State
- 0 8 32 0 active sync set-A /dev/sdc
- 1 8 48 1 active sync set-B /dev/sdd
- 2 8 64 2 active sync set-A /dev/sde
- 3 8 80 3 active sync set-B /dev/sdf
- 4 8 96 - spare /dev/sdg
由以上信息可见“Raid Level : raid10” 咱们创建的是raid10,。
0 8 32 0 active sync set-A /dev/sdc
1 8 48 1 active sync set-B /dev/sdd
2 8 64 2 active sync set-A /dev/sde
3 8 80 3 active sync set-B /dev/sdf
sdc、sdd、sde、sdf四个磁盘都是激活状态
sdg状态为备份磁盘
#cat /proc/mdstat 查看阵列状态
3、生成软raid配置文件
mdadm -Ds /dev/md0 >/etc/mdadm.conf #如果不生成配置文件,当已经组好的raid停止工作后,将不能被再次启动。所以如果确定使用软raid技术,创建完raid之后,一定要创建配置文件
4、已经创建好了raid,但是还不能使用,因为还没有创建文件系统,现在创建文件系统
- [root@joker-7-01 ~]# mkfs.ext4 /dev/md0
- mke2fs 1.42.9 (28-Dec-2013)
- 文件系统标签=
- OS type: Linux
- 块大小=4096 (log=2)
- 分块大小=4096 (log=2)
- Stride=128 blocks, Stripe width=256 blocks
- 655360 inodes, 2619392 blocks
- 130969 blocks (5.00%) reserved for the super user
- 第一个数据块=0
- Maximum filesystem blocks=2151677952
- 80 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
- Allocating group tables: 完成
- 正在写入inode表: 完成
- Creating journal (32768 blocks): 完成
- Writing superblocks and filesystem accounting information: 完成
5、挂载raid设备
- [root@joker-7-01 ~]# mount /dev/md0 /mnt
- [root@joker-7-01 ~]# lsblk
- NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
- sda 8:0 0 200G 0 disk
- ├─sda1 8:1 0 1G 0 part /boot
- └─sda2 8:2 0 72G 0 part
- ├─centos_joker--7--01-root 253:0 0 50G 0 lvm /
- ├─centos_joker--7--01-swap 253:1 0 2G 0 lvm [SWAP]
- └─centos_joker--7--01-app 253:2 0 20G 0 lvm /app
- sdb 8:16 0 20G 0 disk
- ├─sdb1 8:17 0 3G 0 part
- ├─sdb2 8:18 0 3G 0 part
- └─sdb3 8:19 0 3G 0 part
- sdc 8:32 0 5G 0 disk
- └─md0 9:0 0 10G 0 raid10 /mnt
- sdd 8:48 0 5G 0 disk
- └─md0 9:0 0 10G 0 raid10 /mnt
- sde 8:64 0 5G 0 disk
- └─md0 9:0 0 10G 0 raid10 /mnt
- sdf 8:80 0 5G 0 disk
- └─md0 9:0 0 10G 0 raid10 /mnt
- sdg 8:96 0 5G 0 disk
- └─md0 9:0 0 10G 0 raid10 /mnt
- sr0 11:0 1 1024M 0 rom
已经可以正常使用了
二、现在我们来做一个测试,看看如果有磁盘损坏备用磁盘能否替补
- [root@joker-7-01 ~]# mdadm -f /dev/md0 /dev/sdd #-f 表示标记磁盘为损坏
- mdadm: set /dev/sdd faulty in /dev/md0
- [root@joker-7-01 ~]# mdadm -D /dev/md0
- /dev/md0:
- Version : 1.2
- Creation Time : Wed Dec 6 19:49:33 2017
- Raid Level : raid10
- Array Size : 10477568 (9.99 GiB 10.73 GB)
- Used Dev Size : 5238784 (5.00 GiB 5.36 GB)
- Raid Devices : 4
- Total Devices : 5
- Persistence : Superblock is persistent
- Update Time : Wed Dec 6 20:26:02 2017
- State : clean, degraded, recovering #raid状态发生了变化,表示正在修复
- Active Devices : 3
- Working Devices : 4
- Failed Devices : 1
- Spare Devices : 1
- Layout : near=2
- Chunk Size : 512K
- Consistency Policy : resync
- Rebuild Status : 50% complete #修复进度
- Name : joker-7-01:0 (local to host joker-7-01)
- UUID : c7b0daed:33040e1e:24afaba0:f4162d26
- Events : 27
- Number Major Minor RaidDevice State
- 0 8 32 0 active sync set-A /dev/sdc
- 4 8 96 1 spare rebuilding /dev/sdg #使用备用的sdg磁盘来填充阵列
- 2 8 64 2 active sync set-A /dev/sde
- 3 8 80 3 active sync set-B /dev/sdf
- 1 8 48 - faulty /dev/sdd #标记的sdd磁盘
mdadm –G /dev/md0 –n4 -a /dev/sdh /dev/sdj #为设备添加备用磁盘
三、实验已经完成了,现在来拆除raid磁盘
1、第一步就是先取消md0的挂载,很简单umount就ok
umount /mnt
如果取消挂载出错,使用fuser -km /mnt 来关闭使用使用挂载点的进程,然后再umount
2、禁用md0设备
mdadm -S /dev/md0 #相对的 mdadm -A -s /dev/md0 表示启用设备 mdadm -R /dev/md0 强制启动raid
3、删除md0配置文件
rm -rf /etc/mdadm.conf
4、因为在raid设备上创建了文件系统,取消磁盘,为了不对以后的操作产生影响,我们需要把md0的超级块抹除
mdadm –zero-superblock /dev/sdb1 #清除超级块
- [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdc
- [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdd
- [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sde
- [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdf
- [root@joker-7-01 dev]# mdadm --zero-superblock /dev/sdg