面(Side)、磁道(Track)和扇区(Sector)
MBR简介:
MBR(Main Boot Record 主引记录)位于整个硬盘的 0 磁道 0 柱面 1 扇区。
在总共 512 字节的主引导扇区中,而它被分成三部分,MBR、DPT以及结束标志。
MBR 只占用了其中的 446 个字节,
另外的 64 个字节交给了DPT(Disk Partition Table 硬盘分区表),主分区表最多记录四个主分区的分区信息.每个分区占用 16byte.分区就是修改分区表,它不影响硬盘上的存储的数据。
超过 5 个以上的分区,可以将最多四个主分区中的一个分区类型改为扩展分区,然后在扩展分区中再建逻辑分区。逻辑分区的分区信息保存在扩展分区之中,叫做扩展分区表。
最后两个字节“55, AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。
格式化
分好区的硬盘分区上面什么数据也没有,操作系统也不能读写,为了让操作系统能够识别必须向分区中预写入一定格式的数据。这个过程就称之为格式化。
分区结构
superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等。
inode:记录档案的属性,一个档案占用一个 inode,用来记录文件的权限(r、w、x)、文件的所有者和属组、文件的大小、文件的状态改变时间(ctime)、文件的最近一次读取时间(atime)、文件的最近一次修改时间(mtime)、文件的数据真正保存的 block 编号。
block:实际记录档案的内容,若档案太大时,会占用多个 block,文件名记录在文件所在目录的 block 中。
注意:
1.inode 与 block 都有编号,而每个档案都会占用一个 inode ,inode 内则有档案数据放置的block 号码,如果能找到档案的inode 就可以找到档案。
2.在inode记录一个文件需要128字节大小的内存
EXT2文件系统
Ext2 文件系统在格式化的时候基本上是区分为多个区块群组 (block group) 的,每个区块群组都有独立的 inode/block/superblock 系统。
Superblock (超级区块):Superblock(大小为1024byte) 是记录整个 filesystem 相关信息的地方,
它记录的信息有如下:
- block与inode的总量
- 未使用和已经使用的inode/block的数量
- block和inode的大小(inode 固定为128byte,block可选,1k,2k,4k)
- 记录最近文件系统创建时间,操作时间的详细信息
- 记录此文件系统书否被挂载,vaild bit数值为1表示未挂载,0表示挂载。
Filesystem Description (档案系统描述说明)
记录每个block group从开始到结束的block的号码,以及说明每个区段 (superblock,bitmap, inodemap, data block) 分别位于哪一个 block 号码之间。
block bitmap (区块对照表):
就像是一张表记录的是,使用和未使用的block,以便系统调用,如果一个档案删除,它所占的block的区对照表也会被清除,这样block就会空出来。
inode bitmap (inode 对照表):
记录使用和未使用的inode号码。
data block (资料区块) :
data block 是用来放置档案内容数据地方,在 Ext2 文件系统中所支持癿 block 大小有 1K, 2K 及 4K三种而已。在格式化时 block 的大小就固定了,且每个 block 都有编号,以方便 inode的记录。
需要解决的问题:单个档案存储数据大小的限制
一个inode 128字节,每4个字节可以指向一个block,相当于,一个inode最多指向32个block,最多指向32×4k的数据。
按照这种逻辑方式,一个inode可以记录最大的文件就是为128k,但是实际情况却不是这样,在我们现在的系统中,有很多的文件都是大于128k的,如何解决这个问题呢?
系统将 inode 记录 block 号码的区域定义为 12 个直接,一个间接, 一个双间接和一个三间接记录区。
储存大文件时,间接记录区会作为延伸,并不会记录数据,而是像记录索引一样记录其他block信息,双间接和三间接同理。
- 间接记录区:4M
- 双间接:4G
- 三间接:4T
日志文件系统(Journaling filesystem)
该区块在记录写入或修订档案时的步骤
1. 预备:当系统要写入一个档案时,会先在日志记录区块中记录某个档案准备要写入的信息;
2. 实际写入:开始写入档案的权限与数据;开始更新 metadata 的数据;
3. 结束:完成数据与 metadata 的更新后,在日志记录区块当中完成该档案的记录。
功能是什么呢?
在这样的程序当中,万一数据的执行过程当中发生了问题,那么我们的系统只要去检查日志记录彔区块,就可以知道哪个档案发生了问题,针对该问题来做一致性的检查即可,而不必针对整块 filesystem 去检查, 这样就可以达到忚速修复 filesystem 的能力了.
注意:ext3文件系统相比ext2文件系统就多了一个日志文件系统的功能。
文件系统管理
1、查看文件夹大小
du [选项] [档案或目录名称]
选项:
选项 含义
-a 列出所有de 档案与目录容量,因为默认仅统计目录底下的档案量而已。
-h 以人们较易读的容量格式 (G/M) 显示;
-s 列出总量而已,而不列出每个各别癿目录占用容量
-S 不包括子目录下癿总计,与 -s 有点差别
-k 以 KBytes 列出容量显示
-m 以 MBytes 列出容量显示
2.实体链接与符号链接:ln
在读取文件时:
- 每个文件都独自占用一个 inode,文件内容由 inode 的记录来指向;
- 如果想要读取文件内容,就必须借助目录中记录的文件名找到该文件的 inode,才能成功找到文件内容所在的 block 块;
软链接,就是window系统的快捷方式
硬链接,我们知道,文件的基本信息都存储在 inode 中,而硬链接指的就是给一个文件的 inode 分配多个文件名,通过任何一个文件名,都可以找到此文件的 inode,从而读取该文件的数据信息。
和复制不同,硬链接的inode是指向同一个文件,修改其中一个,就都会修改,类似浅拷贝,也就是说同一个文件有几个inode,也就是这个文件有几个名字。
注意事项,硬链接是不能夸分区使用的。
磁盘分区
fdisk [选项] 装置名称
选项:
选项 | 含义 |
-l | 输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时,则系统将会把整个系统内能够搜索到的装置的 partition 均列出来 |
格式化分区(磁盘格式化)
mkfs [选项 文件系统格式] 装置文件名
选项:
选项 | 含义 |
-t | 可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效) |
磁盘挂载与卸除(mount,umount)
当我们格式化了以后理论就能使用这个分区来储存数据了,因为ext3文件管理系统已经可以管理这个分区了,但是,必须把分区挂载(mount)起来才能用:
挂载点的意义:
挂载点是目录,而这个目录是进去磁盘分区槽(其实是文件系统啦!)的入口。就比如一个房子的东西你全部建好了,但是没有一个地方可以进去,那岂不是建的再好都是没有意义了。
mount [-t 文件系统] [-L Label 名] [-o 额外选项] [-n] 装置文件名 挂载点
简单的命令: mount 外部设备 目录
选项参数:
选项参数 含义
-t 与fsck相似,指定一个文件系统类型,但是Linux可以自动分析Superblock的内容,从而分辨出文件系统的类型,这个参数一般可以省略。
-a 依照配置文件 /etc/fatab 的数据将所有为挂载的磁盘全部挂载上来
-l 单纯输入mount 会显示目前的挂载信息,加上 -l 可增加列Lable名称
-n 在默认情况下,系统会将实际挂载的情况实时写入 、/etc/mtab 中,但是某些情况下不会自动写入,比如单人维护模式,此时加上这个选项,就会写入了。
-L 系统除了利用装置文件名(如:/dev/sda5)之外,还可以利用文件系统的Labe进行挂载。
-o 此参数后面可以接一些挂载时额外加上的参数,比如说账号、密码、读取权限等。
umount [选项] 装置文件名或挂载点
选项:
选项 | 含义 |
-f | 强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情況下 |
-n | 不更新 /etc/mtab 情况下卸除 |
特殊装置 loop 挂载 (映象档案不刻录就挂载使用)
1.当你有下载了一个相对比加大的镜像文件,不一定需要刻录到实体光盘才能使用,可以使用特殊的装置 loop 来挂载。
2.建立大档案以制作 loop 装置档案
制作出一个大档案,然后将这个文件格式化后进行挂载,可以解决:很多系统的分割不良的情冴,比如,如果当初在分割时, 你叧有分割出一个根目彔,假设你已经没有多余的容量可以进行额外的分割,偏偏根目录的容量还很大! 此时你就能够制作出一个大档案,然后将这个档案挂载,这样就像是多了一个分区了。
使用命令:dd
内存置换空间(swap)的建立
swap 的功能就是在应付物理内存不足的情况下所造成的内存延伸记录的功能。一般来说,如果硬件的配备足够的话,那么 swap 应该不会被我们的系统所使用到, swap 会被利用到的时刻通常就是物理内存不足的情况了。
Swap空间的作用可简单描述为:当系统的物理内存不够用的时候,就需要将物理内存中的一部分空间释放出来,以供当前运行的程序使用。那些被释放的空间可能来自一些很长时间没有什么操作的程序,这些被释放的空间被临时保存到Swap空间中,等到那些程序要运行时,再从Swap中恢复保存的数据到内存中。
参考:
https://blog.youkuaiyun.com/qq_36243942/article/details/82820056