0

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

看起来 parted 应该能够做到,但我找不到让它工作的魔法调用。

4

3 回答 3

3

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

为了将来参考,它只有几行代码,使用 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;
}
于 2010-12-24T23:22:14.190 回答
3

使用fatresize ( manpage ) 然后继续lvresize

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

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

于 2013-05-04T21:57:18.397 回答
0

这似乎是你想要的,http://www.gnu.org/software/parted/manual/html_chapter/parted_2.html#SEC25

于 2010-12-24T23:24:48.453 回答