我是一名企业 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 驱动器上?我应该把文件夹放在/home
SSD 中吗?我应该把 JVM 放在 SSD 上还是应该使用 RAMDISK...)
总之,如何对我的计算机进行分区以优化其以用于 Web 应用程序开发?
答案1
我认为你可以把它放在/home
旧硬盘上。系统的其余部分可以放在新的 SSD 驱动器上。
或者,如果您还想加速/home
目录中某些文件(可能是一些项目文件)的速度,您可以将其放在/home
SSD 上并将 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 等。