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

了解如何在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:   <none>
Last mounted on:          <not available>
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 (<none>)
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

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

领支付宝红包 赞助服务器费用
Linux touch命令工作原理:创建和更新文件访问和修改日期
上一篇 2023年10月19日 10:01
使用纯CSS画一个月球
下一篇 2023年10月19日 10:53

相关文章

  • 7.4.2 【Linux】特殊设备 loop 挂载 (镜像文件不烧录就挂载使用)

    挂载光盘/DVD镜像文件 如此一来我们不需要将这个文件烧录成为光盘或者是 DVD 就能够读取内部的数据了。 创建大文件以制作 loop 设备文件! 创建大型文件 假设我要创建一个空的文件在 /srv/loopdev ,那可以这样做: 将 512 块,每块 1MB 的砖块堆叠成为一个大文件 (/srv/loopdev)

    2024年02月12日
    浏览(57)
  • 虚拟专用网络(VPN):远程访问与点对点连接及其在Linux中的IPSec实现与日志管理

    **虚拟专用网络(VPN)**是一种强大的网络安全技术,它利用加密隧道技术,在不安全的公共网络上建立安全的数据传输通道。VPN不仅保护了数据的隐私和完整性,还使得用户无论身处何地都能如同在本地一样访问受保护的网络资源。 远程VPN 在Linux环境中,远程VPN通常通过安装客

    2024年01月18日
    浏览(48)
  • 【Linux】Linux文件IO常规操作

    Linux 文件 IO 操作指的是在 Linux 系统上对文件进行读取和写入的操作。它是通过与文件系统交互来读取和写入文件中的数据。 在 Linux 中,文件被视为一系列字节的有序集合,每个文件都有一个相关联的文件描述符,用于标识该文件的唯一标识符。文件 IO 操作允许程序从文件

    2024年02月05日
    浏览(69)
  • VMware虚拟机中的Linux重启后共享文件夹失效的解决方法

    重启虚拟机之后,发现在共享路径没有显示我的共享文件夹了。         我发现我虚拟机设置的共享文件夹总是启用的,为什么每次重启之后都找不到了呢?这就很奇怪 发现用命令检查共享文件夹是有被挂载的。  三、修改/etc/rc.local文件 如果/etc/rc.local是空文件就添加如下

    2024年02月10日
    浏览(71)
  • 局域网其他设备访问本机VMware虚拟机服务器

    在VMware虚拟机安装了nginx后,在宿主机的浏览器可以通过NAT模式访问,但使用局域网的其他机器就访问不了了, 此时可以通过设置WMware的虚拟网络来解决此问题。 1. 选择“编辑”-“虚拟网络编辑器” 2.  点击“更改设置”, 允许应用对您的设备进行更改 3. 选择“WMnet8” -

    2024年04月11日
    浏览(48)
  • Qt中的 QIODevice类(包含:随机访问、顺序访问设备)

    QIODevice类 一、简介 QIODevice用于对输入输出设备进行管理,是Qt中所有I/O设备的基接口类。为支持读写数据块的设备(如QFile、QBuffer和QTcpSocket)提供了通用实现和抽象接口。 输入设备有2种类型: 一种是 随机访问 设备,QFile(文件)和QBuffer(缓存)是随机访问设备的例子。 另一种是

    2024年02月15日
    浏览(43)
  • centos7搭建apache作为文件站后,其他人无法访问解决办法

    在公司内网的一个虚拟机上搭建了httpsd服务,准备作为内部小伙伴们的文件站,但是搭建好之后发现别的小伙伴是无法访问我机器的。 于是寻找一下原因,排查步骤如下: 1.netstat -lnp 和 ps aux 先看下端口和 服务情况 发现均正常 2.自己查看自己的服务是否正常 通过curl 发现正

    2024年02月11日
    浏览(49)
  • 2. 如何通过公网IP&端口映射访问到设备的vmware虚拟机的ubuntu服务器

    中国移动公网IP申请过程 1. 主机设备是Windows 11系统 2. 安装vmware虚拟机 3. 创建ubuntu虚拟机(据说CentOS 7 明年就不维护了,就不用这个版本的linux了) 4. 安装nginx服务:默认端口80 5. 安装ssh服务:默认端口22 6. 设置主机 - ubuntu的端口映射 7. 设置路由器 - 主机的端口映射 8. 完成配置

    2024年02月05日
    浏览(51)
  • mac中的VirtualBox不能分配USB设备到虚拟电脑

    检查工具- 扩展包是否安装 检查usb设备是否打开 检查权限 允许VirtualBox访问:在“安全性与隐私”窗口中,选择“隐私”标签。 在左侧的列表中,滚动找到并选择“完全磁盘访问权限”(Full Disk Access)或者可能是“文件和文件夹”(Files and Folders)。 在右侧的应用程序列表

    2024年04月16日
    浏览(45)
  • 【Android】解决Android Studio中的虚拟设备无法上网问题

    前言 : 使用AndroidStudio自带的虚拟设备在调试软件时, 发现无法联网,然后用虚拟设备自带的浏览器进行网页访问也是失败的, 因此可以说明是整个虚拟设备是无法正常联网通讯的! 问题原因 :可能你的虚拟设备的DNS设置和你的电脑的DNS不在一个网段上,需要修改虚拟设备的

    2024年02月06日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包