学习MK课堂总结 在此感谢MK分享
RAID(Redundant Array of Independent Disks, 独立磁盘冗余阵列) 可以提供较普通磁盘更高的速度,安全性,所以服务器在安装时都会选择创建RAID.
创建两种方式:
软RAID 通过操作系统软件实现
硬RAID 使用硬件阵列卡
raid0:
1. RAID-0: striping(条带模式),至少需要两块磁盘,做RAID分区的大小最好是相同(可以充分发挥并发优势);数据分散存储于不同的磁盘上,在读写的时候
可以实现并发,所以相对其读写性能最好;缺点 没有容错功能,任何一个磁盘的损坏将损坏全部数据 磁盘利用率100%
2. RAID-1 : mirroring(镜像卷), 至少需要两块硬盘, raid大小等于等于两个raid分区中最小的容量(最好将分区划分一样), 可增加热备盘提供一定的备份能力, 数据有冗余,
在存储时同时写入两块硬盘 实现数据备份
磁盘的利用率为50%,即两块100G的磁盘构成RAID1只能提供100G的可用空间
3. RAID-5 : 需要三块或以上的硬盘, 可以提供热备盘实现故障的恢复;只损坏一块 没问题 但是如果同时损坏两块磁盘, 则数据将都会损坏 空间利用率 (n-1)/n 2/3
RAID-5数据恢复原理 : 相对简单的异或逻辑运算
RAID 卡 : Adaptec SATA RAID 2410SA
RAID 功能 : RAID 0 . 1. 5. 10. JBOD
接口 : Serial ATA
数据传输率: 1.5GB/S
通道数: 4
最多连接设备: 4
LSI(美国巨积) MegaRAID SAS 9260-16i
raid级别: 0. 1. 5 RAID 跨接
接口:Serial SATA/SAS
数据传输率: 6GB/S
插槽类型: PCI
其他性能: 512MB DDRII 告诉缓存
热备份盘(hot spare or hot standby driver) : 为了加强容错的功能以及使系统在磁盘故障的情况下能迅速重建数据 以维持系统的性能,一般的磁盘阵列系统都可以使用热备份功能
Chunk(块) : raid存储数据时每个数据段的大小 4K 或 64K
若chunk过大可能一块磁盘上的带区空间就可以满足大部分I/O操作, 使得数据的读写只局限于一块硬盘上,这就不能充分发挥RAID并发的优势;如果chunk设置过小,任何文件都可能引发大量的读写操作,不能良好的发挥并发性能,占用过多的控制器总线带宽, 也影响阵列的整体性能
##########################################################
RAID-0 实践:
环境: 添加一个sdb硬盘 分两个1G的主分区 sdb1 和 sdb2
分区:
#############################################################
[root@localhost ~]# fdisk /dev/sdb
Welcome to fdisk (util-linux 2.23.2).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x90638ab3.
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3
Device Boot Start End Blocks Id System
Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-41943039, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039):
+1G
Partition 1 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
Command (m for help): n
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): p
Partition number (2-4, default 2): 2
First sector (2099200-41943039, default 2099200):
Using default value 2099200
Last sector, +sectors or +size{K,M,G} (2099200-41943039, default 41943039):
+1G
Partition 2 of type Linux and of size 1 GiB is set
Command (m for help): p
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x90638ab3
Device Boot Start End Blocks Id System
/dev/sdb1 2048 2099199 1048576 83 Linux
/dev/sdb2 2099200 4196351 1048576 83 Linux
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@localhost ~]# ll /dev/sdb
brw-rw---- 1 root disk 8, 16 Nov 29 23:23 /dev/sdb
[root@localhost ~]# ll /dev/sdb*
brw-rw---- 1 root disk 8, 16 Nov 29 23:23 /dev/sdb
brw-rw---- 1 root disk 8, 17 Nov 29 23:23 /dev/sdb1
brw-rw---- 1 root disk 8, 18 Nov 29 23:23 /dev/sdb2
######################################################
2:创建
###########################################################
[root@localhost ~]# mdadm -C -v /dev/md0 -l 0 -n 2 /dev/sdb1 /dev/sdb2
mdadm: chunk size defaults to 512K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d648
[root@localhost ~]# mdadm -D /dev/md0
/dev/md0:
Version : 1.2
Creation Time : Tue Nov 29 23:33:14 2016
Raid Level : raid0
Array Size : 2095104 (2046.34 MiB 2145.39 MB)
Raid Devices : 2
Total Devices : 2
Persistence : Superblock is persistent
Update Time : Tue Nov 29 23:33:14 2016
State : clean
Active Devices : 2
Working Devices : 2
Failed Devices : 0
Spare Devices : 0
#备份
Chunk Size : 512K #块大小
Name : localhost.localdomain:0 (local to host localhost.localdomain)
UUID : e8155184:cca4de51:5a2162c2:3b2d6485
Events : 0
Number Major Minor RaidDevice State
0 8 17 0 active sync /dev/sdb1
1 8 18 1 active sync /dev/sdb2#active sync 正常状态
###########################################################
-C 创建 - -l 等级 -D 打印 -s 扫描 -n
生成raid 配置文件:
############################################################
[root@localhost ~]# mdadm -Ds > /etc/mdadom.conf
[root@localhost ~]# cat !$
cat /etc/mdadom.conf
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d648
#############################################################
使用:
############################################################
分区:
[root@localhost ~]# fdisk /dev/md0
[root@localhost ~]# ll /dev/md*
brw-rw---- 1 root disk 9, 0 Nov 29 23:49 /dev/md0
brw-rw---- 1 root disk 259, 0 Nov 29 23:49 /dev/md0p1
格式化:
[root@localhost ~]# mkfs.ext4 /dev/md0p1
使用:
[root@localhost ~]# mkdir /raid0
[root@localhost ~]# mount /dev/md0p1 /raid0/
[root@localhost ~]# ls !$
ls /raid0/
lost+found
[root@localhost ~]# cp /etc/passwd /raid0/
############################################################
拓展: 开机自动挂载
vim /etc/fstab
输入: /dev/md0p1/raid0ext4 defaults 0 0
############################################################
[root@localhost ~]# df -h
dev/md0p1 2.0G 6.1M 1.9G 1% /raid0
###########################################################
------------------------------------------------------------------------------------------------------
创建含有热备份raid1
[root@localhost ~]# fdisk /dev/sdc
[root@localhost ~]# mdadm -C -v /dev/md1 -l 1 -n 2 -x 1 /dev/sdc{1,2,3}
#-x 添加热备份
mdadm -Ds > /etc/madam.conf
fdisk /dev/md1
mkfs.ext4 /dev/md1
[root@localhost ~]# mkdir /raid1
[root@localhost ~]# mount /dev/md1p1 /raid1
[root@localhost ~]# df -h
/dev/md0p1 2.0G 6.1M 1.9G 1% /raid0
#raid0 2g 容量
/dev/md1p1 990M 2.6M 921M 1% /raid1
#raid1 1g容量
---------------------------------------------------------------------------------------------------
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md1 : active raid1 sdc3[2](S) sdc2[1] sdc1[0]
1047552 blocks super 1.2 [2/2] [UU]
md0 : active raid0 sdb2[1] sdb1[0]
2095104 blocks super 1.2 512k chunks
#md1:表示此阵列的设备名
#active :表示此阵列正常读写
#sdc3[2](S):表示这个阵列第三个设备是备用盘 sdc2[1]是此阵列第二个设备 。。。
#1047552 blocks 表示此阵列的大小,以块为单位(1G)
# [2/2] 表示阵列有两个磁盘,并且2个都在正常运行
----------------------------------------------------------------------------------------------------
模拟故障
[jingsia@localhost ~]$ watch -n 1 cat /proc/mdstat#观察动态 会启动sdc3备份
[root@localhost ~]# mdadm -f /dev/md1 /dev/sdc1#设置sdc1为故障
mdadm: set /dev/sdc1 faulty in /dev/md1
移动损坏的硬盘
[root@localhost ~]# mdadm -r /dev/md1 /dev/sdc1
mdadm: hot removed /dev/sdc1 from /dev/md1
[root@localhost ~]# cat /proc/mdstat #查看状态
root@localhost ~]# mdadm -Ds > /etc/mdadm.conf
RAID5:
步骤:
创建RAID5
停止阵列 重新激活阵列
再添加新的1G热备盘 扩展阵列容量 从3磁盘扩展到4个
实验环境: sde1, sde2, sde3, sde4, sde5, sde6 个主分区 每个1G
[root@localhost ~]# fdisk /dev/sde
Device Boot Start End Blocks Id System
/dev/sde1 2048 2099199 1048576 83 Linux
/dev/sde2 2099200 4196351 1048576 83 Linux
/dev/sde3 4196352 6293503 1048576 83 Linux
/dev/sde4 6293504 8390655 1048576 5
Extended
/dev/sde5 6295552 7344127 524288 83 Linux #没有空间512M(建议都是1G)
/dev/sde6 7346176 7870463 262144 83 Linux#没有空间256M(建议都是1G)
[root@localhost ~]# mdadm -C -v /dev/md5 -l 5 -n 3 -x 1 /dev/sde{1,2,3,5}
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md5 : active raid5 sde3[4]
sde5[3](S) sde2[1] sde1[0]
1046528 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
md0 : active raid0 sdb2[1] sdb1[0]
2095104 blocks super 1.2 512k chunks
md1 : active raid1 sdc3[2] sdc2[1]
1047552 blocks super 1.2 [2/2] [UU]
[root@localhost ~]# mdadm -Ds
ARRAY /dev/md1 metadata=1.2 name=localhost.localdomain:1 UUID=a5557751:cf581fce:52abc6a2:18328593
ARRAY /dev/md0 metadata=1.2 name=localhost.localdomain:0 UUID=e8155184:cca4de51:5a2162c2:3b2d6485
ARRAY /dev/md5 metadata=1.2 spares=1 name=localhost.localdomain:5 UUID=0e271e98:d07ff540:1de70330:c03f53d3
[root@localhost ~]#mdadm -Ds > /etc/mdadm.conf
[root@localhost ~]# mdadm -S /dev/md5 #停止md5
mdadm: stopped /dev/md5
[root@localhost ~]# mdadm -As #激活
mdadm: /dev/md5 has been started with 3 drives and 1 spare.
[root@localhost ~]# fdisk /dev/md5
[root@localhost ~]# mkfs.ext4 /dev/md5p1
[root@localhost ~]# mkdir /raid5
[root@localhost ~]# mount /dev/md5p1 /raid5/
[root@localhost ~]# umount /raid5
[root@localhost ~]# mdadm -a /dev/md5 /dev/sde6 #添加
mdadm: /dev/sde6 not large enough to join array (无法添加 太小)
mdadm:added /dev/sde6
[root@localhost ~]# mdadm -G /dev/md5 -n 4#扩展阵列容量 从3磁盘扩展到4个
mdadm: Need to backup 3072K of critical section..
[root@localhost ~]# watch -n 1 cat /proc/mdstat #动态查看扩展过程
[root@localhost ~]#mdadm -Ds > /etc/mdadm.conf
了解:
建立 RAID 1+0 双层架构的方法
先创建raid1 再使用创建的raid1设备创建raid0
[root@localhost ~]# fdisk /dev/sdf
Device Boot Start End Blocks Id System
/dev/sdf1 2048 2099199 1048576 83 Linux
/dev/sdf2 2099200 4196351 1048576 83 Linux
/dev/sdf3 4196352 6293503 1048576 83 Linux
/dev/sdf4 6293504 8390655 1048576 83 Linux
[root@localhost ~]# mdadm -C -v /dev/md11 -l 1 -n 2 /dev/sdf1 /dev/sdf2
[root@localhost ~]# mdadm -C -v /dev/md12 -l 1 -n 2 /dev/sdf3 /dev/sdf4
[root@localhost ~]# mdadm -C -v /dev/md10 -l 0 -n 2 /dev/md11 /dev/md12
[root@localhost ~]# cat /proc/mdstat
Personalities : [raid0] [raid1] [raid6] [raid5] [raid4]
md10 : active raid0 md12[1] md11[0]
2093056 blocks super 1.2 512k chunks
md12 : active raid1 sdf4[1] sdf3[0]
1047552 blocks super 1.2 [2/2] [UU]
md11 : active raid1 sdf2[1] sdf1[0]
1047552 blocks super 1.2 [2/2] [UU]
开始删除:
[root@localhost ~]# umount /raid0
#如果已经挂在raid 先卸载
[root@localhost ~]# umount /raid1
[root@localhost ~]# umount /raid5
[root@localhost ~]# mdadm -Ss #停止raid设备
[root@localhost ~]# rm -rf /etc/madam.conf
#删除raid配置文件
[root@localhost ~]# mdadm --misc --zero-superblock /dev/sdf4
#清楚物理磁盘中的raid表识