创建文件系统时,可以指定块的大小。如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性能。将ext2文件系统的块大小调整为4096byte而不是缺省的1024byte,可以减少文件碎片,加快fsck扫描的速度和文件删除以及读操作的速度。另外,在ext2的文件系统中,为根目录保留了5%的空间,对一个大的文件系统,除非用作日志文件,5%的比例有些过多。可以使用命令"# mke2fs -b 4096 -m 1 /dev/hda6"将它改为1%并以块大小4096byte创建文件系统。

使用多大的块大小,需要根据你的系统综合考虑,如果系统用作邮件或者新闻服务器,使用较大的块大小,虽然性能有所提高,但会造成磁盘空间较大的浪费。比如文件系统中的文件平均大小为2145byte,如果使用4096byte的块大小,平均每一个文件就会浪费1951byte空间。如果使用 1024byte 的块大小,平均每一个文件会浪费927byte空间。在性能和磁盘的代价上如何平衡,要看具体应用的需要。

第1组命令:

mkfs.ext3 -T news /dev/sda5 (指定该分区文件系统的块大小为4096)

mkfs.ext3 -b 4096 /dev/sda5

第2组命令:

mkfs.ext3 -i 4096 /dev/sda5 (指定每个inode的字节数为4096)

mkfs.ext3 /dev/sda5

mkfs.ext3 -b 2046 -m 2 /dev/hda5 格式化并设置数据块为2KB,设置保留块为2%

或者用tune2fs -m 2 /dev/hda4 这种方法不用格式化就可设置

tune2fs -l /dev/hda5 可以查看文件系统的详细信息

tune2fs -j /dev/hda4 可以将ext2转换为ext3而不损坏数据

文件系统的检查工具:fsck e2fsck

e2fsck 用时有危险,不能很好的辨识文件系统,特别是ext2,ext3混用时

fsck得用法:fsck -t ext3 /dev/hda5 或 fsck.ext3 /dev/hda5

实践得到的方法:

150G硬盘得到140M inode 命令为: (注意在格式化之前要先umount 分区才能执行下面的命令)

mkfs.ext3 -i 1024 -m 1 /dev/sda5

优化 Ext4 分区格式化后占用空间(通过降低inode数来节省磁盘空间)

有多少个 inode 就能存多少个文件,无论文件有多大,而一个 inode 要 256 字节。

而 inode 数量是由格式化程序(这里就是 mkfs.ext4)根据自动算出来的。默认是 16K 一个 inode也就是说,就算你在这个分区全是 16K 小的文件,都有足够数量的 inode 使用。

但问题是,对于我这种拿来当仓库用的分区,不可能全是 16K 的文件呀,高清电影和光盘映像都是上 G 的东西了。上面说过,一个文件要 inode,就算这个分区都塞满了,肯定还有很多 inode 没被使用,明显是浪费掉了。

扯了这么多还是在个实际例子吧,就拿我这个 2T 新硬盘为例。格式化时会输出一些信息

$ sudo mkfs.ext4 -n /dev/sdc1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=1 blocks, Stripe width=0 blocks

122101760 inodes, 488378368 blocks

24418918 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

14905 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

