2015년 10월 16일 금요일

연구실 후배들을 위한 Lustre 설치 메뉴얼

Introduction

Lustre 패키지의 종류

  • Lustre는 Lustre-Server와 Lustre-Client 2가지 종류의 패키지가 있다
    • Server용은 MGS, MDS, OSS 같은 lustre의 자원을 제공하는 서버들에 설치해야하며, 전용 커널을 사용하기 때문에 다른 용도로 사용하는 것이 불가능하다.
    • Client는 kernel의 모듈(윈도우의 드라이버)로 탑재되기 때문에 일반적인 용도의 서버( UI, WN 등)에 사용된다.

Required packages for lustre

  • Lustre를 설치하기 위하여 파일시스템 관련한 패키지를 설치해야 한다.
    • e2fsprogs
    • 설치시 libcom_err 패키지의 충돌이 발생할 수 있다. libcom_err은 SLC6의 중요한 역할을 하는 패키지이기 때문에 삭제할 수 없으므로 지워서는 안된다.
      • rpm의 강제명령을 통하여 (--nodeps --force) 임시로 설치하면 된다.
      yum localinstall *.rpm
  • ZFS on Linux ( Lustre DKMS 설치용 ) 패키지.
    • Lustre Client를 설치시, 커널이 업그레이드가 되면 설치된 클라이언트 모듈 버전이 맞지 않기 때문에 Lustre가 잡히지 않는 황당한 사태가 발생한다.
    • ZFS on Linux repo는 lustre-DKMS 패키지를 설치할 때 필요한 RPM파일들을 제공한다.
    • DKMS패키지를 사용하면 부팅시 엄청난 시간이 소요되긴 하지만 이러한 문제를 미연해 방지할 수 있다.
      • 부팅할 때마다 Lustre를 새로 컴파일하여 모듈을 만들어낸다. 즉, kernel-header 와 lustre-source가 필수.
      yum localinstall --nogpgcheck http://archive.zfsonlinux.org/epel/zfs-release.el6.noarch.rpm

Lustre package installation

  • SLC6(CentOS)를 위한 lustre RPM 패키지 파일을 제공하고 있다. 아래 사이트에서 몽땅 다운로드 받도록 하자.
  • Client는 위 과정으로 모든 설치과정이 끝! 마운트 과정만 진행하면 된다.

Information of Lustre Server

  • Lustre Server는 다음과 같은 종류가 있다.
    • MDS : 메타 데이터 파일을 저장하는 서버
      • MDT : 메타 데이터 타켓.
    • MGS : Management Server. Lustre 마운트 포인터 제공
    • OSS : 실제 파일이 저장될 대형 저장장치를 가지고 있는 서버
      • OST : 저장장치 타켓. 대개 파티션(?) 혹은 장치(?) 정도로 생각하면 될듯.
  • 대개 소규모 및 데이터 무결성( 혹은 안정성)이 심각하게 요구되지 않는다면
    • MDS+MGS 서버 1대, OSS 서버들로 구성할 수 있으며,
  • 대형규모 및 데이터 크리티컬한 환경이라면
    • MDS-MDS(2대 failover), MGS 서버 1대, OSS 서버(각각 2대씩 failover)들로 구성할 수 있다.
  • 이 메뉴얼은 소규모 기준.

사전 체크사항

  • MDS+MGS, OSS는 반드시 내부네트워크 혹은 외부에서 접근 불가능하도록 방화벽을 구축해야 한다.
  • 하지만, 내부 안에서는 모든 방화벽과 seLinux를 꺼두어야 작동함.
    • 다 설치가 되었는데 방화벽(iptables)과 seLinux로 통신이 안되어 마운트가 안되는 경우가 종종 있음.(증상: 마운트 했는데 가만히 있음.)

