如何从现有分区创建循环分区

时间:2012-05-11 11:40:51

标签: linux command-line partitioning

我相信/ images / backups正在使用/ images?

中的空格
/dev/sdb1             820G  645G  135G  83% /images
/dev/loop0            296G  296G     0 100% /images/backups

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

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

1 个答案:

答案 0 :(得分:3)

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

例如:

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

将创建一个预先分配到20GB的稀疏文件。实际上,实际上预先向磁盘写入20GB的零(使文件非稀疏)在写入时会更快,并且可以减少碎片。

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

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)