学网站建设去什么学校WordPress添加加载用时
近期基于磁盘使用率监控分析,现对业务服务器实施LVM存储资源优化,通过ext4/XFS文件系统缩容及PV迁移技术,将低负载磁盘(如300G使用率不足50%)智能调整为200G,预计节约20%存储成本,同时提供rsync数据迁移方案。
一、前提条件
1.数据量验证
确认已使用的数据量<=新磁盘的总量
#查看新旧磁盘空间
lsblk#查看目前磁盘使用量
du -sh /data#查看磁盘挂载类型
cat /etc/fstab |grep '/data'
 
 
2.服务停写
比如nginx、Java业务需要停止向磁盘写入数据。
#查找哪些进程正在使用挂载点
fuser -mv /data
lsof +f -- /data 
二、lvm挂载缩容方案
1.创建物理卷
[root@kdxf-asr02 ~]# pvcreate /dev/vdcPhysical volume "/dev/vdc" successfully created.
[root@kdxf-asr02 ~]# pvsPV         VG       Fmt  Attr PSize    PFree  /dev/vdb   data_vgc lvm2 a--  <300.00g      0 /dev/vdc            lvm2 ---   200.00g 200.00g
 
2.创建卷组或扩展卷组
#查看卷组
[root@kdxf-asr02 ~]# vgsVG       #PV #LV #SN Attr   VSize    VFreedata_vgc   1   1   0 wz--n- <300.00g    0 #扩展卷组
[root@kdxf-asr02 ~]# vgextend data_vgc /dev/vdcVolume group "data_vgc" successfully extended
#发现卷组已多了200G空余
[root@kdxf-asr02 ~]# vgsVG       #PV #LV #SN Attr   VSize   VFree   data_vgc   2   1   0 wz--n- 499.99g <200.00g#vgs查看卷组没有的话就创建卷组
#创建卷组 data_vg 卷组名称
[root@kdxf-asr02 ~]# vgcreate data_vg /dev/vdc
 
3.创建新逻辑卷
[root@kdxf-asr02 ~]# lvsLV      VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_lv data_vgc -wi-ao---- <300.00g   
#创建新逻辑卷(在 /dev/vdc 上)卷组名为data_vgc     逻辑卷名为data_new                                            
[root@kdxf-asr02 ~]# lvcreate -n data_new -l 100%FREE data_vgc /dev/vdcLogical volume "data_new" created.
[root@kdxf-asr02 ~]# lvsLV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_lv  data_vgc -wi-ao---- <300.00g                                                    data_new data_vgc -wi-a----- <200.00g 
 
4.格式化
#如果原系统是 EXT4
[root@kdxf-asr02 ~]# mkfs.ext4 /dev/data_vgc/data_new# 如果原系统是 XFS
[root@kdxf-asr02 ~]# mkfs.xfs /dev/data_vgc/data_new  
 
5. 临时挂载新逻辑卷
[root@kdxf-asr02 ~]# mkdir /mnt/data_new
[root@kdxf-asr02 ~]# mount /dev/data_vgc/data_new /mnt/data_new
 
6.拷贝数据到新磁盘
[root@kdxf-asr02 ~]# rsync -avh --progress /data/ /mnt/data_new/
 
等待数据传完至100%

7.检查数据完整性
# 应无输出
[root@kdxf-asr02 ~]# diff -r /data /mnt/data_new 
# 以下两个输出应该一致
[root@kdxf-asr02 ~]# du -sh /mnt/data_new
134G    /mnt/data_new
[root@kdxf-asr02 ~]# du -sh /data
134G    /data 
8.卸载新旧文件系统
umount /data
umount /mnt/data_new 
9.重命名逻辑卷
# 原lv重命名data_lv为data_old  data_vgc卷组名
[root@kdxf-asr02 ~]# lvrename data_vgc data_lv data_old Renamed "data_lv" to "data_old" in volume group "data_vgc"
[root@kdxf-asr02 ~]# lvsLV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_new data_vgc -wi-a----- <200.00g                                                    data_old data_vgc -wi-a----- <300.00g        # 新LV重命名data_new为data_lv                                      
[root@kdxf-asr02 ~]# lvrename data_vgc data_new data_lv Renamed "data_new" to "data_lv" in volume group "data_vgc"
[root@kdxf-asr02 ~]# lvsLV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_lv  data_vgc -wi-a----- <200.00g                                                    data_old data_vgc -wi-a----- <300.00g   
10.挂载新lv到/data
# 获取新LV的UUID
[root@kdxf-asr02 ~]# blkid /dev/data_vgc/data_lv
/dev/data_vgc/data_lv: UUID="27adfda7-5b86-4919-9a71-65672b2fca2b" BLOCK_SIZE="4096" TYPE="ext4"# 编辑fstab,替换原/data条目为新UUID
#示例条目:UUID=新UUID /data ext4 defaults 0 0
[root@kdxf-asr02 ~]# vim /etc/fstab
...
UUID=27adfda7-5b86-4919-9a71-65672b2fca2b /data  ext4 defaults 0 0#挂载 
[root@kdxf-asr02 ~]# mount -a#查看挂载信息
[root@kdxf-asr02 ~]# df -h | grep /data
/dev/mapper/data_vgc-data_lv  196G  134G   52G  73% /data
 
11.验证挂载
[root@kdxf-asr02 ~]# du -sh /data/
134G    /data/
[root@kdxf-asr02 ~]# ll /data/
 
12.删除旧逻辑卷(确认成功后执行)
[root@kdxf-asr02 ~]# lvsLV       VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_lv  data_vgc -wi-ao---- <200.00g                                                    data_old data_vgc -wi-a----- <300.00g                                                    
[root@kdxf-asr02 ~]# lvremove /dev/data_vgc/data_old
Do you really want to remove active logical volume data_vgc/data_old? [y/n]: yLogical volume "data_old" successfully removed
[root@kdxf-asr02 ~]# lvsLV      VG       Attr       LSize    Pool Origin Data%  Meta%  Move Log Cpy%Sync Convertdata_lv data_vgc -wi-a----- <200.00g    
 
13.从卷组移除旧PV(确认成功后执行)
[root@kdxf-asr02 ~]# vgsVG       #PV #LV #SN Attr   VSize   VFree   data_vgc   2   1   0 wz--n- 499.99g <300.00g
[root@kdxf-asr02 ~]# vgreduce data_vgc /dev/vdbRemoved "/dev/vdb" from volume group "data_vgc"
[root@kdxf-asr02 ~]# vgsVG       #PV #LV #SN Attr   VSize    VFreedata_vgc   1   1   0 wz--n- <200.00g    0
 
14.移除旧PV(确认成功后执行)
[root@kdxf-asr02 ~]# pvsPV         VG       Fmt  Attr PSize    PFree  /dev/vdb            lvm2 ---   300.00g 300.00g/dev/vdc   data_vgc lvm2 a--  <200.00g      0 
[root@kdxf-asr02 ~]# pvremove /dev/vdbLabels on physical volume "/dev/vdb" successfully wiped.
[root@kdxf-asr02 ~]# pvsPV         VG       Fmt  Attr PSize    PFree/dev/vdc   data_vgc lvm2 a--  <200.00g    0 
 
至此,磁盘已完整缩容完成了。

