内容简介:拿到镜像是这样的。losetup伺候,其中,LVM内是如下情况但是这个pv卷轴已经没有空余空间,因为是离线镜像 所以不能使得分区属性有任何变化,包括uuid等,否则可能会导致机器出问题,而且root分区空余很多,考虑ext4有e2fsck,但是swap没有,而且root空间空余较多,考虑直接缩减root分区
拿到镜像是这样的。
$ fdisk -l OMP120.img Disk OMP120.img: 29.8 GiB, 31937527808 bytes, 62377984 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x000d89e6 Device Boot Start End Sectors Size Id Type OMP120.img1 * 2048 1026047 1024000 500M 83 Linux OMP120.img2 1026048 62377983 61351936 29.3G 8e Linux LVM
losetup伺候,其中,LVM内是如下情况
# pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 0 0 6728 lv_root 0 linear /dev/loop0p2:0-6727 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 0 6728 761 lv_swap 0 linear /dev/loop0p2:6728-7488
但是这个pv卷轴已经没有空余空间,因为是离线镜像 所以不能使得分区属性有任何变化,包括uuid等,否则可能会导致机器出问题,而且root分区空余很多,考虑ext4有e2fsck,但是swap没有,而且root空间空余较多,考虑直接缩减root分区
先检查下文件系统
# e2fsck -fy /dev/vg_wellav/lv_root e2fsck 1.43.4 (31-Jan-2017) /dev/vg_wellav/lv_root:正在修复日志 应为孤立的inode 926115(uid=%lu,gid=%lg,mode=%lm,size=%ls) 应为孤立的inode 926114(uid=%lu,gid=%lg,mode=%lm,size=%ls) 应为孤立的inode 926113(uid=%lu,gid=%lg,mode=%lm,size=%ls) 应为孤立的inode 924330(uid=%lu,gid=%lg,mode=%lm,size=%ls) 应为孤立的inode 920981(uid=%lu,gid=%lg,mode=%lm,size=%ls) 第 1 步:检查inode、块和大小 第 2 步:检查目录结构 第 3 步:检查目录连接性 第 4 步:检查引用计数 第 5 步:检查组概要信息 可用块数错误(0,实际为0) 处理? yes 可用inode数错误(1575548,实际为1575524) 处理? yes /dev/vg_wellav/lv_root:***** 文件系统已修改 ***** /dev/vg_wellav/lv_root:149612/1725136 文件(0.1% 为非连续的), 1315641/6889472 块
然后把根文件系统缩小为24G,为lvreduce留足安全余量
# resize2fs /dev/vg_wellav/lv_root 24G resize2fs 1.43.4 (31-Jan-2017) 将 /dev/vg_wellav/lv_root 上的文件系统调整为 6291456 个块(每块 4k)。 /dev/vg_wellav/lv_root 上的文件系统现在为 6291456 个块(每块 4k)。
这里,6291456*4*/1024/1024=24G
然后,使用lvreduce缩小root分区为25G
# lvreduce -L 25G /dev/vg_wellav/lv_root WARNING: Reducing active logical volume to 25.00 GiB. THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vg_wellav/lv_root? [y/n]: y Size of logical volume vg_wellav/lv_root changed from 26.28 GiB (6728 extents) to 25.00 GiB (6400 extents). Logical volume vg_wellav/lv_root successfully resized.
然后,使用resize2fs扩大root分区为正好合适这个lv的尺寸
# resize2fs /dev/vg_wellav/lv_root resize2fs 1.43.4 (31-Jan-2017) 将 /dev/vg_wellav/lv_root 上的文件系统调整为 6553600 个块(每块 4k)。 /dev/vg_wellav/lv_root 上的文件系统现在为 6553600 个块(每块 4k)。 # e2fsck -fy /dev/vg_wellav/lv_root e2fsck 1.43.4 (31-Jan-2017) 第 1 步:检查inode、块和大小 第 2 步:检查目录结构 第 3 步:检查目录连接性 第 4 步:检查引用计数 第 5 步:检查组概要信息 /dev/vg_wellav/lv_root:149612/1635200 文件(0.2% 为非连续的), 1310004/6553600 块
可以看到已经扩大到了正好合适的25G
6553600*4/1204/1024=25G
这时候看,我们的pv已经多出来空余的部分了 但是麻烦的地方在于,那个空闲的部分在中间
# pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 0 6400 lv_root 0 linear /dev/loop0p2:0-6399 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6400 328 0 free /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6728 761 lv_swap 0 linear /dev/loop0p2:6728-7488
尝试重新安排空间 ,报错,因为没足够空余空间进行空调调整。
# pvmove --alloc anywhere /dev/loop0p2:6728-7488 Insufficient free space: 761 extents needed, but only 328 available Unable to allocate mirror extents for vg_wellav/pvmove0. Failed to convert pvmove LV to mirrored
所以我们需要给这个pv里面再添加一些空余的物理磁盘
# dd if=/dev/zero of=/tmp/zero.img bs=1G count=4 # fdisk /tmp/zero.img Welcome to fdisk (util-linux 2.29.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Device does not contain a recognized partition table. Created a new DOS disklabel with disk identifier 0xecbc9b42. Command (m for help): p Disk /tmp/zero.img: 4 GiB, 4294967296 bytes, 8388608 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xecbc9b42 Command (m for help): n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p Partition number (1-4, default 1): First sector (2048-8388607, default 2048): Last sector, +sectors or +size{K,M,G,T,P} (2048-8388607, default 8388607): Created a new partition 1 of type 'Linux' and of size 4 GiB. Command (m for help): t Selected partition 1 Partition type (type L to list all types): 8e Changed type of partition 'Linux' to 'Linux LVM'. Command (m for help): w The partition table has been altered. Syncing disks. # pvcreate /tmp/zero.img Device /tmp/zero.img not found (or ignored by filtering). # losetup -fP --show /tmp/zero.img /dev/loop1 # pvcreate /dev/loop1p1 Physical volume "/dev/loop1p1" successfully created. # vgs VG #PV #LV #SN Attr VSize VFree vg_wellav 1 2 0 wz--n- 29.25g 1.28g # vgextend vg_wellav /dev/loop1p1 Volume group "vg_wellav" successfully extended # pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 0 6400 lv_root 0 linear /dev/loop0p2:0-6399 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6400 328 0 free /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6728 761 lv_swap 0 linear /dev/loop0p2:6728-7488 /dev/loop1p1 vg_wellav lvm2 a-- 4.00g 4.00g 0 1023 0 free
然后调用pvmove进行空间整理,注意这里如果不加目的地址 他会先全部移动到/dev/loop1p1上 你需要移动两次,其实也无所谓,他自己会处理
# pvmove --alloc anywhere /dev/loop0p2:6728-7488 /dev/loop0p2: Moved: 0.13% /dev/loop0p2: Moved: 26.02% /dev/loop0p2: Moved: 50.07% /dev/loop0p2: Moved: 70.57% /dev/loop0p2: Moved: 91.20% /dev/loop0p2: Moved: 100.00% # pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 4.25g 0 6400 lv_root 0 linear /dev/loop0p2:0-6399 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 4.25g 6400 1089 0 free /dev/loop1p1 vg_wellav lvm2 a-- 4.00g 1.02g 0 761 lv_swap 0 linear /dev/loop1p1:0-760 /dev/loop1p1 vg_wellav lvm2 a-- 4.00g 1.02g 761 262 0 free # pvmove --alloc anywhere /dev/loop1p1:0-760 /dev/loop1p1: Moved: 1.05% /dev/loop1p1: Moved: 100.00% # pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 0 6400 lv_root 0 linear /dev/loop0p2:0-6399 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6400 761 lv_swap 0 linear /dev/loop0p2:6400-7160 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 7161 328 0 free /dev/loop1p1 vg_wellav lvm2 a-- 4.00g 4.00g 0 1023 0 free
然后安全的移除新添加的零时盘
# vgreduce vg_wellav /dev/loop1p1 Removed "/dev/loop1p1" from volume group "vg_wellav" # pvs -v --segments Wiping internal VG cache Wiping cache of LVM-capable devices PV VG Fmt Attr PSize PFree Start SSize LV Start Type PE Ranges /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 0 6400 lv_root 0 linear /dev/loop0p2:0-6399 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 6400 761 lv_swap 0 linear /dev/loop0p2:6400-7160 /dev/loop0p2 vg_wellav lvm2 a-- 29.25g 1.28g 7161 328 0 free
然后用gparted把多余的vg空间的尾巴切掉就好了, 然后,参考这个文章,裁剪img镜像
最后用losetup检查检查没问题即可收工。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- GParted 1.0 发布,磁盘分区工具
- VMware下Linux根分区磁盘扩容
- 使用 parted 解决大于 2T 的磁盘分区
- linux批量新增自动分区挂载大于2T磁盘脚本
- GParted Live 0.31.0-1 发布,磁盘分区工具
- GParted Live 0.32.0-1 发布,磁盘分区工具
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。