file hole

当lseek设置文件偏移量超过文件尾端,并写了某些数据后,就会产生文件空洞.

文件长度st_size:

文件中的空洞会影响文件的长度,read读含有空洞的文件时,会把空洞填0.read读空洞也会读到0值.

文件占用磁盘大小:

文件在磁盘中是以4k的逻辑块进行存储的.每个文件占用的磁盘大小都是4k的整数倍.

write()写,实际内核是一次写4k数据到磁盘的.文件一般是块缓冲的.物理写大小为4k.

空洞占用的物理空间最多不超过2个逻辑块(8k).

若空洞将要使文件磁盘大小增长多于1个逻辑块大小时,将进行取余.

Comments