首先,文件系统已成功备份并卸载。
然后,执行了 lvresize,并且已经在运行:
lvresize --resizefs --size 1024G /dev/dbdrp/db
并显示输出:
fsck from util-linux-ng 2.17.2
/dev/mapper/dbdrp-db: 1718907/201326592 files (0.4% non-contiguous), 92969270/805304320 blocks
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/mapper/dbdrp-db to 268435456 (4k) blocks.
文件系统输出是前者:
[root@generic-linux-hostname ~]# df -hP
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/dbdrp-db 3.0T 310G 2.7T 11% /usr/local/oracle
物理卷表如下:
PV VG Fmt Attr PSize PFree
/dev/xvdc1 dbdrp lvm2 a-- 1.50t 0
/dev/xvdd1 dbdrp lvm2 a-- 1.50t 0
调整大小完成后,将删除其中一个卷以回收虚拟硬盘。
我怎样才能看到这个lvresize的进度?它已经运行了一个小时,并没有抛出太多信息。
多谢你们 :)
答案1
这可能是一个过冲,因为我不知道内部原理,但是,为了有一个想法,您可以尝试以下操作:
获取正在运行的进程的pid:
pgrep -afl resize2fs
2377 resize2fs -M /dev/vg0/lv-3
这里只是resize2fs
更改为 lvresize (如果它是实际执行调整大小的命令)。接下来,运行strace -e pread64,pwrite64 -p 2377
以监视该命令正在执行哪些系统调用,以便您可以看到它从何处读取和写入。
输出将是这样的:
pread64(3, "<!-- ..........................."..., 1236992, 2441878626304) = 1236992
pwrite64(3, "<!-- ..........................."..., 1236992, 181592702976) = 1236992
pread64(3, "<!-- ..........................."..., 479232, 2441880231936) = 479232
pwrite64(3, "<!-- ..........................."..., 479232, 181593939968) = 479232
如果您检查 的手册页pread64
,您会发现它的签名是ssize_t pread(int fd, void *buf, size_t count, off_t offset)
这样的,调用的最后一个参数是偏移量或它现在正在读取块的哪个点。如果将2441880231936
字节转换为 TB,则大约为 2.2 TB,而我的卷(如下所示)为 3.44 TB,2.2/3.34 = ~65%。但是,这只是现在的大概情况,因为在这种情况下,它会根据可用空间将分区大小调整到最小(因为 resize2f -M)。另外,我不确定 ext4(就我而言)是否会将数据写入连续的块,因此它可能比完整磁盘的工作量更少。
lv-3 vg0 -wi-ao---- <3.34t
答案2
lvresize 没有进度条选项。但是,如果您以更多步骤进行调整大小,您可以检查:
- 检查fs的初始大小:
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects 19G 5.3G 13G 30% /mnt
- 卸载:
# umount /mnt
- 检查文件系统:
# e2fsck -f /dev/mapper/vg00-vol_projects
e2fsck 1.42.5 (29-Jul-2012)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/mapper/vg00-vol_projects: 13/1245184 files (0.0% non-contiguous), 1447987/4980736 blocks
- 使用进度 (-p) 选项调整文件系统大小:
# resize2fs -p /dev/mapper/vg00-vol_projects 6G
resize2fs 1.42.5 (29-Jul-2012)
Resizing the filesystem on /dev/mapper/vg00-vol_projects to 1572864 (4k) blocks.
Begin pass 2 (max = 32768)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 152)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/mapper/vg00-vol_projects is now 1572864 blocks long.
- 检查LV的初始大小:
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 19.00g
- 在不使用 resizefs 选项的情况下调整 LV 的大小(我们在前面的步骤中做了):
# lvresize --size 6G /dev/mapper/vg00-vol_projects
WARNING: Reducing active logical volume to 6.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce vol_projects? [y/n]: y
Reducing logical volume vol_projects to 6.00 GiB
Logical volume vol_projects successfully resized
- 检查尺寸:
# lvs vg00/vol_projects
LV VG Attr LSize Pool Origin Data% Move Log Copy% Convert
vol_projects vg00 -wi-a--- 6.00g
- 挂载并检查 fs 大小:
# mount /dev/mapper/vg00-vol_projects /mnt
# df -h /mnt
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg00-vol_projects 6.0G 5.3G 402M 94% /mnt
...但我认为这种方式更复杂:/