linux evaluate inode

2023-11-04 01:58
文章标签 linux evaluate inode

本文主要是介绍linux evaluate inode,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

linux文件系统评估之inode

  存储系统上线前要做资源评估,通常需要在性能(即iops、带宽等)和容量维度进行业务评估;而具体到本地文件系统存储的容量时,需要根据具体业务对文件系统的可用数据空间和可用inode数进行评估,作者通过工作中一事例对此有了更深刻的认识:

  由于系统需求,要将linux服务器A的本地磁盘数据(数据量260GB左右)同步至linux服务器B的本地磁盘,A和B相应的分区可用空间均为293GB左右;在数据同步接近完成时,log开始提示错误信息机器B“No space left on device”,而df -lh命令显示B本地文件系统还有50GB左右可用空间;猜测是inode已用完所致,使用df -i命令显示B本地文件系统的IFree确实为0,IUsed为1946万,IUse%为100%;而机器A同样分区大小的文件系统却显示Inodes总数为3900万、IUsed为1986万,其inode总数为机器B的2倍,那如何将增加机器B文件系统的inode数量呢?

  通过man page了解到,extX文件系统格式化完成后,其inode数不能在线调整,只能重新格式化并通过参数配置;通常使用mke2fs创建文件系统时,会使用/etc/mke2fs.conf中的预设参数配置,其中与inode相关的有inode_size(ext4默认为256)和inode_ratio(默认为16384),inode_size参数的含义容易理解,即单个inode结构自身所占字节数,man page(CentOS 6.4,kernel 2.6.32)介绍如下:

复制代码
Specify  the  size  of  each  inode  in bytes.  mke2fs creates 256-byte inodes by default.  In kernels after 2.6.10 and some earlier vendor kernels it is possible to utilize inodes  larger  than  128  bytes  to  store extended  attributes for improved performance.  The inode-size value must be a power of 2 larger or equal to 128.  The larger the inode-size the more space the inode table will consume, and  this  reduces  the  usable  space  in  the  filesystem  and can also negatively impact performance.  Extended attributes stored in large  inodes are not visible with older kernels, and such filesystems will not be mountable with  2.4  kernels  at  all.  It is not possible to change this value after the filesystem is created.
复制代码

将机器B的ext4文件系统加上“-I 128”参数重新格式化,虽其inode_size从256变为128,其inode总数却并未发生变化;另一个参数inode_ratio在man page上的描述却不易理解:

Specify  the  bytes/inode  ratio.   mke2fs  creates an inode for every bytes-per-inode bytes of space on the disk.  The larger the bytes-per-inode ratio, the  fewer  inodes  will  be  created.   This  value  generally shouldn't be smaller than the blocksize of the filesystem, since in that case more inodes would be made than can ever be used.  Be warned that it is not possible to expand the number of inodes on a filesystem after it is created, so be careful deciding the correct value for this parameter.

经过求证与测试后顿悟,其含义可通俗描述为:格式化时,每bytes-per-inode(或inode_ratio)字节大小的空间就创建一个inode,在分区大小固定前提下,该值越大,inode个数越少,data block就越多,该值越小,inode个数越多,data block就越少;以默认值16384(即16KiB)为例,如果文件系统上所有文件大小均为16KiB(或平均值),则data block耗尽的同时inode也将耗尽,二者占文件系统比例处于最理想状态,对于大量小文件的业务,通常将该值调小以增加inode数量;

  上述机器B的问题正是如此,参照机器A的inode总数是机器B的2倍,将inode_ratio值设置为8KiB,加上"-i 8192"参数重新格式化,成功将机器B的inode总数翻倍。

  另外,相对于ext3默认inode_size为128,ext4默认inode_size变为256,以存储其它字段(如nanosecond timestamps,inode versioning,extend attributes等)。

  此事例告诉我们,使用extX文件系统时,需要在上线前根据存储业务情况对文件系统的data block和inode数做综合评估;如果是和上述相反的大文件存储业务,可以将inode_ratio值调大,以增加data block数量,如使用“-T largefile”选项对应的inode_ratio值为1MiB,在1.8TiB大小的分区创建ext4文件系统时,可增加20~30GiB左右的数据空间。

  对于不能准备评估或需求特殊(如海量小文件)的存储业务,可考虑使用ReiserFS、XFS、JFS等,以避免inode耗尽的风险;关于这些filesystem的介绍,请关注后续博文。

