目录

硬盘结构

我们这此写的是机械硬盘。来看看构成把,磁盘结构由盘片(Platters,有磁性),轴,马达,磁头(Heads)组成。硬盘数据存贮在盘片(Platters)中。

磁头

由磁头(读写头)读写数据。每个盘(碟)片,都有两面,一般4个盘片,0-7 面 共 8 面可用,双面进行存贮数据,因此也会相对应每盘片有 2 个磁头。

platters.png

当磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做 磁道-A(Track,以轴为中心组成的同心圆),数据就存在两条线之间,整圈磁道分为多段每段叫 扇区-C(Sector),不同盘片上相同编号的磁道组成 柱面-B(Cylinder扇面),D:簇(扇区组)。

盘片是高速旋转时,磁头伸缩(悬浮在盘片上)读取数据,在旋转同时读取AB两个数据时,磁头不一定就刚好停在 A,那么就要等待下一圈,这叫磁盘延时也称寻道时间或寻址时间。那盘片旋转越快磁盘延时就越小,读取数据越快,一般台式机 7200/S,笔记本 5400/S。

Platter-structure.png

运行状态

视频引用自维基百科 https://upload.wikimedia.org/wikipedia/commons/c/c5/HardDisk1.ogv

MBR(Master Boot Record)

主引导记录,位于0 磁道 0 柱面 1 扇区,共 512Byte,由三部分组成,第一部分 446Byte 的 boot loader(启动加载器,存放引导代码),第二部分 64Byte 的磁盘分区表,每个分区占据 16 字节,第三部分 2Byte 的 magic number,用于检查 MBR 是否有效。

在存贮数据的时候,一般把经常读取的数据放到最外围磁道,

磁盘分区表共64字节,每个分区占据16字节,主分区:主分区+扩展分区只能 <=4,扩展分区:占用16字节空间,并且值能有一个,扩展分区是一个指针,指向磁盘另外的位置,不能直接存储数据,如果要想存储数据,需在扩展分区上建立逻辑分区,逻辑分区可以有多个。

低级格式化:
高级格式化:

文件系统:可以理解成一种软件。

block/inode/super block 和链接文件

block:block 是记录文件内容的那个区域(位置),ext3 文件系统中每个 block 默认大小 4K

文件系统:软件(XFS,NTFS,FAT,EXT3,EXT4等),存贮数据或文件的一种格式,文件系统不存在分区之上,它位于磁盘的某一个位置。文件系统把分区分割成两部分,第一部分存放元数据(metadata),另一部分存放真实数据。元数据和数据本身没有关系,包括的是数据属性,比如数据归属,数据权限,数据时间戳。这块区域叫 inode(index node),这些信息也在元数据中占据空间大小,它不包括文件名,每个 block 都有对应的 inode,同一个 inode 可以指向多个文件。

磁盘工作原理:存贮数据的时候会对每一个 block 进行扫描,如果数据量大了速度就非常慢。在元数据区域内有一个 block bitmap 区域,用于标记 block 是否被使用,使用了把某一位标记成1(不是整个数据块),没使用标记成 0,这样就不用去遍历数据块了。

super block(超级块):管理元数据区域内的其他区域

删除文件:把数据对应的 inode 和 block 变成 0,实际数据并没删除,但原有 inode 和 block 被覆盖或使用了则无法恢复。
新建文件:寻找一个没被使用过的 inode 值和 block,把数据填充进来(占位),block 会准备多于实际情况所占用的 block,防止磁盘碎片的产生(碎片会使硬盘执行能够降低计算机速度的额外工作)。
复制文件:建立新文件
移动文件:改变 inode 和 block 的值,不对数据操作。

链接文件:分为软连接(符号链接)与硬链接(hard links)
语法:ln [options] src_file des_file
选项:

  • -s,创建软连接,不加选项为硬链接
  • -v,显示详细过程

先 touch 一个文件 1.txt,可以看到默认硬链接次数为 1,inode是 16797806。用 ln 给 1.txt 个硬链接。

hard-link01.PNG

做硬链接过程中不会对数据进行改变,硬链接过后操作 A.txt 就相当于操作 1.txt,当然操作 1.txt 也是同理(它们 inode 相同)。如果你不小心删掉了 1.txt 源文件也没事,目标文件 A.txt 还在(还有其他文件指向那个 inode,inode 存在,block 也就存在)。inode 还是一样(指向同一个节点)硬链接次数为 2,硬链接的目标文件不会占用磁盘空间,硬链接有限制:不能跨文件系统(指向一个 inode 节点),只能对文件链接不能链接目录。

hard-link02.PNG

来看看软连接

软连接时要记得要使用绝对路径,源文件 1.txt 与目标文件 f.txt 的 inode 不一样,所以当你删除 f.txt 时源文件不会受影响。还有两个地方要注意,第一个是目标文件大小这里的大小是指向的是源文件路径字符个数,第二个是目标文件权限,它的权限居然是 777,要注意这个应当是源文件的权限。软连接可以跨文件系统建立,可以为文件或目录建立。再来看一种情况没有源文件,下图是删除源文件后的样子。

symbolic

这里 f.txt 指向的源文件不存在,它会闪烁。我们随便拿一个文件过来命名为 1.txt 为源文件顶替一下。

symbolic-link02.gif

现在恢复正常了,说明软连接只要路径文件名存在就行,并不区分具体文件内容。

symbolic-link03.png

参考资料

最近更新:

发布时间:

摆哈儿龙门阵