目前,我正在使用 ESX(v3 和 v4)来测试脚本化操作系统 (Windows 2003) 和应用程序安装 DVD。DVD ISO (8GB) 安装在 1Gbps NFS 数据存储上,VMDK (20GB) 安装在通过 NFS 通过 10Gbps 链路安装的 SSD 上。
运行测试迭代的时间仍然比我真正想要的要长得多,我想知道将虚拟磁盘和 ISO 安装在运行虚拟机管理程序的同一服务器上的 RAM 磁盘上是否值得我花时间。我可以为该虚拟机专门配备一台服务器,并且系统中 32GB 的 RAM 应该足以完成我猜想的任务。(1GB 虚拟机管理程序操作系统、28GB RAM 磁盘和 2GB 虚拟机小于我可用的 32GB)
由于在 ESX 中托管 RAM 磁盘似乎不太可能,因此我愿意尝试 KVM/Xen/Hyper-V。KVM 可能是这三个中我的首选。
有人尝试过这个吗?请记住,这纯粹是为了安装程序的测试运行,测试完成后虚拟机将被丢弃,因此我不担心因远程电源故障而丢失数据。
我刚刚安装了 Debian 5 (Lenny),我注意到 /lib/init/rw 被报告为 RAM 磁盘 (tmpfs)。我只有 Fedora 的经验,所以我很好奇该目录在 Debian 中提供什么功能。用户编写的 shell 脚本是否可以使用它来缓存内容,还是禁止使用它并且仅供操作系统使用?谢谢。
只是想知道,您是否曾经在生产中使用RAM 磁盘做过任何有用的事情?我想知道他们提供的性能收益是否可能在特定情况下超过他们的临时性质。
我只用过一次,不是为了性能。那时我需要一些显示硬盘错误的服务器上的可写磁盘空间 - 它为我提供了足够的空间来安装 3ware RAID 实用程序来识别有问题的磁盘。
您如何在生产中使用 RAM 磁盘?
我有一个电子邮件服务器,它是消息传递应用程序的一部分,它会看到很多吞吐量。我想在 RAMdisk 上挂载 Exim 的消息队列以最大化性能;吞吐速度是最重要的,而不是在崩溃或系统重启的情况下团结一致。我发现很多信息都说在 RAMdisk 上安装消息队列会有很大帮助,但没有关于如何执行此操作的真实信息。
我很确定消息队列默认在 /var/spool/exim 中,并且我可以使用 tmpfs 来挂载 RAMdisk。我将如何在启动时安装 RAMdisk,并让 Exim 的消息队列使用它?
即挂载这个 RAMdisk 的命令是什么,我应该把这个命令放在哪里,以便它在机器启动时(但在 Exim 启动之前)执行?
谢谢 :)
我正在寻找一种生产解决方案来创建一个可以与 HDD 安全同步的 RAM 驱动器。
我有一个 I/O 负载很重的自定义软件(这是某种专有的面向文档的数据库),我需要显着加快它的速度。我无法修改或摆脱软件本身,因此必须进行水平或垂直缩放。该软件不支持盒子的水平侦察,所以我先看看垂直缩放。
主要想法很简单 - 我们购买大量 RAM (96GB) 并将整个内容放入 RAM 驱动器。但它需要是故障安全的,在服务器重启时丢失任何数据不是一种选择。所以我正在寻找能够在 RAM 驱动器和 HDD 之间保持透明同步的解决方案。
像通过 bash 脚本复制文件这样的肮脏解决方案不是一种选择,需要更可靠的方法。
理论上,正如我所见,这里描述的某种分布式 FS可以以一种奇怪的方式使用 - 在同一台机器上同步两个分区。但我怀疑这是否会在实践中起作用,并且从未尝试过。
那么,对于具有透明同步到 HDD 的 RAM 驱动器的现成解决方案有什么想法吗?
数据更新:
filesystems memory replication ramdisk distributed-filesystems
我需要创建许多需要快速访问的临时文件,所以我正在考虑使用 RAM 磁盘。问题是临时文件可能会变得非常大(1-4 GB),在这种情况下磁盘存储就可以了。
有什么方法可以在 RAM 磁盘和物理 HDD 之间创建混合,以便在最坏的情况下(当我遇到大的临时文件时)使用 HDD?
- -编辑 - -
我买不起更快的 SSD,我不需要持久存储,我不需要 100 GB 的临时数据。我正在使用我的家用计算机(2 GHz AMD 系统...)。我收到了关于UnionFS的提示。它有什么体验?
我负责托管一个又大又慢但易于扩展的 PHP 应用程序。该应用程序是完全静态的,需要可写磁盘存储。我们已经分析了应用程序,主要瓶颈似乎来自加载应用程序而不是应用程序所做的工作。该应用程序不是 CPU 密集型的,尽管它确实使用了相当数量的内存(想想 Magento)。
目前,我们通过在硬盘驱动器上具有相同 PHP 文件的一系列服务器和在它们前面的负载平衡器来分发它。容易但昂贵。
我一直在阅读有关RAM 磁盘及其提供的 IO 优势的信息,并想知道它们是否非常适合 PHP 应用程序。
由于 PHP 应用程序是针对每个请求从磁盘加载的,并且通常涉及许多不同的文件(而不是像 Java 应用程序那样保存在内存中),我认为磁盘性能可能是一个严重的瓶颈。
将 PHP 文件放在 RAM 磁盘上并使用挂载点作为 Apache 的文档根目录会提供性能优势吗?启动脚本可以创建 RAM 驱动器,然后将文件(纯文本和小文件)从永久位置复制到临时 RAM 驱动器。
这是否有意义,还是我应该相信 linux 内核自己将适当的文件缓存在内存中?
我正在考虑将我的 MySQL 数据库的tempdir 放在Linux 下的 ramdisk上。这样做的原因是为了解决MySQL 中最大 4 GB 的内存中临时表。我唯一担心的是,如果 ramdisk 上基于 MyISAM 的临时表会变得比 ramdisk 大,如何避免磁盘空间不足错误?可以通过某种方式创建一种溢出机制,其中 ramdisk 大小是 ramdisk 的大小加上硬盘上的可用空间。如果 ramdisk 已满,则其余部分将写入硬盘。
我想要一个 linux 上的 ramdisk。
有 ramfs 和 tmpfs。
Tmpfs 是我想要的,因为它就像一个磁盘(大小限制等)。但是,它使用交换,这意味着如果磁盘已满,它可能会接触磁盘。
如果我没有打开交换,它还能工作吗?
我根本不希望该安装接触磁盘。
设置:
Windows Server 2008 R2,托管在分配了 3GB 内存的 HyperV 虚拟机上。
我在此虚拟 Web 服务器上使用ImDisk设置了 RAMDisk(512MB 的容量足以满足我们的要求),并为其分配了 3GB RAM(托管应用程序在重负载下不需要超过 ~768MB)。
最初,WebRoot 目录位于网络共享上,该目录运行良好,但注意到在重负载下,这导致网络共享服务器的 LAN 流量显着增加(我认为该服务器正在访问网络共享以向我的用户提供网页) - 这应该发生吗?)。
由于 VM 托管在故障转移群集中,因此 VM 的 C:\ 驱动器存储在 iSCSI SAN 上,因此将 WebRoot 文件夹保留在 C:\ 驱动器上不会带来性能优势(对此进行了测试)。
因此,我选择将内容放入 RAMDisk,这当然在访问时间方面显示出良好的改进。源内容仍将存储在网络共享上,但每 24 小时同步到 RAM 磁盘。
任何人都有充分的理由相信这会:
A)不值得吗?
或者更重要的是,
B)这是一个彻头彻尾的坏主意!?
赞赏批评,无论是正面的还是负面的!
我以这种方式制作了一个虚拟磁盘:
mkdir -p /media/ramdisk
mount -t tmpfs -o size=512M tmpfs /media/ramdisk/
Run Code Online (Sandbox Code Playgroud)
这样做的原因是因为我运行了很多 node.js 脚本并且它们的执行时间非常短,但我怀疑时间开销是因为它从磁盘重新加载 node.js 可执行文件并在每次后续运行时销毁它。所以我认为这可能是获得一点性能的解决方案。如何将像 node 这样的程序移动到 ramdisk 并从那里运行它?这个想法是有一个启动脚本来创建 ramdisk 并将节点文件放入其中。请注意,我目前正在使用 Fedora 16 来获取它的价值。提前致谢。
ramdisk ×11
linux ×5
tmpfs ×3
hyper-v ×2
performance ×2
asp.net ×1
debian ×1
disk-cache ×1
exim ×1
filesystems ×1
iis ×1
memory ×1
mysql ×1
node.js ×1
queue ×1
replication ×1
unionfs ×1
vmware-esx ×1
web-server ×1
xen ×1