文档章节

浅谈linux性能调优之三:分区格式化之前的考虑

我爱吃葱花
 我爱吃葱花
发布于 2014/08/11 15:19
字数 1620
阅读 28
收藏 0
点赞 0
评论 0

有这么一种特殊情况可能在生产环境下发生:系统的某个ext3文件分区,当用户往此分区上写文件时,提示磁盘空间已满,但用df -h命令查 看时发现此分区磁盘使用量是60%,请分析出现这种情况是由什么导致的,答案是inode已经耗尽!
        为什么呢 ?
给出一个ext*文件系统的结构图
 

浅谈linux性能调优之三:分区格式化之前的考虑 - 了了 - 了了的博客

 

        在Linux中进行格式化必须考虑Block与inode,Block还好理解,它是磁盘可以记录的最小单位,是由数个扇区组成,所以大小通常为 n*512Bytes,例如4K。 那么inode是什么呢 ? Block是记录文件内容的区域,inode则是记录该文件的属性及其放置在哪个Block之内的信息。每个inode分别记录一个档案的属性与这个档案 分布在哪些datablock上(也就是我们说的指针,有的地方也叫索引编号)。
   具体如下:
     ● inode 编号    ● 用来识别文件类型,以及用于 stat C 函数的模式信息   ● 文件的链接数目  ● 属主的 UID ● 最近一次访问的时间   ● 属主的组 ID(GID)  ● 文件的大小  ● 文件所使用的磁盘块的实际数目  ● 最近一次修改的时间    ● 最近一次更改的时间
        小结:inode两个功能:记录档案属性和指针所以,每个文件都会占用一个inode。当Linux系统要查找某个文件时,它会先搜索inode table找到这个文件的属性及数据存放地点,然后再查找数据存放的Block进而将数据取出。一个分区被格式化为一个文件系统之后,基本上它一定会有 inode table与数据区域两大块,一个用来记录文件的属性信息与该文件存放的Block块,一个用来记录文件的内容。
        一个逻辑上的概念: 一个block对应一个inode吗?   答案是否定的,一个大文件虽然占用很多的block,但是只使用了一个inode
    
        测试1: 我添加磁盘并划分分区,/dev/sdb5,6,7各100M 并指定block大小分别是1k,2k,4k格式化时得到结构inode数量都是28000多 (-b)
            结论:inode和block没有直接关系!网上有一种说说“block越大,inode越小的说法”显然错误
    
        测试2: 我使用-i 选项格式化 (-i bytes-per-inode
              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.

            结论:指定i越小,inode越大,注意这还是和block没关系!只是用户自定义inode数量而已!
            注意:一个文件占用一个inode,但是至少占用一个block,不管block数量有多大,1K,2K,4K,文件小于blocksize时,占用一个 block,此block的剩余空间别的文件无法使用!若文件大于blocksize时,直接使用多个block

            于是,就有了最终结论:(当然这里不是细算!)
                 分区总量/block大小 >= inode数  ------  > 能创建的文件数量的最大值 = inode数
                 分区总量/block大小  < inode数  --------> 能创建的文件数量的最大值 = 分区总量/block大小的数量个文件

            若分区是提供给给大文件应用,一般不做考虑
            相反,若分区是提供给小文件应用,则一定要自己计算并格式化,以免inode耗尽,磁盘分区却未使用完

*******************************************************************************
测试1数据:

[root@desktop132 ~]# mkfs.ext3 -b 1024 /dev/sdb5
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
     Block size=1024 (log=0)
 
Fragment size=1024 (log=0)
 
Stride=0 blocks, Stripe width=0 blocks
 
     28112 inodes, 112392 blocks
 
5619 blocks (5.00%) reserved for the super user
 
First data block=1
 
Maximum filesystem blocks=67371008
 
14 block groups
 
8192 blocks per group, 8192 fragments per group
 
2008 inodes per group
 
Superblock backups stored on blocks:
 
 
    8193, 24577, 40961, 57345, 73729
 
 
Writing inode tables: done                            
 
Creating journal (4096 blocks): done
 
Writing superblocks and filesystem accounting information: done

[root@desktop132 ~]# mkfs.ext3 -b 2048 /dev/sdb6
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
       Block size=2048 (log=1)
 
Fragment size=2048 (log=1)
 
Stride=0 blocks, Stripe width=0 blocks
 
       28160 inodes, 56210 blocks
 
2810 blocks (5.00%) reserved for the super user
 
First data block=0
 
Maximum filesystem blocks=57671680
 
4 block groups
 
16384 blocks per group, 16384 fragments per group
 
7040 inodes per group
 
Superblock backups stored on blocks:
 
 
    16384, 49152
 
 
Writing inode tables: done                            
 
Creating journal (4096 blocks): done
 
Writing superblocks and filesystem accounting information: done

[root@desktop132 ~]# mkfs.ext3 -b 4096 /dev/sdb7
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
   Block size=4096 (log=2)
 
Fragment size=4096 (log=2)
 
Stride=0 blocks, Stripe width=0 blocks
 
   28128 inodes, 28105 blocks
 
1405 blocks (5.00%) reserved for the super user
 
First data block=0
 
Maximum filesystem blocks=29360128
 
1 block group
 
32768 blocks per group, 32768 fragments per group
 
28128 inodes per group
 
 
Writing inode tables: done                            
 
Creating journal (1024 blocks): done
 
Writing superblocks and filesystem accounting information: done
 
*******************************************************************************
 
 
 
*******************************************************************************

测试2数据:

[root@desktop132 ~]# mkfs.ext3 -i 1024 /dev/sdb5
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
Block size=1024 (log=0)
 
Fragment size=1024 (log=0)
 
Stride=0 blocks, Stripe width=0 blocks
 
112448 inodes, 112392 blocks
 
5619 blocks (5.00%) reserved for the super user
 
First data block=1
 
Maximum filesystem blocks=67371008
 
14 block groups
 
8192 blocks per group, 8192 fragments per group
 
8032 inodes per group
 
Superblock backups stored on blocks:
 
 
    8193, 24577, 40961, 57345, 73729
 
 
Writing inode tables: done                            
 
Creating journal (4096 blocks): done
 
Writing superblocks and filesystem accounting information: done
 
 
This filesystem will be automatically checked every 31 mounts or
 
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@desktop132 ~]# mkfs.ext3 -i 2048 /dev/sdb6
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
Block size=1024 (log=0)
 
