欢迎各位兄弟 发布技术文章
这里的技术是共享的
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
