标签: ramdisk

ramfs 和 tmpfs 之间的性能差异

我需要为大约 10 GB 的数据设置一个内存存储系统,其中包含许多 100 kb 的单个文件(图像)。将会有大量的读取和相当周期性的写入(添加新文件,删除一些旧文件)。
现在,我知道tmpfs 的行为就像一个常规文件系统,例如,您可以使用df检查空闲/已用空间,这是一个很好的功能。但是,我感兴趣的是ramfs是否会在 IO 操作的速度方面提供一些优势。我知道在使用ramfs时我无法控制消耗的内存大小,并且如果它完全消耗可用 RAM,我的系统可能会挂起,但这在这种情况下不会成为问题。

总而言之,我感兴趣:
- 性能方面,哪个更快:ramfstmpfs(可能是为什么)?
- tmpfs 什么时候使用交换空间?它是否将已保存的数据移动到交换(为当前正在运行的其他程序释放 RAM)或仅在那时没有可用 RAM 时才移动新数据?

linux performance filesystems ramdisk tmpfs

29
推荐指数
3
解决办法
3万
查看次数

Linux - RAM 磁盘作为镜像逻辑卷的一部分

我们的服务器总 RAM 为 64GB,应用程序通常最多使用 30GB 的可用 RAM。其中一个应用程序处理大量平面文件,而我们遇到了吞吐量问题,即等待磁盘 I/O。在探索可能的解决方案时,出现了 RAM 磁盘的想法。RAM 磁盘的问题在于其固有的波动性。

我找到了有关 RAM 磁盘、RAID 1 配置和用于对物理磁盘进行分组的逻辑镜像卷的单独文档,但我似乎找不到任何文档表明这些磁盘复制解决方案是否可以与 RAM 磁盘一起使用。更重要的是,由于我们的想法是让 RAM 磁盘可用于读/写,并且让物理磁盘“遮蔽”RAM 磁盘,赶上写入操作,因此我们希望 RAM 磁盘成为所有磁盘的“主”磁盘读/写。

需要注意的是,我们希望避免仅使用 RAM 缓存操作系统中的文件,但如果我们能够获得与独立 RAM 磁盘相同的性能,那就可以了。我们最初避免了这种情况,因为有时某些文件不会长时间被访问,但仍然需要按需的读/写速度。

linux raid lvm ramdisk

14
推荐指数
5
解决办法
2263
查看次数

如何在不重启的情况下更改 Ramdisk 大小

我的 fstab 文件中有以下行:

ramdisk /tmp tmpfs mode=1777,size=2048m
Run Code Online (Sandbox Code Playgroud)

现在我想将大小增加到 4096m。

我所做的是将其更改为:

ramdisk /tmp tmpfs mode=1777,size=4096m
Run Code Online (Sandbox Code Playgroud)

并发出命令:

mount -a
Run Code Online (Sandbox Code Playgroud)

但是当我检查它是否使用 df -h 更改时,该值在 2gb 时仍然相同。

有谁知道怎么改?

ramdisk ubuntu-12.04

8
推荐指数
1
解决办法
6302
查看次数

PXE 启动时无法从 ramdisk 挂载 root

我有一个可用的 TFTP/DHCP PXE 启动环境,我已经成功启动了一些映像。现在我构建了一个 CentOS 6.5 无盘映像,这个映像启动失败并出现以下错误:

No filesystem could mount root, tried:  iso9660
Kernel panic - not syncing: VFS: Unable to mount root fs on unknown-block(1,0)
Run Code Online (Sandbox Code Playgroud)

我按照以下方式构建了图像(遵循了这个优秀的教程):

dd if=/dev/zero of=new-rootfs.img bs=1M count=512
mkfs.ext4 -F -j new-rootfs.img
<mounted and copied os from template host with rsync to /mnt>
gzip -c new-rootfs.img | dd of=new-rootfs.gz
Run Code Online (Sandbox Code Playgroud)

我的 PXE 线如下:

    KERNEL vmlinuz0
    APPEND initrd=/images/centos-diskless/rootfs.gz root=/dev/ram0 init=/init noapic acpi=off devfs=nomount raid=noautodetect ramdisk_size=1048576 rw ip=dhcp
Run Code Online (Sandbox Code Playgroud)

让我感到好奇的一件事是内核说仅尝试使用 iso9660 而不是 ext4(尝试使用 ext3 映像也不成功)。如何强制尝试使用 ext3/4?是不是图片有问题?

在这种情况下,我很乐意提供任何帮助!

ext4 ramdisk kernel-panic pxe-boot centos6

7
推荐指数
1
解决办法
1858
查看次数

服务器中的快速 SSD 与 RAM

快速 SSD(如 Intel X25-E)的每 GB 价格接近高端 RAM 的价格。那么SSD给你带来了哪些额外的优势呢?有什么特别的原因,为什么您购买 SSD,而不是仅仅在您的服务器机器中放置更多 RAM,而是将其用作 HDD 缓存甚至创建 RAM 磁盘?

编辑:我当然知道,SSD 是持久的。但磁盘缓存中的数据也是如此。从 RAM 读取必须快得多,然后从 SSD 读取。此外,SSD 的写入时间很慢,因此与 HDD 相比没有优势。特别是对于顺序写入。

EDIT2:您可以放置​​的 RAM 量不受限制。随着DDR3的推出,它不再是2的倍数,而是3的倍数。标准SOHO MoBos有6个插槽,而服务器主板有12个甚至令人印象深刻的18个插槽,总共支持144GB的RAM。即使您使用更具成本效益的 4GB 记忆棒,您仍然可以拥有 72GB。

ssd disk-cache ramdisk

