硬盘原理
硬盘由一个一个磁盘堆叠组成,其中每个磁盘上的一个个同心圆环为磁轨或磁道,不同磁盘的相同半径的磁轨组成的圆柱体成为磁柱。每个磁柱是磁盘分割的最小单位。
由圆心向外划的直线会将磁道分割成一个一个扇区,扇区是数据存储的最小单位。
每个磁盘上都有对应的机械臂和磁头,用来读取数据,磁头和磁盘的接触比较细微,所以震动或者污渍很容易造成磁盘的损坏。
磁盘分割
磁盘分割就是把硬盘分成几个逻辑区域,并规定每个区域对应的磁柱范围。这样做的好处就是,当一个分区的数据损坏时,不影响其他分区的数据。并且规定了每个分区的存储容量,可以充分保障分区之间不发生容量竞争。
分区的信息记录在主引导记录( Master Boot Recorder, MBR )。它的位置处于第一个硬盘的第0个磁轨上。这个区域除了放置硬盘信息,还保存着开机需要读取的信息和执行程序的入口。
MBR只支持4个主分区,或者3个主分区+1个扩展分区。主分区是独立的,划分好了之后不能再次分区的区域。而扩展分区必须要再次划分逻辑区域才可以使用。硬盘容量必须全部分配相应的分区才可以使用,不然就会浪费相应的资源。
由于MBR不能支持大于2T的硬盘,所以现在更多的采用全局唯一标识分区表(GUID Partition Table,GPT)来记录硬盘分区信息。
文件系统
将分割后的分区格式化为操作系统识别的文件系统后便可以使用其存储文件了,每个系统识别的文件系统不同,所以要格式化成系统识别的才可以。常用的文件系统有:ext2、ext3、ext4、swap、vfat 等
逻辑区块
上面说到硬盘存储的最小单位是扇区,但是实际文件系统在存储数据的时候是以逻辑区块(block)为最小单位来存取的。因为扇区的单位对于某些大型文件来说太小了,会增加巨大的读取次数。一般以2的次方倍数规划逻辑区块的大小。但是逻辑区块容量太大在存储一些较小文件时会带来资源浪费的情况。
每个分区的开头都有一个superblock,用来记录当前分区大小和其中的逻辑分区的概览信息(数量和大小)以及使用情况。
文件特点
文件具有两部分组成,第一部分是文件或目录的属性,包括:拥有者、所在组群、类型、大小、相对应的权限、建立时间,以及具体数据放置的位置信息等,文件系统用inode来存储。
另外一部分就是文件或者目录的数据部分了,用block来存储。inode会指向对应的block。
文件和目录
文件的inode保存的是文件的属性信息,和指向的block地址。block中保存的文件的内容,包括名称和正文。
目录的inode保存的是目录的属性信息,同时也指向block地址。block中保存的是目录下面存放的文件的inode的地址。
如何识别文件和目录呢,通过ls -l
命令就可以了,开头是“d”的是文件,开头是“-”的是目录。
挂载点
挂载点是操作系统使用分区的入口,一个分区一个挂载点。每个分区的inode是独立计数的,一般从2开始,通过ls -il
可以看到最开始的一串数字就是每个文件或档案的inode编号。