我们通常在设备上(比如磁盘分区)上创建文件系统,这些存储设备能够以设备文件的形式来使用,如/dev/device_name。为了使用存储设备上的文件系统,我们将其挂载到挂载点。

环回文件系统是指那些在文件中而非物理设备中创建的文件系统。我们也可以将这些文件作为文件系统挂载到挂载点上。

dd的帮助已经非常详细

[root@future ~]# dd --help
用法:dd [操作数] ...
 或:dd 选项
Copy a file, converting and formatting according to the operands. bs=BYTES read and write BYTES bytes at a time (also see ibs=,obs=)
cbs=BYTES convert BYTES bytes at a time
conv=CONVS convert the file as per the comma separated symbol list
count=N copy only N input blocks
ibs=BYTES read BYTES bytes at a time (default: )
if=FILE read from FILE instead of stdin
iflag=FLAGS read as per the comma separated symbol list
obs=BYTES write BYTES bytes at a time (default: )
of=FILE write to FILE instead of stdout
oflag=FLAGS write as per the comma separated symbol list
seek=BLOCKS skip BLOCKS obs-sized blocks at start of output
skip=BLOCKS skip BLOCKS ibs-sized blocks at start of input
status=WHICH WHICH info to suppress outputting to stderr;
'noxfer' suppresses transfer stats, 'none' suppresses all 块和字节数后可能带有以下的一个或多个后缀:
c =, w =, b =, kB =, K =, MB =*, M =*, xM =M
GB =**, G =**, and so on for T, P, E, Z, Y. 每个 CONV 符号可能为: ascii 由EBCDIC 码转换至ASCII 码
ebcdic 由ASCII 码转换至EBCDIC 码
ibm 由ASCII 码转换至替换的EBCDIC 码
block 将结束字符块里的换行替换成等长的空格
unblock 将cbs 大小的块中尾部的空格替换为一个换行符
lcase 将大写字符转换为小写
nocreat do not create the output file
excl fail if the output file already exists
notrunc do not truncate the output file
ucase change lower case to upper case
sparse try to seek rather than write the output for NUL input blocks
swab swap every pair of input bytes
noerror 读取数据发生错误后仍然继续
sync 把每个输入的块以 NUL 填充至 ibs 的大小
如果配合 block 或 unblock 使用, 则以空格代替 NUL 填充
fdatasync 结束前将输出文件数据写入磁盘
fsync 类似上面,但是元数据也一同写入 FLAG 符号可以是: append 追加模式(仅对输出有意义;隐含了conv=notrunc)
direct 使用直接I/O 存取模式
directory 除非是目录,否则 directory 失败
dsync 使用同步I/O 存取模式
sync 与上者类似,但同时也对元数据生效
fullblock 为输入积累完整块(仅iflag)
nonblock 使用无阻塞I/O 存取模式
noatime 不更新存取时间
noctty 不根据文件指派控制终端
nofollow 不跟随链接文件
count_bytes treat 'count=N' as a byte count (iflag only) 对运行中的"dd"进程发送一个USR1 信号会使得
I/O 的统计信息被打印到标准错误设备然后恢复复制操作。 $ dd if=/dev/zero of=/dev/null& pid=$!
$ kill -USR1 $pid; sleep ; kill $pid
+ records in
+ records out
bytes (9.4 GB) copied, 34.6279 seconds, MB/s 可用选项有: --help 显示此帮助信息并退出
--version 显示版本信息并退出 请向bug-coreutils@gnu.org 报告dd 的错误
GNU coreutils 项目主页:<http://www.gnu.org/software/coreutils/>
GNU 软件一般性帮助:<http://www.gnu.org/gethelp/>
请向<http://translationproject.org/team/zh_CN.html> 报告dd 的翻译错误
要获取完整文档,请运行:info coreutils 'dd invocation'

实例:

问题1:在大小为1GB的文件中创建ext4文件系统、

解答:

1.创建一个1G大小的文件,命名为lookbackfile.img

[root@future ~]# dd if=/dev/zero of=lookbackfile.img bs=1G count=
记录了1+ 的读入
记录了1+ 的写出
1073741824字节(1.1 GB)已复制,33.9402 秒,31.6 MB/秒

之所以创建的文件是1.1G,是因为硬盘作为块设备,其分配存储空间时是按照块大小的整数倍进行的。

2.使用mkfs命令将1GB文件格式化问ext4文件

[root@future ~]# mkfs.ext4 lookbackfile.img
mke2fs 1.41. (-May-)
lookbackfile.img is not a block special device.
无论如何也要继续? (y,n) y
文件系统标签=
操作系统:Linux
块大小= (log=)
分块大小= (log=)
Stride= blocks, Stripe width= blocks
inodes, blocks
blocks (5.00%) reserved for the super user
第一个数据块=
Maximum filesystem blocks=
block groups
blocks per group, fragments per group
inodes per group
Superblock backups stored on blocks:
, , , 正在写入inode表: 完成
Creating journal ( blocks): 完成
Writing superblocks and filesystem accounting information: 完成 This filesystem will be automatically checked every mounts or
days, whichever comes first. Use tune2fs -c or -i to override.

3.检查文件系统

[root@future ~]# file lookbackfile.img
lookbackfile.img: Linux rev 1.0 ext4 filesystem data (extents) (large files) (huge files)

4.挂载环回文件

[root@future ~]# mount -o loop lookbackfile.img /mnt/loopback/

在内部,这个环回文件挂载到了/dev/loop1设备上。

或者使用

[root@future ~]# losetup /dev/loop1 lookbackfile.img
[root@future ~]# mount /dev/loop1 /mnt/loopback/

5.查看是否挂载上了

