軟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
軟raid實現