使用 LVM 进行 SSD 缓存

使用 LVM 进行 SSD 缓存

我是一名企业 Web 应用开发人员。目前,我只从事服务器端工作。我开发东印度公司使用Java任何一个JavaScript。我的开发堆栈包括:

  • Maven
  • JoNAS Web 服务器 (或 Tomcat)
  • 肥皂用户界面
  • NodeJS
  • Sublime Text
  • 卷曲
  • zsh(用于 shell 脚本)。

我的机器目前运行 Ubuntu 16.04 LTS,使用默认分区方案(因为到今天为止我只有 1TG 硬盘)。

我的电脑规格摘要:https://0bin.net/paste/WrztIvzvGsGl0K1q#AWfh4Bvgnp3WnyjkzGxuLQPWSIf5FuihrUY9s1VPreD

输出du -sh /* 2> /dev/null

14M   /bin
147M  /boot
184K  /dev
22M   /etc
45G   /home
0     /initrd.img
0     /initrd.img.old
801M  /lib
4,0K  /lib64
16K   /lost+found
16K   /media
16K   /mnt
4,0K  /mnt1
4,0K  /mnt_name
2,4G  /opt
0     /proc
490M  /root
9,7M  /run
14M   /sbin
4,0K  /snap
12K   /soft
4,0K  /srv
0     /sys
112K  /tmp
6,9G  /usr
1,4G  /var
0     /vmlinuz
0     /vmlinuz.old
4,0K  /yourdev-crontab

今天,我收到了新的 SSD 驱动器也就是 256GB。因此,我需要考虑我的分区方案,以便尽可能提高性能。

我的所有开发堆栈(命令行工具除外)都存储在/opt/usr/local文件夹中。

问题是:我应该如何分区硬盘以便从 SSD 速度中受益?(我应该把什么放在 SSD 驱动器上,我应该把什么放在 1TG 驱动器上?我应该把文件夹放在/homeSSD 中吗?我应该把 JVM 放在 SSD 上还是应该使用 RAMDISK...)

总之,如何对我的计算机进行分区以优化其以用于 Web 应用程序开发?

答案1

我认为你可以把它放在/home旧硬盘上。系统的其余部分可以放在新的 SSD 驱动器上。

或者,如果您还想加速/home目录中某些文件(可能是一些项目文件)的速度,您可以将其放在/homeSSD 上并将 HDD 安装在 下/media

答案2

使用 LVM 进行 SSD 缓存

根据您提供的数据,所有东西都应该可以很好地安装在具有足够可用空间的 SSD 上,您的设置甚至可能只需要一半的空间。正如我在评论中所写,即使使用 Lyx/TeX 之类的软件包,我的根分区(/home 除外)也不需要超过 30 GB 的空间。

我假设到目前为止,您只有一个包含所有数据的根分区,并且正如您所说,您目前没有使用加密。您可以继续在 SSD 上运行此设置并设置 lvmcache,将 SSD 的一半或更少的大小专用为 HDD 的缓存,以帮助改善 HDD 对常用块的读取。将 1TB HDD 与大约 100 GB 的闪存存储配对似乎并不异常顺便说一下,可能会很多,但这取决于您的使用模式。

我最近自己设置了 lvmcache,并且发布了问答(抱歉让您久等了)尝试尽可能简短地解释设置,并尽量减少硬编码值。由于您不需要加密,因此可以跳过 cryptsetup 步骤,并使用原始设备(/dev/sd*)而不是映射器设备作为加密卷(/dev/mapper/)。

需要考虑的事项:

  • SSD 缓存是整个 SSD 或 HDD 存储设置之间的中间地带,可提高读取性能。写入性能受限于最慢设备可能并不总是 HDD(尽管您的 SSD 至少比我当前的示例高出一个级别)。
  • 性能提升取决于您的使用模式,到目前为止,运行虚拟机对我来说大多是有积极影响的,但您的效果可能会有所不同。
  • 只需将带有缓存的 HDD 视为/media刘所描述的另一个挂载的数据卷。将您不经常需要的所有内容或已变得太大的内容放在 HDD 上的 /opt、/usr/local 或 /home 中,并从 SSD 符号链接到它
  • 为了快速读写,您应该考虑使用 ramdisk、ccache 等。

相关内容