Fragment size=1024 (log=0)
 
Stride=0 blocks, Stripe width=0 blocks
 
56224 inodes, 112420 blocks
 
5621 blocks (5.00%) reserved for the super user
 
First data block=1
 
Maximum filesystem blocks=67371008
 
14 block groups
 
8192 blocks per group, 8192 fragments per group
 
4016 inodes per group
 
Superblock backups stored on blocks:
 
 
    8193, 24577, 40961, 57345, 73729
 
 
Writing inode tables: done                            
 
Creating journal (4096 blocks): done
 
Writing superblocks and filesystem accounting information: done
 
 
This filesystem will be automatically checked every 35 mounts or
 
180 days, whichever comes first.  Use tune2fs -c or -i to override.

[root@desktop132 ~]# mkfs.ext3 -i 4096 /dev/sdb7
 
mke2fs 1.41.12 (17-May-2010)
 
Filesystem label=
 
OS type: Linux
 
Block size=1024 (log=0)
 
Fragment size=1024 (log=0)
 
Stride=0 blocks, Stripe width=0 blocks
 
28112 inodes, 112420 blocks
 
5621 blocks (5.00%) reserved for the super user
 
First data block=1
 
Maximum filesystem blocks=67371008
 
14 block groups
 
8192 blocks per group, 8192 fragments per group
 
2008 inodes per group
 
Superblock backups stored on blocks:
 
 
    8193, 24577, 40961, 57345, 73729
 
 
Writing inode tables: done                            
 
Creating journal (4096 blocks): done
 
Writing superblocks and filesystem accounting information: done
 
 
This filesystem will be automatically checked every 37 mounts or
 
180 days, whichever comes first.  Use tune2fs -c or -i to override.
 
*******************************************************************************


本文转载自:http://my.oschina.net/sharelinux/blog/143522

共有 人打赏支持
我爱吃葱花
粉丝 28
博文 116
码字总数 34663
作品 0
海淀
数据库管理员
浅谈linux性能调优之三:分区格式化之前的考虑

上篇:浅谈linux性能调优之二:优化swap分区http://my.oschina.net/sharelinux/blog/143318 有这么一种特殊情况可能在生产环境下发生:系统的某个ext3文件分区,当用户往此分区上写文件时,提...

OscerSong ⋅ 2013/07/09 ⋅ 2

浅谈linux性能调优之一:磁盘分区策略

对于服务器而言,不管是windows系统,linux系统,分区情况影响系统性能.磁盘分区之后再格式化成某一格式的系统文件,最后在存储用户或系统数据,数据所在分区容易读到数据则响应速度越快.当然也...

OscerSong ⋅ 2013/07/07 ⋅ 2

linux下文件操作inode,block的变化

在“浅谈linux性能调优之三:分区格式化之前的考虑” http://my.oschina.net/sharelinux/blog/143522 一文中我说了inode与block的关系,现在说一下linux下文件操作底层inode与block发生了什么...

OscerSong ⋅ 2013/07/09 ⋅ 0

浅谈linux性能调优之一:磁盘分区策略

对于服务器而言,不管是windows系统,linux系统,分区情况影响系统性能.磁盘分区之后再格式化成某一格式的系统文件,最后在存储用户或系统数据,数据所在分区容易读到数据则响应速度越快.当然也...

我爱吃葱花 ⋅ 2014/08/11 ⋅ 0

linux系统调优-存储(内存、硬盘)

首先一个基本概念: 存储系统存储速度的快->慢: 内存->闪存->磁盘 因为内存的价格限制以及操作系统支持的限制,我们只能从磁盘这块来看,可见磁盘正是存储系统的最大瓶颈所在。 **下面具体提...

