- 磁盘读取数据是按block为单位读取的。
- 一个文件可能占用多个block;但是每读取一个block就会消耗一次磁盘I/O。
- 如果要提升磁盘IO性能,那么就要尽可能一次性读取数据尽量的多读
- 一个block只能存放一个文件的内容,无论内容有多小;如果block默认是4K大小,那么存放一个1K的文件,剩余3K就不能存放别的文件,只能浪费了。
- block并非越大越好,block太大对于存放小文件就会浪费磁盘空间,例如:1000K的文件,block为4K,占用250个block,如果消耗block为1K,占1000个block;消耗IO分别为250次和1000次
- 根据业务需求大文件,确定默认的block大小,如果是大文件(大于16K)一般设置block大一点,小文件(小于1K)一般设置block小一点。
- block太大例如4K,文件都是0.1K的,大量浪费磁盘空间,但是访问性能高
- block太小例如1K,文件都是1000K,消耗磁盘IO
- block的大小设置也是格式化分区的时候确定的,mkfs.ext4 -b 2048 -I 256 /dev/sdb
- 企业里文件都会比较大(一般会大于4K),block设置大一些会提升磁盘访问效率。
- ext3/ext4文件系统(centos5和6),一般设置为4K
总
- 磁盘被分区格式化文件系统后会分为inode和block两部分内容
- inode存放文件的属性以及指向文件实体的指针,文件名不在inode里,一般在上级目录的block。
- 访问文件,原理通过文件-->inode-->block。
- inode一般情况默认大小256B,block大小1 2 4K,默认是4K注意引导分区等特殊分区除外
- 通过df -i查看inode的数量及使用情况,dumpe2fs /dev/sda3查看inode及block的大小及数量。
- 一个文件至少要占用一个inode及一个block
- 一个block只能被一个文件使用,如果文件很小block很大,剩余空间浪费无法继续被其他文件使用
- block不是越大越好要根据业务文件的大小进行选择,一般就是默认4K
- 可以在格式化的时候改变inode及block的大小
-
硬链接具有相同的inode指向同一个block,软连接只是源文件的快捷方式,指向源文件的路径