欢迎各位兄弟 发布技术文章
这里的技术是共享的
IDE:它是并行的 又叫ata,虽然它们不完全一样 ,IDE太古老,接近淘汰了
sata :串行ata (serial ata)
SCSI:并行的
SAS:串行SCSI
逻辑RAID:
/dev/md#
/dev/md1
/dev/md2
阵列 就是 RAID 盘的意思
md: (需要内核模块) (multi disks)
mdadm:(md admin)(md 管理器)将任何块设备做成RAID
(试验时可以在一个硬盘上的任意分区上做,但是没有意义的,因为同一块盘,只有一个I/O,所以速度无提升,这块盘坏了,所有文件同时也会丢失的)
模式化的命令:
创建模式
-C create
专用选项:
-l:级别(level指 0 或 1 或 5 或 1+0这些)
-n:设备个数(num)
-a {yes|no}:自动为其创建设备文件(auto)
-c: 指定chunk 大小,条带的时候,每次分的数据块大小,默认64kb,一般是2的整数次方倍2^n
软RAID,每次都要计算下,倒底相当于多少个磁盘块
-x #: 指定空闲盘个数
管理模式
--add (-a),--remove(-r),--fail (-f)
mdadm /dev/md# --fail /dev/sda7 表示把 /dev/md# 阵列中的 /dev/sda7 模拟损坏
监控模式
-F floow monitor
增长模式
-G grow
装配模式
-A assemble(装配 组合)
查看RAID陈列的详细信息
mdadm -D /dev/md#
(--detail)
停止阵列(停用陈列):
mdadm -S /dev/md1
--stop
RAID0
2G:
4: 512MB
2: 1G
RAID1
2G
2:2G
watch: 周期性(阶段性)的执行某命令,并以全屏方式显示结果 实时查看
-n #:指定周期长度,单位为秒,默认为2
格式: watch -n # 'COMMAND'
将当前 RAID 信息保存至配置文件,以便以后进行装配
mdadm -D --scan > /etc/mdadm.conf
以后装配就使用 -A来装配, (不用指设备了 直接 mdadmin -A 阵列名 ) (比如 mdadmin -A /dev/md1)
RAID5:
2G: 3个 1G (创建一个2G的raid5,且有一个空闲盘,需要4个1G的)
SAS SCSI 一根总线上可以接多块盘
存储目标叫 target
适配器叫 initiator
IDE可以连两块盘 一主一从
SATA只可以连一块盘
SCSI可以连多个盘
一般不建议在生产环境中使用软 RAID,建议在生产环境中使用硬RAID
# fdisk -l
# mdadm -C /dev/md0 (这一步其实是以后做的 因为 现在 还没有硬件(即分区) 来规划作 /dev/md0)
# mount
下面做一个 2G的 RAID0
# fdisk /dev/sda
,
软raid 使用 fd
# partprobe /dev/sda
# cat /proc/partitions
# mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda{5,6}
(下面提示是 /dev/sda5 以前用过 有数据,问是否覆盖)
# cat /proc/mdstat (会显示当前系统上所有处于启用状态的RAID设备)
(在创建 raid 之前不能格式化,此时 mdadm 已经创建了 raid)
# mke2fs -j /dev/md0
# mount /dev/md0 /mnt
# ls /mnt
下面做一个 2G的 RAID1
# fdisk /dev/sda
# !par
# cat /proc/partitions
# mdadm -C /dev/md1 -a yes -n 2 -l 1 /dev/sda7 /dev/sda8
# cat /proc/mdstat
# cat /proc/mdstat
镜像要同步 同步完成后 磁盘就可以使用了 (其实后台是自动同步的,即使这里看了没有同步完,也没关系,应该等它同步完成吧,(但我个人感觉需同步完才能使用))
# cat /proc/mdstat
# fdisk -l
# mke2fs -j /dev/md1
# mount /dev/md1 /media
# cd /media
# ls (看到lost+found 就可以看到一个新分区了)
# cp /etc/inittab /media
# cd /media
# ls
#mdadm -D /dev/md1 -D(--detail)可以显示所指定的RAID设备的详细信息
# mdadm --detail /dev/md1 -D(--detail)可以显示所指定的RAID设备的详细信息
#mdadm -D /dev/md0
# mdadm /dev/md1 -f /dev/sda8 (-f (--fail)(--set-faulty)表示模拟损坏)
# mdadm --detail /dev/md1
# ls
# cat inittab
可以正常看文件
# mdadm --detail /dev/md1
# mdadm /dev/md1 -r /dev/sda8 (-r (--remove)表示移除) (如果是硬 RAID,那就把硬盘拔掉吧,拿走吧)
# mdadm --detail /dev/md1
# mdadm /dev/md1 -a /dev/sda9 (-a (--add)表示增加盘)(增加的盘要与以前的盘大小一致)
# mdadm --detail /dev/md1
# cat /proc/mdstat (会显示当前系统上所有处于启用状态的RAID设备) (此时正在恢复数据)
# cat /proc/mdstat (会显示当前系统上所有处于启用状态的RAID设备)
此时同步完成了 (要等到同步完成,如果同步未完成,另一个正常的好盘损坏了,就麻烦大了)
# ls
# cat inittab 这个文件可以正常访问
# mdadm /dev/md1 -f /dev/sda7 (-f (--fail)表示模拟损坏)
# mdadm --D /dev/md1
sda7损坏了,照样可以访问这个文件
# cat inittab 这个文件可以正常访问
# cd
# umount /media/
# cat /proc/mdstat
# mdadm -S /dev/md1 停止阵列(停用陈列):
#cat /proc/mdstat
此时,如果删掉 /dev/md1,陈列彻底消失
这里因为是教程 没有删掉 /dev/md1
# mdadm -A /dev/md1 (-A 装配模式) (需要跟上磁盘见下一个命令)
# mdadm -A /dev/md1 /dev/sda7 /dev/sda9
# cat /proc/mdstat
#mdadm -D /dev/md1
mdadm 有个功能,就是在某个磁盘坏的时候 发邮件给管理员(当前系统某个用户)
# mdadm /dev/md1 -a /dev/sda8
#mdadm -D /dev/md1
# mdadm /dev/md1 -a /dev/sda7
#mdadm -D /dev/md1
# cat /proc/mdstat
# man watch
# watch 'cat /proc/mdstat' 监控一个命令的执行 (默认2秒刷新执行,并在屏幕上显示执行的结果)
# mdadm /dev/md1 -f /dev/sda9
# mdadm -D /dev/md1
# watch 'cat /proc/mdstat'
# mdadm -D --scan 扫描 显示当前主机上 每个RAID设备
# mdadm -D --span > /etc/mdadm.conf
(保存到这个主配置文件)
以后重新装配的时候,就不用再指定设备了,它会自动读取这个配置文件并装配的
# mdadm -S /dev/md1
# mdadm -A /dev/md1 (此时可以自动装配,不需指定磁盘)
# man mk2fs
stride 是 trunk 除以 block 的商,这种方式格式化,可以优化软RAID性能,不用计算每次相当于多少个block(不用计算每次条带倒底是多大)
# mdadm -D /dev/md1
# cat /proc/mdstat
# umount /mnt
# mke2fs -j -E stride=16 -b 4096 /dev/md0 (此时性能略有提升,尤其是非常繁忙的场景下)(stride 条带倍数 就是trunck 除以 block块大小的商) (这种方式 肯定可以优化软raid的性能,不用每次计算条带倒底有多大;;;否则每次truck的时候,会计算条带倒底有多大)
trunk 对镜像(raid1)意义不大,但对raid0 raid5,还是有一定的作用的,应该指定trunk 指定条带