linux入门之磁盘管理raid的实现

author author     2022-08-01     466

关键词:

Linux入门之磁盘管理(7)RAID的实现

RAID(Redundant Arrays of Inexpensive Independent Disks)被称为廉价冗余阵列,为了提高磁盘的性能或者保存数据完整,将多个磁盘合成一个“阵列”来提供更好的性能、冗余等。

RAID一般使用硬件raid,并配合指定 raid的接口或者raid卡来组成硬件raid,但是开销一般比较大,于是在linux中也提供了软件raid的实现。

 

raid的好处:

提高IO能力: 磁盘的并行读写

提高耐用性: 磁盘冗余来实现

 

RAID技术分类:

多个磁盘组成条带化

RAID1:镜像,mirror    保证数据的可用性

校验码

 

raid各个级别:

RAID level(级别):仅代表磁盘组织方式不同,没有上下之分

RAID-0条带化

性能提升:读、写

冗余能力 (容错能力):无

空间利用率:nS

至少需要2块磁盘

RAID-1镜像

性能提升:写性能下降,读性能提示

冗余能力:有

空间利用率:1/2

至少需要2

RAID-4多块数据盘异或运算值,存于专用校验盘

RAID-5

性能表现:读、写提升

冗余能力:有

空间利用率:(n-1)/n

至少需要3块盘

RAID-10

性能表现:读、写提升

冗余能力:有

空间利用率:1/2

至少需要4块盘

RAID-01

性能表现:读、写提升

冗余能力:有

空间利用率:1/2

至少需要4块盘

RAID-50

性能表现:读、写提升

冗余能力:有

空间利用率:(n-2)/n

至少需要6块盘

 

jdod 将多个小盘组合成一个大盘

性能表现:无提升

冗余能力:无

空间利用率:100%

至少需要2

 

软硬RAID的使用区别:

硬件RAIDBIOS主板下调整、RAID

