这本书“HBase:权威指南”指出
不建议在单个服务器上安装不同的文件系统。这可能会对性能产生不利影响,因为内核可能必须拆分缓冲区缓存以支持不同的文件系统。据报道,对于某些操作系统,这可能会对性能产生毁灭性的影响。
这真的适用于 Linux 吗?我从未见过大于 300 MB 的缓冲区缓存,而且大多数现代服务器都有 GB 的 RAM,因此将缓冲区缓存拆分到不同的文件系统之间应该不是问题。我是否遗漏了其他内容?
答案1
拆分缓冲区缓存是有害的,但其影响却微乎其微。我猜它的影响非常小,基本上无法衡量。
你必须记住,不同挂载点也是不可共享的。
虽然不同的文件系统使用不同的分配缓冲区,但内存的分配并不只是为了放在那儿,看起来很漂亮。数据来自slabtop
运行 3 种不同文件系统(XFS、ext4、btrfs)的系统:
OBJS 活动使用 OBJ 大小 SLABS OBJ/SLAB 缓存大小 名称 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 (许多其他物体)
如您所见,任何真正可观的缓存的利用率都超过 90%。因此,如果您并行使用多个文件系统,则成本大约等于丢失 5% 的系统内存,如果计算机不是专用文件服务器,则成本会更低。
答案2
我不认为有负面影响。我经常在同一台服务器设置上混合使用 ext3/ext4 和 XFS(甚至 ZFS)。考虑到我所运行的硬件,我不会将我的性能描述为低于预期。
[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)
您是否担心特定场景?会使用哪些文件系统?您使用的是哪种发行版?