如何在 Linux 中创建 RAM 驱动器如何在 Linux 中创建 RAM 驱动器如何在 Linux 中创建 RAM 驱动器如何在 Linux 中创建 RAM 驱动器
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

如何在 Linux 中创建 RAM 驱动器

如果您想知道,RAM 驱动器和 tmpfs 实例是不一样的。本文将解释其中的区别,并向您展示如何使用命令行在 Linux 中创建 RAM 驱动器。在几分钟内设置一个快速的 RAM 驱动器!

什么是 RAM 驱动器?

计算机中的 RAM 芯片可用于容纳虚拟驱动器。然后,该驱动器不存储在硬盘上,而是存储在 RAM 中。这个虚拟磁盘的速度不仅比普通磁盘快得多(尤其是与旧类型的旋转磁盘相比,因为旋转磁盘内部件的物理运动会导致额外的延迟),RAM 芯片的磨损速度也没有那么快作为磁盘,尤其是旧类型的物理驱动器。

听起来好得令人难以置信?好吧,确实有一个警告;如果您不小心重启了计算机,或者它死机了,您的数据就会全部丢失。 RAM(随机存取存储器)是计算机中的存储芯片,需要持续供电才能保留其信息。 RAM 存储被认为是易失性的。

换句话说,RAM 驱动器适合临时应用程序或特定优化。例如,当我们使用测试服务器来测试软件时,我们会设置一个 RAM 驱动器,以便让许多并发测试进行得更快。而且,即使服务器断电,也不会损失太多;我们将简单地开始另一个测试运行。

另一个应用程序将经常访问的数据预加载到 RAM 驱动器中。例如,如果您有一台服务器不断访问给定的只读数据库(如果需要保留数据,读写可能会更复杂),该数据库通常驻留在磁盘上,那么您可以将只读数据库复制到RAM 自动(例如,在服务器启动时使用一些自动脚本,或使用 cron 作业),然后让数据库服务器使用该数据。

换句话说,可以总结两个主要用例,一个是缓存(如我们的 R/O 数据库示例),另一个是“无价”数据存储(如我们的测试示例)。然后您可以更进一步(如果您愿意的话,这是第三个用例)并以给定的时间间隔将数据同步回磁盘。例如,对于还包括写入 RAM 存储的测试示例,可以在每次测试结束时将摘要和/或测试数据写回磁盘(永久存储)。

RAM 驱动器的另一个警告是它们受系统内存大小的限制,并且可能小于您需要其他内存来运行操作系统和其他软件。

将 RAM 驱动器的大小设置为超过 - 假设系统内存的任意 80-85% - 可能会出现问题。当然,如果您的服务器中有 256GB 的 RAM,那么即使分配给 RAM 驱动器的 90% 仍然会为操作系统和应用程序留下超过 25GB 的空间。只有 4GB,分配给 RAM 的 90% 将留下 0.4GB (400MB),这很可能会导致问题。因此,它在某种程度上取决于机器的总内存是多少以及其他软件需要多少内存。

此外,RAM 驱动器的工作方式与 tmpfs 分配/实例不同。

RAM 驱动器与 tmpfs 实例

tmpfs 也可以但不是必须存储在计算机的 RAM 芯片中。常见的 /dev/shm tmpfs 映射会随着大多数(如果不是全部)Linux 操作系统的安装而自动设置,这很方便,但功能与 RAM 驱动器不同。

两者之间的区别在于 RAM 驱动器(想到术语 rigid)是 100% 存储在实际的 RAM 芯片中,而 tmpfs 存储在 Linux 内核内存池中,其中可能包括诸如交换空间,通常位于磁盘上。虽然内核可能会优化对池的所有访问,但它仍然提供了将数据写入物理 RAM 或物理磁盘的可能性。而且,如果它进入磁盘,它会更慢。

创建 RAM 驱动器

创建 RAM 驱动器相对简单。您可以使用以下代码创建一个名为 ramdrive.sh 的小脚本:

#!/bin/bash
if [ "$(mount | grep -o "/mnt/ram")" != "/mnt/ram" ]; then
  sudo mkdir -p /mnt/ram
  sudo mount -t ramfs -o size=1g ramfs /mnt/ram
  sudo chown -R $(whoami):$(whoami) /mnt/ram
fi
mount | grep ram

另一个脚本umount_ram.sh,代码如下:

#!/bin/bash
sudo umount /mnt/ram

让我们看一下第一个脚本。首先,我们用 Shebang 符号 (#!) 表明我们想要 Bash 作为我们的命令解释器。如果您想了解有关 Shebang 的更多信息,请查看 Bash 自动化和脚本基础知识,这是我们关于 Bash 自动化和脚本的 3 部分文章。

在此之后,我们通过使用仅 grep (grep - o) 的 /mnt/ram 在完整的“当前安装”列表中,如 mount 所示。如果没有找到相同的,那么我们继续执行三个 sudo 命令。尽管出于各种原因,这三个都需要 sudo。

第一个命令需要 sudo,因为它使目录可能成为 root 并且至少在 /mnt 中,这是特权/受保护的目录。下一个命令,我们实际的 RAM 磁盘安装和创建,需要 sudo 因为安装是一个特权操作。我们使用 size=1g 将大小设置为 1GB。我们还指出我们想要一个来自 ramfs 设备的 ramfs 类型驱动器 (-t ramfs)(如第二个 ramfs 所示),我们最终将挂载点列为<代码>/mnt/ram。

在第三个 sudo-enabled 命令中,我们通过使用whoami 命令两次。您可能希望将其更改为将使用 ramdrive 的特定和/或特定组,或者如果更多用户将使用 ramdrive,则更改为更广泛的组。

在此之后,我们完成条件 if .. fi 命令并使用 grep for ram 最后调用 mount 以确保脚本报告关于 RAM 方面已经挂载的内容,或者在脚本执行时刚刚挂载的内容。这是脚本在执行时是否成功的便捷/快速验证。

我们的辅助脚本 umount_ram.sh 使用挂载点 /mnt/ram 卸载基于 RAM 的驱动器,即我们刚刚创建的 ramfs 驱动器。警告:立即执行删除/删除存储在易失性内存中的所有数据,重新安装 RAMFS 驱动器不会恢复;它只会创建一个全新但空的 RAM 驱动器。请预先警告!

包起来

在本文中,我们讨论了 RAM/ramfs(同一事物)驱动器和 tmpfs 实例/分配。然后,我们使用一个小脚本在 /mnt/ram 下创建了一个 1GB 的 ramfs 驱动器来挂载或 RAM 驱动器。

如果您想继续在 Linux 上阅读,请查看我们的使用 SimpleScreenRecorder 在 Linux 中进行屏幕录制或位、字节和二进制或从 0 到 F:十六进制文章!

尽情享受吧!

©2015-2025 艾丽卡 support@alaica.com