如何在 Linux 中创建虚拟块或循环设备?

举报
wljslmz 发表于 2022/10/24 22:40:16 2022/10/24
【摘要】 Linux 用户可以拥有一个称为“循环设备”的虚拟块设备,它将普通文件映射到虚拟块,使其成为与隔离进程相关的任务的理想选择。利用循环设备的最佳示例是 snap 包,这是一个沙盒软件解决方案,包含所有必要的依赖项并作为loop设备安装:如果您有兴趣创建自己的虚拟块设备,本文将一步步教你。 如何创建循环设备为了便于理解,我将整个过程以简单步骤的形式决定,这样更容易掌握。 1.创建所需大小的文件在...

Linux 用户可以拥有一个称为“循环设备”的虚拟块设备,它将普通文件映射到虚拟块,使其成为与隔离进程相关的任务的理想选择。

利用循环设备的最佳示例是 snap 包,这是一个沙盒软件解决方案,包含所有必要的依赖项并作为loop设备安装:

如果您有兴趣创建自己的虚拟块设备,本文将一步步教你。

如何创建循环设备

为了便于理解,我将整个过程以简单步骤的形式决定,这样更容易掌握。

1.创建所需大小的文件

在第一步中,您需要根据需要创建一个文件。对于这个例子,我将创建一个 3 Giga 字节的文件:

dd if=/dev/zero of=VirtBlock.img bs=100M count=30

这里,

  • if=/dev/zero将创建一个 0 块来保存数据。
  • of=VirtBlock.img是您指定名称的地方。我选择了 VirtBlock.img。
  • bs=100M将设置单个块的大小。
  • count=30将为给定时间创建单个块的副本。意思是 100Mb * 30 次的大小约为 3 GB。

现在,让我们通过给定的命令验证最近创建的块的大小:

du -sh VirtBlock.img 

2.创建循环设备

在这一步中,我将使用该losetup实用程序在最近创建的文件中创建循环设备映射。

sudo losetup -fP VirtBlock.img

在哪里,

  • -f(find) 将找到我们未使用的循环设备,并使我们免于诸如“losetup: TO_BLOCK: failed to setup loop device: Device or resource busy”之类的错误。
  • -P将强制内核扫描新创建的循环设备上的分区表。

现在,是时候使用给定的-a选项来打印所有循环设备了:losetup

sudo losetup -a

但是您的块需要有一个文件系统来创建、存储和配置该块的文件,我将使用 ext4:

sudo mkfs.ext4 /home/sagar/VirtBlock.img

确保使用准确的路径,否则会引发错误。使用来自sudo losetup -a命令的引用。

3.安装 Loop 设备

要挂载创建的循环设备,第一步应该是创建一个可以通过给定命令完成的挂载目录:

sudo mkdir /loopfs

要安装循环设备(我的是 loop21),我将使用-o loop给定的选项:

sudo mount -o loop /dev/loop21 /loopfs

现在,您可以验证最近安装的循环设备的安装点和大小:

df -hP /loopfs/

要验证文件系统,您可以使用给定的命令:

mount | grep loopfs

如何移除循环装置

删除一个软件总是比安装/配置容易,这也是同样的情况!

首先,您必须卸载并删除安装目录:

sudo umount /loopfs
sudo rmdir /loopfs

现在,您必须分离由“losetup -d”命令创建的循环设备(我的是 loop21):

sudo losetup -d /dev/loop21

最后,您必须通过给定的命令删除文件 (VirtBlock.img):

sudo rm /home/sagar/VirtBlock.img

该过程到此结束。

最后

使用循环设备进行隔离是一个方便的 Linux 功能。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。