问题标签 [lustre]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
81 浏览

c - 宏定义中的 ({;}) 和 ({0;}) 表示什么?

我正在浏览 luster 源代码并停留在宏定义中:

在文件中定义lustre/ldlm/ldlm_resource.c
这个宏定义意味着什么?

0 投票
1 回答
716 浏览

parallel-processing - 可以通过 Fortran 中的并行读取来提高性能吗?

我有一个 fortran90 代码(到目前为止)大部分时间都花在 I/O 上,因为需要读取非常大的数据文件(至少 1GB 及以上)。需要写入具有计算结果的较小但仍然较大的数据文件。相比之下,一些快速傅立叶变换和其他计算可以立即完成。我已经并行化(OpenMP)其中一些计算,但考虑到提到的 I/O 问题,性能的整体增益是最小的。

我目前的策略是一次读取整个文件:

然后对var1等执行操作。我的问题是是否有使用(最好)OpenMP 的合适策略可以让我加快阅读过程,特别是考虑到数据文件(如果有任何区别)相当大。

我有可能在 Lustre 文件系统上运行这些计算,这在原则上为并行 I/O 提供了优势,尽管对于常规文件系统的通用解决方案将不胜感激。

我的直觉是没有解决这个问题的方法,但我想确定一下。

0 投票
2 回答
181 浏览

parallel-processing - Lustre 文件系统:有多少 OST?

除了窃听系统管理员之外,有没有办法确定并行系统有多少 Lustre OST?

0 投票
1 回答
216 浏览

linux - CentOS 7 - 需要更改引导顺序才能使 sge 自动启动

似乎 sge 在服务器启动时安装 luster 之前尝试启动,这会在重新启动时自动启动错误。有人可以告诉我如何在启动时更改顺序,以便 sge 在安装 luster 后启动?

日志中的错误消息:  

0 投票
1 回答
286 浏览

performance - 使用大量小文件改进 Fortran 格式的 I/O

假设我对从模拟中写入监控文件有以下要求:

  • 必须写入大量单个文件,通常为 10000 个
  • 文件必须是人类可读的,即格式化的 I/O
  • 定期向每个文件添加一个新行。通常每 50 秒一次。
  • 新数据必须几乎可以立即访问,因此不能选择大型手动写入缓冲区
  • 我们使用的 Lustre 文件系统似乎针对相反的情况进行了优化:对少量大文件的顺序写入。

制定要求的不是我,所以很遗憾,讨论它们没有意义。我只想找到具有上述先决条件的最佳解决方案。我想出了一个小的工作示例来测试一些实现。这是迄今为止我能做的最好的事情:

主要特点是:OpenMP 并行化和手动写入缓冲区。以下是具有 16 个线程的 Lustre 文件系统的一些时序:

  • cachesize=5:I/O 已用的挂墙时间:991.627404 秒
  • cachesize=10:I/O 已用的挂墙时间:415.456265 秒
  • cachesize=20:I/O 已用的挂墙时间:93.842964 秒
  • cachesize=50:I/O 已用的挂墙时间:79.859099 秒
  • cachesize=100:I/O 已用的挂墙时间:23.937832 秒
  • cachesize=1000:I/O 已用的挂墙时间:10.472421 秒

作为参考,在本地工作站 HDD 上使用已停用的 HDD 写入缓存,16 个线程的结果:

  • cachesize=1:I/O 已用的挂墙时间:5.543722 秒
  • cachesize=2:I/O 已用的挂墙时间:2.791811 秒
  • cachesize=3:I/O 已用的挂墙时间:1.752962 秒
  • cachesize=4:I/O 已用的挂墙时间:1.630385 秒
  • cachesize=5:I/O 已用的挂墙时间:1.174099 秒
  • cachesize=10:I/O 已用的挂墙时间:0.700624 秒
  • cachesize=20:I/O 已用的挂墙时间:0.433936 秒
  • cachesize=50:I/O 已用的挂墙时间:0.425782 秒
  • cachesize=100:I/O 已用的挂墙时间:0.227552 秒

如您所见,与普通 HDD 相比,Lustre 文件系统上的实现仍然慢得令人尴尬,我需要巨大的缓冲区大小才能将 I/O 开销降低到可容忍的程度。这意味着输出落后于之前制定的要求。另一种有前途的方法是在连续写入之间让单元保持打开状态。不幸的是,在没有 root 权限的情况下,同时打开的单元数量通常被限制为 1024-4096。所以这不是一个选项,因为文件的数量可以超过这个限制。

如何在满足要求的同时进一步降低 I/O 开销?

编辑 1 从与 Gilles 的讨论中,我了解到即使使用普通用户权限也可以调整光泽文件系统。所以我尝试按照建议将条带计数设置为 1(这已经是默认设置)并将条带大小减小到支持的最小值 64k(默认值为 1M)。但是,这并没有提高我的测试用例的 I/O 性能。如果有人对更合适的文件系统设置有其他提示,请告诉我。

0 投票
1 回答
257 浏览

hadoop - 为 Lustre 配置 Hadoop 时无法启动名称节点

我正在尝试将 hadoop 与 intel lustre 集成。我已添加hadoop-lustre-plugin-3.1.0hadoop-2.7.3/lib/native文件夹。光泽安装在/mnt/lustre。当我开始使用 hadoop 时出现以下错误start-all.sh

