摘要: inode 索引节点是Unix/Linux文件系统中用来存储文件元信息的区域,里面包含的件元信息:文件字节数 User ID 、Group ID 文件权限、文件的时间戳、ctime inode上次变动时间及mtime 文件内容上一次变动的时间。
inode 索引节点是Unix/Linux文件系统中用来存储文件元信息的区域里面包含的文件元信息:
文件字节数
User ID
Group ID
文件的权限
文件的时间戳,ctime inode上一次变动的时间,mtime 文件内容上一次变动的时间,atime 文件上一次打开的时间
链接数,多少文件名指向这个inode
存储的block位置
查看inode信息,可以通过stat命令查看 stat +filename
7ad1a4e22e7835c1212a1b1ebd3c4112c5153edf
如果文件存在异常,如网站被植入广告等,可以通过这个命令查看文件的时间戳,判断近期是否文件有被异常篡改的迹象,每个inode都有一个号码,是inode的唯一标识符系统在读取文件时,系统并非是通过“文件名”去读取文件数据的,文件名只是“inode”的一个别名,系统是通过文件名找到对应的inode的号码,再获取inode信息,找到对应的block读取文件数据的。
查看inode号码,可以通过ls -i命令查看,在文件异常或者文件名有特殊字符无法删除时,可通过inode号码删除inode节点来实现删除文件的目的是由于每一个文件都需要有一个inode,所以有时会出现磁盘存储空间还有剩余的时候,向磁盘写入数据提示“No space left on device” 的情况,这个时候很可能是inode数用完导致。
查看磁盘的inode使用情况,可以通过df命令的 -i参数
bf809e0e64a618f078507c7380f55efba88c1aae
磁盘的inode数量在磁盘格式化时就需要规划好,在格式化时通过 -N指定inode的数量(如果不指定inode数量,系统会根据文件的blocksize和bytes/inode来自动计算
例如:mkfs.ext3 /dev/xvdb -N 100000 # 格式化/dev/xvdb 指定inode数量是100000
线上运行的服务器,如果初始磁盘时没有规划好inode数量,出现上述的问题,就需要查找消耗inode的问题
通过命令find */ ! -type l | cut -d / -f 1 | uniq -c |sort -nr
可以列出当前磁盘中文件数较多的目录
10622ad3c2bb57e1238156e3a04107cb79e9ebbc
结合实际业务删除不需要的文件,释放一定的inode即可继续写入数据
一般文件名和inode号是一一对应的,但在Unix/Linux系统中,允许多个文件名指向同一个inode号,即硬链接(硬链接就可以理解为不同的文件名指向同一个inode号),对硬链接文件和源文件修改都是修改的相同的存储数据,修改数据户影响到所有文件名,删除一个文件名不影响另外的文件名读取文件数据通过ln命令可以创建,在inode信息中有链接数,创建一个硬链接该数量就会加1,反之删除硬链接则会减1,目录文件的链接数默认是2,创建目录时,会创建两个目录项“.”inode号是当前目录的inode号,“..”inode号是父目录的inode号
d4e44d91f998ed8c6a3a03d06c86196bae87fce2
9eb7e3ad706c4dee660f2cb01ae397244561af5c
相对硬链接,还有软链接。软链接文件的inode号和源文件不同,但文件内容是源文件的路径,访问软链接文件时,系统会导向源文件,软链接依存于源文件,源文件删除,软链接将无法读取,由于inode号不同,所以如果有大量软链接,会消耗indoe数量,存储空间却不会消耗,当有大量软链接占用inode,导致无法写入文件,又不方便格式化磁盘调整inode,可以通过以下方法获取一些inode数:
dd if=/dev/zero of=disk.img count=1024 bs=1024(创建一个空文件)
mkfs.ext2 -N 1000000 -b 1024 -I 128 disk.img(格式化指定inode)
mount -o loop disk.img /data/dd4inde/(挂载到一个空目录)
f1a6e57d6a8b853a851edb6bb393bd8ba619a22d
af585ca44244d021b75ef9b2512d9d818a9432a3
inode 索引节点是Unix/Linux文件系统中用来存储文件元信息的区域里面包含的文件元信息:
文件字节数
User ID
Group ID
文件的权限
文件的时间戳,ctime inode上一次变动的时间,mtime 文件内容上一次变动的时间,atime 文件上一次打开的时间
链接数,多少文件名指向这个inode
存储的block位置
查看inode信息,可以通过stat命令查看 stat +filename
7ad1a4e22e7835c1212a1b1ebd3c4112c5153edf
如果文件存在异常,如网站被植入广告等,可以通过这个命令查看文件的时间戳,判断近期是否文件有被异常篡改的迹象,每个inode都有一个号码,是inode的唯一标识符系统在读取文件时,系统并非是通过“文件名”去读取文件数据的,文件名只是“inode”的一个别名,系统是通过文件名找到对应的inode的号码,再获取inode信息,找到对应的block读取文件数据的。
查看inode号码,可以通过ls -i命令查看,在文件异常或者文件名有特殊字符无法删除时,可通过inode号码删除inode节点来实现删除文件的目的是由于每一个文件都需要有一个inode,所以有时会出现磁盘存储空间还有剩余的时候,向磁盘写入数据提示“No space left on device” 的情况,这个时候很可能是inode数用完导致。
查看磁盘的inode使用情况,可以通过df命令的 -i参数
bf809e0e64a618f078507c7380f55efba88c1aae
磁盘的inode数量在磁盘格式化时就需要规划好,在格式化时通过 -N指定inode的数量(如果不指定inode数量,系统会根据文件的blocksize和bytes/inode来自动计算
例如:mkfs.ext3 /dev/xvdb -N 100000 # 格式化/dev/xvdb 指定inode数量是100000
线上运行的服务器,如果初始磁盘时没有规划好inode数量,出现上述的问题,就需要查找消耗inode的问题
通过命令find */ ! -type l | cut -d / -f 1 | uniq -c |sort -nr
可以列出当前磁盘中文件数较多的目录
10622ad3c2bb57e1238156e3a04107cb79e9ebbc
结合实际业务删除不需要的文件,释放一定的inode即可继续写入数据
一般文件名和inode号是一一对应的,但在Unix/Linux系统中,允许多个文件名指向同一个inode号,即硬链接(硬链接就可以理解为不同的文件名指向同一个inode号),对硬链接文件和源文件修改都是修改的相同的存储数据,修改数据户影响到所有文件名,删除一个文件名不影响另外的文件名读取文件数据通过ln命令可以创建,在inode信息中有链接数,创建一个硬链接该数量就会加1,反之删除硬链接则会减1,目录文件的链接数默认是2,创建目录时,会创建两个目录项“.”inode号是当前目录的inode号,“..”inode号是父目录的inode号
d4e44d91f998ed8c6a3a03d06c86196bae87fce2
9eb7e3ad706c4dee660f2cb01ae397244561af5c
相对硬链接,还有软链接。软链接文件的inode号和源文件不同,但文件内容是源文件的路径,访问软链接文件时,系统会导向源文件,软链接依存于源文件,源文件删除,软链接将无法读取,由于inode号不同,所以如果有大量软链接,会消耗indoe数量,存储空间却不会消耗,当有大量软链接占用inode,导致无法写入文件,又不方便格式化磁盘调整inode,可以通过以下方法获取一些inode数:
dd if=/dev/zero of=disk.img count=1024 bs=1024(创建一个空文件)
mkfs.ext2 -N 1000000 -b 1024 -I 128 disk.img(格式化指定inode)
mount -o loop disk.img /data/dd4inde/(挂载到一个空目录)
f1a6e57d6a8b853a851edb6bb393bd8ba619a22d
af585ca44244d021b75ef9b2512d9d818a9432a3