Linux 文件系统——indoe与block
概述::文件储存在硬盘上,硬盘的最小储存单位叫扇区,每个扇区存储512字节。
操作系统读取硬盘的时候一次性连续读取多个扇区,即一次性读取一个块(block)。这种有多个扇区组成的块就是文件储存的最小单位。块的大小,最常见的为4KB
储存文件元信息的区域叫做indoe,也叫i节点/索引节点
一个文件必须占用一个indoe,但至少占用一个block
indoe:文件的字节数,拥有者的UID、GID、文件的读写执行权限、时间戳等,但不包含问件名。文件名是储存在目录的目录项中。
Atime Mtime Ctime 详解;
英文 | 别称 | 中文翻译 | 何时修改 | 查看命令 |
Access | Atime | 访问时间 | 读取、写入 | ls -lu |
Modify | Mtime | 修改时间 | 写入、修改 | ls -l |
Change/Create | Ctime | 改变时间/创建时间 | 修改文件名、写入、修改、改权限、做链接 | ls -lc |
indoe的号码:
indoe一般为128字节或256字节,每个indoe中都记录着文件所在的block号,
每条记录着block号的信息占用4字节。indoe中关于block号的记录一共包含12个直接、1个间接、1个双间接和1个三间接
12个直接连接,共占用48字节磁盘空间,包含12个直接指向biock号的信息,文件系统默认的block大小为4KB,则仅仅指向12*4=48KB大小的文件内容。文件较大时,则需要使用更多的block,会多于12个block,进而有间接、双间接和三接。
一个间接可存放文件大小为1024*4=4096KB
一个双间接可存放文件大小为1024*1024*4=4096MB
一个三间接可存放文件大小为1024*1024*1024*4=4093GB
一个文件最大存储大小为48KB+4096KB+4096MB+4096GB约为4100GB
查看inode号码: ls –I 文件名;stat 文件名
删除指定inode号所对应的文件:
格式:find ./ -inum inode号 –exec rm –I {} \;
查看文件系统的inode与block的信息:
df –I 设备名(文件已挂载时查询,查询indoe总数与已用数量)
只可以查看ext4文件类型:dumpe2fs –h 设备名(文件系统无需挂载);tune2fs –l 设备名(文件系统无需挂载)
格式化时指定文件系统的inode个数与block大小:
mkfs.ext4 –N inode 数 –b 块大小(单位字节) 设备名
解决inode 耗尽导致的磁盘故障:删除不使用文件;将文件备份,重新格式化此文件系统,指定较多的inode个数
链接——硬链接/软链接:
硬链接(hard link):ln 源文件 目标文件
硬链接指向inode,新生成的硬链接文件的inode号与原文件的inode号相同,不可针对目录进行硬链接,必须在同一文件系统内。删除一个文件名不影响另一个的访问。
软链接(soft link):ln –s 源文件或目录 目标文件或目录
软链接指向文件名,新生成的软链接文件的inode号与源文件不同,目录也可以生成软链接,软链接文件与源文件可以不在同一个文件系统内,软链接文件的内容是源文件的路径读取时系统会自动导向源文件,但当源文件移动或重命名时,软链接将报错。
恢复误删的文件:
--inode 数值 指定从inode号为多少开始
--restore-file 文件名 恢复误删除的某个文件
--restore-all 恢复全部已删除的文件