核心站点.xml:

maprd-site.xml

hdfs-site.xml

配置文件中是否有我遗漏的配置?

0 投票
1 回答
693 浏览

mongodb - 使用 Docker 和 Lustre 安装驱动器上的 MongoDB“无法建立锁定”错误

我正在尝试使用 Docker 使用安装在主机上的驱动器来容器化 MongoDB 实例。

使用mongo:latest图像:

但不断失败:

认为这是一个权限问题,所以我尝试在主机目录上打开 777 的权限,并且只是以 root 身份运行 mongod 实例,我遇到了同样的问题。

肯定没有另一个 mongod 实例正在运行并指向同一个数据目录。

最后,值得指出的是:唯一的共同点似乎是文件系统。Mongod 在 Lustre 驱动器上始终失败,但在任何其他文件系统上都没有。如果我的源目录在 NFS 驱动器或其他任何东西上,它运行得很好。

0 投票
2 回答
1509 浏览

unix - Error happens when trying to umount the Lustre file system

When I umount Lustre FS it displays:

and if I add the force option -f it gives the same result:

When I try to list the directory it gives me :

and I cannot find what the reason is and cannot solve it.

0 投票
1 回答
115 浏览

docker - 是否可以使用 docker 容器覆盖底层文件系统?

我想使用 bazel 在使用 Lustre 文件系统的 CentOS 6.6 集群上构建 tensorflow。此文件系统不支持锁定。在 github 上参考这个问题

我读过 docker 可以提供虚拟化。我可以使用不同的文件系统在 docker 中使用 bazel 吗?

0 投票
1 回答
1481 浏览

c - 并发访问的光泽文件锁定

我正在尝试开发一个应用程序,该应用程序将在链接到共享 Lustre 存储的多台计算机上运行,​​执行各种操作,包括但不限于:

  • 将数据附加到文件。
  • 从文件中读取数据。
  • 读取和写入文件,修改其所有内容都会传递一定的偏移量。
  • 读取和写入文件,在特定偏移处修改其内容。

如您所见,基本的 I/O 是人们所希望的。

由于大多数情况下它是并发的,我应该需要某种锁定以允许安全地进行不同的写作,但我已经看到 Lustre 默认不支持flock(2)s(我不确定我想要在 fcntl(2) 上使用它,我想我会的),而且我还没有看到任何关于 fcntl(2) 的信息来确认它的支持。

研究它主要导致我阅读了很多关于使用 Lustre 进行 I/O 优化的论文,但这些论文通常解释了他们的硬件/软件/网络的结构是如何工作的,而不是解释它是如何在代码中完成的。

那么,我可以在 Lustre 中使用 fcntl(2) 吗?我应该使用它吗?如果不是,还有哪些其他替代方法可以允许不同的客户端执行数据的并发修改?

还是有可能?(我在 Lustre 票证中看到 mmap 是可能的,所以 fcntl 也应该可以工作(声明背后没有逻辑),但我可能想知道一些限制。)

我将继续编写一个测试应用程序来检查它,但我认为我仍然应该询问是否有更好的替代方案(或者我应该注意它的功能是否存在限制,因为我的测试将受到限制并且我们不希望未知的限制成为开发过程后期的问题)。

谢谢,

编辑: LustreOne 已正确回答了基本问题,在这里我提供了有关我的用例的更多具体信息,以允许人们添加有关 Lustre 并发访问的相关附加信息。

Lustre 客户端将成为其他应用程序的服务器。这些应用程序的客户端每个都有自己的文件集,但我们希望支持允许客户端同时从多台机器登录到他们的客户端空间,为此,我们需要允许并发文件读取和写入。

然而,这些总是占总 I/O 操作的一小部分。

虽然 LustreOne 的回答中提供了非常有趣的见解,但其中并不多适用于这个用例(或者更确切地说,它们确实适用,但可能不希望增加整个系统的复杂性以影响性能)。

也就是说,对于目前考虑的用例,我相信它可以对某些人有很大帮助,以及以后的我们自己。然而,我们现在寻求的更多的是一种方法,可以轻松地让两个节点或一个节点响应两个请求的线程来修改数据,让一个通过并检测冲突,有效地防止相关客户端。

我相信文件锁定对于那个用例来说就足够了,但是更喜欢字节锁定,因为一些最关心的文件被一些客户端不间断地附加,并被其他人读取/修改到最后。

但是,从我从 LustreOne 的回答中了解到的情况来看:

也就是说,如果您的应用程序知道它在做什么,则对此没有严格的要求。Lustre 已经将非重叠写入保持一致,并且还可以处理并发 O_APPEND 写入。

后一个案例已经由 Lustre 开箱即用地管理。

关于什么是最好的选择有什么意见吗?在完整文件上使用简单的flock()就足够了吗?

请注意,某些文件也将具有索引,可用于确定数据的可用性而无需锁定任何数据文件,是否应该使用或字节锁定足够快,以避免增加代码库大小以支持这两种情况?

最后提及mmap。我很确定它不太适合我们的用例,因为我们有这么多文件和很多客户端,所以 OST 可能无法缓存太多,但可以肯定的是......是否应该使用它,如果是这样,如何?^^

抱歉这么冗长,这是我的缺点之一。:/

祝你今天过得愉快,