MDS+MGS 서버 설치

  • Lustre 패키지까지 설치 후 Lustre Kernel로 부팅된 머신에서 시작
  1. LNET 네트워크 설정이 필요한 경우가 있으나, Ethernet만 쓸 경우에는 필요 없음. 물론, IP로 대상을 확실히 알 경우.
    1. 같은 네트워크단에 연결된 NIC가 2개 이상이고 그 중 하나만 사용한다거나,
    2. Infiniband로 연결을 하는 등의 추가적인 기술이 필요할 경우 세팅!
    3. 하지만, 대개
      options lnet networks=tcp0(eth0)
      로 끝날 확률이 큼.
  2. 하드디스크가 RAID6로 묶여 있는 장치가 sdb라고 할 때, 먼저 sdb장치를 포맷을 해야한다.
    1. 추천) 러스터돌이씨의 의견에 의하면, partition을 나눠서 sdb1으로 한 후 포맷하기보다, sdb 통짜로 포맷하는 것이 속도가 더 빠르다고 한다.
      mkfs.lustre --fsname=<fsname>  --mgs --mdt --index=0 /dev/<device>
      egs) mkfs.lustre --fsname=lustre --mgs --mdt --index=0 /dev/sdb
    2. : 클라이언트에서 마운트를 할 때 사용될 "디렉토리(?)" 이름으로 사용됩니다. 실제로는 파일시스템 이름.
    3. --index=0 : 최신 2.x 버전부터 MDT(target, server 아님)의 추가 순서에 따라 index 숫자를 증가시키며 넣어야 합니다. (대개 1개여서 0이겠지만,) OST도 마찬가지.
  3. 포맷이 끝나면 아무 디렉토리나 만들고 마운트를 한다.
  4. mount -t lustre /dev/sdb /mnt/mdt

OSS 서버 설치

  • 역시 마찬가지로, Lustre kernel로 부팅된 머신에서 시작
  1. LNET 설정은 Lustre Manual 참조할 것. 특히, IB랑 이더넷 섞어 쓴다면 더더욱 잘 봐야 함.
  2. 하드디스크 포맷
    1. mkfs.lustre --fsname=<fsname> --mgsnode=<MGS_NID> --ost --index=<OST_index> /dev/<device>
      egs) mkfs.lustre --fsname=lustre --mgsnode=192.168.10.50@tcp0 --ost --index=0 /dev/sdb
    : 위와 동일
    : 관리서버의 NID인데, 여기서는 MGS와 MDS를 같은 서버에 설치하였기 때문에 그 서버의 IP를 적어주면 됨. tcp0는 LNET에서 세팅한 값을 표시.
    : OST마다 index 번호를 부여. 번호가 중복되게 사용할 수는 없기 때문에 주의해서 포맷을 할 것. 잘못했으면 포맷을 다시 해야 함.
  3. 포맷이 끝나면 아무 디렉토리나 만들고 마운트를 한다.
    mount -t lustre /dev/sdb /mnt/ost

Client에서 마운트 하기

  1. Client모듈이 올라간 상태에서, 
    mount -t lustre <MGS_NID>:/<fsname> /<mount point>
    egs) mount -t lustre 192.168.10.50@tcp:/lustre /pnfs

공통사항

  1. /etc/fstab에 자동 마운트 설정
    1. 여기서는 autofs는 고려하지 않고 설명.
  2. 마운트한 lustre장치의 uuid 확인
  3. /etc/fstab파일에 다음 항목 추가ㅣ
ls -ll /dev/disk/by-uuid lrwxrwxrwx 1 root root 10 8월 9 21:19 493b2511-cfdc-41db-b1b7-12a731eeac1d -> ../../sdb1 <== 이거로 가정 lrwxrwxrwx 1 root root 10 8월 9 21:19 7ecaf474-ebab-4c50-bbbe-33f46a7302eb -> ../../sda1
# /etc/fstab 
UUID=493b2511-cfdc-41db-b1b7-12a731eeac1d       /mnt/ost                lustre  defaults        0 0

Troubleshooting

  • Client의 버전이 너무 낮아서 rpm 설치가 안될 때.
    • 해당 커널에 비해 Client의 커널모듈 버전이 낮으면 설치를 거부하는 황당한 사태가 발생 가능
    • 해결방법 : rpm을 해당 커널에 맞쳐 리빌드 할 수 있음 ( Client만 해당 )
    • 물론, 설치만 되었다면 dkms 기능으로 인해 앞으로는 걱정할 필요가 없음
  • 부팅이 너무 느리다고 생각될 때.
    • dkms 모듈을 빼면 가능. 물론, kernel 업그레이드 후에 새로 설치 과정이 필요하다.
      • 그리드컴퓨팅 처럼 Client서버의 커널 버전이 중요한 감시 대상일 경우에는 dkms 이외의 옵션이 없다.



댓글 없음:

댓글 쓰기