IT 주제, 특히 리눅스를 다룹니다.

Posted
Filed under BMT
(글 작성 중...)

vdbench는 Storage의 테스트 및 벤치마크를 위한 디스크 I/O 부하 생성기이다.
Java로 개발되었으며, Solaris Sparc, x86, Windows NT, 2000, 2003, 2008, XP, Windows 7, HP/UX, AIX, Mac OS X, zLinux, VMware 등 여러 OS에서 사용 가능하다.
 
1.3 용어 설명
Execution: 전반적인 vdbench 실행 및 파일 이름, 출력 디렉토리 이름 등을 제어한다.
Raw I/O workload: 스토리지 설정 및 부하 종류 등을 정의한다. General, Host Definition(HD), Replay Group(RG), Storage Definition(SD), Run Definition(RD)를 포함한다. 반드시 위에 나열된 순서대로 기술되어야 한다. Run은 RD에 의해 요청된 부하를 한번 실행하는 것이다.
File system Workload: 파일시스템 설정 및 부하 종류 등을 정의한다. General, Host Definition(HD), File System Definition(FSD), File system Workload Definition(FWD), Run Defiinition(RD)를 포함한다. Run은 RD에 의해 요청된 부하를 한번 실행하는 것이다. 한 RD 내에 다수의 Run이 요청될 수 있다.
Replay: Sun StorageTek Workload Analysis Tool (Swat)에 의해 추적된 I/O 부하를 재실행한다.
Master, Slave: vdbench는 2개 또는 그 이상의 Java Virtual machine(JVM)으로 실행된다. 내가 직접 실행한 JVM이 master이다. master는 모든 파라미터 파싱을 담당한다. 어떤 부하를 실행할지 결정하며, 모든 종류의 보고를 한다. 실제 부하는 1개 또는 그 이상의 slave로 실행된다. slave는 master host에서 실행되거나, 파라미터 파일 내 정의된 원격 호스트에서 실행될 수 있다.
Data Validation: 스토리지의 데이터 오류를 검출한다.
Jounaling: 데이터 검증과 저널링의 결합은 vdbench 실행을 통해 데이터 오류를 검출할 수 있다.
 
1.9.1 변수 치환
 
파라미터 파일 내 $lun 같은 형태로 변수를 사용할 수 있다. 이러한 변수의 값은 커맨드 라인에서 아래와 같이 지정할 수 있다.
./vdbench -f parmfile lun=/dev/x
 
(파라미터 파일)
sd=sd0,lun=$lun
 
1.9.2 멀티호스트 파라미터 복제
 
파라미터 파일의 input 라인에 $host, !host, #host 등의 상수가 있는 경우, 해당 라인은 HD 파라미터에서 정의된 각각의 호스트 레이블에 대해 한번씩 반복된다. 여러 다른 호스트에 대해 테스트를 실행할 때 타겟 호스트 각각에 대해 파일시스템 부하를 지시하는 것은 복잡해질 수 있다. $host 파라미터는 이러한 작업을 쉽게 한다.
 
Note: 이 기능은 파라미터가 여러 줄로 나뉘어져 있는 경우 동작하지 않는다 - 즉 한 줄에 input 파라미터를 모두 지정해야 한다.
 
 
1.14.7 'mount=xxx'
 
이 파라미터는 멀티호스트 파일 시스템 테스트에 유용하다. 만일 동일한 파일 시스템에 연결된 20개의 타겟 클라이언트가 있는 경우, 수동으로 모든 마운트 포인트를 생성하고 마운트 명령을 실행하는 것을 피할 수 있다면 좋을 것이다.
 
'mount=xxx' 파라미터는 HD 또는 RD에 쓰일 수 있다.

HD에 쓰이는 경우, 원격 시스템에 실행할 전체 마운트 명령을 지정해야 한다. 예) mount="mount -o forcedirectio /dev/dsk/c2t6d0s0 /export/h01"
vdbench는 필요시 마운트 포인트를 생성한 후 위와 같은 마운트 명령을 실행할 것이다.