[root@future dev]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_future-lv_root
18G .6G 12G % /
tmpfs 491M 80K 491M % /dev/shm
/dev/sda1 477M 29M 424M % /boot
/dev/sr0 .4G .4G % /media/CentOS_6.6_Final
/root/lookbackfile.img
976M 1.3M 924M % /mnt/loopback

原理:

dd命令创建了一个文件,准备将其做为环回文件使用。dd是一个用于复制原始数据的通用命令。它将数据从if参数指定的文件复制到of参数指定的文件中。另外,我们指定的dd以大小为1GB的块为单位进行复制,共复制了1块,这样就创建了一个1GB的文件。/dev/zero是一个特殊的文件,如果读取这个文件,读出来的内容都是0。

当mount知道它使用的是环回文件时,它会自动在/dev中建立一个对应该环回文件的设备,并进行挂载。如果想手动挂载,可以使用losetup命令建立设备,然后使用mount命令进行挂载。

参考资料:《linux shell脚本攻略》

linux环回文件的更多相关文章

  1. Linux下文件的三种时间戳

    Linux下文件的三种时间标记 三种时间对应关系表 column column column 访问时间 Access atime 修改时间 Modify mtime 状态改动时间 Change cti ...

  2. linux日志文件

    linux日志文件 在系统运行正常的情况下学习了解这些不同的日志文件有助于你在遇到紧急情况时从容找出问题并加以解决. /var/log/messages — 包括整体系统信息,其中也包含系统启动期间的 ...

  3. linux建立文件夹软连接

    linux建立文件夹软连接,并强制覆盖 ln -sfn /home/var/log/httpd/logs logs 这将在当前目录下建立logs软连接,指向/home/var/log/httpd/lo ...

  4. windows与linux之间文件的传输方式总结(转)

    当然,windows与linux之间文件的传输的两种方式有很多,这里就仅仅列出工作中遇到的,作为笔记: 方法一:安装SSH Secure Shell Client客户端 安装即可登录直接拖拉到linu ...

  5. Linux - 日志文件

    Linux日志文件绝大多数存放在/var/log目录,其中一些日志文件由应用程序创建,其他的则通过syslog来创建. Linux系统日志文件通过syslog守护程序在syslog套接字/dev/lo ...

  6. linux下文件结束符

    linux下文件结束符,我试过了所有的linux,发现其文件的结束符都是以0a即LF结束的,这个是操作系统规定的,windows下是\r\n符结束,希望可以帮助大家. -------------转:来 ...

  7. Linux查看文件编码格式及文件编码转换

    Linux查看文件编码格式及文件编码转换   如果你需要在Linux 中操作windows下的文件,那么你可能会经常遇到文件编码转换的问题.Windows中默认的文件格式是GBK(gb2312),而L ...

  8. (转载)使用 udev 高效、动态地管理 Linux 设备文件

    概述: Linux 用户常常会很难鉴别同一类型的设备名,比如 eth0, eth1, sda, sdb 等等.通过观察这些设备的内核设备名称,用户通常能知道这些是什么类型的设备,但是不知道哪一个设备是 ...

  9. Linux下文件重命名、创建、删除、修改及保存文件

    一.重命名(更名) linux 给文件改名的命令是mv命令 mv命令来为文件或目录改名或将文件由一个目录移入另一个目录中.该命令等同于DOS系统下的ren和move命令的组合.它的使用权限是所有用户. ...

随机推荐

  1. android proguard 保留内部类

    今天在使用Proguard keep一个 静态内部类的时候,混淆完之后一直找不到那个静态内部类,内心抓狂啊. 最后在stackoverflow上找到了答案: -keepattributes Excep ...

  2. C# 通过 AppDomain 应用程序域实现程序集动态卸载或加载

    AppDomain 表示应用程序域,它是一个应用程序在其中执行的独立环境.每个应用程序只有一个主应用程序域,但是一个应用程序可以创建多个子应用程序域. 因此可以通过 AppDomain 创建新的应用程 ...

  3. 李洪强经典面试题47--UNIX常用命令

    可能碰到的iOS笔试面试题(3)--UNIX常用命令 做开发说用不到命令行,那肯定是不可能的.所以记住几个常用的命令还是很有用. cd 改变工作目录 pwd 输出当前工作目录的绝对路径在UNIX中要执 ...

  4. Visual Studio 调试小技巧-从查看窗口得到更多信息(转)

    原文地址:http://blog.csdn.net/cadcisdhht/article/details/5651488

  5. python第四周迭代器生成器序列化面向过程递归

      第一节装饰器复习和知识储备------------ 第一节装饰器复习和知识储备------------ def wrapper(*args,**kwargs): index(*args,**kwa ...

  6. JavaScript 对大小写敏感。

    JavaScript 对大小写是敏感的. 当编写 JavaScript 语句时,请留意是否关闭大小写切换键. 函数 getElementById 与 getElementbyID 是不同的. 同样,变 ...

  7. Unity3D学习笔记——NGUI之UIGrid

    UIGrid:这个组件可以轻松的让你排列你的组件,并且在运行或是编辑的时候都可以. 效果图如下: 一:使用步骤 1.选择一个panel然后右键Create——Grid 2.为Grid创建几个子Spri ...

  8. 【转发】linux开发人员常用命令

    每个开发人员到了他们职业人生的某个阶段的时候,将会发现自己要寻找有关Linux的信息.我并不是这方面的专家.但是掌握了以下8个命令,我几乎可以得到我任何需要的东西. 注意:以下的命令都有很多扩展的文档 ...

  9. hdu 4681(枚举+dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4681 思路:首先预处理出串C在A,B中的所有的位置,然后从前向后求一次最长公共子序列,从后向前求一次最 ...

  10. Laravel 的中大型专案架构

    好文:http://oomusou.io/laravel/laravel-architecture/