linux命令查看raid5,Linux中RAID5搭建与测试

一、RAID(独立冗余磁盘阵列)概述

raid技术通过把多个硬盘设备组合成一个容量更大的,安全性更好的磁盘阵列。把数据切割成许多区段后分别放在不同的物理磁盘上,然后利用分散读写技术来提升磁盘阵列整体的性能,同时把多个重要数据的副本同步到不同的物理设备上,从而起到了非常好的数据冗余备份效果。缺点就是磁盘利用率低。

二、RAID的分类

(1)RAID 0

RAID 0是最早出现的RAID模式,即Data Stripping数据分条技术。RAID 0是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可,成本低,可以提高整个磁盘的性能和吞吐量。RAID 0没有提供冗余或错误修复能力,但实现成本是最低的。

工作原理如图:

977932230ce7138c4957eae4c0cbef71.png

(2)RAID 1

RAID 1称为磁盘镜像,原理是把一个磁盘的数据镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件,在不影响性能情况下最大限度的保证系统的可靠性和可修复性上,只要系统中任何一对镜像盘中至少有一块磁盘可以使用,甚至可以在一半数量的硬盘出现问题时系统都可以正常运行,当一块硬盘失效时,系统会忽略该硬盘,转而使用剩余的镜像盘读写数据,具备很好的磁盘冗余能力。虽然这样对数据来讲绝对安全,但是成本也会明显增加,磁盘利用率为50%。

工作原理如图:

ed62a689cad5b44a20e8e3e72527f2e7.png

(3)RAID 0+1

RAID 0+1名称上我们便可以看出是RAID0与RAID1的结合体。在我们单独使用RAID 1也会出现类似单独使用RAID 0那样的问题,即在同一时间内只能向一块磁盘写入数据,不能充分利用所有的资源。为了解决这一问题,我们可以在磁盘镜像中建立带区集。因为这种配置方式综合了带区集和镜像的优势,所以被称为RAID 0+1。把RAID0和RAID1技术结合起来,数据除分布在多个盘上外,每个盘都有其物理镜像盘,提供全冗余能力,允许一个以下磁盘故障,而不影响数据可用性,并具有快速读/写能力。RAID0+1要在磁盘镜像中建立带区集至少4个硬盘。也有一种叫法叫raid10.

工作原理如图:

75d0aa2a44fcd72f8b786dc476cfe953.png

(4)RAID 5

RAID 5:分布式奇偶校验的独立磁盘结构

它的奇偶校验码存在于所有磁盘上。RAID5的读出效率很高,写入效率一般,块式的集体访问效率不错。因为奇偶校验码在不同的磁盘上,所以提高了可靠性。但是它对数据传输的并行性解决不好,而且控制器的设计也相当困难。在RAID 5中有“写损失”,即每一次写操作,将产生四个实际的读/写操作,其中两次读旧的数据及奇偶信息,两次写新的数据及奇偶信息。

工作原理如图:

65bbcbd453424e820fc42e1fb8d1288d.png

总结:raid0大幅度提升了设备的读写性能,但不具备容错能力。raid1虽然十分注重数据安全,但磁盘利用率太低。raid5就是raid0和raid5的一种折中,既提升了磁盘读写能力,又有一定的容错能力,成本也低。raid10就是raid0和raid1的组合,大幅度提升读写能力,较强的容错能力,成本也较高。一般中小企业用raid5,大企业采用raid10。

如图:

cbaa4a516f31c01af47012a3d50b02d1.png

三、部署RAID 5卷

首先为服务器添加4块硬盘

[root@localhost ~]# fdisk /dev/sdb

欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。

使用写入命令前请三思。

Device does not contain a recognized partition table

使用磁盘标识符 0xb0813467 创建新的 DOS 磁盘标签。

命令(输入 m 获取帮助):n

Partition type:

p primary (0 primary, 0 extended, 4 free)

e extended

Select (default p):

Using default response p

分区号 (1-4,默认 1):

起始 扇区 (2048-41943039,默认为 2048):

将使用默认值 2048

Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):

将使用默认值 41943039

分区 1 已设置为 Linux 类型,大小设为 20 GiB

命令(输入 m 获取帮助):t

已选择分区 1

Hex 代码(输入 L 列出所有代码):fd #磁盘类型改为raid

已将分区“Linux”的类型更改为“Linux raid autodetect”

命令(输入 m 获取帮助):p

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

Units = 扇区 of 1 * 512 = 512 bytes

扇区大小(逻辑/物理):512 字节 / 512 字节

