什么是RAID
RAID:RedundantArrays of Inexpensive(Independent)Disks 廉价的独立磁盘
1988年由加利福尼亚大学伯克利分校(University of California-Berkeley)“A Case for Redundant Arrays of Inexpensive Disks”
多个磁盘合成一个“阵列”来提供更好的性能、冗余,或者两者都提供
RAID
提高IO能力
磁盘并行读写
提高耐用性
磁盘冗余来实现
级别:多块磁盘组织在一起的工作方式有所不同
RAID实现的方式:
外接式磁盘阵列:通过扩展卡提供适配能力
内接式RAID:主板集成RAID控制器
安装OS前在BIOS里配置
软件RAID:通过OS实现
RAID级别
RAID-0:条带卷,strip
RAID-1: 镜像卷,mirror
RAID-2
...
RAID-5
RAID-6
RAID-10
RAID-01
RAID-0:
读、写性能提升;
可用空间:N*min(S1,S2,...)
无容错能力
最少磁盘数:2, 2+
RAID-1:
读性能提升、写性能略有下降;
可用空间:1*min(S1,S2,...)
有冗余能力
最少磁盘数:2, 2N
RAID-4:
多块数据盘异或运算值存于专用校验盘
RAID-5:
读、写性能提升
可用空间:6力:允许最多1块磁盘损坏
最少磁盘数:3, 3+
RAID-6:
读、写性能提升
可用空间:(N-2)*min(S1,S2,...)
有容错能力:允许最多2块磁盘损坏
最少磁盘数:4, 4+
RAID-10:
读、写性能提升
可用空间:N*min(S1,S2,...)/2
有容错能力:每组镜像最多只能坏一块
最少磁盘数:4, 4+
组合RAID
RAID-01
多块磁盘先实现RAID0,再组合成RAID1
RAID-50
多块磁盘先实现RAID5,再组合成RAID0
JBOD:Just a Bunch Of Disks
功能:将多块磁盘的空间合并一个大的连续空间使用
可用空间:sum(S1,S2,...)
RAID7
可以理解为一个独立存储计算机,自身带有操作系统和管理工具,可以独立运行,理论上性能最高的RAID模式
常用级别:
RAID-0, RAID-1, RAID-5, RAID-10, RAID-50, JBOD
软RAID
mdadm:为软RAID提供管理界面
为空余磁盘添加冗余
结合内核中的md(multi devices)
RAID设备可命名为/dev/md0、/dev/md1、/dev/md2、/dev/md3等
软件RAID的实现
mdadm:模式化的工具
命令的语法格式:mdadm[mode]
支持的RAID级别:LINEAR, RAID0, RAID1, RAID4, RAID5, RAID6, RAID10
模式:
创建:-C
装配: -A
监控: -F
管理:-f, -r, -a
-C: 创建模式
-n #: 使用#个块设备来创建此RAID
-l #:指明要创建的RAID的级别
-a {yes|no}:自动创建目标RAID设备的设备文件
-c CHUNK_SIZE: 指明块大小,单位k
-x #: 指明空闲盘的个数 简称备用
-D:显示raid的详细信息
mdadm-D /dev/md#
管理模式:
-f: 标记指定磁盘为损坏
-a: 添加磁盘
-r: 移除磁盘
观察md的状态:
cat /proc/mdstat
软RAID配置示例
使用mdadm创建并定义RAID设备
mdadm-C /dev/md0 -a yes -l 5 -n 3 -x 1 /dev/sdb1 /dev/sdc1 /dev/sdd1 /dev/sde1
用文件系统对每个RAID设备进行格式化
mke2fs -j /dev/md0
测试RAID设备
使用mdadm检查RAID设备的状况
mdadm--detail|D/dev/md0
增加新的成员
mdadm–G /dev/md0 –n4 -a /dev/sdf1
软RAID测试和修复
模拟磁盘故障
mdadm /dev/md0 -f /dev/sda1
移除磁盘
mdadm /dev/md0 –r /dev/sda1
从软件RAID磁盘修复磁盘故障
替换出故障的磁盘然后开机
在备用驱动器上重建分区
mdadm /dev/md0 -a /dev/sda1
mdadm、/proc/mdstat及系统日志信息
软RAID管理
生成配置文件:mdadm –D –s >> /etc/mdadm.conf
停止设备:mdadm –S /dev/md0
激活设备:mdadm –A –s /dev/md0 激活
强制启动:mdadm –R /dev/md0
删除raid信息:mdadm --zero-superblock /dev/sdb1
问题:如何创建一个软RAID5 添加一个硬盘备用????????
机器可使用的硬盘:
sdb 8:16 0 50G 0 disk
sde 8:64 0 30G 0 disk
sdc 8:32 0 40G 0 disk
sdd 8:48 0 30G 0 disk
将磁盘分区好:
sdb 8:16 0 50G 0 disk
└─sdb1 8:17 0 30G 0 part
sde 8:64 0 30G 0 disk
└─sde1 8:65 0 30G 0 part
sdc 8:32 0 40G 0 disk
└─sdc1 8:33 0 30G 0 part
sdd 8:48 0 30G 0 disk
└─sdd1 8:49 0 30G 0 part
partx -a /dev/sdb sde sdc sdd 同步
创建RAID:
mdadm -C /dev/md0 -a yes -l5 -n3 -x1 /dev/sd{b,c,d,e}1
用于查看创建的RAID设备:
mdadm -D /dev/md0
创建文件格式类型:
mkfs.ext4 /dev/md0 -L raid5 -L:添加卷标
创建与挂载出:
vim /etc/fstab
UUID=6f246919-9fc5-4854-9982-8e7f11c16318 /mnt/raid ext4 defaults 0 0
mkdir /mnt/raid
mount -a 启用
注意:在使用RAID的时候建议最好生成一个RAID的配置文件以防下次停止使用时无法读取RAID设备
如果要停止RAID设备时要先取消挂载才可操作
测试一下RAID5的性能:本人使用的都是固态硬盘所以........
写入的速度测试:
[root@localhostcentos6 ~]# dd if=/dev/zero of=/data/f1 bs=1M count=1024 本机的普通硬盘写入的性能
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 4.46875 s, 240 MB/s
[root@localhostcentos6 ~]# dd if=/dev/zero of=/mnt/raid/f1 bs=1M count=1024 RAID5写入的性能
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 2.47991 s, 433 MB/s
读的速度测试:
[root@localhostcentos6 ~]# dd if=/data/f1 of=/dev/null 本机的普通硬盘的读取性能
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 4.17335 s, 257 MB/s
[root@localhostcentos6 ~]# dd if=/mnt/raid/f1 of=/dev/null RAID5读取的性能
2097152+0 records in
2097152+0 records out
1073741824 bytes (1.1 GB) copied, 2.14119 s, 501 MB/s
那么如何停用和启用RAID呢????
umount /mnt/raid/
mdadm -S /dev/md0 停用RAID
mdadm -A /dev/md0 启用RAID
mount -a
查看RAID状态:
mdadm -D /dev/md0
模拟一块硬盘损坏另外一个自动顶替
mdadm /dev/md0 -f /dev/sdc1 模拟/dev/sdc1的磁盘损坏
mdadm -D /dev/md0 查看状态
Rebuild Status : 18% complete 备用硬盘自动启动填上去
即便是坏了一硬盘数据还是可访问的有容错性
如何将损坏/dev/sdc1的硬盘移走呢????
mdadm /dev/md0 -r /dev/sdc1
还是可以添加回来的 不过成为备用的
mdadm /dev/md0 -a /dev/sdc1
新加的硬盘一般都没有文件系统硬盘空间无法使用该如何解决呢???
centos6:resize2fs /dev/md0 同步文件系统,只支持ext文件格式
centos7:xfs_growfs /mnt/raid 同步文件系统,支持xfs文件格式 注意路径要写挂载的路径
LVM:逻辑卷管理
允许对卷进行方便操作的抽象层,包括重新设定文件系统的大小
允许在多个物理设备间重新组织文件系统
将设备指定为物理卷
用一个或者多个物理卷来创建一个卷组
物理卷是用固定大小的物理区域(Physical Extent,PE)来定义的
在物理卷上创建的逻辑卷
是由物理区域(PE)组成
可以在逻辑卷上创建文件系统
LVM介绍
LVM: Logical Volume Manager,Version: 2
dm: device mapper:将一个或多个底层块设备组织成一个逻辑设备的模块
设备名:/dev/dm-#
软链接:
/dev/mapper/VG_NAME-LV_NAME
/dev/mapper/vol0-root
/dev/VG_NAME/LV_NAME
/dev/vol0/root
LVM更改文件系统的容量
LVM可以弹性的更改LVM的容量
通过交换PE来进行资料的转换,将原来LV内的PE转移到其他的设备中以降低LV的容量,或将其他设备中的PE加到LV中以加大容量
pv管理工具
显示pv信息
pvs:简要pv信息显示
pvdisplay
创建pv
pvcreate /dev/DEVICE
vg管理工具
显示卷组
vgs:显示卷组的空间
vgdisplay:显示详细的卷组信息
创建卷组
vgcreate [-s #[kKmMgGtTpPeE]] VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
管理卷组
vgextend VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
vgreduce VolumeGroupName PhysicalDevicePath [PhysicalDevicePath...]
删除卷组
先做pvmove,再做vgremove
lv管理工具
显示逻辑卷
lvs
Lvdisplay
创建逻辑卷
lvcreate -L #[mMgGtT] -n NAME VolumeGroup
lvcreate -l 60%VG -n mylvtestvg
lvcreate -l 100%FREE -n yourlvtestvg
删除逻辑卷
lvremove/dev/VG_NAME/LV_NAME
重设文件系统大小
fsadm[options] resize device [new_size[BKMGTEP]]
resize2fs [-f] [-F] [-M] [-P] [-p] device [new_size
扩展和缩减逻辑卷
扩展逻辑卷:
lvextend-L [+]#[mMgGtT] /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME
lvresize-r -l +100%FREE /dev/VG_NAME/LV_NAME
缩减逻辑卷:
umount/dev/VG_NAME/LV_NAME
e2fsck -f /dev/VG_NAME/LV_NAME
resize2fs /dev/VG_NAME/LV_NAME #[mMgGt]
lvreduce-L [-]#[mMgGtT] /dev/VG_NAME/LV_NAME
mount
跨主机迁移卷组
源计算机上
1 在旧系统中,umount所有卷组上的逻辑卷
2 vgchange–a n vg0
lvdisplay
3 vgexportvg0
pvscan
vgdisplay
拆下旧硬盘
在目标计算机上
4 在新系统中安装旧硬盘,并vgimportvg0.
5 vgchange–ay vg0
6 mount所有卷组上的逻辑卷
创建逻辑卷示例
创建物理卷
pvcreate /dev/sda3
为卷组分配物理卷
vgcreate vg0 /dev/sda3
从卷组创建逻辑卷
lvcreate -L 256M -n data vg0
mke2fs -j /dev/vg0/data
mount /dev/vg0/data /mnt/data
逻辑卷管理器快照
快照是特殊的逻辑卷,它是在生成快照时存在的逻辑卷的准确拷贝
对于需要备份或者复制的现有数据临时拷贝以及其它操作来说,快照是最合适的选择
快照只有在它们和原来的逻辑卷不同时才会消耗空间
在生成快照时会分配给它一定的空间,但只有在原来的逻辑卷或者快照有所改变才会使用这些空间
当原来的逻辑卷中有所改变时,会将旧的数据复制到快照中。
快照中只含有原来的逻辑卷中更改的数据或者自生成快照后的快照中更改的数据
建立快照的卷大小只需要原始逻辑卷的15%~20%就够了,也可以使用lvextend放大快照
快照就是将当时的系统信息记录下来,就好像照相一般,若将来有任何数据改动了,则原始数据会被移动到快照区,没有改动的区域则由快照区和文件系统共享
由于快照区与原本的LV共用很多PE的区块,因此快照与被快照的LV必须在同一个VG中.系统恢复的时候的文件数量不能高于快照区的实际容量
使用LVM快照
为现有逻辑卷创建快照
lvcreate-l 64 -s -n data-snapshot -p r /dev/vg0/data
挂载快照
mkdir-p /mnt/snap
mount -o ro/dev/vg0/data-snapshot /mnt/snap
恢复快照
umount/dev/vg0/data-snapshot
umount/dev/vg0/data
lvconvert--merge /dev/vg0/data-snapshot
删除快照
umount/mnt/databackup
lvremove/dev/vg0/databackup
小实例:
在硬盘上做两个LVM的分区/dev/sdb1、/dev/sdc1大小各2G
将普通的硬盘分区变成物理卷呢:
pvcreate:用于创建物理卷
pvdisplay:查看物理卷看比较详细
pvs 用于查看物理卷
pvcreate /dev/sdb1 创建物理卷
pvcreate /dev/sdc1 创建物理卷
创建卷组:
vgs:查看现有的卷组
vgdisplay:查看更详细的卷组
vgcreate -s 18M vg1 /dev/sdb1
vgcreate -s 18M vg2 /dev/sdc1
创建逻辑卷:
lvcreate -n lv1 -l 100 vg1
lvdisplay:查看创建的逻辑卷
将剩余的逻辑卷全部用完:
lvcreate -n lv2 -l 100%FREE vg1
100%FREE:将分区里的剩余空间全部用完
创建文件格式:
mkfs.ext4 /dev/vg1/lv1
mkfs.ext4 /dev/vg1/lv2
挂载设备:
UUID=d60bf3e2-dede-4507-9e58-c16a46c45a63 /mnt/lv1 ext4 defaults 0 0
UUID=3894bb11-c5e7-4be5-b4c3-ef4ce4461b27 /mnt/lv2 ext4 defaults 0 0
mkdir /mnt/lv1
mkdir /mnt/lv2
mount -a 启用挂载
测试性能:
[root@localhostcentos6 ~]# dd if=/dev/zero of=/mnt/lv1/f1 bs=1M count=10241024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB) copied, 9.09417 s, 118 MB/s
如遇到逻辑卷空间不足如何增加空间:
首先加一块新的硬盘:
在添加硬盘之后须执行:我加了一个20G的新硬盘名称:/dev/sdd
echo '- - -' > /sys/class/scsi_host/host2/scan 扫描识别新添加的硬盘
直接用整块硬盘做,可直接做成物理卷:
pvcreate /dev/sdd
添加进之前的vg1卷组:
[root@localhostcentos6 ~]# vgextend vg1 /dev/sdd
Volume group "vg1" successfully extended
[root@localhostcentos6 ~]# pvs 或vgdisplay 用于查询
PV VG Fmt Attr PSize PFree
/dev/sdb1 vg1 lvm2 a--u 2.00g 0
/dev/sdc1 vg1 lvm2 a--u 2.00g 0
/dev/sdd vg1 lvm2 a--u 19.99g 19.99g
将刚添加的新硬盘添加进/mnt/lv1:
lvextend -L +10G /dev/vg1/lv1
注意:添加完之后df中的添加的10G空间释放必须要同步一下即可:
resize2fs /dev/vg1/lv1
其实也可以直接带参数选项:
lvextend -r -l +100%FREE /dev/vg1/lv1
-r:同步
-l +100%FREE:硬盘下的剩余空间
当遇到逻辑卷空间比较大时可以缩减的centos7是不行的用于centos6:
缩减5G:
e2fsck -f /dev/vg1/lv1 先检查完整性才可执行缩减
resize2fs /dev/vg1/lv1 5G
缩减逻辑卷:注意可能会损坏数据
lvreduce -L 5G /dev/vg1/lv1
mount -a 将/mnt/lv1挂载回去