Linux入职基础-3.5_设备文件loop

本文详细介绍Linux系统中的循环设备(loop),包括其基本概念、用途及如何通过losetup工具将文件虚拟成块设备,以便挂载和使用。并通过创建磁盘镜像、挂载光盘镜像及解决目录空间不足三个实例,展示loop设备的具体应用。

设备文件loop

静态设备目录/dev可以用 makedev 脚本创建,或者动态地由设备文件系统( udev )设施创建。 /dev/loop循环设备是一种伪设备,它的管理界面是losetup,本质上是 util-linux 软件包的一部分。

一、loop基本介绍

功能:

循环设备可把文件虚拟成块设备,籍此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。

用途:

经常被用于光盘或是磁盘镜像(*.iso、*.img)等文件或者自定义, 把这些文件 mount 到当前文件系统的一个目录下。

用法:

/dev/loop 循环设备与一个文件进行连接,这样关联的文件模拟成如同一个块设备,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。很神奇吧!

以下是我们Linux系统默认生成的loop设备文件0-7 是编号:

##一个设备只能挂载一次,上图说明系统默认生成8个可用的挂载。

二、实例演示

示例1:利用磁盘镜象文件

1)创建空的磁盘镜像文件,这里创建一个1.44M的软盘

[root@localhost~]# dd if=/dev/zero of=fd.img bs=256 count=5760

2)使用 losetup将磁盘镜像文件虚拟成快设备

[root@localhost~]# losetup /dev/loop0 fd.img

3)格式化块设备的文件系统类型

[root@localhost~]# mkfs –t  vfat  fd.img

4)挂载块设备

[root@localhost~]# mkdir /mnt/fd

[root@localhost~]# mount  /dev/loop0  /mnt/fd

[root@localhost~]#echo “this is loop file” > /mnt/fd/loopdata.txt

[root@localhost~]# cat /mnt/fd/loopdata.txt

this is loop file”

5)卸载loop设备                   

[root@localhost ~]#losetup -a

      [root@localhost ~]# umount /mnt/fd

      [root@localhost ~]#losetup -d /dev/loop0

示例2:挂载光盘DVD的镜像文件

镜像文件不需要刻录就可以直接挂载。

#首先把它们复制到当前目录下,iso文件存放于usb接口的U盘

[root@localhost~]#mount /dev/sdb4  /mnt/usb    #挂载U盘

[root@localhost~]#cp /mnt/usb/ centos5.3_x86_64.iso  ./

#卸载U盘,,挂载镜像文件

[root@localhost~]#umount /dev/sdb4

[root@localhost ~]#mount -o loop  /root/centos5.3_x86_64.iso  /mnt/centos_dvd

#进入目录,使用文件

[root@localhost ~]cd/mnt/centos_dvd

解释这条命令:mount -o loop /root/centos5.3_x86_64.iso /mnt/centos_dvd

上述这条命令执行过程其实等价于以下两条命令:

losetup  /dev/loop0  /root/centos5.3_x86_64.iso  #使DVD的镜像文件与循环设备连结起来

mount  /dev/loop0  /mnt/centos_dvd    ##将循环设备 mount 到目录 centos_dvd下

示例3:解决目录空间不足

在某目录的空间不够用,而别的目录还有很大空间,则可在该目录下新建大文件,用它制作loop设备文件。

#查看/tmp目录使用情况,可用空间为0了

[root@localhostusb]# df -h /tmp

#拷贝文件打到/tmp,提示空间不够。

#查询/hom目录还有很大空间,可以拿来用用

[root@localhostusb]# df -h /home

##现在我们可/home目录下新建大文件,用它制作loop设备文件。在这里需要用到上节介绍的设备文件/dev/zero,若不了解,请到我上节介绍:《设备文件zero与null》

[root@localhost~]# dd if=/dev/zero of=/home/loopdev bs=M count=800

[root@localhost~]# mkfs -t ext2 /home/loopdev

[root@localhost~]# mkdir /tmp/loopdev_test

[root@localhost~]# mount -o loop /home/loopdev /tmp/loopdev_test

示例3:查看所有与文件相关联的 loop 设备

[root@localhost~]# losetup -a

#现在,我们增加800M的设备文件挂载到/tmp目录下,可继续往/tmp/下的子目录写文件了,拷贝成功,如下:

#从上图得出,使用/dev/loop循环设备文件可以成功借用其它目录的空间。

 


由于提供的引用内容与解决“/work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img.tmp_mnt不是挂载点”的问题无关,下面是通用的解决思路: ### 确认挂载情况 使用 `mount` 命令查看当前系统的挂载信息,确认 `/work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img.tmp_mnt` 是否真的未被挂载: ```bash mount ``` ### 挂载文件系统 如果该目录确实未挂载,需要进行挂载操作。假设要挂载的文件系统是 `A_gos0 - rw - overlay_34_ext4.img`,可以使用以下命令进行挂载: ```bash sudo mount -o loop /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img.tmp_mnt ``` 这里使用了 `-o loop` 选项,因为是挂载一个镜像文件。 ### 检查文件系统类型 如果挂载失败,可能是文件系统类型不匹配。可以使用 `file` 命令检查文件系统类型: ```bash file /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img ``` 然后在挂载时指定正确的文件系统类型,例如 `ext4`: ```bash sudo mount -t ext4 -o loop /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img.tmp_mnt ``` ### 检查目录权限 确保挂载目录具有正确的权限,可以使用以下命令修改权限: ```bash sudo chmod -R 777 /work/workspace/ipu14_thor - u/ipu14_soc_linux/BSPOUT/642 - 63960 - 0010 - 000_TS1/flash - images/A_gos0 - rw - overlay_34_ext4.img.tmp_mnt ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值