I/O 大小(最小/最佳):512 字节 / 512 字节

磁盘标签类型:dos

磁盘标识符:0xb0813467

设备 Boot Start End Blocks Id System

/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect

命令(输入 m 获取帮助):w

The partition table has been altered!

Calling ioctl() to re-read partition table.

正在同步磁盘。

其他三块也是一样!

[root@localhost ~]# fdisk -l | grep sd[b-e]

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区

/dev/sdb1 2048 41943039 20970496 fd Linux raid autodetect

磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区

/dev/sdc1 2048 41943039 20970496 fd Linux raid autodetect

磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区

/dev/sdd1 2048 41943039 20970496 fd Linux raid autodetect

磁盘 /dev/sde:21.5 GB, 21474836480 字节,41943040 个扇区

/dev/sde1 2048 41943039 20970496 fd Linux raid autodetect

[root@localhost ~]# yum -y install mdadm

#安装madam (madam是Linux下的raid管理工具)

[root@localhost ~]# mdadm -C /dev/md0 -ayes -l5 -n3 -x1 /dev/sd[b-e]1

#用sdb1,sdc1,sdd1,sde1四块磁盘其中3块创建raid5,名称为md0,另外一块作为热备份。

mdadm: Defaulting to version 1.2 metadata

mdadm: array /dev/md0 started.

命令参数:

-C  --create  创建阵列;

-a  --auto   同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;

-l   --level   阵列模式,支持的阵列模式有 linear, raid0, raid1, raid4, raid5, raid6, raid10, multipath, faulty, container;

-n --raid-devices 阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;

或者使用另一条命令

[root@localhost ~]# mdadm --create --auto=yes /dev/md0 --level=5 --raid-devices=4 --spare-devices=1 /dev/sd[b-e]1

命令参数:

--create #表示要创建raid

--auto=yes /dev/md0 #新建立的软件磁盘阵列设备为md0,md序号可以为0-9

--level=5 #磁盘阵列的等级,这里表示创建是的raid5

--raid-devices #添加作为磁盘阵列用的磁盘的块数

--spare-devices #添加作为预备(spare)磁盘的块数

/dev/sd[b-f]1 #磁盘阵列所使用的设备,还可写成/dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1

[root@localhost ~]# cat /proc/mdstat #查看RAID的配置文件

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdd1[4] sde1[3](S) sdc1[1] sdb1[0]

41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2** [3/3] [UUU]**

unused devices:

[root@localhost ~]# mdadm -D /dev/md0 #查看RAID配置文件详细信息

/dev/md0:

Version : 1.2

Creation Time : Sun Jun 30 10:43:20 2019

** Raid Level : raid5** #阵列类型为raid5

………… #省略部分内容

Active Devices : 3 #活跃的磁盘数目

Working Devices : 4 #所有的磁盘数目

Failed Devices : 0 #故障的磁盘数目

Spare Devices : 1 #热备份的磁盘数目

………… #省略部分内容

Number Major Minor RaidDevice State

0 8 17 0 active sync /dev/sdb1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

3 8 65 - spare /dev/sde1 #一块磁盘用于热备份

[root@localhost ~]# echo 'DEVICE /dev/sd[b-e]1' >>/etc/mdadm.conf

[root@localhost ~]# mdadm -Ds >>/etc/mdadm.conf

#添加raid5到raid配置文件并做修改

[root@localhost ~]# cat /etc/mdadm.conf

DEVICE /dev/sd[b-e]1

ARRAY /dev/md0 metadata=1.2 spares=1 name=localhost:0 UUID=12345d9f:61e1d599:86226f6d:536d45c7

[root@localhost ~]# mkfs.xfs /dev/md0

#格式化磁盘

[root@localhost ~]# mkdir /a

[root@localhost ~]# mount /dev/md0 /a

#挂载磁盘

[root@localhost ~]# df -hT #查看磁盘大小

………… #省略部分内容

/dev/md0 xfs 40G 33M 40G 1% /a

[root@localhost ~]# vim /etc/fstab #编写文件开机自动挂载

………… #省略部分内容

/dev/md0 /a xfs defaults 0 0

[root@localhost ~]# cd /a

[root@localhost a]# touch 123.txt 456.txt #创建测试文件

[root@localhost a]# mdadm /dev/md0 -f /dev/sdb1 #模拟sdb1损坏

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

