Linux入职基础-3.5_设备文件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循环设备文件可以成功借用其它目录的空间。

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值