有没有什么方法可以从 SSD/USB/NVMe/eMMC 启动,让 Linux 操作系统(例如 Ubuntu)以及应用程序、服务和容器完全加载到在 RAM(例如 DDR3 或 DDR4)中创建的分区中。理想情况下,这应该允许使用其他分区,例如 SSD 或 HDD 用于文件存储,无论加载哪个操作系统,可能是 FAT32 或 exFAT 以支持跨操作系统。
这是因为,即使是大型 Linux 发行版也只使用几个单位或数十 GB,而许多用户希望为许多发行版使用相同的硬件,例如家庭娱乐、软件开发、游戏、媒体制作、办公生产力,用户可以在其中选择他们的环境来自引导加载程序或不同的 USB 密钥,并完全在 RAM 中运行该环境,其中用户文件驻留在 SSD 或 HDD 上,并且存在关闭过程、手动过程或将 RAM 存档中的文件自动同步到原始硬盘驱动器/USB,用于下次启动。
例如,您可以拥有一个基于 Steam 的定制操作系统用于游戏,切换到媒体流操作系统用于放松或聚会,切换到办公生产力操作系统,然后从 USB 密钥或 SSD 分区切换到教育操作系统或网络服务器操作系统或类似的,在不同操作系统的不同易失性到非易失性负载之间共享用户文件夹,存档回原始驱动器或密钥。大型廉价 RAID 阵列或单个 SSD 可以用来存储游戏、文件、媒体等文件,但将 RAM 用于核心操作系统、应用程序、库以及代码和服务等。
加载时间会增加,但操作系统、应用程序、库、服务和数据库、容器以及游戏和媒体制作速度可以利用大量 RAM 和廉价的 USB 加载器/存档或 SSD 来提高,而不必支付成本大型 SSD 或 NVMe 驱动器可以满足这些需求,与将操作系统和应用程序加载到 RAM 相比,它们加载速度更快,但响应速度较差。
在 RAM 中运行整个驱动器的能力在服务器场景中也很重要,尤其是数据库,这些数据库并不完全适合 SSD,而在寻道时间、读写时间、带宽以及重写和故障次数方面更适合 RAM。例如,在一个或多个 RAM 分区上运行包含数据库、服务器、代码、库等的 Docker 容器的 Linux 服务器操作系统,并利用其他驱动器来存储用户文件。此外,RAM 交换/工作文件夹区域在备份或媒体制作场景中也很有用,可以减少归档时间。
许多用户对当前的总线速度感到满意,但在专业、服务器、游戏和定制市场中,将快速 CPU/GPU 与加载到 RAM 中的操作系统文件/服务元素结合起来的能力将非常有利。
这个想法来自一些第 3 方 Windows 软件解决方案,它们可以在 RAM 上创建映射分区,将 bakc 手册存档到原始驱动器文件夹,还有多年前的 Hyperdrive,它使用 PCI 卡和 DDR(2?) 内存作为可识别的内部硬盘驾驶。这一想法可以应用于 Linux 内核,特别是在从 HDD 到 SDD 再到 PCIe 的转变中,进一步降低复杂性,并可能提高从 RAM 运行某些功能或整个操作系统的安全性。
另一个选项可能是在网络场景中为不使用任何 HD 的服务器提供小型 NAND 闪存启动负载,但使用大量 RAM 阵列进行仅易失性存储,使用外部存储进行备份/快照和启动文件,或者可能使用远程网络启动来加载将操作系统从云端写入RAM,归档到另一个云端。
SATA3 上的 6Gb/s 用于用户文件(例如媒体),加上 PC4-25600 的 25Gb/s 用于操作系统/库/应用程序/容器等。大多数现代电网中的电源在几乎所有情况下都足够一致,其中 UPS 或标准驱动器可以用于欠发达的电网和移动场合。
欢迎评论。
答案1
我需要准备一些小型 Linux 安装以从网络启动。经过一番谷歌搜索后,我发现了一些带有实时操作系统的 ISO,例如 Archlinux,它可以通过 PXE 下载并启动。这些Live OS完全从RAM运行,但通常主卷是用squashfs压缩的,一些文件夹用overlayfs转换为读/写。我花了一些时间和大量的阅读来安装和配置我自己的磁盘映像(不是 CD 的 ISO),可以将其下载到 RAM 中,并且 Linux 完全从该映像运行。使用的引导加载程序是 SYSLINUX 及其非常有用的模块“memdisk”。磁盘映像的大小只有900MB,安装的软件包是面向救援的。图像可以从 NET 或 USB 闪存下载到 RAM 中。
答案2
如果您关心的是速度,那么这就是已经发生的情况。除了它是延迟加载(按需加载),并且在空间紧张时从 RAM 中删除。
内核 (Linux) 将使用缓存将磁盘内容的副本存储在 RAM 中。当重新访问磁盘时,它将使用此缓存副本,以加快读取和写入速度。写入最终会写回磁盘。
您可以通过 do 来强制执行您想要的行为find / -mount -type f -print0 | xargs -0 cat
。然而,这将导致性能缓慢,直到整个系统加载完毕。通常最好让它做它自己的事情。
答案3
几乎所有将安装程序作为 ISO 映像的发行版都支持命令行开关,将整个发行版加载到 RAM 中并以这种方式运行系统。所有新创建的文件显然都会保留在 RAM 中,完成后将它们转储到存储中将是您的任务。
大多数(如果不是全部)发行版都有创建其 LiveCD 版本的工具,但创建 ISO 映像本身并不是必需的。您可以生成 ISO,然后提取vmlinuz
和initrd
主映像,并将它们放在任何分区上,并将所有三个添加到您的 GRUB 配置中。作为掌握您自己的发行版版本(非常特定于发行版)的一部分,您可以添加一个 systemd 脚本,该脚本可以 1)自动挂载某些分区或 2)在关机时将用户文件转储到磁盘。
维基百科概述了默认从 RAM 运行的所有发行版。我可以想象其中一些发行版允许在关闭时自动转储用户文件。