[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0详细信息

………… #省略部分内容

Number Major Minor RaidDevice State

3 8 65 0 spare rebuilding /dev/sde1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

0 8 17 - faulty /dev/sdb1

[root@localhost a]# cat /proc/mdstat

Personalities : [raid6] [raid5] [raid4]

md0 : active raid5 sdd1[4] sde1[3] sdc1[1] sdb1[0](F)

41908224 blocks super 1.2 level 5, 512k chunk, algorithm 2 [**3/3] [UUU]**

unused devices:

[root@localhost a]# ll #查看测试的文件

总用量 0

-rw-r--r--. 1 root root 0 6月 30 11:06 123.txt

-rw-r--r--. 1 root root 0 6月 30 11:06 456.txt

[root@localhost a]# mdadm /dev/md0 -r /dev/sdb1 #移除已损坏的磁盘

mdadm: hot removed /dev/sdb1 from /dev/md0

[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0详细信息

………… #省略部分内容

Number Major Minor RaidDevice State

3 8 65 0 active sync /dev/sde1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

[root@localhost a]# mdadm /dev/md0 -a /dev/sdb1 #添加一块硬盘

mdadm: added /dev/sdb1

[root@localhost a]# mdadm -D /dev/md0 #查看/dev/md0详细信息

………… #省略部分内容

Number Major Minor RaidDevice State

3 8 65 0 active sync /dev/sde1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

5 8 17 - spare /dev/sdb1

[root@localhost a]# ll

总用量 0

-rw-r--r--. 1 root root 0 6月 30 11:06 123.txt

-rw-r--r--. 1 root root 0 6月 30 11:06 456.txt

注意:在实际中sdb1已经是另一块完好的硬盘了。不是说之前损坏的那块移除再添加就好了。

服务器再添加一块磁盘,重启之后:

[root@localhost a]# mdadm /dev/md0 -a /dev/sdf1

mdadm: added /dev/sdf1

[root@localhost a]# mdadm -D /dev/md0

………… #省略部分内容

Number Major Minor RaidDevice State

3 8 65 0 active sync /dev/sde1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

5 8 17 - spare /dev/sdb1

6 8 81 - spare /dev/sdf1

由于默认是添加成热备盘,得把热备盘改为活动盘

[root@localhost a]# mdadm /dev/md0 -G -n4

#-n用来指定raid中活动盘的数量。最好保证要有足够的热备盘添加。

[root@localhost a]# mdadm -D /dev/md0

/dev/md0:

Version : 1.2

Creation Time : Sun Jun 30 10:43:20 2019

Raid Level : raid5

Array Size : 41908224 (39.97 GiB 42.91 GB) #磁盘容量已将发生变化

Used Dev Size : 20954112 (19.98 GiB 21.46 GB)

Raid Devices : 4

Total Devices : 5

Persistence : Superblock is persistent

Update Time : Sun Jun 30 11:22:00 2019

State : clean #构建完成

………… #省略部分内容

Number Major Minor RaidDevice State

3 8 65 0 active sync /dev/sde1

1 8 33 1 active sync /dev/sdc1

4 8 49 2 active sync /dev/sdd1

6 8 81 3 active sync /dev/sdf1

5 8 17 - spare /dev/sdb1

#此时raid中已经由四块硬盘了

[root@localhost a]# df -hT #查看之后,容量并没有发生变化

………… #省略部分内容

/dev/md0 xfs 40G 33M 40G 1% /a

[root@localhost a]# resize2fs /dev/md0

#(resizefx适用于ext3,ext4等文件系统不适用于xfs文件系统)

#resize2fs命令用于更新磁盘

resize2fs 1.42.9 (28-Dec-2013)

resize2fs: Bad magic number in super-block 当尝试打开 /dev/md0 时

找不到有效的文件系统超级块.

[root@localhost a]# xfs_growfs /dev/md0 #对文件系统进行扩容

meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks

= sectsz=512 attr=2, projid32bit=1

= crc=1 finobt=0 spinodes=0

data = bsize=4096 blocks=10475520, imaxpct=25

= sunit=128 swidth=256 blks

naming =version 2 bsize=4096 ascii-ci=0 ftype=1

log =internal bsize=4096 blocks=5120, version=2

= sectsz=512 sunit=8 blks, lazy-count=1

realtime =none extsz=4096 blocks=0, rtextents=0

data blocks changed from 10475520 to 15715584

[root@localhost a]# df -hT

文件系统 类型 容量 已用 可用 已用% 挂载点

………… #省略部分内容

/dev/md0 xfs 60G 33M 60G 1% /a

#再次查看容量已经发生变化

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值