리눅스 클러스터를 구축하다가 NFS관련 문제가 발생했습니다.

kmk1221의 이미지

안녕하세요?

포럼에 보니 리눅스 클러스터를 구성해서 사용하시는 분이 꽤 계신 것 같아서
이렇게 글을 올리게 되었습니다.

저는 지금 기계공학을 전공하는 대학원생이고, CFD 병렬 계산을 위해 클러스터를 구축하고자 하고 있습니다.

수십대의 노드를 구입하기에 앞서,
먼저 두 대의 노드를 이어서 시험을 해 보고 있는 중입니다만,
문제가 발생하여 이렇게 질문을 올립니다.

일단, 마스터노드 하나와 클라이언트 노드는 정확하게 같은 사양의 컴퓨터이며
이더넷으로 연결 했습니다. 또한 책과 구글을 참고하여 NFS도 클러스터에 맞도록 옵션을 부여하여 셋팅 했습니다.

사용하는 라이브러리는 MPICH2이며, 버전은 1.5를 사용하고 있습니다.
마스터, 클라이언트 노드가 연결된 것을 확인했고 예제 파일을 돌렸을 때 잘 돌아감을 확인 했습니다.
(cpi:pi 계산 프로그램 등)

그런데, 입/출력에 관한 루틴이 포함된 예제를 돌리면 MPI_Bcast와 관련된 에러가 발생합니다.

> mpiexec -machine machinefile -np 12 ./run

명령을 통해 프로그램을 실행했을때,
(현재 마스터에 6개, 클라이언트에 6개의 코어가 있습니다. machinefile 안에는 각 노드와 코어 개수의 정보가 담겨 있습니다.)

실행이 잘 되고, 일단 기본적인 계산 등이 마스터와 클라이언트 노드에 각각 잘 분배됨을 알 수 있었습니다만
파일을 어느정도의 인터벌이 지나서 파일에 써야하는 시점에서 에러가 납니다.

물론, 마스터 노드에서만 -np 6 옵션으로 돌리거나 클라이언트 노드에서만 -np 6 옵션으로 돌리면
아무런 문제 없이 실행 뿐 아니라 파일 열기/쓰기가 됩니다.

그래서 MPI_FILE_OPEN에 대한 예제 프로그램으로 테스트를 해 보았습니다.

소스 코드는 다음과 같습니다.

#include "mpi.h"
#include

int main( int argc, char *argv[] )
{
MPI_Fint handleA, handleB;
int rc;
int errs = 0;
int rank;
MPI_File cFile;

MPI_Init( &argc, &argv );
MPI_Comm_rank( MPI_COMM_WORLD, &rank );
rc = MPI_File_open( MPI_COMM_WORLD, "temp", MPI_MODE_RDWR | MPI_MODE_DELETE_ON_CLOSE | MPI_MODE_CREATE, MPI_INFO_NULL, &cFile );
if (rc) {
printf( "Unable to open file \"temp\"\n" );fflush(stdout);
}
else {
MPI_File_close( &cFile );
}
MPI_Finalize();
return 0;
}

흥미로운 점은,

테스트 코드 내부에서 MPI_FILE_OPEN 등으로 파일을 여는 루틴에서

"temp" 라는 파일을 열게 되어 있는데,

이를 "nfs:temp"라고 수정하면 아무런 문제없이 돌아간다는 점입니다.

즉, 이렇게 되면 문제가 해결되나

현재 사용하고 있는 계산용 코드의 길이가 너무 방대하기 때문에 코드에서 루틴을 모두 찾아서 저렇게 바꾸는 것은
비효율적일 뿐만 아니라 근본적인 해결책이 아니기에
이곳에 질문을 드려 봅니다.

혹시라도 MPICH2와 클러스터를 이용해 병렬 계산 해 보신 분들 중 경험이 있으시거나,
idea가 있으신 분들께 조언을 구합니다.

감사합니다.

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.