1. 개요
파일시스템의 성능을 개선하고자 하는 노력은 네트워킹 기법을 이용하여 다수의 디 스크 내지는 스토리지를 연결하고 I/O처리를 분산시키는 병렬 파일시스템의 개념을 만들어 내었다. 즉, 다수의 컴퓨터에 장착된 디스크 내지는 스토리지를 네트워크로 연결하여 하나의 논리적인 파일시스템으로 구성함으로써 유휴 자원의 활용, I/O처 리 대역폭 증대 등의 효과를 기대할 수 있어서 고성능 컴퓨팅 분야뿐만 아니라 대 규모 데이터 처리를 위한 파일시스템으로 고려되고 있다.C. Kernel 모듈 생성 클라이언트 측에서 사용될 커널 모듈을 컴파일 한다. [linux 2.4의 경우] pvfs2-1.0.1]#make kmod24 [linux 2.6의 경우] pvfs2-1.0.1]#make kmod * 오류 발생시 점검 사항 ‘pvfs2-utils.c’에 관련된 오류 발생 경우에는 signal 구조체에 대한 참조 오류인 경우, Makefile이 /etc/redhat-release파일을 참조하나 이 파일이 존재하지 않아서 발생하는 문제이므로 다음과 같은 내용을 포함하는 /etc/redhat-release을 생성한후, “B. configuration 단계”부터 다시 수행한다. pvfs2-1.0.1]#cat /etc/redhat-release Red Hat Linux release 9 (Shrike)
D. 컴파일과 인스톨
다음과 같이 PVFS를 컴파일하고 이상이 없을 경우 설치를 진행한다.
pvfs2-1.0.1]#make
pvfs2-1.0.1]#make install
2.3. 환경 설정
A. Configuration 파일 생성 임의의 기준되는 I/O서버(compute-0-7.local)를 서정한뒤 다음과 같이 PVFS2 파일시스템을 위한 환경 설정을 실행한다. pvfs2]#/usr/local/bin/pvfs2-genconfig /etc/pvfs2-fs.conf /etc/pvfs2-server.conf ********************************************************************** Welcome to the PVFS2 Configuration Generator:This interactive script will generate configuration files suitable for use with a new PVFS2 file system. Please see the PVFS2 quickstart guide for details.
********************************************************************** You must first select the network protocol that your file system will use. The only currently supported options are "tcp" and "gm".
* Enter protocol type [Default is tcp]:
Choose a TCP/IP port for the servers to listen on. Note that this script assumes that all servers will use the same port number.
* Enter port number [Default is 3334]:
Next you must list the hostnames of the machines that will act as
* Enter hostnames [Default is localhost]: compute-0-7.local,
compute-0-5.local, compute-0-3.local, compute-0-1.local
Now list the hostnames of the machines that will act as Metadata servers. This list may or may not overlap with the I/O server list.
* Enter hostnames [Default is localhost]: compute-0-7.local
Configured a total of 8 servers: 8 of them are I/O servers. 1 of them are Metadata servers.
* Would you like to verify server list (y/n) [Default is n]? y ****** I/O servers: tcp://compute-0-1.local:3334 tcp://compute-0-3.local:3334 tcp://compute-0-5.local:3334 tcp://compute-0-7.local:3334 ****** Metadata servers: tcp://compute-0-7.local:3334
* Does this look ok (y/n) [Default is y]? y
Choose a file for each server to write log messages to.
* Enter log file location [Default is /tmp/pvfs2-server.log]:
Choose a directory for each server to store data in.
* Enter directory name: [Default is /pvfs2-storage-space]:
/home3/pvfs2-storage-space
Writing fs config file... Done.
다음의 두파일을 모든 IO 노드에 복사한다.
pvfs2-1.0.1]#scp /etc/pvfs2-fs.conf compute-0-1.local:/etc pvfs2-1.0.1]#scp /home/khocha/pvfs2-1.0.1/examples/pvfs2-se
rver.rc compute-0-1.local:/etc/rc.d/init.d/pvfs2-server
PVFS 서버의 실행을 위한 서비스 등록을 모든 IO 노드에서 실행한다.
3. PVFS2 가동
3.1. 서버 가동
새로운 디렉토리를 이용하여 최초로 PVFS2를 가동하는 경우, ssh등을 통하여 전 IO노드 및 관리서버에서 다음의 명령을 수행한다. 이는 각 서버노드의 데이터 저장 장소인 디렉토리(/home3/pvfs2-storage-space)를 초기 생성하는 기능을 수행할 뿐이며 서버가 가동되지는 않는다. pvfs2-1.0.1]#/usr/local/sbin/pvfs2-server /etc/pvfs2-fs.conf /etc/pvfs2-server.conf-compute-0-1.local -f 실제로 서버 데몬을 가동하기 위하여 ssh등을 통하여 모든 서버 노드에서 다음과 같이 수행한다. pvfs2-1.0.1]#/usr/local/sbin/pvfs2-server /etc/pvfs2-fs.conf /etc/pvfs2-server.conf-compute-0-1.local서비스가 등록된 상황이므로service pvfs2-server start를 통하여 서버를 가동 시킬수 있다. 간혹 service pvfs2-server stop시 설정 파일을 제대로 참조하지 못하여 오류가 생길수 있는데 이때는 각 IO서버의 설정 파일에 대해 service 명령이 참조할수 있도록 별도의 설정 파일을 생성한다.
즉, 노드 compute-0-1.local의 경우,
3.2. 클라이언트의 파일시스템 마운트
A. 모듈 적재 클라이언트 데몬을 실행하기에 앞서서 pvfs커널 모듈을 적재한다. pvfs2-1.0.1]#insmod pvfs2 B. 마운트 포인트 생성 다음과 같이 마운트 포인트를 생성한다. pvfs2-1.0.1]#mkdir /mnt/pvfs2 pvfs2-1.0.1]#touch /etc/pvfs2tab pvfs2-1.0.1]#chmod a+r /etc/pvfs2tab4. PVFS2의 사용을 위한 MPICH2 설치
4.1. 설치
A. mpich2-1.0.tar.gz 압축해제 mpi2]#tar –xzvf mpich2-1.0.tar.gz B. 환경 설정 mpich2-1.0]#export CFLAGS=”-I/usr/local/include” mpich2-1.0]#export LDFLAGS=”-L/usr/local/lib” mpich2-1.0]#export LIBS=”-lpvfs2”Mpich2-1.0]#./configure –prefix=/opt/mpi2pvfs2 –enable-romio –with-file-system=pvfs2+nfs+ufs
C. 컴파일 및 설치
Mpich2-1.0]#make
[그림 1] 네트워크 변경에 대한 IOzone 결과
C. Bonnie 테스트
[그림 2] 메타데이터 서버의 위치 변화에 대한 IOzone 결과
[표 1] Bonnie 테스트 결과: 생성 파일 크기 100 MB, 단위 kB/s
PVFS PVFS2
6. Infiniband 관련 성능 측정 도구
6.1. MPI 성능 테스트
7. Infiniband 활용 테스트
7.1. 실험 환경
본 장에서는 성능 측정에 사용된 하드웨어 및 소프트웨어의 구성과 종류에 대하여 설명한다. A. 하드웨어 구성 테스트를 위한 시스템은 크게 단위 노드와 각 노드를 연결하는 네트워크로 구분할 수 있다. 이때 단위 노드는 표 2 과 같이 x86 기반의 아키텍쳐를 사용하였다. HPL 테스트의 메모리 사용량을 고려하여 각 노드에 3GB 의 메모리를 장착하였고, Infiniband 는 PCI-Express 를 Myrinet 은 PCI-X 를 이용하여 장착하였다. 각 노드의 연결은 표 3, 4 과 같이 Mellanox 사의 Infiniband 장비와 Myricom 사의 Myrinet 장비를 이용하여 구성하였다.[표 2] 단위노드 사양
CPU Intel Xeon 2.8 GHz (Nocona)
# CPU / node 2
Memory 3 GB
I/O Interface PCI Express, PCI-X
[표 4] Myrinet 구성
Interface Card M3F-PCI64B-2
- 2MB Local Memory - PCI 64/32 Switch Myrinet 2000 - 16 Ports (Fiber) B. 소프트웨어 구성 시스템 소프트웨어의 구성은 다음과 같다. 주요 컴파일러는 Intel 컴파일러를 이용하였으며, Infiniband 를 사용시에는 mvapich 를 Myrinet 을 사용시에는 mpichgm 을 각각 MPI 라이브러리로 사용하였다. HPL 테스트시 사용되는 BLAS 라이브러리는 기본적으로 goto 라이브러리를 사용하였다.
[표 5] 소프트웨어 구성
Linux 2.4.21(smp)
Compiler Intel Compiler 9.0 (C++,
Fortran) Infiniband Driver IBGD-1.7.0
Myrinet Driver GM-2.1.9
MPI Library mvapich-0.9.4, mpichgm-1.2.6
BLAS Library libgoto_prescott-64-r0.99-3
참 고 문 헌
[1] InfiniBand Trade Association, http://www.infinibandta.org
[2] Pallas MPI Benchmarks, http://www.pallas.de/e/products/index.htm [3] Rob Van Der Wijngaart, "NAS Parallel Benchmarks, Version 2.4," NAS
Technical Report NAS-02-007, 2002.
[4] HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers,
http://www.netlib.org/benchmark/hpl
[5] TOP500 Supercomputer sites, http://www.top500.org
[6] Parallel Virtual File System Version 2, http://www.pvfs.org/pvfs2 [7] Mellanox Technologies, http://www.mellanox.com
[8] Myricom, http://www.myri.com/