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 : 메타 데이터 파일을 저장하는 서버
- 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로 부팅된 머신에서 시작
- LNET 네트워크 설정이 필요한 경우가 있으나, Ethernet만 쓸 경우에는 필요 없음. 물론, IP로 대상을 확실히 알 경우.
- 같은 네트워크단에 연결된 NIC가 2개 이상이고 그 중 하나만 사용한다거나,
- Infiniband로 연결을 하는 등의 추가적인 기술이 필요할 경우 세팅!
- 하지만, 대개
options lnet networks=tcp0(eth0)
로 끝날 확률이 큼.
- 하드디스크가 RAID6로 묶여 있는 장치가 sdb라고 할 때, 먼저 sdb장치를 포맷을 해야한다.
- 추천) 러스터돌이씨의 의견에 의하면, partition을 나눠서 sdb1으로 한 후 포맷하기보다, sdb 통짜로 포맷하는 것이 속도가 더 빠르다고 한다.
mkfs.lustre --fsname=<fsname> --mgs --mdt --index=0 /dev/<device>
egs) mkfs.lustre --fsname=lustre --mgs --mdt --index=0 /dev/sdb
- : 클라이언트에서 마운트를 할 때 사용될 "디렉토리(?)" 이름으로 사용됩니다. 실제로는 파일시스템 이름.
- --index=0 : 최신 2.x 버전부터 MDT(target, server 아님)의 추가 순서에 따라 index 숫자를 증가시키며 넣어야 합니다. (대개 1개여서 0이겠지만,) OST도 마찬가지.
- 포맷이 끝나면 아무 디렉토리나 만들고 마운트를 한다.
mount -t lustre /dev/sdb /mnt/mdt
OSS 서버 설치
- 역시 마찬가지로, Lustre kernel로 부팅된 머신에서 시작
- LNET 설정은 Lustre Manual 참조할 것. 특히, IB랑 이더넷 섞어 쓴다면 더더욱 잘 봐야 함.
- 하드디스크 포맷
-
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 번호를 부여. 번호가 중복되게 사용할 수는 없기 때문에 주의해서 포맷을 할 것. 잘못했으면 포맷을 다시 해야 함.
- 포맷이 끝나면 아무 디렉토리나 만들고 마운트를 한다.
mount -t lustre /dev/sdb /mnt/ost
Client에서 마운트 하기
- Client모듈이 올라간 상태에서,
mount -t lustre <MGS_NID>:/<fsname> /<mount point>
egs) mount -t lustre 192.168.10.50@tcp:/lustre /pnfs
공통사항
- /etc/fstab에 자동 마운트 설정
- 여기서는 autofs는 고려하지 않고 설명.
- 마운트한 lustre장치의 uuid 확인
- /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 이외의 옵션이 없다.