linux下的文件系统选型
- Michael - shell's home 贝壳原来一直认为文件系统可以随便选,结果最近吃了两次苦头. 一个是btrfs对虚拟机支持不良,另一个是特定情况下xfs性能比ext3高20倍. 痛定思痛,打算列一下文件系统选型的方法和依据,欢迎拍砖. 下面我列一下纳入参考的文件系统,当然,ntfs就不要出来搞基了,玩嵌入式/光盘live之类的朋友也不要来凑热闹了阿.
贝壳原来一直认为文件系统可以随便选,结果最近吃了两次苦头。一个是btrfs对虚拟机支持不良,另一个是特定情况下xfs性能比ext3高20倍。痛定思痛,打算列一下文件系统选型的方法和依据,欢迎拍砖。
文件系统 | btrfs | ext3 | ext4 | jfs | reiserfs | reiser4 | xfs | ntfs | zfs |
最大卷容量 | 16 EB | 32 TB | 1 EB (16TB) | 32 PB | 16 TB | ?? | 16 EB | 256 TB | 16 EB |
最大文件容量 | 16 EB | 2 TB | 16 TB | 4 PB | 8TB | 8TB | 8 EB | 16 TB | 16 EB |
目录结构 | B tree | list/tree | list/Htree | B tree | B+ tree | dancing B* tree | B+ tree | B+ tree | hash table |
文件分配 | extents | bitmap/table | bitmap/extents | bitmap/extents | bitmap | ?? | extents | bitmap | ?? |
ACLS | Yes | Yes | Yes | Yes | No | No | Yes | ACLS only | Yes |
checksum | Yes | No | journal | No | No | No | No | No | Yes |
透明压缩 | Yes | No | No | No | No | Plugin | No | Yes | Yes |
透明加密 | No | No | No | No | No | Plugin | No | Yes | Yes |
online defrag | Yes | No | Yes | Yes | No | Yes | Yes | Yes | Yes |
shrink | Yes | Yes | Yes | No | Offline resize | Offline | No | Yes | No |
特性 | SSD | Stream |
文件系统 | btrfs | ext3 | ext4 | jfs | reiserfs | xfs |
全填充速率 | 1m22.083s | 1m34.821s | 1m15.495s | 1m5.819s | 1m34.310s | 1m38.953s |
全填充利用率 | 0.8945 | 0.9065 | 0.9047 | 0.9959 | 0.9927 | 0.9918 |
大文件效率 | 14.676 | 17.435 | 10.7255 | 13.7493 | 14.319 | 12.7093 |
大文件删除 | 2.693 | 5.262 | 2.422 | 0.037 | 1.802 | 0.296 |
小文件效率 | 9.949 | 5.131 | 2.7866 | 40.949 | 13.605 | 8.978 |
小文件删除 | 6.737 | 10.7227 | 1.39 | 16.116 | 2.756 | 5.653 |
循环列文件 | 0.124 | 0.089 | 0.002 | 0.094 | 0.19 | 0.099 |
大文件read | 2046206 | 1931451 | 1946598 | 2003912 | 1537752 | 1970242 |
大文件write | 1279625 | 565960 | 926461 | 962617 | 446841 | 812466 |
大文件rndread | 2012771 | 1926287 | 1934420 | 1985273 | 1490199 | 1976056 |
大文件rndwrite | 1380404 | 1187010 | 1294689 | 1446011 | 1308210 | 1384804 |
小文件read | 2375893 | 2934815 | 3019732 | 2708437 | 2559371 | 2236197 |
小文件write | 926602 | 526469 | 681710 | 844237 | 395810 | 939536 |
小文件rndread | 3324647 | 3544566 | 2702282 | 3737551 | 4045575 | 2666753 |
小文件rndwrite | 910277 | 1525970 | 1244240 | 1910756 | 1790393 | 1311261 |
以上数据,在公司的debian testing上测定。机器型号Dell Inspiron 560s,CPU Dual-Core E5700,4G内存,硬盘WDC WD3200AAKS-75L9A0。系统是debian testing,内核2.6.39-2-amd64。全填充是用time dd if=/dev/zero of=abc来测试填满一个分区的速度和容量。大文件是四个ISO文件,共1.3G,从tmpfs上复制到目标设备上的时间平均值,三次平均。小文件是pypy/python2.7/linux kernel2.6.39所有源码,总计49242个文件,629M。从tmpfs上复制到目标设备的时间平均值,三次平均。循环列文件是通过time find .测试效率。下面测试单位为bytes/sec,是iozone测试结果。