linux 解析文件系统原理
inode and Block
查询lnode df -i
定义能够创建多少的文件
由于扇区(sector)太小只有512字节,所以读取时将多个扇区组合为“块(block)”,“块”是文件存取的最小单位,一般为4kb。数据全部存储于Block,而“元信息”就是目录,比如文件的所属用户,所属组,类型,权限,时间等,这种存储元信息的叫做“inode”,中文叫索引节点,也叫i节点。
inode不包含文件名,文件名是存储在目录的目录项中,一个文件必须占用一个inode,最少一个
-
查看文件的inode信息:stat 文件名
- 文件的字节数
- 文件拥有者的User ID
- 文件的Group ID
- 文件的读、写、执行权限
- 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
- 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
-
inode 号码
目录文件的结构文件系统访问文件的步骤:
- 用户在目录中看到要访问的文件名
- 通过目录的数据找到对应的inode号
- 通过inode号,获取inode信息
- 根据inode信息,找到文件数据所在的block
inode一般为128字节或者256字节,记录inode号占用字节一般为4字节
12个直接连接,共占用48字节磁盘空间,包含12个直接指向block号信息
间接是inode记录的4字节的block号中,存储的的真实文件的block号,若每个block大小为4字节,也就是4096字节,可以存放1024个block号信息,一个间接可以存放4096KB。
双间接就是在间接的基础上再次间接,也就是102410244=4096MB
三间接是继续扩充双间接102410241024*4=4096G也就是说一个block默认4字节,最大可以存储48kb+4096kb+4096mb+4096g
-
查看inode号
ls -i stat
文件的存储对照:
文件名-->目录项
元信息-->inode
数据-->block
SuperBlock里面存储的文件系统所有的inode,block信息 -
删除指定的inode号对应的文件
格式:find ./ inum inode号 -exec rm -i {};
查找3天内修改的文件,、并复制到/tmp下
find /root/ -mtime -3 -a -type f -exec cp {} /tmp \;
-
查看文件系统的inode与block信息
df -i 设备名
dumpe2fs -h 设备名
tune2fs - 设备名 -
格式化指定系统的inode个数与block大小
格式:mkfs.ext4 -N inode 数 -b 块大小 设备名
-
解决inode耗尽导致的磁盘损坏
- 删除不使用的文件
- 修改位置
linux文件系统软硬连接原理
-
硬链接
方法:ln 源文件 目标文件
特点:硬链接指向的文件inode号,新生成的硬链接文件inode号与源文件的inode号相同
文件内容是一样的,且只要根据inode号修改的,都会改变,文件是同一个文件,只是多一个目录项,必须是同一个文件系统
-
软连接
方法:ln -s 源文件 目标文件
新生成的软连接文件inode号与源文件不同,软连接文件里的是可以自动导向源文件的路径,可以跨设备建连接,并且目录也是可以建立软连接的,互相影响。