From: http://blog.sina.com.cn/s/blog_640233a30100r3u0.html
想解决缓存的性能问题,准备选用BerkeleyDB作为存储方式,但会有单个文件的问题。
BerkeleyDB的性能没有问题的,DB库非常紧凑,不超过500K,但可以管理大至256T的数据量。
操作系统能够达到多少的单个文件的,对于ext3系统,是根据格式化时选择的blocksize来决定的:
引用
Filesystem File Size Limit FilesystemSize Limit
ext2/ext3 with 1 KiB blocksize 16448 MiB (~ 16 GiB) 2048 GiB (= 2TiB)
ext2/3 with 2 KiB blocksize 256 GiB 8192 GiB (= 8 TiB)
ext2/3 with 4 KiB blocksize 2048 GiB (= 2 TiB) 8192 GiB (= 8TiB)
ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alphaonly) 65568 GiB (~ 64 TiB) 32768 GiB (= 32 TiB)
ext2/ext3 with 1 KiB blocksize 16448 MiB (~ 16 GiB) 2048 GiB (= 2TiB)
ext2/3 with 2 KiB blocksize 256 GiB 8192 GiB (= 8 TiB)
ext2/3 with 4 KiB blocksize 2048 GiB (= 2 TiB) 8192 GiB (= 8TiB)
ext2/3 with 8 KiB blocksize (Systems with 8 KiB pages like Alphaonly) 65568 GiB (~ 64 TiB) 32768 GiB (= 32 TiB)
参考: http://www.suse.de/~aj/linux_lfs.html
也就是说,ext3系统对应的单个文件限制为:
1k 16G
2k 256G
4k 2T
我们怎么知道现在的分区是多大的blocksize呢?
一般而言,格式化时会自动选择一个合适的文件大小的,硬盘大则会选4k,很小的则选择1k的。
在正常的硬盘(600G)上:
[root@aslibra ~]# dumpe2fs /dev/sda3
dumpe2fs 1.35 (28-Feb-2004)
Filesystem volume name:
Last mountedon:
FilesystemUUID:
Filesystem magicnumber:
Filesystem revision#:
Filesystemfeatures:
Default mountoptions:
Filesystemstate:
Errorsbehavior:
Filesystem OStype:
Inodecount:
Blockcount:
Reserved blockcount:
Freeblocks:
Freeinodes:
Firstblock:
Blocksize:
虚拟机上分配的硬盘(7G)比较小:
[root@aslibra /]# dumpe2fs /dev/sda1
....
Blocksize:
也就是说,基本上单个文件可以用完整个硬盘,空间不用太担心。
有兴趣看更多的文件格式比较:
http://en.wikipedia.org/wiki/Comparison_of_file_systems