##一、磁盘阵列简介linux
RAID(Redundant Array of Independent Disks)即独立硬盘冗余阵列,简称磁盘阵列。磁盘阵列是由不少价格较便宜的磁盘,以硬件(RAID卡)或软件(MDADM)形式组合成一个容量巨大的磁盘组,利用多个磁盘组合在一块儿,提高整个磁盘系统效能。利用这项技术,将数据切割成许多区段,分别存放在各个硬盘上。其中RAID卡有本身的cpu,由它统一管理和控制;数据也由它来进行分配和维护,处理速度快。服务器启动时,就会有显示进入配置Riad的提示。 RAID比单硬盘有如下一个或多个方面的好处:加强数据集成度,加强容错功能,增长处理量或容量,磁盘阵列对于电脑来讲,看起来就像一个单独的硬盘或逻辑存储单元。服务器
##二、RAID 分类并发
RAID有不少种类型本章只举4例供你们了解RAID技术!dom
RAID类型 | 说 明 | 最低磁盘个数 | 空间利用率 | 各自的优缺点 |
---|---|---|---|---|
RAID0 | 条带卷 | 2+ | 100% | 读写速度快,不容错 |
RAID1 | 镜像卷 | 2 | 50% | 读写速度通常,容错 |
RAID5 | 带奇偶校验的条带卷 | 3+ | (n-1)/n | 读写速度快,容错,容许坏一块盘 |
RAID10 | RAID1的镜像+RAID0的条带 | 4 | 50% | 读写速度快,容错 |
RAID 中主要有三个关键概念和技术:镜像( Mirroring )、数据条带( Data Stripping )和数据校验( Data parity )工具
###①RAID0性能
RAID0是最先出现的RAID模式;应用条数据条带( Data Stripping )技术,将数据分片保存2+个磁盘(最好磁盘的大小相同)上,多个数据分片共同组成一个完整数据副本,数据条带具备更高的并发粒度,当访问数据时,能够同时对位于不一样磁盘上数据进行读写操做, 从而得到很是可观的 I/O 性能提高;是组建磁盘阵列中最简单的一种形式,只须要2块以上的硬盘便可;成本低,能够提升整个磁盘的性能;磁盘利用率为100%,可是,RAID 0没有提供冗余或错误修复能力,任何一个磁盘的损坏将损坏所有数据。ui
###②RAID1spa
RAID 1 应用镜像卷(mirroring)技术,这是一种冗余技术,为磁盘提供保护功能,防止磁盘发生故障而形成数据丢失,也就是说数据在写入一块磁盘的同时,会在另外一块闲置的磁盘上生成镜像文件(同步),因此,RAID1的读写速度通常,磁盘利用率为50%,即2块100G的磁盘构成RAID1只能提供100G的可用空间。3d
###③RAID5code
RAID5应用数据校验( Data parity )技术,RAID 要在写入数据同时进行校验计算,并将获得的校验数据存储在 RAID 成员磁盘中。校验数据能够集中保存在某个磁盘或分散存储在多个不一样磁盘中,甚至校验数据也能够分块,不一样 RAID 等级实现各不相同。当其中一部分数据出错时,就能够对剩余数据和校验数据进行反校验计算重建丢失的数据,能够提供热备盘实现故障的恢复;校验技术相对于镜像技术的优点在于节省大量开销,但因为每次数据读写都要进行大量的校验运算,对计算机的运算速度要求很高,必须使用硬件 RAID 控制器。在数据重建恢复方面,检验技术比镜像技术复杂得多且慢得多。
###④RAID10
RAID10即RAID1镜像+RAID0条带,好比咱们有8块盘,它是先两两作镜像,造成了新的4块盘,而后对这4块盘作RAID0;当RAID10有一个硬盘受损其他硬盘会继续工做,这个时候受影响的硬盘只有2块;
##三、Mdadm命令详解
madam是linux下用于建立和管理软件RAID的命令,Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给咱们提供一个应用程序的工具mdadm
option: -a 检测设备名称 -n 指定设备数量 -l 指定RAID级别 -C 建立 -v 显示过程 -f 模拟设备损坏 -r 移除设备 -Q 查看摘要信息 -D 查看详细信息 -S 中止RAID磁盘阵列 -x 热备盘个数
###RAID5 演示:
#下载mdadm ╭─root@localhost.localdomain ~ ╰─➤ yum stall mdadm -y #第一步:查看磁盘 ╭─root@localhost.localdomain ~ ╰─➤ ls /dev/sd* /dev/sda /dev/sda1 /dev/sda2 /dev/sdb /dev/sdc /dev/sdd /dev/sde #第二步:建立RAID5阵列 ╭─root@localhost.localdomain ~ ╰─➤ mdadm -Cv /dev/md0 -l 5 -n 3 -x 1 /dev/sd{b,c,d,e} mdadm: layout defaults to left-symmetric mdadm: layout defaults to left-symmetric mdadm: super1.x cannot open /dev/sdb: Device or resource busy mdadm: ddf: Cannot use /dev/sdb: Device or resource busy mdadm: Cannot use /dev/sdb: It is busy mdadm: cannot open /dev/sdb: Device or resource busy #第三步:查看阵列信息 ╭─root@localhost.localdomain ~ ╰─➤ mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu May 16 21:11:13 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 : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Thu May 16 21:12:59 2019 State : clean Active Devices : 3 Working Devices : 4 Failed Devices : 0 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : unknown Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : dd9965b6:b6e3d118:d92e3fef:517bbc93 Events : 18 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 1 8 32 1 active sync /dev/sdc 4 8 48 2 active sync /dev/sdd 3 8 64 - spare /dev/sde #第四步:磁盘格式化成文件系统格式 ╭─root@localhost.localdomain ~ ╰─➤ mkfs.xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=16, agsize=654720 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=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 log bsize=4096 blocks=5120, version=2 = sectsz=512 sunit=8 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 #第五步:挂载 ╭─root@localhost.localdomain ~ ╰─➤ mkdir /du ╭─root@localhost.localdomain ~ ╰─➤ mount /dev/md0 /du #第六步:模拟磁盘损坏 ╭─root@localhost.localdomain ~ ╰─➤ mdadm /dev/md0 -f /dev/sdc #sdc盘损坏 mdadm: set /dev/sdc faulty in /dev/md0 #第七部:查看磁盘阵列信息 ╭─root@localhost.localdomain ~ ╰─➤ mdadm -D /dev/md0 /dev/md0: Version : 1.2 Creation Time : Thu May 16 21:11:13 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 : 3 Total Devices : 4 Persistence : Superblock is persistent Update Time : Thu May 16 21:18:14 2019 State : clean, degraded, recovering Active Devices : 2 Working Devices : 3 Failed Devices : 1 Spare Devices : 1 Layout : left-symmetric Chunk Size : 512K Consistency Policy : unknown Rebuild Status : 32% complete Name : localhost.localdomain:0 (local to host localhost.localdomain) UUID : dd9965b6:b6e3d118:d92e3fef:517bbc93 Events : 25 Number Major Minor RaidDevice State 0 8 16 0 active sync /dev/sdb 3 8 64 1 spare rebuilding /dev/sde 4 8 48 2 active sync /dev/sdd 1 8 32 - faulty /dev/sdc