###########使用RAID与LVM磁盘阵列技术
'#RAID:
mdadm命令用于管理Linux系统中的软件RAID 硬盘阵列,
格式为“mdadm [模式] <RAID 设备名称>[选项][成员设备名称]”。
参数 作用
-a 检测设备名称/添加磁盘到raid阵列
-n 指定设备数量
-l 指定 RAID 级别
-C 创建一个raid阵列卡(名字)
-v 显示过程
-f 模拟设备损坏
-r 移除设备
-Q 查看摘要信息
-D 查看详细信息
-S 停止 RAID 磁盘阵列 //-S即可删除raid
-x n 增加/创建n个备份盘(热备盘)
-----------------------------------------------------------------------
"#四块硬盘创建一个raid 10(1.使用磁盘创建raid阵列 2.格式化创建文件系统 3.创建挂载点并使用。
mdadm -Cv /dev/raidname -a yes -n 4 -l 10 /dev/sdb-sde
-C代表创建一个raid阵列卡并且附带上名字,-v代表显示详细过程,-a yes 代表自动创建设备文件,-n 4 代表使用的硬盘数量,-l 10 代表所创建的raid等级为10,最后带上所使用的4块硬盘的名称。
[root@linuxprobe ~]# mdadm -Cv /dev/md0 -a yes -n 4 -l 10 /dev/sdb /dev/sdc /dev/sdd /dev/sde
mdadm: layout defaults to n2
mdadm: layout defaults to n2
mdadm: chunk size defaults to 512K
mdadm: size set to 20954624K
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
[root@linuxprobe~]# mkfs.ext4 /dev/md0
[root~]# mkdir /raid |mount /dev/md0 /raid |echo'/dev/md0 /raid ext4 default 0 0'>>/etc/fstab
[root~]# mdadm -D /dev/md0 ---查看详细信息
[root~]mdadm /dev/md0 -f /dev/sdd #模仿sdd磁盘出现错误
[root~]mdadm -D /dev/md0 #查看详细信息发现错误
[root~]mdadm /dev/md0 -r /dev/sdd #删除错误的sdd磁盘
[root~]mdadm /dev/md0 -a /dev/sdd #添加新硬盘到/dev/md0阵列中
[root~]mdadm -D /dev/md0 #重新查看信息发现正常
这个mdadm也可以用来做raid 5或者其他的根据业务需求的raid。
#####热备盘(备份盘)
当raid阵列中的某块磁盘发生错误时,备份盘会自动顶替。
mdadm -Cv /dev/md0 -a yes -n 3 -l 5 -x 1 /dev/sdb /dev/sdc /dev/sdd /dev/sde
------------------------------------------------------------
Number Major Minor RaidDevice State
0 8 16 0 active sync dev/sdb
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
3 8 64 - spare /dev/sde
当raid阵列中的某块磁盘发生错误时,备份盘会自动顶替。
Number Major Minor RaidDevice State
3 8 64 0 spare rebuilding /dev/sde
1 8 32 1 active sync /dev/sdc
4 8 48 2 active sync /dev/sdd
0 8 16 - faulty /dev/sdb
------------------------------------------------------------------------
### LVM(逻辑卷管理器):
在硬盘分好区或者部署为 RAID 磁盘阵列之后,再想修改硬盘分区大小就不 容易了。换句话说,当用户想要随着实际需求的变化调整硬盘分区的大小时,会受到硬盘 “灵活性”的限制。这时就需要用到另外一项非常普及的硬盘设备资源管理技术了—LVM (逻辑卷管理器)。LVM 可以允许用户对硬盘资源进行动态调整。
逻辑卷管理器是 Linux 系统用于对硬盘分区进行管理的一种机制,理论性较强,其创建 初衷是为了解决硬盘设备在创建分区后不易修改分区大小的缺陷。尽管对传统的硬盘分区进行强制扩容或缩容从理论上来讲是可行的,但是却可能造成数据的丢失。而 LVM 技术是在硬盘分区和文件系统之间添加了一个逻辑层,它提供了一个抽象的卷组,可以把多块硬盘进行卷组合并。这样一来,用户不必关心物理硬盘设备的低层架构和布局,就可以实现对硬盘分区的动态调整。
'#部署逻辑卷
操作:
物理卷管理 卷组管理 逻辑卷管理
扫描 pvscan vgscan lvscan
建立 pvcreate vgcreate lvcreate
显示 pvdisplay vgdispaly lvdisplay
删除 pvremove vgremove lvremove
扩展 vgextend lvextend
缩小 vgreduce lvreduce
使用lvcereat -L 120M -s -n SNAP /dev/storage/vo #使用-s创建一个/dev/storage/vo的逻辑卷
使用vgcreate -s 16M $vgname /dev/$lvname #在创建vg过程中修改PE大小
#PE值:(physical extend):物理区域是物理卷中可用于分配的最小存储单元,物理区域大小在建立卷组时指定,一旦确定不能更改,同一个卷组所有物理卷的物理区域大小需一致。新的pv加入到vg后,pe的大小自动更改为vg中定义的pe的大小
------------------------------------------------------------------------------------
查看磁盘信息:df -Th fdisk -l lsblk
热添加磁盘后重新扫盘:
echo '- - -'>/sys/class/scsi_host/host*/scan #- - -分别代表channel,target和lun编号
同步磁盘分区:# partprobe
查看主机总线号:
ls /sys/class/scis_host/
查看设备的uuid的三种方法,总结如下:
1 命令查看:blkid
2 文件查看:ls -l /dev/disk/by-uuid
3 命令查看:vol_id /dev/sda1
分区类型和文件系统类型是不同的!
----------------------------------------
检查硬盘完整性:e2fsck -f /dev/storage/vo
重置硬盘容量:resize2fs /dev/storage/vo
缩减逻辑卷容量(缩减至120M):resize2fs /dev/storage/vo 120M
'#LVM实验例:(创建、扩容、减容。)
pvcreat /dev/$diskname /dev/$diskname #创建物理卷,可以理解为让该硬盘设备支持LVM技术,或者说将硬盘设备加入到LVM技术可用的硬盘资源池中
pvdisplay
vgcreate $vgname /dev/$diskname /dev/$diskname #创建卷组,并将pv中的硬盘加入该卷组,在此过程还可以对PE(基本单元)的大小进行编辑
vgdisplay
lvcreate -n $lvname -l 37 $vgname #创建lv并指定大小;有两种方式:
1. -l $number nmber代表的是pe乘number的数量大小
2.-L 120M 直接跟大小
lvdisplay
#Linux 系统会把 LVM 中的逻辑卷设备存放在/dev 设备目录中(实际上是做了一个符号链接),同时会以卷组的名称来建立一个目录,其中保存了逻辑卷的设备映射文件(即/dev/卷组名称/逻辑卷名称)
mkfs.ext4 /dev/$vgname/$lvname #创建lv之后,就可以将lv格式化创建文件系统然后挂载使用了
mkdir /mount #创建挂载点
/mount /dev/$vgname/$lvname /mount #挂载
echo '/dev/storage/$lvname /mount ext4 defaults 0 0'>>/etc/fstab #永久挂载
---------------------------------------------------------------------------------
'扩容和减容:
umount /mount #解挂
lvextend -L 290M /dev/$vgname/$lvname #扩展lv大小至290M
e2fsck -f /dev/$vgname/$lvname #检查磁盘完整性
resize2fs /dev/$vgname/$lvname #重置硬盘容量
mount -a #将/etc/fstab文件下的为挂载的文件全部挂载
df -Th #查看
umount /mount #解挂载
e2fsck -f /dev/$vgname/$lvname #检查磁盘完整性
resize2fs /dev/$vgname/$lvname 120M #缩减lv容量之120M
mount -a #挂载
df -Th #查看
---------------------------------------------------------
#逻辑卷快照:
LVM 的快照卷功能有两个特点:
1.快照卷的容量必须等同于逻辑卷的容量;
2.快照卷仅一次有效,一旦执行还原操作后则会被立即自动删除。
vgdisplay #首先查看卷组信息、可以从信息中看出已经使用的容量以及空闲的容量
echo "welcome to linuxworld.">/mount/redme.txt #创建一个测试文件,来体验快照功能
lvcreate -L 120M -s -n SNAP /dev/$vgname/$lvname #使用-s参数生成一个快照卷,-L指定切割的大小,并且在后面跟上针对哪个lv执行的快照操作。
lvdisplay
dd if=/dev/zero of=/linuxprobe/files count=1 bs=100M #使用dd在lv内创建一个100M的垃圾文件,然后查看发现占用量上升。
lvdisplay
umount /$lvnamemount #对lv进行解挂再执行快照还原
lvconvert --merge /dev/$vgname/$SNAP #快照卷会被自动删除,并且$lv回到了打快照时刻的状态。
mount -a #重新挂载
#删除逻辑卷:
第一步:先对逻辑卷与目录解挂关联,删除fstab中的参数 #umount /$lvnamemount vim/etc/fstab
第二步:删除逻辑卷设备 #lvremove /dev/$vgname/$lvname
第三步:删除卷组,此处只写卷组名称即可,不许设备的绝对路径 #vgremove /$vgname
第四步:删除物理卷设备。 #pvremove /dev/sdb dev/sdc
第五步:查看信息(看不到说明操作正确) #lvdisplay\vgdisplay\pvdispaly
5. LVM 对逻辑卷的扩容和缩容操作有何异同点呢?
答:扩容和缩容操作都需要先取消逻辑卷与目录的挂载关联;扩容操作是先扩容后检查文件系统完整性,而缩容操作为了保证数据的安全,需要先检查文件系统完整性再缩容。
6. LVM 的快照卷能使用几次?
答:只可使用一次,而且使用后即自动删除。
7. LVM 的删除顺序是怎么样的?
答:依次移除逻辑卷、卷组和物理卷。
文件类型:
-:普通文件
d:目录文件
b:块设备文件
c:字符设备文件
l:符号链接文件
p:命令管道文件
s:套接字文件