今天我来说说linux的文件系统;
首先谈一谈磁盘的构造与存取关系,一个硬盘有磁头和盘面组成,一般有多个磁头与多个盘面;当磁头固定不动时,光盘转动一圈就叫做磁轨。每条磁轨上有很多扇区,一个扇区的大小为512byte,柱面:相同磁轨的所有盘面;那么一个磁盘的容量计算公式为:柱面*磁头数*扇区数*512byte ;
MBR:为磁盘的第一个轨道的第一个扇区,里面记录了分区信息与引导系统地址;如果MBR损坏了,硬盘上的分区表也就没有了,系统也就不能启动。MBR空间有限,只能记录4个分区信息,如果分区超过4个,就得用扩展分区,所有的扩展分区都得从5开始;扩展分区的第一个扇区就是记录了扩展分区的分区表。
 
linux 的文件系统有ext2 ext3 等等。ext2没有日志记录功能,ext3则有;存文件时,是以block为最小存储单位,一般block大小为1 ,2 ,4k,比如一个文件大小为4K。如果block大小为1K,时,就得利用4block,而block为4K,只用一块BLCOK。当文件大小为1K,BLOCK为4K时,也得占用一个4K的空间,一个BLOCK只能放一个文件。BLOCK过大,过小都会影响速度。
当写入一个文件时,先记录一个INODE(记录了文件的属性与使用了那些块)再把文件内容写入块,所以,在查找文件时,都是先查找inode才能找到文件;这里问题就出来了。如果因为某些不可逆的错误,比如说掉电时。而硬盘正在写入文件,刚好写了INODE,而没有写入块,系统启动时,就会提示文件错误,这时就有可能花大量时间去fsck,这是我们不愿看到的,尤其是提供服务的机器。这时,还有日志记录功能的ext3就出来了。他记录了每当对硬盘进行一个操作时,都会进行记录,也就是说,当有文件出错时,只要调出记录,找到最近有改动的那个记录,进行FSCK就行了,不必像EXT2那样,因为不知道那个文件出了问题而全盘的CK,而浪费掉了大量时间;
我要我乐:www.5156bt.cn