6
推荐指数
1
解决办法
9395
查看次数

如何在崩溃之前知道服务器是否耗尽 RAM

我有一个不断崩溃的服务器。我知道服务器崩溃有多种原因。但是,如果原因是系统在崩溃之前耗尽了 RAM;我应该如何确认这是原因?我应该查看哪些日志文件?我应该寻找什么行/错误消息?我正在运行 CentOS。大量使用 php 解析 xml 文件最多超过 2 GB。服务器有 16GB 内存。

编辑 1

[root@61540 ~]# free -m
             total       used       free     shared    buffers     cached
Mem:         16035       1526      14509          0         40       1002
-/+ buffers/cache:        483      15552
Swap:         8197          0       8197
Run Code Online (Sandbox Code Playgroud)

编辑 2 /var/log/messages

Feb 17 20:38:26 61540 syslogd 1.4.1: restart.
Feb 17 20:38:26 61540 proftpd[3896]: 66.90.101.85 - received SIGHUP -- master server reparsing configuration file
Feb 17 22:23:06 61540 avahi-daemon[3984]: recvmsg(): Resource temporarily unavailable
Feb 17 23:07:37 61540 proftpd[10620] - (Several lines …
Run Code Online (Sandbox Code Playgroud)

linux memory centos ramdisk

6
推荐指数
2
解决办法
2万
查看次数

从 linux ramdisk 提供 html

我看过一个有点过时的教程,它建议使用这样的 ramdisk 提供 html 文件:

mkfs -q /dev/ram1 102400
Run Code Online (Sandbox Code Playgroud)

我还找到了另一个使用类似内容的来源:

mount -t tmpfs -o size=1024 none /mnt/rds
Run Code Online (Sandbox Code Playgroud)

这两种方法是否同样有效?我在 nginx 上使用 Centos 6.3。所以实际上我想/usr/share/nginx/html从 RAM 中提供文件。

如果我挂载了磁盘,是否必须在原始文件夹发生真正更改时再次挂载?

linux nginx centos ramdisk

6
推荐指数
2
解决办法
1841
查看次数

Linux 上 ramdisk 的延迟磁盘备份?

快速而肮脏的总结:我想要一个写缓存之类的东西,它只在系统不忙时才耗尽。

我想要一些类似于这个问题RAM 磁盘和物理 RAID 的东西,稍有改动。

对于我经常进行的特定构建,我希望将构建输出保存在最终写入磁盘的 ramdisk 中。我正在构建的一个特定目标实际上是一堆 cp、tar、gzip 等,因此我受磁盘限制。在紧张的调试周期中,我希望它很快,并且不太在意构建输出是否因断电而被破坏。但是,如果在系统不忙时将 ramdisk 同步到磁盘会很好。我可以想象用一个 cron 工作来做这个,但我问你们所有人都有一个更连贯的解决方案,它结合了另一个问题(溢出到磁盘的 ramdisk)的特征和这个新的扭曲(给定足够的空闲磁盘)时间,ramdisk 的内容也会输出到磁盘)。理想情况下,整个事情看起来像一个单一的挂载点,

- - 更新 - -

我不认为页面缓存做我想要的,因为我真的想要相当快的写入性能。

filesystems disk-space-utilization ramdisk

5
推荐指数
1
解决办法
3724
查看次数

如何在 Windows 2008 R2 中创建 RAM 驱动器(RAM Disk)?

有很多工具可用于创建 RAM 驱动器。它们似乎都不适用于 Windows 2008 R2。有谁知道这是否可能,如果可能的话。有谁知道一个有效的工具?

我试过gavotte ram磁盘。它不起作用。当我尝试安装它时,它只是说“失败”。我在任何地方都看不到日志文件。我试过其他几个(忘记名字)无济于事。

有任何想法吗?

谢谢

performance memory hard-drive ramdisk windows-server-2008-r2

5
推荐指数
1
解决办法
3万
查看次数

使用 RAM 磁盘加速 SQL Server 临时表处理

我们正在开发的系统由一个 Web 应用程序前端和一个使用 SQL Server 2008 R2 中的存储过程进行大量数据处理的后端组成(请不要问为什么...)。这些存储过程大量使用临时表(创建、插入、连接),因此tempdb 的I/O 率在写入和读取中很高。我们的客户需要速度,因此我们将推荐以下内容:

  • 购买带有 RAID 1 SSD 阵列的服务器来存储主数据库(如果他们有钱,可能是 RAID10),使用另一个硬盘驱动器安装操作系统和 SQL Server,以便将重要数据与复制一起存储在快速驱动器中,以及64 GB 内存。
  • 使用 Ramdisk 存储tempdb数据库,因此临时表(我们认为最大的性能瓶颈)在 RAM 中处理。

一些上下文数据:

  • 我们的数据库使用不超过 10 GB,预期增长率非常低。Tempdb 通常增长到不超过 2-3 GB。
  • 服务器将用于 DB 和 Web 服务器。
  • Ramdisk 软件可以在 windows 启动时挂载 ramdisk。

我们已经在具有大量内存的笔记本电脑中测试了 ramdisk 方法。至少,加速是显着的(存储过程执行时间减少到 1/3)。

我需要帮助来确定这是否是一个好的解决方案,并检测我可能遗漏的任何缺陷(明显的或不太明显的)。

编辑:感谢您到目前为止的答案!我忘了明确提到将有并发用户使用该应用程序,因此将有多个临时表操作正在运行。此外,混合 Web 服务器和数据库服务器不是我们的选择,我们已经知道这不是最佳的 ;)

tempdb ramdisk database-performance sql-server-2008-r2

5
推荐指数
1
解决办法
5343
查看次数