软件RAID:内核模块支持 (md:multi disks

 

 

使用命令实现软件raid:

mdadm 管理命令,将任何设备做成RAID,并有多种模式选项命令

模式化的命令:

 创建模式:

-C   --create

 专用选项:

-l # :指定raid级别  --level

-n # : 设备个数     -num

-a {yes|no}:是否自动为其创建设备文件 --auto

-x # :指定空闲盘个数

-c CHUNK_SIZE:指定chunk大小

   管理模式:

 -a,--add   :添加raid成员

 -r,--remove :移除raid成员

 -f,--fail  : 模拟损坏raid成员

   监控模式:

          -F

 增长模式:

           -G

   装配模式:

           -A

   查看RAID阵列的详细信息

    mdadm  -D  /dev/md#

   --detail

 

   停止阵列:

    mdadm  -S  /dev/md#

 

特例:格式化md0设备指定分配条带和block

mke2fs -j -E stride=16 -b 4096 /dev/md0


RAID5案例:

1、创建一个3G的raid5级别设备(那么至少需要31G的设备):

#在/dev/sdb下创建6个分区,其类型指定为fd编号,表示为Linux raid

[[email protected] ~]# fdisk -l /dev/sdb 2> /dev/null | grep ‘^/dev‘
/dev/sdb1          1     132     1060258+   fd  Linux raid autodetect
/dev/sdb2         133     264     1060290   fd  Linux raid autodetect
/dev/sdb3         265     396     1060290   fd  Linux raid autodetect
/dev/sdb4         397     2610    17783955   5  Extended
/dev/sdb5         397     528     1060258+  fd  Linux raid autodetect
/dev/sdb6         529     660     1060258+  fd  Linux raid autodetect

2、使用mdadm命令

#使用mdadm创建为level 5级别raid

[[email protected] ~]# mdadm -C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb{1,2,3,5}
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.

#查看md0设备信息及成员

[[email protected] ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb3[4] sdb5[3](S) sdb2[1] sdb1[0]
      2117632 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
      
unused devices: <none>

#查看md0raid级别

[[email protected] ~]# mdadm -D /dev/md0 | grep -i ‘level.*‘
     Raid Level : raid5

#查看成员信息及其状态:

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
   0     8     17      0      active sync   /dev/sdb1
   1     8     18      1      active sync   /dev/sdb2
   4     8     19      2      active sync   /dev/sdb3
   3     8     21      -      spare         /dev/sdb5

#要使用md0设备必须先格式化

[[email protected] ~]# mke2fs -t ext4 /dev/md0

#挂载md0设备

[[email protected] ~]# mkdir /mnt/md0
[[email protected] ~]# mount /dev/md0 /mnt/md0

#查看md0是否已经被识别为一个单个磁盘设备

[[email protected] ~]# fdisk -l 2> /dev/null | grep ‘md0‘
Disk /dev/md0: 2168 MB, 2168455168 bytes

#查看挂载点

[[email protected] ~]# df | grep ‘/md0‘
/dev/md0         2018796    3120   1909796   1% /mnt/md0

#拷贝配置文件到此挂载点

[[email protected] ~]# cp /etc/issue /etc/inittab /mnt/md0

#ls列出文件,发现出现了lost+found表示已经被识别了单个硬盘的单个分区

[[email protected] ~]# ls /mnt/md0
inittab  issue  lost+found


3、损坏模拟

#下面进行模拟损坏一块磁盘

#先查看此时md0成员信息,/dev/sdb5表示为备用,其它都是完好的

[[email protected] ~]# mdadm --detail /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
  0     8       17        0      active sync   /dev/sdb1
  1     8       18        1      active sync   /dev/sdb2
  4     8       19        2      active sync   /dev/sdb3
  3     8       21        -      spare   /dev/sdb5

#使用-f或者--fail 选项模拟时/dev/sdb3分区损坏

[[email protected] ~]# mdadm /dev/md0  --fail /dev/sdb3
mdadm: set /dev/sdb3 faulty in /dev/md0

#再次查看分区信息,此时备用的sdb5已经自动顶了上去

[[email protected] ~]# mdadm --detail /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
 0      8      17      0       active sync     /dev/sdb1
 1      8      18      1      active sync   /dev/sdb2
 3      8       21      2      spare rebuilding /dev/sdb5
 4      8      19      -      faulty   /dev/sdb3

#这时我们查看文件看看有没有损坏

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m

#下面修改此文件内容

[[email protected] ~]# sed -i ‘$a 
ew line 
 hello world‘ /mnt/md0/issue

#查看修改后的文件内容

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
 
new line 
 hello world


4、移除成员

#这时我们移掉一块分区

[[email protected] ~]# mdadm /dev/md0 -r /dev/sdb3
mdadm: hot removed /dev/sdb3 from /dev/md0

说明:这里的热移除表示正在使用时进行移除

#再次查看成员

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
   0     8      17        0      active sync   /dev/sdb1
   1     8      18        1      active sync   /dev/sdb2
   3     8      21        2      active sync   /dev/sdb5


5、添加成员接管

#添加一个分区加入md0,这里要指定-n 表示为第4块硬盘

[[email protected] ~]# mdadm -G /dev/md0 -n 4 -a /dev/sdb6
mdadm: added /dev/sdb6
mdadm: Need to backup 3072K of critical section..

#再次查看md0磁盘阵列成员

[[email protected] ~]# mdadm -D /dev/md0 | grep ‘.*/dev/sdb[0-9]$‘
  0     8       17        0      active sync   /dev/sdb1
  1     8       18        1      active sync   /dev/sdb2
  3     8       21        2      active sync   /dev/sdb5
  4     8       22        3      active sync   /dev/sdb6

#再次查看数据,文件读取正常

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
 
new line 
 hello world

#再次加入

[[email protected] ~]# mdadm -G  /dev/md0 -n 5  -a /dev/sdb3
mdadm: added /dev/sdb3
mdadm: Need to backup 6144K of critical section..

#使用watch工具进行动态数据查看

[[email protected] ~]# watch -n 3 ‘cat /proc/mdstat‘

解析:这里表示数据同步中,使用watch可以不断进行读秒查看

 技术分享

#数据仍然存在

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
 
new line 
 hello world


6、保存md0阵列配置

#保存阵列数据配置

[[email protected] ~]# mdadm -D --scan /dev/md0 > /etc/mdadm.conf


7、停止md0阵列

#卸载md0设备

[[email protected] ~]# umount /mnt/md0

#停止磁盘阵列

[[email protected] ~]# mdadm -S /dev/md0
mdadm: stopped /dev/md0

#内存中已经没有md0阵列了

[[email protected] ~]# cat /proc/mdstat 
Personalities : [raid6] [raid5] [raid4] 
unused devices: <none>

#md0真的被停止了

[[email protected] ~]# fdisk -l 2> /dev/null | grep ‘md0‘


8、重启启动磁盘阵列

#重新启用md0阵列

[[email protected] ~]# mdadm -A -s /dev/md0
mdadm: /dev/md0 has been started with 5 drives.

#md0中5个设备都列了出来

[[email protected] ~]# cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4] 
md0 : active raid5 sdb1[0] sdb3[5] sdb6[4] sdb5[3] sdb2[1]
      4235264 blocks super 1.2 level 5, 512k chunk, algorithm 2 [5/5] [UUUUU]
      
unused devices: <none>

#挂载md0设备

[[email protected] ~]# mount /dev/md0 /mnt/md0

#文件数据依然存在

[[email protected] ~]# cat /mnt/md0/issue 
CentOS release 6.8 (Final)
Kernel 
 on an m
 
new line 
 hello world

注意:如果相要重新启用md0并读取原有设备成员,那么就需要madm -D -s的配置信息保存至/etc/mdadm.conf文件中,否则无法重新启用的。

 

9、测底清除设备成员的raid信息

#先卸载设备

[[email protected] ~]# umount /dev/md0

#停止阵列设备

[[email protected] ~]# mdadm --stop /dev/md0
mdadm: stopped /dev/md0

#清除radi的超级块信息

[[email protected] ~]# mdadm --zero-superblock /dev/sdb{1,2,3,5,6}

#删除配置文件

[[email protected] ~]# rm -f /etc/mdadm.conf


本文出自 “神剑特兰克斯” 博客,请务必保留此出处http://mengzhaofu.blog.51cto.com/10085198/1844501

linux入门之磁盘管理磁盘配额

Linux入门之磁盘管理(6)磁盘配额在linux中使用向磁盘中存入数据时,如果有多个用户对同个磁盘进行操作,其中一个用户放了很大数据的文件导致硬盘容量用光,那么其他用户将无法再存入数据,这时就需要对每个用户进行存入... 查看详情

linux入门之磁盘管理文件系统挂载

Linux入门之磁盘管理(3)文件系统挂载当磁盘建立了分区,创建了文件系统,只是说明该设备可以用来存储,但是要想访问设备,就需要通过建立一个或多个挂载点,来提供给用户进行访问,在linux中,提供了强大的命令来用于实... 查看详情

linux入门之磁盘管理分区管理

Linux入门之磁盘管理(1)分区管理无论是windows还是linux,目前支持的分区结构只有两种,一种是基于blos检查启动的mbr结构,另一种是基于uefi(统一扩展固件接口)的opt分区结构。当然,目前广泛的还是使用的mbr结构。linux中有很多... 查看详情

磁盘管理之软raid

...RAID,RedundantArraysofInexpensive(Independent)Disks的简称,独立磁盘冗余阵列,简称磁盘阵列。简单来说,RAID是把多个硬盘组合成为一个逻辑扇区,因此,操作系统只会把它当作一个硬盘,经常被用在服务器电脑上。不同的RAID实现的... 查看详情

linux入门之磁盘管理文件系统

Linux入门之磁盘管理(2)文件系统linux分区构成完成之后,一般需要进行对其创建指定的文件系统,也就是我们常说的格式化,然后对其进行分区挂载,提供指定分区的访问点。不同的分区格式会在文件系统内部提供不同的对该分... 查看详情

linux入门之磁盘管理dd命令使用

Linux入门之磁盘管理(5)dd命令使用在Linux中,经常需要一些数据读写等测试,还有文件以及其它数据的备份迁移,一般使用cp命令可以解决一部分,但是其无法进行控制数据的流向及动作,这时就可以使用dd命令,来进行灵活的数... 查看详情

linux入门之磁盘管理/etc/fstab与交换分区

Linux入门之磁盘管理(4)/etc/fstab与交换分区在linux通过挂载命令可以使用各种选项进行不同文件系统的设备文件进行挂载,当然不仅限于块设备,但是无论怎么挂载,一般默认新建的文件系统进行挂载开机是不会自动挂载的,每次... 查看详情

linux入门之磁盘管理lvm逻辑卷案例

Linux入门之磁盘管理(9)LVM逻辑卷案例案例介绍阶段(1):创建一个由两个物理卷组成的大小未20G的卷组myvg,要求其PE大小为16M;而在此卷组中创建一个大小未5G的逻辑卷lvtest,此逻辑卷要能在开机后自动挂载至/mnt/lvtest目录,且... 查看详情

raid磁盘阵列(代码片段)

...器的类型:塔式、机架式、刀片式。服务器的应用级别:入门级、部门级、企业级等。raid等级:(根据功能不同来分类)n为单块硬盘的容量等级号名称硬盘数总容量允许坏盘数(最大值)功能0条带化>=2块2n 查看详情

磁盘管理之raid文件系统分区

第1章RAID磁盘阵列1.1使用raid的目的1)获得更大的容量2)让数据更安全3)读写速度更快1.2raid0、raid1、raid5、raid10对比raid类型数量优点缺点使用类型raid0条带至少1块硬盘。把所有硬盘的容量加在一起,读写速度更快一块硬盘损坏... 查看详情

