文件 io 知识体系

知识关联

  • 底层 硬盘
  • 中间层 文件系统
  • 上层 文件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字节空间。

你可能感兴趣的:(#,Linux,内核知识)