Linux 中的Loop设备,在Linux中访问常规文件作为块设备

28,324次阅读
没有评论

共计 4195 个字符,预计需要花费 11 分钟才能阅读完成。

了解如何在 Linux 中使用 Loop 设备来访问常规文件作为块设备的方法。Loop 设备是一种虚拟设备,它允许将普通文件作为块设备进行访问。您可以使用 Loop 设备创建文件系统、挂载 ISO 映像等操作。

概述

如果您曾经下载过新的 Linux 发行版 ISO 映像,您可能想知道如何在重新分区磁盘并将操作系统安装到本地磁盘之前访问映像中的内容。这可以通过 Linux 中的 Loop 挂载来完成。

在 Linux 和其他类 UNIX 系统中,可以使用常规文件作为块设备。Loop 设备是一种虚拟或伪设备,它允许将常规文件作为块设备进行访问。假设您想要创建 Linux 文件系统,但没有可用的空闲磁盘分区。在这种情况下,您可以在磁盘上创建一个常规文件,并使用该文件创建一个 Loop 设备。新伪设备的设备节点列表可以在 /dev 下看到。然后可以使用该 Loop 设备创建新的文件系统。可以挂载文件系统,并且可以使用普通文件系统 API 访问其内容。

Loop 设备的用途

如上所述,用途之一是在没有可用磁盘分区时创建具有常规文件的文件系统。

Loop 设备的另一个常见用途是可安装操作系统的 ISO 映像。通过将 ISO 映像安装为 Loop 设备,可以轻松浏览 ISO 映像的内容。

在 Linux 中创建 Loop 设备

这些命令需要 root 权限。

1. 在磁盘上创建一个大型常规文件,用于创建 Loop 设备。

# dd if=/dev/zero of=/loopfile bs=1024 count=51200
51200+0 records in
51200+0 records out
52428800 bytes (52 MB, 50 MiB) copied, 0.114882 s, 456 MB/s

此命令创建一个名为 Loopfile 的 50Mb 文件,该文件用零填充。

如果您已经有一个想要作为 Loop 设备安装的映像文件,那么您可以跳过此步骤。

2. 使用上面创建的大文件创建一个 Loop 设备。

可能已经创建了一些 Loop 设备。运行以下命令查找第一个可用的设备节点。

# losetup -f
/dev/loop1

这样我们就可以安全地使用它 /dev/loop1 来创建我们的 Loop 设备。使用以下命令创建 Loop 设备。

# losetup /dev/loop1 /loopfile

如果没有看到错误,则常规文件 /loopfile 现在已与 Loop 设备关联 /dev/loop1。

3. 确认创建 Loop 设备

# losetup /dev/loop1
/dev/loop1: [66309]:214 (/loopfile)

使用 Loop 设备创建 Linux 文件系统

您现在可以使用此 Loop 设备创建普通的 Linux 文件系统。

1. 使用创建 ext4 文件系统 /dev/loop1。

# mkfs -t ext4 -v /dev/loop1
mke2fs 1.45.3 (14-Jul-2019)
fs_types for mke2fs.conf resolution: 'ext4', 'small'
Discarding device blocks: done                            
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
12800 inodes, 12800 blocks
640 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=14680064
1 block group
32768 blocks per group, 32768 fragments per group
12800 inodes per group
Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (1024 blocks): done
Writing superblocks and filesystem accounting information: done

2. 为文件系统创建挂载点。

# mkdir /mnt/loopfs

3. 挂载新创建的文件系统。

# mount -t ext4 /dev/loop1 /mnt/loopfs

此命令将 Loop 设备安装为普通的 Linux ext4 文件系统,可以在其上执行普通的文件系统操作。

4. 检查文件系统的磁盘使用情况。

# df -h /dev/loop1
Filesystem      Size  Used Avail Use% Mounted on
/dev/loop1       45M   48K   41M   1% /mnt/loopfs

5. 用于 tune2fs 查看文件系统设置。

#  tune2fs -l /dev/loop1
tune2fs 1.45.3 (14-Jul-2019)
Filesystem volume name:   
Last mounted on:          
Filesystem UUID:          b1b13d6e-c544-45dd-a549-5846371fbde6
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         signed_directory_hash
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              12800
Block count:              12800
Reserved block count:     640
Free blocks:              11360
Free inodes:              12789
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      6
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         12800
Inode blocks per group:   400
Flex block group size:    16
Filesystem created:       Sun Mar 19 08:56:47 2023
Last mount time:          Sun Mar 19 09:00:52 2023
Last write time:          Sun Mar 19 09:00:52 2023
Mount count:              1
Maximum mount count:      -1
Last checked:             Sun Mar 19 08:56:47 2023
Check interval:           0 ()
Lifetime writes:          37 kB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:              128
Journal inode:            8
Default directory hash:   half_md4
Directory Hash Seed:      e489fd33-4003-4235-9347-144c7a5d4d73
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x3b8c797a

6. 要卸载文件系统并删除 Loop 设备,请运行以下命令。

# umount /mnt/loopfs/
# losetup -d /dev/loop1

文章来源地址 https://www.toymoban.com/diary/system/430.html

到此这篇关于 Linux 中的 Loop 设备, 在 Linux 中访问常规文件作为块设备的文章就介绍到这了, 更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持 TOY 模板网!

原文地址:https://www.toymoban.com/diary/system/430.html

如若转载,请注明出处:如若内容造成侵权 / 违法违规 / 事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

    正文完
     0
    Yojack
    版权声明:本篇文章由 Yojack 于1970-01-01发表,共计4195字。
    转载说明:
    1 本网站名称:优杰开发笔记
    2 本站永久网址:https://yojack.cn
    3 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系站长进行删除处理。
    4 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
    5 本站所有内容均可转载及分享, 但请注明出处
    6 我们始终尊重原创作者的版权,所有文章在发布时,均尽可能注明出处与作者。
    7 站长邮箱:laylwenl@gmail.com
    评论(没有评论)