看到有 122101760 个 inodes 吧,一个 inode 占256字节,那么换算成 M 单位是:(122101760 * 256) / (1024 ** 20 = 29810M,差不多 30G 啊!

警告!警告!严重警告! 上面的命令怎么多了个 -n 参数?-n 参数表示模拟运行,但不格式化,这样可以看不同的格式化参数会有什么效果。如果没有这个参数,那就真的格式化了。所以对有数据的分区测试时千万要记得加上-n 参数!下面我都带上这个参数。

但是运行 mkfs.ext4 需要 root 权限,漏了 -n 太危险,可以用 tune2fs 查看文件系统各种信息。

sudo tune2fs -l /dev/sdc1

找 Inode count 一行。

man 一下 mkfs.ext4,发现有两个参数可以制定 inode 数量

-i bytes-per-inode:多少个字节一个 inode

-N number-of-inodes:直接制定 inode 数量

默认 16k 一个 inode 相当于

sudo mkfs.ext4 -i 16384 -n /dev/sdc

把这个数字加大了就行了,最好是 1024 的倍数。比如 1M,即 1048576 字节。

sudo mkfs.ext4 -i 1048576 -n /dev/sdc

其实在 /etc/mke2fs.conf 定义了一些默认值,可以用 -T 来指定类型,比如 largefile 类型就是 1M 一个 inode,上一个命令相当于

sudo mkfs.ext4 -T largefile -n /dev/sdc

还有一个 largefile4,4M 一个 inode。不过比 largefile 才少了 300M,对于 2T 来说小意思了,没必要省,万一小文件过多 inode 不够呢?

于是

$ sudo mkfs.ext4 -T largefile -n /dev/sdc1

mke2fs 1.41.12 (17-May-2010)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=1 blocks, Stripe width=0 blocks

1907840 inodes, 488378368 blocks

24418918 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

14905 block groups

32768 blocks per group, 32768 fragments per group

128 inodes per group

Superblock backups stored on blocks:

32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,

102400000, 214990848

还有 1907840 个 inode,可以保存 1907840 个文件,真够了,估计也难用满。(1907840 * 256) / (1024 ** 2) = 465M, 省出 29810 - 465 = 29345M,29G!十来部高清了。

格式化也只需半分钟,占用 700M 左右,因为还有日志其它什么的,过度优化没必要了,控制在 1G 内我觉得够了。

linux 动态增加inode,linux 增加inode 的方法相关推荐

  1. linux 动态库 软链接,Linux操作系统下动态库的生成及链接方法

    下动态库文件的扩展名为".so"(Shared Object).按照约定,所有动态库文件名的形式是libname.so(可能在名字中加入版本号).这样,线程函数库被称作 libth ...

  2. linux 动态库构造函数,Linux动态库函数的详解

    Linux动态库函数的详解 加载动态库 void *dlopen(const char *filename, int flag); flag的可能值: RTLD_LAZY RTLD_NOW RTLD_ ...

  3. linux 动态执行cp,Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解

    上一章节中,我们了解到了Linux系统的最基础的几个文件处理命令,核心的是ls命令,在今天这章中,我们来继续学习Linux对于文件操作相关的一些命令,比如复制.移动.删除.查看等命令. 1.cp 命令 ...

  4. linux动态库ppt,LINUX系统中动态链接库创建与使用补充_区块链白皮书代写|市场计划书项目PPT设计_Tbleg...

    区块链白皮书代写 大家都知道,在WINDOWS系统中有很多动态链接库(以.DLL为后缀文件,DLL即Dynamic Link Library).这种动态链接库,和静态函数库不同,它里面函数并不是执行程 ...

  5. linux 动态库系统目录,Linux共享库.so文件的命名和动态链接

    Linux中的.so文件 是动态链接的产物 共享库理解为提供各种功能函数的集合,对外提供标准的接口 Linux中命名系统中共享库的规则 主版本号:不同的版本号之间不兼容 次版本号:增量升级 向后兼容 ...

  6. linux动态库查找,Linux查找动态库的3种方法

    Linux查找动态库的3种方法 linux默认加载动态库的路径是 /lib或者是/lib64, 32位的系统是前者,64位是后者. 如果找不到还有3个地方 LD_LIBRARY_PATH rpath ...

  7. linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性

    操作系统Centos 5.6 i686 2.6.18-53.1.4.el5vm. gcc版本4.1.2 20080704(Red Hat 4.1.2-48) ld版本2.17.50.0.6-6.el5 ...

  8. linux 动态库系统目录,Linux操作系统:指定动态库(.so)搜索路径(4)

    表1: 程序pos输出结果和动态库的对应关系 创建各个动态库,并放置在相应的目录中.测试环境就准备好了.执行程序pos,并在该命令行中设置环境变量LD_LIBRARY_PATH. # LD_LIBRA ...

  9. linux 动态连接原理,Linux动态连接原理 GOT PLT表详解

    注意: 以下所用的连接器是指,ld, 而加载器是指ld-linux.so; 1,GOT表: GOT(Global Offset Table)表中每一项都是本运行模块要引用的一个全局变量或函数的地址.可 ...

  10. Linux动态库应用

    Linux动态库应用 Linux动态库应用 简介: 动态库调用方式一 动态库调用方式二 简介: 动态库在编程过程中是一个很重要的技术,在实际开发过程中,我们在设计各模块时,常常会用到一些通用的功能,如 ...

最新文章

  1. Python面试必备—分布式爬虫scrapy+redis解析
  2. MySQL二进制日志文件过期天数设置说明
  3. 尺取法——POJ3061
  4. Opencv——批量处理同一文件夹下的图片(解决savedfilename = dest + filenames[i].substr(len)问题)
  5. AJAX-服务器响应
  6. python列表乘数值_《利用Python进行数据分析》十一章· 时间序列·学习笔记(一)...
  7. iframe内部内容在浏览窗口位置固定的问题
  8. DDD(领域驱动设计)
  9. 容器入门(3) - docker
  10. 记录windows下docker常见错误与解决办法
  11. 微信公众平台小程序(应用号)开始内测了
  12. ug12对计算机配置要求,ug12.0对电脑配置要求
  13. 图像处理基础:特征金字塔
  14. 【emmm】快速算三角形角度
  15. 支付宝APP支付-Android+springboot搭建后端
  16. 网络图片缩略图查看工具
  17. P,MTHBGWB 水题
  18. python爬虫案例分析:爬取肯德基门店地址数据导入csv文件并最终用excel文档呈现
  19. nginx应用总结(1)-- 基础知识和应用配置梳理
  20. 蓝湖-简单好用的设计协作平台

热门文章

  1. 12个数据科学家秒懂的瞬间
  2. [bzoj1001]狼抓兔子
  3. FSSC22000认证辅导,FSSC22000认证为企业提供完整的食品安全管理体系
  4. Java学习系列之不要学习代码,要学会思考
  5. html语言结构格式是什么,HTML语言是什么?
  6. 石英片JGS1/JGS2/JGS3
  7. C# 自定义Label实现 指定字符串(关键词)高亮显示(字体、颜色)
  8. 根据excel制作柱形图表并生成html
  9. 网络编程入门从未如此简单(一):假如你来设计网络,会怎么做?
  10. Android assets文件使用