如何在LVM分区中调整fat32文件系统的大小?

时间:2010-12-24 00:33:55

标签: resize fat32 lvm

足够简单:我有一个包含Fat32文件系统的LVM分区(例如/ dev / mapper / foo-fat)。在减小这个LVM分区(我将使用lvmreduce)的大小之前,我想减少它包含的Fat32文件系统的大小。

看起来分手应该可以做到,但我找不到神奇的调用来使其发挥作用。

3 个答案:

答案 0 :(得分:3)

使用fatresizemanpage),然后继续lvresize

为了避免截断FS,您应首先将VFAT卷缩小几百倍(安全)兆字节,然后调整LVM容器的大小,最后增大卷以填充LVM分区。

此外,这个问题不属于StackOverflow,而属于ServerFault。

答案 1 :(得分:2)

没有答案+会面的截止日期=自己写。

为了将来参考,使用libparted只需几行代码。为了便于阅读,我省略了错误检查等。调用者负责确保分区中有足够的空间用于新的文件系统大小。

#include <parted/parted.h>

int
resize_filesystem(const char *device, PedSector newsize)
{
        PedDevice *dev = NULL;
        PedGeometry *geom = NULL;
        PedGeometry *new_geom = NULL;
        PedFileSystem *fs = NULL;
        int rc = 0;

        dev = ped_device_get(device);
        ped_device_open(dev);

        geom = ped_geometry_new(dev, 0LL, dev->length);

        fs = ped_file_system_open(geom);

        new_geom = ped_geometry_new(dev, 0LL, newsize / dev->sector_size);

        ped_file_system_resize(fs, new_geom, NULL);

        ped_file_system_close(fs);
        ped_geometry_destroy(geom);
        ped_geometry_destroy(new_geom);
        ped_device_close(dev);

        return rc;
}

答案 2 :(得分:0)