
正文
linux软raid命令 linux raid10
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
[Linux实用命令]-9-磁盘阵列(RAID)实例详解
这篇文章介绍几种常用的磁盘阵列技术(Raid0、Raid1、Raid4、Raid5、Raid10、Raid01),演示如何在CentOS7环境下使用mdadm命令去创建和维护磁盘阵列;RAID又称“廉价磁盘冗余阵列”,可以使用硬件和软件两种方式来实现,硬件RAID可以参考购买硬件时附带的参考手册,设置方法与软件RAID有差异;现如今软件RAID大多用作研究和熟悉RAID的工作方式。
Raid有"廉价磁盘冗余阵列"的意思,就是利用多块廉价的硬盘组成磁盘组,让数据分部储存在这些硬盘里面,从而达到读取和写入加速的目的;也可以用作数据的冗余,当某块硬盘损毁后,其他硬盘可以通过冗余数据计算出损坏磁盘的数据,这样就提高了数据储存的安全性。
Raid0数据储存方法如下(假设有两块硬盘D1、D2):
特点:数据被并行写入每个磁盘,每个磁盘都保存了完整数据的一部分,读取也采用并行方式,磁盘数量越多,读取和写入速度越快。因为没有冗余,一个硬盘坏掉全部数据丢失。至少两块硬盘才能组成Raid0阵列。
容量:所有硬盘之和。
Raid1数据储存方法如下(假设有两块硬盘D1、D2):
特点:有数据冗余,可靠性强,D1、D2被写入相同的数据,其中D2可以作为D1的完整备份。读取时,从两块硬盘上并行读取,写入慢,读取快。任何一块硬盘坏掉不会丢失数据,至少两块硬盘并且两块硬盘大小相等才能组成Raid1阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来做备份)。
Raid4数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:有数据冗余校验,可靠性强。其中任何一块硬盘坏掉都不会引起数据丢失,D1丢失时,D3根据校验和以及D2的数据进行逆运算,计算出D1的数据。但当写入大量数据时校验盘D3会是一个数据瓶颈,导致写入慢。只有当两块磁盘同时丢失时,数据才无法恢复。至少三块硬盘并且磁盘大小应该相等才能组成Raid4阵列(不常用)。
容量:所有硬盘容量之和减去其中一块硬盘的容量。
Raid5数据储存方法如下(假设有三块硬盘D1、D2、D3):
特点:采用奇偶校验,可靠性强,磁盘校验和被散列到不同的磁盘里面,增加了读写速率。只有当两块磁盘同时丢失时,数据才无法恢复,至少三块硬盘并且硬盘大小应该相等才能组成Raid5阵列。
容量:所有硬盘容量之和减去其中一块硬盘的容量,被减去的容量被分配到三块硬盘的不同区域用来存放数据校验信息。
Raid10(Raid1+Raid0)是现在比较常用的一种磁盘阵列级别,它的容错好,读写数据效率较高,但经费相对也较高。
Raid10数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:备份和并发式存取数据,可靠性强。D1、D2组成一个阵列Raid1,其中D1是数据盘,D2是备份盘;D3、D4也组成一个Raid1,其中D3是数据盘,D4是备份盘;在这个基础上将D1、D2作为一个整体,将D3、D4也作为一个整体,这两个整体之间再组成一个Raid0阵列。这样不仅仅读取数据会非常快,并发写入的速度也会随着磁盘的增多而变快。至少四块硬盘并且每块硬盘大小应该相等才能组成Raid10阵列。
容量:所有硬盘容量之和的一半(一半写数据,一半用来备份数据)。
Raid01数据储存方法如下(假设有四块硬盘D1、D2、D3、D4):
特点:D1、D2组成一个阵列Raid0,D3、D4也组成一个阵列Raid0,D1、D2和D3、D4再组成一个Raid1。D1和D2作为数据盘阵列,D3和D4作为数据备份阵列,这种方式并不常用,至少四块硬盘并且每块硬盘大小应该相等才能组成Raid01阵列。
容量:所有硬盘容量之和的一半。
这一部分通过Linux上的mdadm命令来实现Raid10磁盘阵列。
实验环境为一台安装了5块硬盘的计算机,操作系统是CentOS7,除系统所在硬盘(/dev/sda)外,其余四块20G的硬盘盘符分别为(/dev/sdb、/dev/sdc、/dev/sdd、/dev/sde);
主要用到的命令:mdadm;
CentOS7中mdadm默认已安装,如果没有安装,可以使用yum在线安装,如下:
到这里,实验的准备工作完成。
新创建的磁盘阵列默认是不能开机自启动的,需要手动创建一个配置文件,让系统在启动的时候自动启动Raid(经过测试,CentOS7并不需要创建这个配置文件,如果重启后磁盘阵列没有随机启动,请使用下面的方法配置一次):
可以在创建RAID的时候指定有几块冗余磁盘,当工作磁盘出现故障的时候,冗余磁盘自动启动,顶替出现故障的磁盘继续工作,请看下面的实例:
下面手动将一块磁盘标记为故障,看看冗余盘是否起作用:
假如/dev/sdc经过测试后发现没有问题,想要重新加入md0使用,可以在系统重启后,使用"mdadm /dev/md0 -a /dev/sdc"命令将它重新(添加)启用。
如果以后,想要加入一块新硬盘到这个raid10里作为备份盘,这块新硬盘需要和其他硬盘(或分区)保持相同的大小,然后使用下面的命令添加:
要想彻底清除RAID以及数据,请使用下面的方法:
相关问答
Q1: 什么是raid,如何在linux系统中实现
应用场景
Raid大家都知道是冗余磁盘的意思(Redundant Arrays of Independent Disks,RAID),可以按业务系统的需要提供高可用性和冗余性,目前市面上比较常见的是通过服务器的raid阵列卡来实现此功能。
通过硬件阵列卡实现raid具有可靠性高,性能好等特点,但是对于一般的企业而言硬件阵列卡固然好,如果大规模应用的话动辄几千上万的费用也不是他们所能承受的,难道就没有既能保证数据安全,又能减少费用支持的IT方案吗?当然有,软raid就可以实现这一需求。
实现步骤
软raid比较依赖操作系统,所以他的劣势也显而易见,需要占用系统资源(主要是CPU资源)。目前在Linux和windows下软raid都比较常见了,Linux是通过mdadm实现的,windows下则在win2003之后通过磁盘管理来实现。
实验环境
一台centos 7.2 VM,主机名分别为host1,host1上挂载两块50G的数据盘,我们的实验就在这两块数据盘上完成。
P.S:需要强调的是生产环境下两块组raid的硬盘必须是同品牌同型号同容量的,否则极容易出现软raid失效的情况。
1.确认操作系统是否安装了mdadm软件
[root@host1 ~]# rpm -qa |grep mdadm
mdadm-3.3.2-7.el7.x86_64
2.对两块数据盘进行分区,并设置分区类型为raid
fdisk命令只能对容量在2T以下的硬盘进行分区,如果超过2T则需要使用parted工具了。Parted命令以后会介绍使用方法,本节不赘述了。
在fdisk下raid的分区类型代码是fd,在parted工具下首先需要使用mklabel将磁盘格式由MBR改成GPT,然后才能使用mkpart命令进行分区,分完区之后使用set设置分区flag为raid即可。
3.使用mdadm命令创建raid1
可以看到创建时有个Note的提示,是说软raid不能当启动设备,这就是软raid比较鸡肋的地方了。
mdadm -C /dev/md0 -ayes -l1 -n2 /dev/xvd[b,c]1
命令说明:
-C创建阵列;
-a同意创建设备,如不加此参数时必须先使用mknod 命令来创建一个RAID设备,不过推荐使用-a yes参数一次性创建;
-l阵列模式;
-n阵列中活动磁盘的数目,该数目加上备用磁盘的数目应该等于阵列中总的磁盘数目;
/dev/md0阵列的设备名称,如果还有其他阵列组可以以此类推;
创建完成后可以使用cat /proc/mdstat查看阵列状态:
下图中第一次查看的时候提示resync完成了95.7%,第二次查询的时候两块盘才真正同步完。
也可以使用mdadm -D /dev/md0查看阵列组的状态
4.创建md0的配置文件
echo DEVICE /dev/sd{a,b}1 /etc/mdadm.conf
mdadm -Evs /etc/mdadm.conf
mdadm运行时会自动检查/etc/mdadm.conf 文件并尝试自动装配,因此第一次配置raid后可以将信息导入到/etc/mdadm.conf 中。
5.使用/dev/md0
在/dev/md0上创建文件,然后挂载进行使用。
mkfs.ext4 /dev/md0
Q2: linux做软raid5
2021-11-03
主机:192.168.20.63
总磁盘:50G
磁盘树形结构:lsblk
目标 :把sda、sdb、sdc、sdd、sde、sdf这六块盘合起来做成raid5
1.对每块盘进行分区
其他的sdb、sdc、sdd、sde、sdf盘一次做以上的操作
fdisk -l | grep fd #查看磁盘raid情况
软raid设置成功,如下
注意: 若磁盘标签类型为gpt,在做软raid时可能会失败,可将GPT转成MBR再做raid5
删除raid5
Q3: 如何在linux下做软raid实现方法
磁盘阵列软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 等
Q4: 如何使用Linux程序mdadm创建软件RAID1软阵列 第2页
创建 RAID-1 阵列
磁盘分区完成后,我们可以使用以下命令创建 RAID-1 阵列:
# mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb1 /dev/sdc1
说明:
-Cv: 创建一个阵列并打印出详细信息。
/dev/md0: 阵列名称。
-l1 (l as in "level"): 指定阵列类型为 RAID-1 。
-n2: 指定我们将两个分区加入到阵列中去,分别为/dev/sdb1 和 /dev/sdc1
以上命令和下面的等价:
# mdadm --create --verbose /dev/md0 --level=1 --raid-devices=2 /dev/sdb1 /dev/sdc1
如果你想在在磁盘失效时添加另外一个磁盘到阵列中,可以指定 '--spare-devices=1 /dev/sdd1' 到以上命令。
输入 “y” 继续创建阵列,回车:
可以使用以下命令查看进度:
# cat /proc/mdstat
另外一个获取阵列信息的方法是:
# mdadm --query /dev/md0
# mdadm --detail /dev/md0 (或 mdadm -D /dev/md0)
'mdadm -D'命令提供的信息中,最重要就是阵列状态类。激活状态说明阵列正在进行读写操作。其他几个状态分别为:完成(读写完成)、降级(有一块磁盘失效或丢失)或者恢复中(一张新盘已插入,系统正在写入数据)。这几个状态涵盖了大多数情况。
格式化或加载磁盘阵列
下一步就是格式化阵列了,本例中使用ext4格式:
# mkfs.ext4 /dev/md0
现在可以加载阵列并验证其正常加载:
# mount /dev/md0 /mnt
# mount
Q5: 关于如何在RAID软磁盘阵列上搭建linux系统的方法
我最近新配了台电脑,准备装个双系统,windows用来打游戏,linux用来写代码,是不是很完美!然后专门买了两块1T硬盘,想用来搭建RAID0,使用并行I/O来提升电脑的性能。
我在选主板的时候刻意选了支持RAID的主板,msi B85-G43 GAMING,能用msi的super raid技术,但是买来之后发现,这东西的驱动是exe程序,呵呵,主板支持的只是个伪raid,只能在windows下使用,想了想还是决定放弃在windows中使用raid,毕竟只是拿来日常休闲的系统,linux上得追求性能,所以在linux上使用软RAID来实现。那么这时候就有读者问了,如何在RAID软磁盘阵列上搭建linux系统!这里就由我给大家 说说 如何搭建 方法 吧:
首先在第一块磁盘上装上windows 8,给100G的主分区作为C盘,硬盘其余部分先不动,等装好系统再规划硬盘。
系统装好后,使用MiniTool Partition Wizard Home Edition 7.0来规划硬盘。直接上图,后面解释。
总共1.86T,
windows:
100G系统分区,主分区
231.5G游戏安装
200G下载文件
200G下载游戏
150G安装软件
150G工具
共用硬盘:
100G文档
331.5G各种音乐,电影,图片
linux:使用最新的fedora20
300M boot分区,主分区,不使用raid,因为grub2目测不支持raid,所以将boot单独分出来
300M boot备份分区,主分区,备份一个boot分区,出现意外时可以使用这个分区引导
3.6G swap分区,swap0 + swap1,各1.8G,分布在两个硬盘上
20G 挂载到/,sys0 + sys1,各10G
50G /usr, usr0 + usr1,各25G
25G /home,home0 + home1,各12.5G
50G /var, var0 + var1,各25G
20G /opt, opt0 + opt1,各10G
230.8G /data, data0 + data1,各115.4G,用于存放各种下载的软件,压缩包,虚拟机
至此,分区方案制定完成,MiniTool Partition Wizard将windows分区分好,并把linux的400G按照以上的分区计划格式话成ext4文件系统,接下来就开始用live cd安装系统吧~
在U盘上刻fedora live cd安装系统
由于fedora的安装程序在磁盘分区时并没有选项直接选择RAID,所以我使用console来做RAID。
这里用到的工具是mdadm。
首先用su root切换到root用户,并用 fdisk -l 来查看目前的分区情况。
/dev/sda
/dev/sdb
可以观察到现在/dev/sda3和/dev/sdb1分别为boot 和 bootbak,这两个分区不用管
/dev/sda5-11分别和/dev/sdb5-11大小相同,所以这一部分就是我们用来做RAID的硬盘
制作swap分区
$ mdadm -Cv /dev/md0 -l0 -n2 /dev/sd{a,b}5$ mkfs.ext4 /dev/md0 这一步得做,不然在安装程序中无法看到md0这块硬盘,具体原因不明命令也可以写成 $ mdadm --create --verbose /dev/md0 --level=0 --raid-devices=2 /dev/sd{a,b}5 $ mkfs.ext4 /dev/md0
按照上面的写法,将其余分区也做成RAID分区,重启一次系统,再次进入live cd安装界面,在硬盘分区时就可以看到这几块RAID硬盘分区了。
选择某一个分区,在右边详细信息中填上挂载点,点击重新分区,选择ext4或者swap,然后点击更新设置。完成之后点击开始安装系统,一切就妥妥的了。
系统安装完后,用df -h可以查看到
使用 cat /proc/mdstat 来查看RAID分区的运行状态
最后,来测试一下RAID0的速度
首先安装 hdparm 测试工具,yum install hdparm.x86_64
使用hdparm -tT 设备名称 来测试,分别测试/dev/sda和/dev/md0,测试结果如下
RAID0的速度提升接近两倍,很不错的成绩~~觉得本文不错记得在 文章 下方给我点个赞哦。
关于linux软raid命令和linux raid10的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。







