学习资源来自:www.magedu.com
学习记录过程中难免出现错误,如有发现,还望大神们指出。
示例操作部分有的与历史操作有关,如果先前的示例操作没有执行过的话,可能会有部分示例的操作无法执行。示例仅供参考
基础知识:
驱动程序:将cpu发出的逻辑指令转换成对应设备控制指令的机制
主板上的接口
集成接口(Controller):控制器(转换器)―将cpu发出的信号转换成对应设备可以识别的信号 (u盘接口)
非集成接口(Adapter):适配器 (大部分网卡插槽,SCSI接口)
协议:为了理解某种信号制定的、双方都遵循的法则
(助解:假设cpu说的是英语,而磁盘只能听懂法语,为了实现正常交流,双方需要使用使用相同的语言。)
串行口和并行口的理论速度:
IDE接口:133Mbps (并行)
SATA:300Mbps(1),600Mbps(2),6Gbps(3) (串行)
USB:480Mbps(3.0)(串行)
SCSI(Small Computer System Interface):UltraSCSI,320Mbps (并行)
(高转速的大型硬盘的接口)
自带微型cpu
接入硬盘转速:10000,15000
SAS:用于存储容量较小的小型硬盘,转速快,造价高 ―― 串行的SCSI类型接口 (串行)
RAID:(可实现硬件级别的备份)
早期存储大量数据时使用的控制器是SLED:Single Large Expensive Disk
RAID(Redundant Arrays of Inexpensive Disks)控制器:(伯克利――廉价冗余磁盘阵列构想)廉价难以实现
RAID(Redundant Arrays of Independent Disks)控制器:对先前的RAID研究后得到的结果。
独立冗余磁盘阵列,将多个磁盘组合成一个阵列当作一个逻辑设备来使用的机制
组合RAID的时候需要考虑的两大问题:速度,数据的可用性
条带化技术(RAID使用的技术):对RAID中的多个磁盘以一个合适的大小进行分割(CHUNK),
RAID级别:仅代表磁盘组织方式不同,没有上下之分
0: 组织方式:条带
性能提升: 读,写
冗余能力(容错能力): 无
空间利用率:nS(假设:有n块磁盘,每一块磁盘的空间利用率为S)
需磁盘数:至少2块盘
1: 组织方式:镜像
性能表现:写性能下降,读性能提升
冗余能力:有
空间利用率:1/2
需磁盘数:至少2块盘(两块磁盘中存储的数据相同)
2
3
4: 组织方式:校验码(指定一块校验码盘)
5: 组织方式:校验码(磁盘轮换作为校验码盘)
性能表现:读,写提升
冗余能力:有(允许一快盘出错)
空间利用率:(n-1)/n
需磁盘数:至少3块盘
10: 组织方式:镜像+条带(大型企业)(各组存储数据不同(条带),组内磁盘存储数据相同(镜像))
性能表现:读、写提升
冗余能力:有(同组全坏时无法修复)
空间利用率:1/2
需磁盘数:至少需要4块
01: 组织方式:条带+镜像(各组存储数据相同(镜像),组内磁盘存储数据不同(条带))
性能表现:读、写提升
冗余能力:有(不同组都出现损坏时无法修复)
空间利用率:1/2
需磁盘数:至少4块盘
50: 组织方式:校验码+条带
性能表现:读、写提升
冗余能力:有
空间利用率:(n-2)/n
需磁盘数:至少6块盘
jbod:组织方式:将多块小盘组合成一块大盘使用
性能表现:无提升
冗余能力:无
空间利用率:100%
需磁盘数:至少2块盘
RAID常见组合:
早期:
IDE
SCSI
现在:
SATA
SAS
SCSI组成结构(主板上只有一个接口――适配器):
8接口:1数据请求发起者(initiator)―― 适配器;7目标(target)
16接口:1数据请求发起者(initiator);15目标(target)
(target还可以分成n个接口用于接入硬盘,每个接口有一个LUN(Logical Unit Number) ,
传入的数据通过数据报文首部的LUN确定数据存储位置)
RAID的实现形式:硬件RAID(企业级),软件RAID(通常只是用于实验)
硬件级别:
BIOS
操作系统将RAID接口识别为串口设备,即将RAID识别为/dev/sd.
例如有四块磁盘,每块磁盘容量为500G,每两块分别构成RAID 0 和 RAID 1,
操作系统可能会将俩RAID识别为两个设备/dev/sda,/dev/sdb
RAID 0 识别为:/dev/sda (1T)
RAID 1 识别为:/dev/sdb (500G)
软件级别(需要内核支持软件RAID):linux使用多设备(md:multi disks)内存模块模拟RAID。
(生产环境下不建议使用)
软件RAID需要内核的支持,当内核损坏时软件RAID将无法使用,为避免操作系统奔溃造成以RAID方
式存储的数据无法使用,需将模拟成RAID设备的磁盘设备标记为fd类型,使这类磁盘在存储数据之
外存储一定的元数据,当系统由于故障重装系统后,装载md模块后操作系统会自动进行扫描并将标
记为fd格式的磁盘重新组合成RAID。
+++++++++++++++++++++++++++++++++++++++++
软件RAID的实现:
md: (/dev/md# md#表示不同的RAID设备)
mdadm(md管理器――用户空间管理工具): 支持将任何块设备做成RAID(例如:分区)
(使用同一块磁盘上的分区制作RAID并没有什么意义,只能用来做实验)
模式化的命令:
创建模式
-C
专用选项:
-l: 级别
-n #: 设备个数
-a {yes|no}: 是否自动为其创建设备文件
-c: 数据块(CHUNK)大小, 2^n,默认为64K (对RAID 0, RAID 1有意义)
-x #: 指定空闲盘个数 (增强数据安全性)
(mke2fs -E stride=# : -E 指定条带大小 #= CHUNK/BLOCK(4k))
(RAID存储数据时需要计算条带大小,指定条带大小有利于提升RAID效率)
管理模式
--add(添加), --remove(移除), --fail(模拟磁盘损坏)
mdadm /dev/md# --fail /dev/sda7
监控模式
-F
增长模式
-G
装配模式(重新识别并组合RAID ―― 重装系统)
-A
查看RAID阵列的详细信息
mdadm -D /dev/md#
--detail
停止阵列:
mdadm -S /dev/md#
--stop
watch: 周期性地执行指定命令,并以全屏方式显示结果 (监控命令执行过程)
格式: watch -n # 'COMMAND'
-n #:指定周期长度,单位为秒,默认为2
保存RAID信息至配置文件,以便以后进行装配:(--scan 扫描)
mdamd -D --scan > /etc/mdadm.conf
lsmod /列出内核当前装载的模块
创建2G的RAID0:4 x 512MB | 2 x 1G
fdisk /dev/sda
创建两个1G的分区并将类型设置为fd
partprobe /重读分区
cat /proc/partitions
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
cat /proc/mdstat /显示当前系统上所有处于启用状态的RAID设备的情况
mke2fs -j /dev/md0 /格式化
fdisk -l /查看md0大小
mount /dev/md0 /mnt /挂载
ls /mnt
创建一个2G的RAID1:2 x 2G
fdisk /dev/sda
创建三个2G的分区并设置为fd类型
partprobe /重读分区
cat /proc/partitions
mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
cat /proc/mdstat
(显示正在同步的进度条)
fdisk -l
mke2fs -j /dev/md1
mount /dev/md1 /media/
ls /media/
cp /etc/inittab /media/
ls /media/
mdadm -D /dev/md1 /查看当前工作状态--详细信息
mdadm /dev/md1 --fail /dev/sda8 /模拟sda8损坏
mdadm --detail /dev/md1
cd /media/
ls
cat inittab /正常显示
模拟拔除损坏磁盘:
mdadm /dev/md1 -r /dev/sda8
mdadm --detail /dev/md1
提供新盘
mdadm /dev/md1 -a /dev/sda9
mdadm --detail /dev/md1
cat /proc/mdstat
(显示正在恢复数据的进度条)
ls
cat inittab
mdadm /dev/md1 -f /dev/sda7
mdadm -D /dev/md1
cat inittab /正常访问
停用阵列
cat /proc/mdstat
umount /dev/md1
mdadm -S /dev/md1
cat /proc/mdstat
(此时若执行rm /dev/md1 md1就被完全删除,redhat6下默认自动删除)
重新加载
mdadm -A /dev/md1 /dev/sda7 /dev/sda9
cat /proc/mdstat
mdadm -D /dev/md1 /sda7损坏,并未使用
制作热空闲盘
mdadm /dev/md1 -a /dev/sda8
mdadm /dev/md1 -a /dev/sda7
监控执行进度
mdadm /dev/md1 -f /dev/sda9
madam -D /dev/md1
watch 'cat /proc/mdstat'
使用配置文件装配md
mdadm -D --scan /显示当前主机上的RAID设备
mdadm -D --scan > /etc/mdadm.conf /保存RAIND信息至配置文件
mdadm -S /dev/md1 /停止md1
mdadm -A /dev/md1 /装配md1(无需指定磁盘)
指定条带大小
cat /proc/mdstat /CHUNK若为64k
unmount /mnt
mke2fs -j -E stride=16 -b 4096 /dev/md0 /指定条带大小(64/4=16)
创建一个2G的RAID5: 3 x 1G
fdisk /dev/sda
自行创建三个1G的分区并设置类型为fd(例如sda{10,11,12})
mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sda{10,11,12}
fdisk -l /可用空间2G
mke2fs -j /dev/md2
mkdir md2
mount /dev/md2 md2
mount
cat /proc/mdstat /其中一块盘作为校验码盘