1 硬盘block与inode详解
1.1 Sector(扇区)与Block(块)
1) 硬盘的最小存储单位:sector(扇区),每个扇区储存512字节;操作系统会一次性连续读取多个扇区,即一次性读取多个扇区称为一个block(块)
2) 文件存取的最小单位:block(块),由多个扇区组成;block的大小常见的有1KB、2KB、4KB,在linux中常见设置为4KB,即连续8个扇区组成一个block;/boot分区的block一般为1KB
3) 查看block的方法:
ext3与ext4格式化文件系统:
dumpe2fs /dev/sda1 | grep "Block size"
tune2fs -l /dev/sda1 | grep "Block size"
stat /boot/ | grep "IO Block"
xfs格式化文件系统:
xfs_info /dev/sda1
stat /boot/ | grep "IO Block"
4) 每个block只能存放一个文件,如果文件的大小比block大,会申请更多的block;如果文件的大小比block小,仍会占用一个block,剩余的空间会浪费
例:有1万个文件,大小为10B,block为4KB
理论上占用空间大小:10000 * 10B=97.656MB
实际上占用空间大小:10000 * 4KB = 40GB
1.2 硬盘block与inode详解
1.2.1 superblock、inode与block
操作系统对于文件数据的存放包括两个部分:1文件内容、2权限及文件属性
在硬盘分区中,还有一个超级区块(superblock)
1) superblock:记录文件系统的整体信息,包括inode与block的总量、使用大小、剩余大小以及文件系统的格式与相关信息等
2) inode:记录文件的属性、权限,同时会记录该文件的数据所在的block编号
3) block:存储文件的内容
1.2.2 inode与block
每个inode与block都有编号,而每个文件都会占用一个inode,inode内则有文件数据放置的block号码;能够找到文件的inode就可以找到该文件所放置数据的block号码,从而读取文件内容
1)在格式化时可以指定默认的inode与block的大小;-b指定默认block值,-I指定默认inode值,例:mkfs.ext4 –b 4096 –I 256 /dev/sdb
2)查看inode的方法:
ext3与ext4格式化文件系统:
dumpe2fs /dev/sda1 | grep "Inode size"
tune2fs -l /dev/sda1 | grep "Inode size"
xfs格式化文件系统:
2 硬链接
硬链接:Linux系统多个文件名可以指向同一个inode,这意味着可以用不同的文件名访问同样的内容,对文件内容进行修改会影响到所有文件名;但删除一个文件名不会影响另一个文件名的访问。
硬链接不能跨分区链接,只能对文件生效,对目录无效,链接后的文件不占用系统多余的空间
命令:ln test1.txt test2.txt #test1.txt为源文件,test2为目标文件
3 软链接(符号链接)
软链接文件的Inode号不同,可以跨分区链接,支持目录同时也支持文件的链接;不管是删除源文件还是重启系统,该软链接还存在,但文件内容会丢失,一旦新建源同名文件,软链接文件恢复正常
命令:ln –s test1.txt test2.txt