磁盘概念:track cylinder sector block等
side/ head
- 硬盘一般是由一片或几片圆形薄膜叠加而成。每个圆形薄膜都有两个”面”(Side),这两个面都是用来存储数据的。依次称为0面、1面、2面……由于每个面都专有一个读写磁头,也常用0头(head)、1头……称之。
- 硬盘面数(或头数),少的只有2面,多的可达数十面。
我们称这样的圆周为一个磁道(Track)。
磁头不动,就是在一个磁道上读写 磁头移动,就会在不同磁道上读写
距轴的距离相同的一组track
Command (m for help): n Command action p Partition number (1-4): 1 First cylinder (1-524, default 1): |
即使只读某一个字节,也必须一次把这个字节所在的扇区中的512字节全部读入内存
扇区号并不是连续紧挨着的,而是按照某个间隔跳跃着编排的。这个间隔就是交叉因子。
举个例子:在某个硬盘上,以实际存储位置而论,2号扇区并不是1号扇区后的第一个,而是第5个,3号扇区又是2号扇区后的第5个,以此类推。
这个”5″就是我们说的交叉因子。
2,10,7,21,3,11,8,22,4
- 选择适当的交叉因子,可使硬盘读写速度与硬盘的旋转速度相匹配,提高存储数据的速度
一个 Block 最多仅能容纳一个文件(即不存在多个文件同一个block的情况)
即如果一个文件比block小,他也会占用一个block,因而block中空余的空间会浪费掉
一个大文件,可以占多个甚至数十个成百上千的block
# df / /proc /var /var/run /tmp |
sector 是硬盘存取的最小单位,是512Bytes block是fs 存取的最小单位很单个文件的最小单位,可以随意设定, fs有自己缺省的block大小。
缺省是4096, 最大设置到8192(一般针对大文件系统)
所以应该根据自己系统应用的特点,合理规划block size
若block太大,则存取小文件时,有空间浪费的问题 若block太小,则硬盘的 Block 数目会大增,而造成 inode 在指向 block 时候的一些搜寻时间的增加,又会造成大文件读写方面的效率较差
# df -g / /proc /etc/mnttab |
superblock即每个分区上所建立的fs的第一个 block,就称做superblock super block 是从分区头的第1024byte以后开始的 super block也一共有 1024 bytes 那么大 superblock 上的内容,主要是描述文件系统FS的大小、空的和填满的block(s_blocks_count,s_r_blocks_count,s_free_blocks_count),以及他各自的总数和其他统计值
struct ext3_super_block { __u32 s_inodes_count; __u32 s_free_inodes_count; __u32 s_blocks_per_group; |