硬盘类型扫盲
IDE 133Mbps 并行
SATA 300Mbps 600Mbps 6Gbps 串行
USB 40Mbps 480Mbps 串行
SCSI small Computer System Interface功能强大的芯片
(大量解脱物理CPU任务,90%都有芯片来完成) 并行
窄带 8 7target 16 15target 其中一个被适配器占用,适配器叫做initiator
SAS2.5 串行
RAID常见结构
编号 名称 性能 冗余 空间利用率 最少单位
0 条带 读写提升 无 100% 2块
1 镜像 写下降,读提升 有 50% 2块
01 01 读写提升 有 50% 4块
10 10 读写提升 有 50% 4块
5 5 读写提升 有 (n-1)/n% 3块
50 50 读写提升 有 (n-x)/nx% 6块
注释:RAID01 一块盘坏掉,修复所有盘受到影响。
RAID10 一块盘坏掉,修复只有其镜像受到影响。
两者性能基本一致,但是当修复的时候RAID10优于RAID01。
RAID10中同组硬盘全部损坏则数据会丢失。
硬件RAID
主板上集成RAID控制器,用线连接外部的RAID阵列
按照操作系统过程中提供适配器的驱动程序
软件RAID (内核模块md:multidisks)md模拟一个逻辑RAID
mdadm
mdadm 模式化的命令, 将任何块设备做成RAID
创建模式
-C
专用选项
-l 级别
-n 设备个数
-a {yes} 自动为其创建设备文件
-c 制定CHUNK大小(每次条带数据块)32 64 128 16 默认为64K
优化软RAID性能
mke2fs -E stride=16 -b 4096 /dev/md0
CHUNK/BLOCK=?
不用每次计算自己的条带到底有多大
-x # 制定制定空闲盘(备用盘)
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb{5,6}
管理模式(默认就工作在管理模式)
--add 添加成员
mdadm /dev/md# --add /dev/sdb9
--del
--fail 模拟损坏
mdadm /dev/md# --fail /dev/sdb7
--remove 移除
mdadm /dev/md# --remove /dev/sdb7
监控模式
-F
停止阵列
-S mdadm -S /dev/md0 先停止
rm /dev/md# 后删除
增加模式
-G
装配模式
-A 手动装配
mdadm -A /dev/md1 /dev/sdb7 /dev/sdb8
自动装备
mdadm -D --scan > /etc/mdadm.conf
mdadm -S /dev/md1
mdadm -A /dev/md1 (不用再这样mdadm -A /dev/md1 /dev/sdb7 /dev/sdb8)
显示RAID设备相关信息
-D
--detail
mdadm -D /dev/md#
查看当前系统所有RAID设备
cat /proc/mdstat
watch 周期性地执行制定命令,并以全屏方式显示结果
-n # 制定周期长度,单位为秒,默认为2
watch `cat /proc/mdstat'
练习 (为了演示方便,没有使用独立的硬盘,而是分区)
1、创建存储空间为2G的RAID0设备。
1 2 3 4 5 6 7 8 9 10 11 | fdisk /dev/sdb {1,2} 修改分区类型fd mke2fs -j /dev/sdb1 格式化ext3 mke2fs -j /dev/sdb2 cat /proc/partitions 查看内核是否是被2个分区 partprobe /dev/sdb 如果没有识别让内核自动识别 mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sdb {5,6} 创建RAID0设备 /dev/md0 cat /proc/mdstat 查看当前系统所有RAID设备 mke2fs -j /dev/md0 格式化文件系统ext3 /dev/md0 设备 fdisk -l 查看当前系统所有设备 mount /dev/md0 /mnt 将RAID0设备挂载到 /mnt 目录 ls /mnt/ 查看mnt目录中是否有lost+found |
2、创建存储空间2G 的RAID10设备
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | fdisk /dev/sdb {1,2,3,4} 修改分区类型fd mke2fs -j /dev/sdb1 格式化ext3 mke2fs -j /dev/sdb2 mke2fs -j /dev/sdb3 mke2fs -j /dev/sdb4 cat /proc/partitions 查看内核是否识别 partprobe /dev/sdb 如果没有识别让内核自动识别 mdadm -C /dev/md0 -a yes -l 1 -n 2 /dev/sdb {1,2} #创建RAID1设备/dev/md0 mdadm -C /dev/md1 -a yes -l 1 -n 2 /dev/sdb {3,4} #创建RAID1设备/dev/md1 mke2fs -j /dev/md0 格式化RAID1设备 mke2fs -j /dev/md1 mdadm -C /dev/md10 -a yes -l 0 -n 2 /dev/md {0,1} #创建RAID0设备基于两个RAID1设备 mke2fs -j /dev/md10 格式化RAID0设备 mdadm -D /dev/md10 查看RAID10设备 |
3、创建2G RAID5 带一个空闲盘 (4个1G)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | fdisk /dev/sdb 创建分区 5 6 7 8 并调整分区类型fd mdadm -C /dev/md0 -a yes -l 5 -n 3 /dev/sdb {5,6,7} -x 1 /dev/sdb8 创建RAID5并制定空闲盘为 /dev/sdb8 cat /proc/mdstat 查看所有RAID设备 mdadm -D /dev/md0 查看设备 /dev/md0 信息 mke2fs -j -E stride=16 -b 4096 /dev/md0 条带优化并格式化RAID5文件系统类型为ext3 mount /dev/md0 /backup cd backup/ ls 查看是否有lost+found文件 cp /etc/inittab ./ mdadm /dev/md0 --fail /dev/sdb5 模拟 /dev/sdb5 分区故障 mdadm /dev/md0 --add /dev/sdb8 添加空闲盘 /dev/sdb8 救急,内核自动同步数据至sdb8 mdadm /dev/md0 --remove /dev/sdb5 移除故障盘 /dev/sdb5 mdadm /dev/md0 --add /dev/sdb5 重新添加空闲盘 /dev/sdb5 mdadm /dev/md0 --fail /dev/sdb8 模拟 /dev/sdb8 分区故障 mdadm -D /dev/md0 查看发现此时作为空闲盘的 /dev/sdb5 会自动填补上去,同步数据。 |