Chinaunix首页 | 论坛 | 博客
  • 博客访问: 442353
  • 博文数量: 112
  • 博客积分: 4451
  • 博客等级: 上校
  • 技术积分: 1063
  • 用 户 组: 普通用户
  • 注册时间: 2009-02-23 10:19
个人简介

更多精品http://shop65927331.taobao.com

文章分类

全部博文(112)

文章存档

2011年(19)

2010年(54)

2009年(39)

分类: LINUX

2011-04-06 10:30:02

流行女装爆款:


mkfs.ext3缺省情况下,是根据blocksize和bytes-per-inode来计算出一个文件系统在格式化时有多少inodes的。不过,我觉得应该之和bytes-per-inode有关,因为mkfs.ext3会根据每一个bytes-per-inode大小来创建一个inode,因此刨除保留块,超级块外,一个分区剩下的大小除以这个bytes-per-inode就大约是inode的个数。

我做了一个实验,3GB大小的磁盘,分别指定blocksize和bytes-per-inode,得到的inode个数列表如下:

---------------------------------------------------------------------------------------
blocksize                 bytes-per-inode                 number-inode
---------------------------------------------------------------------------------------
1024                               1024                                 3072000
---------------------------------------------------------------------------------------
1024                             2048                                 1536000
----------------------------------------------------------------------------------------
1024                               4096                                 768000
----------------------------------------------------------------------------------------
2048                             2048                                 1537088
----------------------------------------------------------------------------------------
2048                             4096                                 768544
---------------------------------------------------------------------------------------

上面的实验数据可以得出下面的结论:

(bytes-per-inode) * (number-inode) =~ 3GB (filesystem size)

因为在mkfs.ext3中,blocksize最小为1024,而bytes-per-inode最小不能小于blocksize,因此指定bytes-per-inode为1024可以获得最大inode个数。

当然,如果你还嫌不够,-N的参数也许能满足变态要求的你,-N表示你来指定希望的inodes个数,这下,你该满足了吧。
不过,也不是不限制的,我尝试指定filesystem size(bytes)个数时,报错了。

root@wgzhao:~# mkfs.ext3 -n -N 3145728000 /dev/sdb
mke2fs 1.40.3 (05-Dec-2007)
mkfs.ext3: inode_size (128) * inodes_count (3145728000) too big for a
         filesystem with 768000 blocks, specify higher inode_ratio (-i)
         or lower inode count (-N).


当满足inode_size * inodes_count的要求后,不一定能满足其他要求,比如

root@wgzhao:~# mkfs.ext3 -n -N 21420000 /dev/sdb
mke2fs 1.40.3 (05-Dec-2007)
/dev/sdb: Cannot create filesystem with requested number of inodes while setting up superblock


太大的inodes个数,导致超级块无法创建。

到底最大能为多少为inodes个数, 当不知道的时候,就穷举,我针对我的这个3GB空间大小,得到最后的最大inodes值,为12255232

接下来就是看看12255232这个数字有什么秘密隐藏在里面了。

3145728000 / 12255232 = 256.68 ~= 256

也就是说折算成bytes-per-inode应该是256了。

这样的话,一个分区创建为ext3文件系统时,最大的inode个数大约是
filesystem size (bytes) / 256

为了验证这个结果,我继续做了一个测试,当我把分区扩大到4GB时,inode个数大约应该是

4294967296 / 256 = 16777216 个


# mkfs.ext3 -m 0 -n -N 16318465 /dev/sdb
mke2fs 1.40.3 (05-Dec-2007)
/dev/sdb: Cannot create filesystem with requested number of inodes while setting up superblock

# mkfs.ext3 -m 0 -n -N 16318464 /dev/sdb
mke2fs 1.40.3 (05-Dec-2007)

warning: 112 blocks unused.

Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
16318464 inodes, 1023888 blocks
0 blocks (0.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=270536704
498 block groups
2056 blocks per group, 2056 fragments per group
32768 inodes per group
Superblock backups stored on blocks:
         2056, 6168, 10280, 14392, 18504, 51400, 55512, 100744, 166536, 257000,
         499608, 705208


实际最大值为16318465,比我预计的小了很多。

4294967296 / 16318465 = 263.1 <256

我想中间的差距应该是超级块等信息占用了一些block吧,具体还不是太清楚。

顺便给出一个文件系统最大磁盘大小数据表

文件系统                       文件大小限制                     文件系统大小限制
----------------------------------------------------------------------------------------------------
ext2/3(1K bs)       16448 MB (~ 16 GB)     2048 GB (= 2 TiB)
ext2/3(2k bs)       256 GB           8192 GB (= 8 TiB)
ext2/3(4k bs)       2048 GB (= 2 TiB)       8192 GB (= 8 TiB)
ext2/3(8k bs)       65568 GB (~ 64 TiB)     32768 GB (= 32 TiB)
ReiserFS 3.5       2 GB           16384 GB (= 16 TiB)
ReiserFS 3.6(knl2.4)   1 EB           16384 GB (= 16 TiB)
XFS           8 EiB           8 EiB
JFS(512 bs)       8 EiB           512 TiB
JFS(4k bs)       8 EiB           4 PiB
NFSv2 (client side)     2 GB           8 EiB
NFSv3 (client side)     8 EiB           8 EiB
------------------------------------------------------------------------------------------------------
阅读(2392) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~