存储管理之硬件基础机械磁盘原理以及设备规范mbr格式的分区管理

...多核心,每个核心可以完成一个进程的处理) 传统的机械磁盘及分区管理 RAID技术,软RAID实现 LVM Btrfs 文件系统管理: ext、xfs、btrfsLinux存储管理(数据存储): 存储器在冯诺依曼体系中叫做存储器,存储设备在冯诺依曼体... 查看详情

linux高级文件系统管理——raid

...sp;作为大型企业,很多时候数据量相当庞大,由此以来对磁盘空间的要求比较高,更重要是的对数据的完整性的追求。所以单独的磁盘不仅空间使用满足不了,数据的完整性更是无从谈起,所以也就出现了专业的数据存储技术,... 查看详情

磁盘管理之raid阵列卡(代码片段)

磁盘管理之raid卡使用raid卡的好处1.获得更大的容量2.获得更大的性能3.获得更好的安全性常用raid卡级别分类与区别至少需要硬盘数安全冗余可用容量性能使用场景举例raid0至少需要一块硬盘最低所有硬盘的总和读写速度最快不要... 查看详情

存储管理--raid

RAID的全称是RedundantArrayofInexpensiveDisks可以释义为廉价磁盘冗余阵列,后来的RAID里的字母I被认为是Independent,即独立的磁盘冗余阵列。RAID的主要作用就是通过多个条带实现并行读写提高IO能力,以及提高磁盘的耐用性RAID的实现方... 查看详情

