外观
该用虚拟机还是容器
在 NAS 上跑一个额外的服务时,先决定用哪种方式。选错了不是不能用,而是会一直别扭。
本质差别
容器共用 NAS 的操作系统内核,只打包应用和它的依赖。启动以秒计,内存开销通常几十到几百 MB。
虚拟机模拟一整台计算机,跑自己完整的操作系统。启动要一两分钟,内存按分配量实打实占用,还要额外划一块磁盘空间。
怎么选
| 需求 | 选择 | 理由 |
|---|---|---|
| 跑一个 Linux 服务(笔记、相册、下载) | 容器 | 有现成镜像,开销小 |
| 需要跑 Windows 软件 | 虚拟机 | 容器做不到 |
| 需要完整的桌面环境 | 虚拟机 | — |
| 想试试别的 Linux 发行版 | 虚拟机 | 内核不同 |
| 需要严格隔离(跑不太信任的东西) | 虚拟机 | 隔离更彻底 |
| 软路由 | 虚拟机 | 需要独占网卡和内核网络栈 |
| 需要直通显卡或 USB 设备 | 虚拟机 | 直通是虚拟化的能力 |
一句话版本:能用容器就用容器,只有容器做不到时才上虚拟机。
虚拟机的真实成本
决定跑虚拟机之前,把这些算进去:
- 内存是硬成本。 分配给虚拟机的内存,NAS 本身就用不到了。一个 Windows 虚拟机通常要 4 GB 起。
- CPU 要分核心。 虚拟机满负载时会和 NAS 的其他服务抢资源,影视转码可能因此卡顿。
- 磁盘空间。 虚拟磁盘文件动辄几十 GB,而且随使用增长。
- 它也需要维护。 虚拟机里的系统同样要打补丁、要备份。很多人跑起来就忘了,半年后它成了一个没人管、还开着端口的隐患。
- 写入模式不友好。 虚拟磁盘是随机写入密集的大文件,放在 Btrfs 的写时复制目录上容易产生碎片,见文件系统选择。
什么时候干脆别在 NAS 上跑
- 需要长期稳定运行的软路由:跑在 NAS 里意味着 NAS 重启时全家断网。独立设备更省心。
- 高负载的游戏服务器或编译任务:会持续抢占 NAS 资源,影响它的本职工作。
- 只是偶尔用一次的 Windows 软件:用你自己的电脑。
检查结果
明确写下:这个需求为什么容器满足不了、虚拟机要分配多少内存和磁盘、它由谁维护和备份。三个问题都有答案再动手。