我们通常在设备上(比如磁盘分区)上创建文件系统,这些存储设备能够以设备文件的形式来使用,如/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. 【算法拾遗(java描写叙述)】--- 插入排序(直接插入排序、希尔排序)

    插入排序基本思想 每次将一个待排序的记录按其keyword大小插入到前面已经拍好序的子文件的适当位置,直到全部记录插入完毕为止. 直接插入排序 基本思想 直接插入排序的基本操作是将一个记录插入到已排好 ...

  2. 用VMware 8安装Ubuntu 12.04具体过程(图解)

    图解演示环境版本号: 本机系统: WIN7 虚拟机:VMware Workstation 8 (英文版) 安装目标:Ubuntu Desktop 12.04 LTS  (请点击这里)先下载好iso镜像 ...

  3. JS鼠标的拖拽原理

    拖拽功能主要是用在让用户做一些自定义的动作,比如拖动排序,弹出框拖动移动等等,效果还是蛮不错的.下面讲解一下拖拽的原理,希望可以帮助到有需要的朋友! 一.拖拽的流程动作①鼠标按下②鼠标移动③鼠标松开 ...

  4. IDEA 2017破解 license server激活

    确保电脑在联网状态,在激活窗口选择license server 填入下面的license server: http://intellij.mandroid.cn/ http://idea.imsxm. ...

  5. LeetCode447. Number of Boomerangs

    Description Given n points in the plane that are all pairwise distinct, a "boomerang" is a ...

  6. mysql的binlog和slow_log慢日志

    redo undo 锁 ----------------------------------------- 日志管理 log-error=/var/log/mysql.log 二进制日志的“总闸” 作 ...

  7. asp.net 页面延时五秒,跳转到另外的页面

    asp.net 页面延时五秒,跳转到另外的页面的实现代码. --前台 <%@ Page Language="C#" AutoEventWireup="true&qu ...

  8. OpenGL ES andoid学习————1

    package com.xhm.getaccount; import javax.microedition.khronos.egl.EGLConfig; import javax.microediti ...

  9. 百度网盘不能绑定QQ

    一定要等!!!进度条!! 等全部加载完再点就可以了. 不然的话点关联账号的话会直接跳回个人信息页面. over. 百度账号(百度网盘)绑定QQ账号的页面为什么打不开 总会跳转到个人信息界面,和没点一样 ...

  10. mysql增加自定义函数功能

    mysql默认是不能自定义函数的 当create function时 This function has none of DETERMINISTIC, NO SQL, or READS SQL DAT ...