linux里面raid和lvm区别是啥?

LVM:主要侧重动态磁盘扩容全称逻辑卷管理,是一个动态扩展磁盘分区容量的功能性工具,对于测试环境,可以用来管理磁分区满了,扩容,但是在大规模环境性能低下,尽量不要使用它。RAID:主要侧重磁盘性能和数据安全磁盘阵... 查看详情

linux面试题(系统管理类——raid)

  简述Raid0,Raid1,Raid5Raid0(独立磁盘冗余阵列):必须使用两块或两块以上硬盘组成每块硬盘大小必须一致是所有动态磁盘中,数据读取速度最快的损坏几率相对最高没有磁盘容错功能Raid1:由两块或2的倍数硬盘组成每... 查看详情

raid5阵列的创建及其管理

...建及其管理环境描述:1.Linux02(IP地址14.0.0.14)准备四块磁盘做raid5磁盘阵列,且有一块磁盘是备份盘,并且演示磁盘损坏自动替换功能,启动、停止raid阵列及更换故障设备2.Linux02提供httpd服务并且在图形化界面和字符界面模式... 查看详情

linux系统上利用软件实现raid

RAID磁盘阵列    RAID是英文RedundantArrayofIndependentDisks的缩写,中文简称为独立冗余磁盘阵列。简单的说,RAID是一种把多块独立的硬盘(物理硬盘)按不同的方式组合起来形成一个硬盘组(逻辑硬盘),从而提供比单... 查看详情