RD에 쓰이는 경우, 마운트 옵션만 지정한다. 예) mount="-o noforcedirectio"
vdbench는 HD에 지정된 (대체 가능한) 마운트 옵션을 위의 옵션으로 대체할 것이다.
'mount=reset'을 지정할 경우, 지정되었던 원래의 마운트 커맨드가 실행된다.

일반적인 파일 시스템 테스트에서는 각 호스트 별 FSD 파라미터가 필요하다. 단 'shared=yes' FSD 파라미터가 사용된 경우 모든 호스트는 동일한 파라미터를 사용한다.

 
1.15.12 'openflags=': lun 또는 파일 열기/닫기 제어
 
이 파라미터는 시스템의 열기/닫기 기능에 어떤 파라미터를 전달할 지에 대한 제어를 허용한다. 기본적으로, 쓰기 작업은 파일 시스템이 마운트 된 방식에 따라, raw 장치에 대해선 어떻게 장치가 일반적으로 동작하는지에 따라 처리된다. 이것은 시스템의 캐시에 데이터가 저장되자마자 쓰기 동작이 완료될 수도 있다는 것을 의미한다. 좋은 성능을 보일 수 있으나 실제 스토리지를 사용하진 않는 것이다.
 
Openflags는 SD, WD, FSD, FWD, RD 파라미터에 지정될 수 있다.
 
Options (아래의 어떤 조합도 가능하다)
 
 
 
 
1.24 파일 시스템 테스트
 
Vdbench의 기본 기능은 한 개 이상의 raw device의 성능을 테스트하고 보고하는 것이며, 선택적으로 한 개 이상의 큰 파일 시스템 파일들에 대해서도 가능하다.
vdbench 파일 시스템 부하는 두개의 파라미터 셋에 관하여 다룬다.
File System Anchor: 디렉토리 이름 및 앵커 아래 생성될 디렉토리와 파일 구조로 구성된다. 구조 정보는 디렉토리 깊이, 넓이, 파일수, 파일 크기 등으로 구성된다. 멀티 파일 앵커 또한 정의될 수 있으며, 동시에 사용될 수 있다. 앵커 당 3200만개 파일을 지원한다. (java heap size가 충분히 큰 경우 64비트용 Java는 12800만개를 지원. ./swat 스크립트에서 -Xmx 값을 체크할 것)
File System Operation: 디렉토리 생성/삭제, 파일 생성/삭제, 파일 읽기/쓰기, 파일 열기/닫기, setattr, getattr 등.
 
 
파라미터 구조:
File System Definition(FSD): 생성될 디렉토리 및 파일 구조를 기술한다.
File system Workload Definition(FWD): 사용할 FSD 및 기타 부하 파라미터를 지정한다.
Run Definition(RD): 실행될 파일 시스템 부하를 제어하는 파라미터 셋이다.
 
vdbench가 시작될 때마다 모든 파일에 대한 상태 정보가 필요하다. format=yes 가 지정되어 있어도 마찬가지다. 파일들이 상당히 많은 경우 디렉토리들에 대한 쿼리는 상당한 시간이 소요될 수 있다. 시간 절약을 위해, vdbench가 정상적으로 종료되는 경우, 모든 파일 상태는 앵커 디렉토리 내 'vdb_control.file'에 저장된다. 이 컨트롤 파일은 다음번 실행에 사용되며 디렉토리 쿼리 작업은 필요 없게 된다.
FSD 파라미터로 'shared=yes' 사용시 컨트롤 파일은 유지되지 않는다.
 
2013/07/30 14:04 2013/07/30 14:04

IT SeedBox :: 스토리지 벤치마킹을 위한 vdbench 사용법

IT 주제, 특히 리눅스를 다룹니다.