02.Linux系统磁盘进阶

徐亮伟, 江湖人称标杆徐。多年互联网运维工作经验,曾负责过大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型电商运维工作。
个人博客"徐亮伟架构师之路"累计受益数万人。
笔者Q:552408925、572891887
架构师群:471443208

lvm

物理卷(PV):把常规的块设备(硬盘,分区等可以读写数据的设备)通过pvcreate命令对其进行初始化,就成了物理卷

卷组(VG):把多个物理卷的容量组成一个逻辑整体,可以从里面灵活分配容量

逻辑卷(LV):从卷组中划分部分空间成为一个可以读写数据的逻辑单元。需要对其格式化然后挂载使用

1.部署逻辑卷

创建过程:

1.创建物理卷, 添加物理磁盘
2.创建卷组, 添加物理卷加入到该卷组
3.在卷组中划分逻辑卷

//1.准备物理磁盘
[root@xuliangwei~]# lsblk |grep "sd[bcd]"
sdb             8:16   0    1G  0 disk
sdc             8:32   0    1G  0 disk
sdd             8:48   0    1G  0 disk

//1.将磁盘加入pv
[root@linux-node1 ~]# pvcreate /dev/sdb
Physical volume "/dev/sdb" successfully created.
//检查pv创建情况
[root@linux-node1 ~]# pvs
PV         VG     Fmt  Attr PSize   PFree
/dev/sdb          lvm2 ---    1.00g 1.00g

//2.创建名为datavg的卷组
[root@linux-node1 ~]# vgcreate datavg /dev/sdb
Volume group "datavg" successfully created
//检查卷组
[root@linux-node1 ~]# vgs
VG      #PV #LV #SN Attr   VSize    VFree
datavg   1   0   0 wz--n- 1020.00m 1020.00m

//3.创建逻辑卷, 分配名称, 以及大小, 指定卷组
[root@linux-node1 ~]# lvcreate -L 100M -n lv1 datavg
Logical volume "datalv1" created.
//检查逻辑卷
[root@linux-node1 ~]# lvscan
ACTIVE            '/dev/datavg/lv1' [100.00 MiB] inherit

//4.格式化文件系统
[root@linux-node1 ~]# mkfs.xfs /dev/datavg/lv1

//挂载并使用
[root@linux-node1 ~]# mkdir /lv1
[root@linux-node1 ~]# mount /dev/datavg/lv1 /lv1/
[root@linux-node1 ~]# df -h
Filesystem                  Size  Used Avail Use% Mounted on
...
/dev/mapper/datavg-lv1   97M  5.2M   92M   6% /lv1

2.卷组池管理

扩展卷组VG, 扩大VG卷组

//1.新硬盘加入pv
[root@xuliangwei~]# pvcreate /dev/sdc

2.使用vgextend扩展
[root@xuliangwei~]# vgextend datavg /dev/sdc
Volume group "datavg" successfully extended

移除卷组VG, 移除vg组中某一块硬盘

[root@xuliangwei~]# vgreduce datavg /dev/sdb
  Removed "/dev/sdb" from volume group "datavg"

数据迁移卷组VG, 同一卷组的磁盘才可以进行在线迁移

//1.检查当前逻辑卷VG中PV使用情况
[root@xuliangwei~]# pvs
PV      VG   Fmt  Attr PSize PFree
/dev/sdb vg1 lvm2 a -- 2.00g 1.76g 
/dev/sdc vg1 lvm2 a -- 2.00g 2.00g

//2.pvmove在线数据迁移至其他pv 
[root@xuliangwei~]# pvmove /dev/sdb
  /dev/sdb: Moved: 41.33%
  /dev/sdb: Moved: 100.00%

//3.检查是否将sdb数据迁移至sdc 
[root@xuliangwei~]# pvs
PV      VG   Fmt  Attr PSize PFree 
/dev/sdb vg1 lvm2 a -- 2.00g 2.00g 
/dev/sdc vg1 lvm2 a -- 2.00g 1.76g

3.扩容逻辑卷

逻辑卷的扩展, 取决于vg卷中剩余多少容量, 扩展容量不能超过卷组VG

[root@server0 ~]# vgs
VG #PV #LV #SN Attr VSize VFree 
vg1 2 2 0 wz --n-   1.88g 1.00g

1.扩展lv逻辑卷
//增加800M分配给逻辑卷 {注意: 800M +800M 不一样}
[root@xuliangwei~]# lvextend -L +800M /dev/datavg/lv1
//分配磁盘池中多少百分比给逻辑卷
[root@xuliangwei~]# lvextend -l +50%FREE /dev/datavg/lv1

2.扩展fs文件系统
//xfs扩容
[root@server0 ~]# xfs_growfs /dev/datavg/lv1
//ext扩容
[root@server0 ~]# resize2fs /dev/datavg/lv1

ext4文件系统的逻辑卷裁剪容量

首先自己创建一个1G的逻辑卷作为裁剪的对象
# lvcreate  -n uplooking -L 1G finance
# mkfs.ext4 /dev/finance/uplooking 

# mkdir /finance/uplooking
# mount /dev/finance/uplooking  /finance/uplooking/
# cp /etc/host* /finance/uplooking/


1、如果已经挂载,必须先卸载
# umount /dev/finance/uplooking

2、裁剪容量,必须是先检测文件系统
# fsck -f /dev/finance/uplooking
# resize2fs /dev/finance/uplooking 512M

3、调整完毕后采取裁剪逻辑卷容量
# lvreduce  -L 512M /dev/finance/uplooking 
  WARNING: Reducing active logical volume to 512.00 MiB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce uplooking? [y/n]: y

4、强烈建议裁剪后,再次检测文件系统
# fsck -f /dev/finance/uplooking


5、挂载测试
如果能够挂载,一般说明裁剪成功,文件系统没有损坏

# mount /dev/finance/uplooking /mnt
...
/dev/mapper/finance-uplooking  472M  1.6M  435M    1% /mnt 而且文件系统容量被刷新了

4.缩小逻辑卷

5.删除逻辑卷