疯狂的单纯酱 ⋅ 2015/08/21 ⋅ 0

Linux系统调优

一、磁盘调优 安装Linux时,就应该考虑如何让Linux系统获得最好的性能。在Linux系统中,我们可以自由地组织磁盘分区。一个优化的分区策略,可以很好的改进Linux系统的性能,减少磁盘碎片,提...

llk11 ⋅ 2017/06/01 ⋅ 0

浅谈linux性能调优之四:文件系统的日志隔离

1.ext3文件系统在ext2的基础上添加了日志功能,如同数据库一样用日志来保证数据的一致性。 ext2:前写block,后写inode! ext3:增添了日志区(有利于数据一致性),先写inode! 等数据写到文件系统后...

OscerSong ⋅ 2013/07/10 ⋅ 2

浅谈linux性能调优之十八:推荐使用lvm

前几天在51cto论坛中看到一个贴子,讲的是管理员管理的系统/home所在的分区20G空间不够使用了,解决方案是卸载分区,然后划分一块大于20G的空间,将以前的数据全部拷贝到新分区,然后在挂载到...

OscerSong ⋅ 2013/07/26 ⋅ 6

JVM性能调优实践——JVM篇

前言 在遇到实际性能问题时,除了关注系统性能指标。还要结合应用程序的系统的日志、堆栈信息、GClog、threaddump等数据进行问题分析和定位。关于性能指标分析可以参考前一篇JVM性能调优实践...

lijingyao8206 ⋅ 05/24 ⋅ 0

盘点linux系统中的12条性能调优命令。

导读 性能调优一直是运维工程师最重要的工作之一,如果您所在的生产环境中遇到了系统响应速度慢,硬盘IO吞吐量异常,数据处理速度低于预期值的情况,又或者如CPU、内存、硬盘、网络等系统资源...

linuxprobe16 ⋅ 2016/12/17 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

知乎Java数据结构

作者:匿名用户 链接:https://www.zhihu.com/question/35947829/answer/66113038 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 感觉知乎上嘲讽题主简...

颖伙虫 ⋅ 今天 ⋅ 0

Confluence 6 恢复一个站点有关使用站点导出为备份的说明

推荐使用生产备份策略。我们推荐你针对你的生产环境中使用的 Confluence 参考 Production Backup Strategy 页面中的内容进行备份和恢复(这个需要你备份你的数据库和 home 目录)。XML 导出备...

honeymose ⋅ 今天 ⋅ 0

JavaScript零基础入门——(九)JavaScript的函数

JavaScript零基础入门——(九)JavaScript的函数 欢迎回到我们的JavaScript零基础入门,上一节课我们了解了有关JS中数组的相关知识点,不知道大家有没有自己去敲一敲,消化一下?这一节课,...

JandenMa ⋅ 今天 ⋅ 0

火狐浏览器各版本下载及插件httprequest

各版本下载地址:http://ftp.mozilla.org/pub/mozilla.org//firefox/releases/ httprequest插件截至57版本可用

xiaoge2016 ⋅ 今天 ⋅ 0

Docker系列教程28-实战:使用Docker Compose运行ELK

原文:http://www.itmuch.com/docker/28-docker-compose-in-action-elk/,转载请说明出处。 ElasticSearch【存储】 Logtash【日志聚合器】 Kibana【界面】 答案: version: '2'services: ...

周立_ITMuch ⋅ 今天 ⋅ 0

使用快嘉sdkg极速搭建接口模拟系统

在具体项目研发过程中,一旦前后端双方约定好接口,前端和app同事就会希望后台同事可以尽快提供可供对接的接口方便调试,而对后台同事来说定好接口还仅是个开始、设计流程,实现业务逻辑,编...

fastjrun ⋅ 今天 ⋅ 0

PXE/KickStart 无人值守安装

导言 作为中小公司的运维,经常会遇到一些机械式的重复工作,例如:有时公司同时上线几十甚至上百台服务器,而且需要我们在短时间内完成系统安装。 常规的办法有什么? 光盘安装系统 ===> 一...

kangvcar ⋅ 昨天 ⋅ 0

使用Puppeteer撸一个爬虫

Puppeteer是什么 puppeteer是谷歌chrome团队官方开发的一个无界面(Headless)chrome工具。Chrome Headless将成为web应用自动化测试的行业标杆。所以我们很有必要来了解一下它。所谓的无头浏...

小草先森 ⋅ 昨天 ⋅ 0

Java Done Right

* 表示难度较大或理论性较强。 ** 表示难度更大或理论性更强。 【Java语言本身】 基础语法,面向对象,顺序编程,并发编程,网络编程,泛型,注解,lambda(Java8),module(Java9),var(...

风华神使 ⋅ 昨天 ⋅ 0

Linux系统日志

linux 系统日志 /var/log/messages /etc/logrotate.conf 日志切割配置文件 https://my.oschina.net/u/2000675/blog/908189 logrotate 使用详解 dmesg 命令 /var/log/dmesg 日志 last命令,调......

Linux学习笔记 ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部