参考文章:

http://www.linux-mag.com/id/8658/

http://www.geekride.com/understanding-unix-linux-filesystem-inodes/

http://stackoverflow.com/questions/3618820/how-many-bytes-per-inodes

https://ext4.wiki.kernel.org/index.php/Main_Page

https://en.wikipedia.org/wiki/ReiserFS

http://www.serverfocus.org/reiserfs-vs-ext4-vs-xfs-vs-zfs-vs-btrfs

------------------------------------

http://www.cnblogs.com/wuhuiyuan/p/linux-filesystem-inodes.html

个人原创,转载请注明出处。

这篇关于linux evaluate inode的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/342427

相关文章

windows和Linux使用命令行计算文件的MD5值

《windows和Linux使用命令行计算文件的MD5值》在Windows和Linux系统中,您可以使用命令行(终端或命令提示符)来计算文件的MD5值,文章介绍了在Windows和Linux/macO... 目录在Windows上:在linux或MACOS上:总结在Windows上:可以使用certuti

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

快速修复一个Panic的Linux内核的技巧

《快速修复一个Panic的Linux内核的技巧》Linux系统中运行了不当的mkinitcpio操作导致内核文件不能正常工作,重启的时候,内核启动中止于Panic状态,该怎么解决这个问题呢?下面我们就... 感谢China编程(www.chinasem.cn)网友 鸢一雨音 的投稿写这篇文章是有原因的。为了配置完

Linux命令之firewalld的用法

《Linux命令之firewalld的用法》:本文主要介绍Linux命令之firewalld的用法,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux命令之firewalld1、程序包2、启动firewalld3、配置文件4、firewalld规则定义的九大

Linux之计划任务和调度命令at/cron详解

《Linux之计划任务和调度命令at/cron详解》:本文主要介绍Linux之计划任务和调度命令at/cron的使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux计划任务和调度命令at/cron一、计划任务二、命令{at}介绍三、命令语法及功能 :at

Linux下如何使用C++获取硬件信息

《Linux下如何使用C++获取硬件信息》这篇文章主要为大家详细介绍了如何使用C++实现获取CPU,主板,磁盘,BIOS信息等硬件信息,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录方法获取CPU信息:读取"/proc/cpuinfo"文件获取磁盘信息:读取"/proc/diskstats"文

Linux内核参数配置与验证详细指南

《Linux内核参数配置与验证详细指南》在Linux系统运维和性能优化中,内核参数(sysctl)的配置至关重要,本文主要来聊聊如何配置与验证这些Linux内核参数,希望对大家有一定的帮助... 目录1. 引言2. 内核参数的作用3. 如何设置内核参数3.1 临时设置(重启失效)3.2 永久设置(重启仍生效

kali linux 无法登录root的问题及解决方法

《kalilinux无法登录root的问题及解决方法》:本文主要介绍kalilinux无法登录root的问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,... 目录kali linux 无法登录root1、问题描述1.1、本地登录root1.2、ssh远程登录root2、

Linux ls命令操作详解

《Linuxls命令操作详解》通过ls命令,我们可以查看指定目录下的文件和子目录,并结合不同的选项获取详细的文件信息,如权限、大小、修改时间等,:本文主要介绍Linuxls命令详解,需要的朋友可... 目录1. 命令简介2. 命令的基本语法和用法2.1 语法格式2.2 使用示例2.2.1 列出当前目录下的文

Linux中的计划任务(crontab)使用方式

《Linux中的计划任务(crontab)使用方式》:本文主要介绍Linux中的计划任务(crontab)使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言1、linux的起源与发展2、什么是计划任务(crontab)二、crontab基础1、cro