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