【问题标题】:MongoDB assumes 64 bit system - does it mean the hardware or the OS kernel or both?MongoDB 假定为 64 位系统 - 它是指硬件还是操作系统内核或两者兼而有之?
【发布时间】:2010-09-15 11:09:27
【问题描述】:

This post says 如果您的数据大于 2GB,您需要一个 64 位的 MongoDB 系统。

在我的本地机器上,64 位 Intel C2D 运行 32 位 Mac OS X Leopard,MongoDB 64 位版本运行没有任何错误。

在服务器上,一台运行 32 位 CentOS 5.0 的 64 位机器,64 位 MongoDB 将无法运行。 32位运行正常。

我的问题是,MongoDB 是否要求硬件和操作系统内核都是 64 位的?如果是这样,为什么我在上述系统中的体验存在差异?

【问题讨论】:

    标签: mongodb 32bit-64bit nosql


    【解决方案1】:

    实际上的要求是,如果你想处理超过 2GB 的数据,你需要使用 64 位版本的 mongod 可执行文件。这需要 64 位操作系统,而操作系统又需要 64 位硬件。

    要求与物理内存无关,是关于单个进程可以处理多少虚拟内存。由于 mongodb 使用 mmap 来映射数据文件的内容,因此您必须至少有足够的虚拟地址空间来容纳所有数据。请注意,PAE不会增加虚拟地址空间。 PAE 是纯粹的物理地址扩展,可让您拥有超过 3.5GB 的 RAM。

    编辑:看起来运行在 32 位模式下的内核可以以支持 64 位用户空间的方式编写。在 64 位硬件上运行的 OSX 是我所知道的唯一一个使用它的例子。在 windows 和 linux 上,您必须安装 64 位版本的操作系统才能运行 64 位软件。

    【讨论】:

    • 那么 OS X 是@MGriesbach 提到的特例吗?它可以在 32 位模式下运行 64 位应用程序吗?
    • 我很确定它只在 64 位硬件上使用 64 位内核(任何比第一代英特尔更新的 mac)。您仍然需要使用 64 位二进制文​​件。
    • "uname -m" 在 OS X 上会在终端中提供 "i386" 输出。它仍然能够运行 x86_64 版本的 MongoDB。但是 CentOS 只能运行 32 位版本。
    • 有趣。看起来 OSX 做了一些诡计。我会更新我的答案。
    【解决方案2】:

    如果您的数据 > 2GB,内核需要能够寻址 > 2GB 内存。这需要 64 位内核,或者您可以尝试使用 PAE 内核扩展来允许 32 位内核寻址更多 RAM。

    也许 MAC OS X 已经有类似 PAE 扩展的东西,因此存在差异。

    【讨论】:

      【解决方案3】:

      MAC OS X 是一个特例,因为它非常努力地试图向用户隐藏整个 32/64 位内容。 Leopard,afaik,已经通过一些技巧支持 64 位应用程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-03-02
        • 2015-02-11
        • 2011-01-02
        • 2016-02-07
        • 2017-08-09
        • 2013-08-29
        • 2017-07-17
        • 1970-01-01
        相关资源
        最近更新 更多