我原本是以超级用户的身份提出这个问题的,但是对我来说这更像是一个服务器主题。
我刚刚买了一个16G内存的6核Phenom。 我主要用它来编译和video编码(和偶尔的web / db)。 我发现所有的活动都是磁盘绑定的,而我无法保留所有的6个内核。 我正在购买一个SSD RAID来坐在硬盘和tmpfs之间。
我想设置一个“分层”的文件系统,读取caching在tmpfs上,但安全写入到SSD。 我想要在SSD上最近没有被读取的文件(或块),然后使用压缩的FS或块层写回到HDD。
所以基本上读取: – 检查tmpfs – 检查SSD – 检查HD
并写道: – 直接SSD(安全),然后tmpfs(速度)
并定期或空间不足时: – 将最不频繁访问的文件向下移动一层。
我见过一些有趣的项目。 CacheFS,cachefsd,bcache看起来非常接近,但是我很难确定哪一个是实用的。 bcache似乎有点冒险(早期采用),cachefs似乎与特定的networking文件系统绑定在一起。
有“联盟”项目unionfs和aufs,让你挂在彼此的文件系统(通常在DVD上的USB设备),但都作为补丁分发,我觉得这种“透明”安装将成为一个内核function而不是FS。
我知道内核有一个内置的磁盘caching,但它似乎不适合编译。 当我将源文件移动到tmpfs时,速度提高了20倍。 我认为这是因为标准缓冲区专用于一个特定的进程,编译创build并在构build过程中破坏成千上万的进程(只是在那里猜测)。 看起来我真的想要这些文件预先。
我读过tmpfs可以使用虚拟内存。 在这种情况下,在SSD上创build一个带有swap的巨大tmpfs是否可行?
我不需要从生成的分层文件系统启动。 我可以从别处加载grub,kernel和initrd,如果需要的话。
我倾向于使用ZFS与l2arc和zil上的固态硬盘和zfs压缩和物理硬盘驱动器上的重复数据删除。
所以这是背景。 这个问题有几个组成部分我猜:
* Recommended FS and/or block layer for the SSD and compressed HDD. * Recommended mkfs parameters (block size, options etc...) * Recommended cache/mount technology to bind the layers transparently * Required mount parameters * Required kernel options / patches, etc..
编译:除了将二进制文件写入磁盘之外,还有什么意义? 完全为此使用tmpfs,然后将编译的东西移动到您的磁盘。
video编码:我build议使用rsync(在传输部分文件差异的模式下)在编码过程中将文件传输到磁盘。 例如,当一个video完成后,在后台循环中进行调节。 编码itselv也可以在tmpfs中进行。
顺便说一句:你使用什么分布? SuSE和RedHat安装了/ dev / shm(默认:使用tmpfs的RAM的halv)。