计算机硬盘简介

硬盘是计算机主要存储媒介之一,由一个或者多个铝制或者玻璃制的碟片组成,碟片外覆盖有铁磁性材料,硬盘内部由磁道、柱面、扇区、磁头等部件组成,如图7-1所示:

图7-1 硬盘内部结构组成

Linux系统中硬件设备相关配置文件存放在/dev/下,常见硬盘命名:/dev/hda、/dev/sda、/dev/sdb、/dev/sdc、/dev/vda。不同硬盘接口,在系统中识别的设备名称不一样。

IDE硬盘接口在Linux中设备名为/dev/hda,SAS、SCSI、SATA硬盘接口在Linux中设备名为sda,高效云盘硬盘接口会识别为/dev/vda等。

文件储存在硬盘上,硬盘的最小存储单位叫做Sector(扇区),每个Sector储存512字节。操作系统在读取硬盘的时候,不会逐个Sector的去读取,这样效率非常低,为了提升读取效率,操作系统会一次性连续读取多个Sector,即一次性读取多个Sector称为一个Block(块)。

由多个Sector组成的Block是文件存取的最小单位。Block的大小常见的有1KB、2KB、4KB,Block在Linux中常设置为4KB,即连续八个Sector组成一个Block。

/boot分区Block一般为1KB,而/data/分区或者/分区的Block为4K。可以通过如下三种方法查看Linux分区的Block大小:

dumpe2fs /dev/sda1 |grep “Block size”

tune2fs -l /dev/sda1 |grep “Block size”

stat /boot/|grep “IO Block”

例如创建一个普通文件,文件大小为10Bytes,而默认设置Block为4K,如果有1万个小文件,由于每个Block只能存放一个文件,如果文件的大小比Block大,会申请更多的Block,相反如果文件的大小比默认Block小,仍会占用一个Block,这样剩余的空间会被浪费掉。

  • 1万个文件理论只占用空间大小:10000×10=100000Bytes=97.65625MBytes;
  • 1万个文件真实占用空间大小:10000x4096Bytes=40960000Bytes=40000MBytes=40GB。
  • 根据企业实际需求,此时可以将Block设置为1K,从而节省更多的空间。