1

我相信 /images/backups 正在使用 /images 中的空间?

/dev/sdb1             820G  645G  135G  83% /images
/dev/loop0            296G  296G     0 100% /images/backups

我在另一台机器/images中有一个类似的分区,免费500G,我想取出350G用于/images/backups,怎么做?

对吗,它是一个简单的循环挂载,可以提供指定的空间量,还是我们应该创建一个所需大小的 NULL 文件并挂载?如果是这样,应该使用哪些挂载选项来指定大小?

4

1 回答 1

3

您需要创建具有固定大小的目标,但可以使用“稀疏文件”,该文件实际上还没有写入任何块(因此在写入之前实际上不会占用空间)。

例如:

dd if=/dev/zero of=file.img bs=1 count=0 seek=20G

将创建一个预分配为 20GB 的稀疏文件。也就是说,实际上预先将 20GB 的零写入磁盘(使文件非稀疏)在写入时会更快并导致更少的碎片。

这可以使用 losttup 命令附加到环回设备,创建文件系统并挂载:

losetup /dev/loop1 file.img
mke2fs -j /dev/loop1
mount /dev/loop1 /mnt/somewhere

如果您想知道现有文件是否稀疏,以下方法可以解决问题(在具有 GNU 工具的系统上;纯 POSIX 环境不支持以下某些内容):

{
    read block_count block_size file_size
    if (( block_count * block_size < file_size )) ; then
        echo "Sparse"
    else
        echo "Non-Sparse"
    fi
} < <(stat --format='%b %B %s'$'\n' /images/backups.img)
于 2012-05-11T11:44:17.987 回答