在单个Linux服务器上运行不同文件系统的性能影响

这本书“HBase:权威指南”指出

不build议在一台服务器上安装不同的文件系统。 这可能会对性能产生不利影响,因为内核可能必须拆分缓冲区caching以支持不同的文件系统。 据报道,对于某些操作系统来说,这可能会造成破坏性的性能影响。

这是否真的适用于Linux? 我从来没有见过缓冲区caching大于300兆字节,大多数现代服务器都有千兆字节的内存,所以在不同文件系统之间分配缓冲区caching不应该成为问题。 我错过了别的吗?

分割缓冲区caching是有害的,但是它的效果是最小的。 我猜测它太小了,基本上不可能测量。

您必须记住,不同安装点之间的数据也是不可共享的。

虽然不同的文件系统使用不同的分配缓冲区,但并不像分配内存只是坐在那里看起来漂亮。 运行3个不同文件系统(XFS,ext4,btrfs)的系统的slabtop数据:

   OBJS主动使用OBJ尺寸板坯OBJ / SLAB CACHE SIZE NAME 
  42882 42460 99%0.70K 1866 23 29856K shmem_inode_cache
  14483 13872 95%0.90K 855 17 13680K ext4_inode_cache
   4096 4096 100%0.02K 16 256 64K jbd2_revoke_table_s
   2826 1136 40%0.94K 167 17 2672K xfs_inode
   1664 1664 100%0.03K 13 128 52K jbd2_revoke_record_
   1333 886 66%1.01K 43 31 1376K btrfs_inode_cache
 (许多其他的对象)

正如您所看到的,任何真正可用的caching都具有超过90%的利用率。 因此,如果您并行使用多个文件系统,则成本大约相当于丢失系统内存的5%,如果计算机不是专用文件服务器,则花费更less。

我不认为有负面影响。 我经常在同一台服务器上将ext3 / ext4与XFS(甚至是ZFS)混合在一起。 考虑到我正在运行的硬件,我不会将我的性能描述为比预期的要less。

 [root@Lancaster ~]# mount /dev/cciss/c0d0p2 on / type ext4 (rw) /dev/cciss/c0d0p7 on /tmp type ext4 (rw,nobarrier) /dev/cciss/c0d0p3 on /usr type ext4 (rw,nobarrier) /dev/cciss/c0d0p6 on /var type ext4 (rw,nobarrier) vol2/images on /images type zfs (rw,xattr) vol1/ppro on /ppro type zfs (rw,noatime,xattr) vol3/Lancaster_Test on /srv/Lancaster_Test type zfs (rw,noatime,xattr) 

你是否担心特定的情况? 什么文件系统将会发挥作用? 你在什么分配?