文件作为块设备访问

简介: 1. loop设备介绍     在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。在使用之前,一个 loop 设备必须要和一个文件进行连接。

1. loop设备介绍

    在类 UNIX 系统里,loop 设备是一种伪设备(pseudo-device),或者也可以说是仿真设备。它能使我们像块设备一样访问一个文件。
在使用之前,一个 loop 设备必须要和一个文件进行连接。这种结合方式给用户提供了一个替代块特殊文件的接口。因此,如果这个文件包含有一个完整的文件系统,那么这个文件就可以像一个磁盘设备一样被 mount 起来。
    上面说的文件格式,我们经常见到的是 CD 或 DVD 的 ISO 光盘镜像文件或者是软盘(硬盘)的 *.img 镜像文件。通过这种 loop mount (回环mount)的方式,这些镜像文件就可以被 mount 到当前文件系统的一个目录下。
    至此,顺便可以再理解一下 loop 之含义:对于第一层文件系统,它直接安装在我们计算机的物理设备之上;而对于这种被 mount 起来的镜像文件(它也包含有文件系统),它是建立在第一层文件系统之上,这样看来,它就像是在第一层文件系统之上再绕了一圈的文件系统,所以称为 loop。

2. losetup命令

    losetup [ -e encryption ] [ -o offset ] loop_device file
    losetup [ -d ] loop_device

说明
此命令用来设置循环设备。循环设备可把文件虚拟成块设备,籍此来模拟整个文件系统,让用户得以将其视为硬盘驱动器,光驱或软驱等设备,并挂入当作目录来使用。
上面,命令格式中的选项与参数名:
-e 表示加密的方式
-o 设置数据偏移量
-d 卸载设备
loop_device 循环设备名,在 linux 下如 /dev/loop0 , /dev/loop1 等。

file 要与循环设备相关联的文件名,这个往往是一个磁盘镜象文件,如 *.img

3. 使用举例

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

          $ dd if=/dev/zero of=floppy.img bs=512 count=2880

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

          $ losetup /dev/loop1 floppy.img

(3)挂载块设备

          $ mount /dev/loop0 /tmp

    经过上面的三步之后,我们就可以通过/tmp目录,像访问真实快设备一样来访问磁盘镜像文件floppy.img。

(4) 卸载loop设备

          $ umount /tmp

          $ losetup -d /dev/loop1

 

如何挂载一个镜像文件(how to mount an image file)

http://smilejay.com/2012/08/mount-an-image-file/

或者可以使用qemu自带的一个工具qemu-nbd来挂载一个客户机。

http://smilejay.com/2012/11/how-to-mount-a-qcow2-image/

相关文章
|
1月前
|
缓存 算法 Linux
块设备 I/O 请求送达到外部设备
【10月更文挑战第4天】这段内容介绍了Linux中ext4文件系统的I/O操作处理方式,包括直接I/O和缓存I/O。直接I/O通过`ext4_direct_IO`向设备层写入数据,而缓存I/O则先将数据复制到内存缓存并标记为脏页,再由定时器触发写操作,最终调用`ext4_writepages`写入硬盘。文中还描述了几种电梯算法,如Noop、Deadline和CFQ,并解释了RAID和LVM环境下块设备的I/O请求处理流程。
|
5月前
|
存储 固态存储 文件存储
磁盘文件的读写是怎样进行的
深入理解磁盘文件读写操作
|
Linux
7.2 文件系统的简单操作
7.2 文件系统的简单操作
73 0
|
存储 缓存 算法
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(下)
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(下)
205 1
|
存储 Linux 索引
Linux文件系统inode的作用
前面学习了磁盘管理中的磁盘分区,以及逻辑卷,交换分区的创建,这篇文章将介绍一下我们在分区以及格式化时候用到的ext4文件系统,本盘文章的学习内容包括了解索引(index)和块(block)的作用。
130 0
|
存储 Linux 编译器
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(上)
【Linux】基础IO(二)--- 理解内核级和用户级缓冲区、磁盘与ext系列文件系统、inode与软硬连接(上)
246 0
Linux文件系统(四)文件系统管理命令
Linux文件系统(四)文件系统管理命令
|
存储 Linux Windows
理解文件系统/inode的概念/磁盘/软硬链接
本文目标:⭐理解文件系统中inode的概念⭐认识软硬链接,对比区别。讲解了文件系统,加深了对文件的理解,与此同时对于磁盘的理解也有很大的帮助!
理解文件系统/inode的概念/磁盘/软硬链接
服务器之间挂载共享磁盘目录
服务器之间挂载共享磁盘目录
413 0
|
Linux Shell
内核模块中对文件的读写
平时网络部分的东西碰的多些,这块一开始还真不知道怎么写,因为肯定和在用户空间下是不同的。google过后,得到以下答案。一般可以用两种方法:第一种是用系统调用。第二种方法是filp->open()等函数。下面分别来说下这两种方法。 1 利用系统调用: sys_open,sys_write,sys_read等。 其实分析过sys_open可以知道,最后调用的也是filp->open。 sys_open ==> do_sys_open ==> filp->open 在linuxsir上的一个帖子,上面一个版主说:sys_open和进程紧密相关,往往不在内核中使用。 而其实sys_open最后也
439 0