dd中ibs/obs/bs的用途

Met*_*hos 5 linux filesystems file-io

我有一个脚本,可以在linux机器上的文件中创建文件系统.我看到要创建文件系统,它使用'dd'和bs = x选项,从/ dev/zero读取并写入文件.我认为通常指定ibs/obs/bs对于从真实硬件设备读取是有用的,因为具有特定的块大小限制.但是,在这种情况下,当它从虚拟设备读取并写入文件时,我看不到使用'bs = x bytes'选项背后的任何意义.我的理解在这里错了吗?(以防如果有帮助,此文件系统稍后用于启动qemu vm)

Jon*_*ler 11

要了解块大小,您必须熟悉磁带驱动器.如果您对磁带驱动器不感兴趣 - 例如,您认为自己不会使用磁带驱动器 - 那么您现在可以回去睡觉了.

还记得60年代,70年代甚至80年代的电影中的磁带驱动器吗?卷轴旋转的那些,依此类推?不是你的Exabyte甚至是QIC - 四分之一英寸盒式磁带; 你老式的卷轴式半英寸磁带机?在那些,块大小很重要.

磁带上的数据是用块写的.每个块通过记录间隙与下一个块分开.

----+-------+-----+-------+-----+----
... | block | IRG | block | IRG | ...
----+-------+-----+-------+-----+----
Run Code Online (Sandbox Code Playgroud)

根据磁带机硬件和软件的不同,可能会出现各种问题.例如,如果磁带写入块大小为5120字节并且您读取块大小为512字节的磁带,则磁带驱动器可能会读取第一个块,返回512字节,然后丢弃剩余的磁带数据; 下一个读取将从下一个块开始.相反,如果磁带写入的块大小为512字节,并且您请求的块为5120字节,那么您将获得短读取; 每次读取只返回512个字节,如果你的软件没有注意,你就会读垃圾.还有一个问题是磁带驱动器必须加快读取块的速度,然后放慢速度.ASCII艺术表明IRG小于数据块; 不一定是这种情况.并且花了一些时间来读取一个块,超过IRG,向后倒退到达下一个块,然后再次向前开始.如果磁带驱动器没有内存来缓冲数据 - 便宜的那些没有 - 那么你可能会严重影响磁带驱动器的性能.

战争故事:在更新的机器上准备工作,带有更现代的磁带机.我使用tar编写了一个没有合理块大小的磁带(所以默认为512字节).这是一个很大的软件 - 一定是哦,总共不到100 MB(很久以前,换句话说).磁带写得很好,因为机器足够现代,只需几秒钟就可以完成.但是,我必须在带有旧磁带驱动器的机器上从磁带上取下材料,这个磁带驱动器没有任何板载缓冲器.因此,它一次读取材料,512字节,卷轴向前摇动,读取一个块,然后向后摇动所有半英寸,然后向前读取到下一个块,然后摇回来,并且......好吧,你可以看到它这样做,并且因为它花费了相当多的时间来读取每个512字节块,所以花费的总时间是可怕的.我的航班准备离开......我也需要获取这些数据.(它已经足够久了,而且在一片足够远的地方,最后一刻改变飞行也不是一个选择.)长话短说,它确实被读了 - 但是如果我用了一个合理的块大小(例如5120字节而不是默认值512),我会做得更多,更快,并且失去飞机的危险要小得多(但我确实赶上飞机,可能需要20分钟,尽管在高峰时间乘坐出租车穿过巴黎).

使用更现代的磁带驱动器,驱动器上有足够的内存来进行缓冲并使磁带驱动器流式传输 - 连续写入而不会反转 - 这是可行的.过去,我会使用256 KB的块大小来获取流式传输QIC磁带.我最近没有对磁带驱动器做过多少工作 - 让我们看看,不是这个千年,而是在此之前几年也没有多少; 当然CD和DVD成为首选的软件分发机制(当没有使用电子下载时)并不多.

但是在过去,块大小确实很重要.并dd为它提供了良好的支持.您甚至可以通过将ibs(输入块大小)与obs(输出块大小)分开指定,将数据从使用4 KB块写入的磁带驱动器传输到另一个要写入的磁带驱动器,例如16 KB块..达恩有用!

此外,count参数是根据(输入)块大小.说' dd bs=1024 count=1024 if=/dev/zero of=/my/file/of/zeroes'复制1 MB的零值是很有用的.或者复制1 MB的文件.

重要性dd大大减弱; 对于任何使用磁带驱动器十年或更久以前的人来说,它是军械库的重要组成部分.


mar*_*k4o 4

块大小是一次读取和写入的字节数。大概有一个count=选项,并且以块大小为单位指定。如果有skip=orseek=选项,它们也将以块大小为单位。但是,如果您正在读取和写入常规文件,并且没有磁盘错误,那么块大小并不重要,只要您可以相应地缩放这些参数并且它们仍然是整数即可。然而,某些尺寸可能比其他尺寸更有效。