知识关联
- 底层 硬盘
- 中间层 文件系统
- 上层 文件io
硬盘
- 外存(外部存储) 包括软盘和硬盘,软盘已过时了
- 查看硬盘详细信息
# fdisk -l
Disk /dev/cciss/c0d0: 146.7 GB, 146778685440 bytes
255 heads, 63 sectors/track, 17844 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
- 可以看到几个名词:heads/sectors/cylinders,分别就是磁头/扇区/柱面,每个扇区512byte(现在新的硬盘每个扇区有4K)了;
硬盘容量就是 heads*sectors*cylinders*512=255*63*17844*512=146771896320b=146.7G - 硬盘的最小存储单位就是扇区了,而且硬盘本身并没有block的概念。
文件系统
- 文件系统不是一个扇区一个扇区的来读数据,太慢了,所以有了block(块)的概念,它是一个块一个块的读取的,block才是文件存取的最小单位。
- 先来知道是哪种文件系统
# df -T
/dev/cciss/c0d0p5 ext3 112738028 81733116 25185772 77% /
- OK,ext3文件系统 。
# tune2fs -l /dev/cciss/c0d0p5 | grep "Block size"
Block size: 4096
-
一个block是4K,也就是说我所使用的文件系统中1个块是由连续的8个扇区组成。
-
简单的说扇区是对硬盘而言,块是对文件系统而言。
-
查看块大小
sudo /sbin/tune2fs -l /dev/sda1|grep "Block size"
文件io
- 文件系统将磁盘划分为一个一个的块,操作也是针对块而言的
- 读和写都是按块来的
- 每一块要么被占用要么空闲,哪怕这一块里只有一个字节有效。块大小4K=4096字节,那么一个4097字节的文件就必须占用2个块存储,即占用8K字节空间。