欢迎各位兄弟 发布技术文章
这里的技术是共享的
MD: Multi disk, Multi Device, meta device 多设备,元设备出现的早
mdadm:用户空间工具,可以帮忙管理RAID,但RAID真正管理工作靠的是内核模块, mdadm与真正工作起来的raid是没有太大关系的
MD,DM
/dev/md#
meta device
DM: Device Mapper,设备映射,功能比MD更强大,出现的晚
逻辑设备 实现逻辑设备的机制
RAID,LVM2(逻辑卷) (LVM1不需要DM的功能)
可以实现RAID0,RAID1,但实现RAID5有点麻烦, 也能实现jbod DM与MD有重叠,但不完全重叠
通常拿MD作RAID
通常拿DM做LVM2
DM: 是LVM2所依赖的核心,要依赖于DM的功能有很多,DM所能提供的能力不仅限于LVM2
快照:snapshot 快速有点类似于软链接
多路径: multipath(对数据完整性要求高的场合比较多)
DM 能够动态的增加或减少(缩减)文件系统的空间
10G ,VG
vgcreate VG_NAME /PATH/TO/PV
-s #单位: PE大小 默认是4MB
lvcreate -n LV_NAME -L #M(G) VG_NAME
-n 指定名字
-L指定大小
-l 指定盘区个数,计算起来较麻烦,一般不用吧
# lsmod (列出内核装载的模块) md已经直接被做在内核当中了,md是自动装载的
Device Mapper Kernel Architecture 设备映射内核架构
linear 线性,类似于jbod 多个小盘组合成一个大盘
mirror 类似于镜像
快照可以在瞬间完成
其实 zfs文件系统 天生具备快照功能
对逻辑卷可以创建快照,必须在同一个卷组中
PV:physical Volume
VG: Volume Group 相当于扩展分区,不能直接使用,它只是一个组合而已
LV:Logical Volume
LVM: logical volume manager (应该是 manager 不是 mapper)
增加PE(LE)来扩展逻辑空间 (PE就是物一盘区的意思,,,本质上是物理卷上的 物理盘区 加到 逻辑卷上 )
# fdisk -l
# fdisk /dev/sda
# partprobe /dev/sda
# cat /proc/dev/sda
fdisk 最多只能支持15个分区
# pvcreate /dev/sda/{10,11} 创建pv
# pvs (查看当前系统的pv 物理卷) (6.53G 2.80G 误差在 20%之内都是可接受的)
/dev/sda2 是安装操作系统的时候,它自己创建的,跟我们现在创建的 /dev/sda10 /dev/sda11 没有关系
误差在 20%之内都是可接受的 (更何况 会保留元数据的)
# pvdisplay (更详细的查看当前系统的pv)
只有把PV加入到GV中的时候,才知道自己的PE是多大 (此处没有大小,只有创建为卷组(GV)时, 才有大小)
# pvdisplay /dev/sda10 (更详细的查看当前系统的pv)(只显示其中某一个pv的信息)
# pvscan 扫描当前系统中一共有多少个PV (将来把某pv插到其它主机上面,就扫描pv的元数据)
pvremove 是移除掉元数据
vgreduce 才是真正的移除掉某个pv
# man vgcreate
# vgs (查看当前系统的vg (卷组))
这是系统自动创建的 vo10
# vgcreate myvg /dev/sda{10,11}
# vgs (查看当前系统的 vg (卷组))
# vgdisplay myvg (详细查看当前系统的gv)(只显示myvg)
此时(把pv加入vg后就有了pe了) pvdisplay /dev/sda10 就可以看到 PE 大小了
# pvdisplay /dev/sda10 (更详细的查看当前系统的pv)(只显示其中某一个pv的信息)
# man vgcreate
红帽默认 32M的PE大小
没有创建 lv (没有lv的数据)那么 vg 是可以删掉的
# vg
# man vgremove
# vgremove myvg
# vgs
# vgcreate -s myvg /dev/sda{10,11}
# vgdisplay myvg
# vgs
# pvs 可以看出 myvg 里面包含的两个pv盘,
要移除掉一个pv盘
# vgreduce (可以缩小vg)(意味着拿掉一个pv)
先挪数据 pvmove
再拿掉 vgreduce
# pvs
# pvmove /dev/sda11 (数据就移到其它盘上面去了,很可能移到/dev/sda10上面去了)
# man vgreduce
# vgreduce myvg /dev/sda11
# vgs
# pvs (可以看到 /dev/sda11不属于某个vg了)
# man pvremove (把 pv 删除了,把里面的所有数据抹掉)
# pvremove /dev/sda11
# pvs (此时 /dev/sda11 没有了)
# pvcreate /dev/sda12
# man vgextend
# vgextend myvg /dev/sda12
# vgs
# pvdisplay /dev/sda12
PE 大小 创建后是不能改变的
# man lvcreate
# lvcreate -L 50M -n testlv myvg
# lvs (查看当前系统的逻辑卷)
# lvdisplay
(看到 /dev/myvg/testlv )
# lvdisplay /dev/myvg/testlv (只详细查看某一个lv的相关信息,名字是 /dev/vg name/lv name)
# mke2fs -j /dev/myvg/testlv
# mount /dev/myvg/testlv /mnt
# ls /mnt
# moun
# ls /dev/mapper (这里面才是真正意义上的设备文件)
# ls -l /dev/mapper (真正的设备文件)
# ls -l /dev/myvg (它反而是一个链接文件)
(很显然,创建卷组的时候,不能使用横线(中短横)作为卷组(vg)名,也不能使用横线(中短横)作为逻辑卷(lv)的名字)
逻辑卷(lv)的名字 最好使好纯字符 纯英文字符
# man lvremove
# lvremove /dev/myvg/testlv (/dev/mapper/myvg-testlv) 移除逻辑卷
# umount /mnt (先卸载)
# lvremove /dev/myvg/testlv (再移除)
# lvs