一、RAID独立冗余磁盘阵列
redundent冗余的
array
level
仅表示这些盘的连接方式,无高下之分
0,1,5,6,10
1、
硬件raid:/dev/sd。raid芯片组合,kernel需要对应驱动
软件raid:kernel中实现,/dev/md,可基于分区实现
工作在用户空间的软件:mdadm
raid 0
实现磁盘性能提升:数据分成多块,交叉存储,磁盘利用空间100%,但不具容错----Striping
raid 1
Mirroring镜像,磁盘利用率50%,写入速度降低,读出性能提升
raid 10 利用率50%,读写性能显著提升
0
1
1
盘1 盘2
盘1 盘2
raid 5
至少3块磁盘,每个盘轮流做校验盘,最多坏一块盘
利用率:(n-1)/n
热备盘spare:任何一个盘坏掉都可以顶上
raid 4
校验盘单独存在,它可能成为系统瓶颈,降低速度
raid 6
至少4块盘,每两个盘轮流做校验盘,最多坏两块盘
2、
DAS
直接附加存储--数据总线
NAS
网络附加存储--网线--共享文件
SAN
存储区域网络--iscsi通过Iternet tcp/ip 实现传输SCSI协议数据块单元
3、目前Linux支持:LINEAR线性
mdadm模式化工具
语法:mdadm [mode] <raiddevice> [options] <component-devices>
mode: -A Assemble 装配
-C create 创建
-v
--detail --scan --examine
-s --scan
-G grow 增加
-n
--raid-devices=
-x --spare-device=
-c
--chunk=
-l
--level=
-M manage 管理
-F follow or monitor 监控--对raid 0或 linear无效
例子:
1、创建/dev/md0
创建两个分区,如:/dev/sda6,/dev/sda7
L ,t,fd :2个都更改磁盘类型为Linux raid autodetect
partprobe /dev/sda
cat /proc/mdstat查看raid分区情况
mdadm -C /dev/md0 -a yes -l 0 -n 2 /dev/sda6 /dev/sda7
cat /proc/mdstat
mkfs -t ext3 -L RAID0 /dev/md0
mkdir /data
mount /dev/md0 /data
2、创建/dev/md1
创建3个分区,如:/dev/sda8,/dev/sda9,/dev/sda10
L ,t,fd :3个都更改磁盘类型为Linux raid autodetect
cat /proc/mdstat
partprobe /dev/sda
mdadm -C /dev/md1 -a yes -l 1 -n 2 -x 1 -c 32 /dev/sda8 /dev/sda9 /dev/sda10
cat /proc/mdstat
mdadm --detail /dev/md1
3、创建/dev/md5
创建五个分区,如:/dev/sda1,/dev/sda2,/dev/sda3,/dev/sda4,/dev/sda5
其中1,2,3,5都fd,更改为Linux raid autodetect类型
partprobe /dev/sdb
cat /proc/partitions
mdadm -C /dev/md2 -a yes -l 5 -n 3 /dev/sdb{1,2,3}
注:-a yes 启动时自动创建此设备文件
cat /proc/mdstat
mdadm -a /dev/md2 /dev/sdb5
mdadm -D /dev/md2
mdadm -r /dev/md2 /dev/sdb5
mdadm -D /dev/md2
mkfs -t ext3 /dev/md2
mount /dev/md2 /data
cd /data
cp /etc/fstab /data
mdadm --set-faulty /dev/md2 /dev/sdb1
mdadm --detail /dev/md2
cd /data
cat fstab
mdadm -a /dev/md2 /dev/sdb5
mdadm -D /dev/md2
mdadm -r /dev/md2 /dev/sdb1
mdadm -D /dev/md2
mdadm -S /dev/md2
umount /data
mdadm -S /dev/md2
cat /proc/mdstat
mdadm -A /dev/md1 /dev/sdb{5,2,3}
cat /proc/mdstat
vim /etc/mdadm.conf
DEVICE /dev/sdb5 /dev/sdb2 /dev/sdb3 /dev/sda6 /dev/sda7
mdadm --detail --scan >> /etc/mdadm.conf
注:
echo 'DEVICE /dev/hd*[0-9] /dev/sd*[0-9]' > mdadm.conf
mdadm --detail --scan >> mdadm.conf
mdadm -S /dev/mdl
mdadm -A --scan
cat /proc/mdstat
mdadm -S /dev/mdl
mke2fs -j -b 4096 -E stride=16 /dev/md1
-E 扩展属性 stride=chunk/block大小。加上stride可提高性能,不用每次都计算此值
二、LVM(Logical Volume Management)逻辑卷管理器
abstract layer。是块设备就可以做上去。动态扩大或缩小磁盘空间
lvm
lvm2
1、LVM有lv,pv,vg三个层次:
PE(Pysical Extends物理扩展)
pv(Pysical Volume物理卷),由多个PE组成
vg(Volume Group卷组),由多个pv组成的卷组
lv(Logical Volume逻辑卷),动态扩展或缩减--增加PE。可做快照
命令:
pvdiplay,vgdisplay,lvdisplay
pvscan,vgscan,lvscan
pvcreate,vgcreate,lvcreate
pvremove,...
vgextend,lvextend
vgreduce,lvreduce
2、例子:
1)创建lv
创建两个分区:/dev/sdc1,/dev/sdc2
更改类型格式为8e
partprobe /dev/sdc
pvcreate /dev/sdc1
pvcreate /dev/sdc2
pvdisplay查看一下
vgcreate myvg /dev/sdc1 (-s 可以设定pe大小(8k-16G))
vgdisplay查看一下
lvcreate -L 100M -n lvm1 myvg
lvdisplay myvg
mkfs -t ext3 /dev/myvg/lvm1 或 mkfs -t ext3 -b 4096 -E stride=16 /dev/md0
mount /dev/myvg/lvm1 /data
2)扩展lvm1
lvextend -l +25 /dev/myvg/lvm1 增加了(25×4M)M
resize2fs -p /dev/myvg/lvm1
3)扩展vg
vgdisplay /dev/sdc1
vgextend /dev/myvg /dev/sdc2
注:lvcreate -L 200M /dev/myvg/lv1 扩展到200M
lvcreate -L +200M /dev/myvg/lv1
增加200M
3、lvm的缩减(麻烦且危险)
步骤:
卸载
fsck(file system check)文件系统一致性检查
缩减逻辑边界
缩减物理边界
du -sh /data
umount /data
e2fsck -f /dev/myvg/lvm1
resize2fs /dev/myvg/lvm1 100M 把/dev/myvg/lvm1缩减到100M
lvreduce -L 100M /dev/myvg/lvm1
mount /dev/myvg/lvm1 /data
df -lh /data
缩减卷组:
pvmove 移动数据
pvremove 移除物理卷
pvmove /dev/sdc1
vgreduce myvg /dev/sdc1
pvdisplay
4、逻辑卷的快照Snapshot
1)
Linux上备份:
dump备份工具,只能备份ext2/3 filesystem
-level# (即:-0 -1) 级别:0-9 0完全备份,1-9增量备份,差异备份
-f file 备份到file上(file为普通文件或设备文件)
-u /etc/dumpdates 自动更新此文件
restore 从备份文件中重新建立文件系统
-f file
2)
lvcreate -L 10M -s -n snap-lvm1 /dev/myvg/lvm1
mkdir /snap
mount -o ro /dev/myvg/snap-lvm1 /snap
cp /etc/inittab /data
dump -0u -f /tmp/lvm1.backup /snap
umount /snap
lvremove /dev/myvg/snap-lvm1
rm -rf /data/*
cd /data
restore -rf /tmp/lvm1.backup