创建文件系统时,可以指定块的大小。如果将来在你的文件系统中是一些比较大的文件的话,使用较大的块大小将得到较好的性能。将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

有多少个 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. 增加表空间大小的四种方法

    增加表空间大小的四种方法 Meathod1:给表空间增加数据文件 ALTER TABLESPACE app_data ADD DATAFILE 'D:\ORACLE\PRODUCT\10.2.0\OR ...

  2. linux磁盘扩空间,Linux磁盘空间扩容(LVM)

    Linux磁盘空间扩容(lvm) 随着系统的运行时间增长,业务数据的增长,原有磁盘的空间会存在空间不足情况,导致系统不能正常运行,或者系统管理员磁盘没有完全划完,根据使用者的需求自行划分.那么怎么才能 ...

  3. 为什么硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录shen1: 设备上没有空间...

    现象:df -h显示硬盘还有14G空间,但是touch file/mkdir directory都失败,提示硬盘没有空间 原因:df -ia查看下inode的使用情况,发现已经爆了,(下图显示使用88 ...

  4. 为什么硬盘明明还有空间,linux却说硬盘空间不足?inode;mkdir: 无法创建目录shen1: 设备上没有空间

    现象:df -h显示硬盘还有14G空间,但是touch file/mkdir directory都失败,提示硬盘没有空间 原因:df -ia查看下inode的使用情况,发现已经爆了,(下图显示使用88 ...

  5. linux+oracle磁盘空间,Linux下Oracle软件、数据文件等所在的磁盘分区空间不足的解决思路...

    虚拟机中的Oracle运行的久了,归档.数据文件不断增长,原来安装ORACLE的分区空间不足. 此时可以重新向虚拟机增加一块硬盘,将ORACLE的数据文件或归档的目录挂载到新增加的磁盘分区上. --我 ...

  6. linux系统交换空间,Linux中如何使用和管理交换空间

    给计算机配置交换空间可以充分利用系统,在物理内存被充满时使用,那么Linux下要如何使用Linux交换空间呢?Linux交换空间又要如何管理呢?下面小编就给大家介绍下Linux下使用交换空间的方法,一 ...

  7. linux系统盘需要空间,Linux操作系统要怎么查看磁盘剩余空间

    在linux要怎么查看硬盘剩余空间呢?接下来是小编为大家收集的Linux操作系统要怎么查看磁盘剩余空间,希望能帮到大家. Linux操作系统要怎么查看磁盘剩余空间 这里我们用Df命令查看,Df命令是以 ...

  8. Linux虚拟内存交换空间,Linux 添加 Swp 虚拟内存交换空间

    当 Linux 服务器的内存不够使用时,可以文件或者分区来当作虚拟内存,比如在测试机或者自己学习用的机器上,跑的服务比较多,又没有必要搞那么好(贵)的机子,添加swp交换空间也是一个不错的选择. 首先 ...

  9. linux无损扩空间,linux无损扩容的方法

    云平台客户的 步骤 1.备份 就算是无损的扩容,但难免会出什么意外,备份是必不可少的,一般云平台都有备份功能,可直接对磁盘做一次全量备份. 2.用fdisk重新分区 默认的分区如下 root@i-ab ...

最新文章

  1. 共赴CIO时代,永洪BI如何推动企业数字化转型与创新?
  2. Angular Component ngOnInit和ngAfterViewInit调用时机的讨论
  3. 面试题之--实现取余
  4. 怎么安装红旗Linux5,如何用硬盘安装红旗LINUX5_0.doc
  5. 访问index.php跳转,打开index.php后,跳转到/user/login.html
  6. 排序算法:直接插入排序算法实现及分析
  7. Composer自动加载(一)
  8. python保存模型 drop_(长期更新)【python数据建模实战】零零散散问题及解决方案梳理...
  9. 中国高校鄙视链指南...
  10. Visual Studio中删除所有空行
  11. Java实现系统统一对外开放网关入口设计
  12. Dot.js中添加函数用法
  13. OpenCV:二值化函数cv2.threshold
  14. 超声波风速风向传感器的测量原理
  15. gogodroid--android 上的IPV6工具
  16. Android——待办事项(ToDoList)
  17. XML的优势及应用领域
  18. 少说话多写代码之Python学习017——字典的方法(items、pop)
  19. 【LeetCode】378. 有序矩阵中第 K 小的元素(js 实现)
  20. 常见的SEO工具有哪些

热门文章

  1. 工作的准备:atoi,itoa,strcpy,memcpy,strcmp,二分查找,strcat
  2. CCF202109-1 数组推导
  3. mysql索引条件下推_MySQL索引条件下推的简单测试
  4. PostgreSQL中常见的14个用户安全配置
  5. 包邮送50本畅销书,涵盖数据库、Python、机器学习等!
  6. 数字化转型鸿沟如何消除?ROMA Connect融合集成,联接企业应用现在与未来
  7. 论文阅读丨神经清洁: 神经网络中的后门攻击识别与缓解
  8. 华为云GaussDB(for MySQL)2.0全新升级,三大技术大揭秘
  9. C语言中动态内存分配的本质是什么?
  10. 最强云硬盘来了,让AI模型迭代从1周缩短到1天