在工作中,我主要使用笔记本电脑(操作系统是 Ubuntu 20.04),因为我需要移动。但是,当我在家时,我也有一台功能强大的台式电脑(也运行 Ubuntu 20.04),我更喜欢用它来编译大型软件项目,因为它的速度要快得多。由于我经常在笔记本电脑和 PC 之间切换,所以我需要保持所有文件同步(文档、浏览器书签等),这当然是可能的,但我想实现一个更舒适的解决方案。
有没有可能根本不使用 PC 中安装的 SSD,而是直接从笔记本电脑中安装的 SSD 启动?例如通过以太网启动?然后我就可以使用 PC 的计算能力,当我需要随身携带笔记本电脑时,我不需要记住同步它,因为我无论如何都使用相同的 SSD。
我的笔记本电脑是联想 ThinkPad T14s AMD(1Gbit 以太网),台式电脑是带有 2.5GBit 以太网适配器的 AM4 平台。
如果需要,我很乐意提供更多详细信息。不确定我想要实现的目标是否有可能实现。如果需要,我愿意购买额外的硬件(例如交换机?)。
答案1
这是可能的,但请记住,标准千兆以太网的速度仅为 ~100 MB/s,这比任何 SSD 都慢得多(即使 SATA SSD 的速度也约为 500 MB/s),对于大型线性读取,它甚至比大多数 HDD 都慢。它可能与从廉价 USB 启动最相似。
对于日常工作(交互式使用),这实际上可能会抵消更快的 CPU 带来的性能提升。您很可能需要在本地存储或 tmpfs(内存中)上编译软件,否则网络文件系统将无法跟上。请记住,为了编译文件,编译器实际上必须读它(然后读取包含的标题及其包含的标题,等等) - 即使使用缓存,它仍然会在实际到达 CPU 绑定进程之前引入显着的延迟。
除此之外,我仍然建议在本地启动桌面操作系统,并仅/home
通过网络安装。这有几个优点:
启动过程将更简单。您不需要将网络集成到 Linux initramfs 中 - 您将能够正常使用桌面上安装的任何内容。使用 NFS,这可能就像 /etc/fstab 条目一样简单。
笔记本电脑的操作系统不需要关心两台计算机之间的硬件差异。您不需要保留两套以太网配置、两套 GPU 驱动程序等。
您仍然可以将桌面的快速本地存储用于操作系统本身(这可以避免日常任务中的延迟大幅增加,并使以太网连接保持空闲状态 - 从而可以更快地通过网络访问 /home)。
所有网络启动机制都要求笔记本电脑始终处于开机状态并运行操作系统来实际提供数据。
如果你分享全部的SSD,那么您在同时从两台计算机启动相同的 rootfs 时会遇到一些麻烦 - 基于块的方法(iSCSI、NBD)是正确的,而基于文件的方法(NFS、SMB)只有在第二台计算机以只读方式访问文件系统时才会可靠地工作。
因此,即使有些管理员做从中央主机启动许多系统,通常只有 /usr 和 /lib 实际上是共享的(而且重要的是,只读的),而 /var 仍然从本地存储挂载。
唯一的其他解决方法是启动笔记本电脑从 USB 记忆棒包含一个最小的“服务器”Linux 版本,然后允许它通过网络以读写模式为 SSD 提供服务。
对于系统范围的挂载,我建议从 NFSv4 开始,它通常是透明 Linux 到 Linux 文件访问的首选协议(实际上是 Windows 的 SMBv3 的 Unix 等效协议)。
但请记住,NFS 没有良好的“中间立场”安全层 - 它只有两个选项:
sec=krb5p/krb5i
(Kerberos)和sec=sys
(受信任的 IP 地址)。默认值为 sec=sys,这根本不能保证您的安全。(我已经为我的个人服务器配置了 Kerberos,但它需要更多的基础设施。)在 Debian(可能还有 Ubuntu)上,可以通过安装来使用 NFS 服务
nfs-kernel-server
。将 /home 的条目添加到文件/etc/exports
,并确保防火墙允许连接到端口 2049/tcp。(您可以忽略 portmapper/statd/mountd,它们与 NFSv4 无关。)(此外,尽管有些文章认为 NFSv4 使得 /etc/exports 变得更加复杂,需要一个神奇的“fsid=0”并且必须将所有内容放在“/export”下,但这实际上并非如此 - 这是一个选择,但传统方式只需拥有 /home 条目就完全足够了。)
在桌面上,安装
nfs-common
并试试你的运气:mount -t nfs -o vers=4,soft,nodev,nosuid LAPTOP_ADDRESS:/home /mnt/laptop
待其正常工作后,添加等效的 /etc/fstab 条目:
LAPTOP_ADDRESS:/home /mnt/laptop nfs vers=4,soft,nodev,nosuid 0 0
这不会覆盖您的桌面的 /home。如果您想要覆盖,只需相应地编辑安装路径即可 - 但如果您想同时轻松使用“独立桌面”和“绑定到笔记本电脑”选项,那么将其保留在 /mnt/laptop 可能更容易。
(可以使用 'autofs' 守护进程来实现关于在哪里安装什么的更复杂的逻辑。)
有几种替代方案:
sshfs
即 SFTP (SSHv2)。这提供了良好的安全性,性能好的,但每个挂载限制为一个 UID,并且不保证支持一些较罕见的文件操作(fallocate、truncate 等),仅支持基本的读/写。因此,您可以使用它来访问您的个人主目录,但您不能从中运行整个操作系统,也不应该通过 sshfs 进行太多编译。SMBv3(笔记本电脑上有 Samba)。这提供了平均安全性,并且通常介于 SFTP 和 NFSv4 之间。不执行符号链接。
cifs
又称为 SMBv1(同样适用于 Samba)。没有数据加密,但它支持符号链接和其他 POSIX 内容,因此理论上可用于启动整个操作系统,但不建议使用。NBD、iSCSI 和 AoE (ATA-over-Ethernet)。这三种方式都用于导出整个块设备(即原始磁盘或分区)而不是文件系统。它们要求对要共享的设备具有独占访问权限,即不能同时在笔记本电脑上安装相同的 /home。另外,我不确定其性能是否与 NFS 一样好。
因此,如果您想通过 NBD/iSCSI 启动整个操作系统,您可以这样做,但笔记本电脑需要运行来自其他介质的专用服务器操作系统。
最后,对于文档,我只会使用 Syncthing。