서버 운영 관리 [ Tip ]

김종하 에반젤리스트

벤치마킹 툴 측정도구 사용법 ( IOPS)

IWINV 가상서버는 OS 영역과 Volume 영역이 분리되어 제공됩니다.

volume 영역에 해당하는 스토리지는 데이터의 안정성과 효율성을 바탕으로 SSD방식을 이용 RAID 1 0 로(으로) 구성되어져 있으며, 내부 설계는 ceph로 replica(는) 2로 셋팅되어있습니다.

데이터 저장 공간인 volume 은(는) 데이터의 안정성을 고려하여 구성된 RAID 방식을 채택(미러링+스트라이프).

레이드에 관련된 설명은 위키백과로 대신하겠습니다.(참조 https://ko.wikipedia.org/wiki/RAID )

즉, 어느 한쪽 디스크 혹은 데이터(디스크) 일부영역에 문제가 발생하여 특정 부분의 데이터가 유실이 난다면, 레이드 구성에 의해 rebuilding 되어 하드웨어적인 유실에 대비되었으며, 추가적으로 ceph 시스템 또한 replica 2로 구성되어 복제본을 가지고 있으므로 데이터의 안정성이 보장되어 집니다.

레이드(ssd기반) 구성중 mirror 영역은 서비스 영역이 아닌 안정성과 보장성을 최우선하여 고객님의 안전한 서비스 제공을 위한 스마일서브의 서비스제공 구성입니다.

이로 인해 거대 용량을 이루는 스토리지 영역의 쓰기에 대한 속도가 'raid 0 + ceph replica 1'로 구성할 경우 보다는 느려질 수 있으나, 기존 타 클라우드의 데이터 영역보다는 우월한 퍼포먼스를 제공합니다. ( 'raid 0 + ceph replica 1'은 사용하지 않는 구성입니다. - 데이터 안정성 없음. )

또한, 특정 vm(인스턴스)에서 다른 vm의 IO에 영향을 받지 않도록 max io를 제어하도록 설계하여 보장성을 제시하였습니다.

Volume 영역에 대한 iops 측정 도구 여러가지가 있으나, 리눅스 오픈 소스로는 fio가 있습니다.

fio를 벤치마크 툴 sysbench(을)를 이용합니다.

iops의 측정 기준은 sequential rw,rd,wr 과 random rw,rd,wr 등이 있습니다.

본 테스트에서 측정되는 값들은 모든 서비스가 이용중인 시점에서의 테스트값임을 먼저 알려드립니다.

 


-------------------------------------------
fio 설치하여 iops 측정하기
-------------------------------------------

가. fio 설치 및 사용


* 설치 ( Ubuntu )

# apt-get install fio

( CentOS )

# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel libaio-devel -y
# git clone git://git.kernel.dk/fio.git
# cd fio/
# make
# make install


* 사용 [아래는 fio를 이용한 iwinv 인스턴스 ( 1코어 2기가 상품)의 iops 측정케이스이다.] (현 서비스 운용중인 영역의 인스턴스임을 감안.)

# fio --directory=/mnt --name fio_test_file --rw=write --bs=4k --size=1G --numjobs=8 --time_based --runtime=60 --group_reporting --norandommap --iodepth=1

 

 

# fio --directory=/mnt --name fio_test_file --rw=read --bs=4k --size=1G --numjobs=8 --time_based --runtime=60 --group_reporting --norandommap --iodepth=1

 

 


나. sysbench 설치 및 사용

* 설치

# yum install sysbench ( apt-get install sysbench)

측정대상이되는 디스크 장치의 위치에서 다음을 실행하라.

* sysbench를 이용한 IOPS 확인

# sysbench --test=fileio --file-total-size=5G prepare ( 40메가의 파일 128개가 생성된다. )

# sysbench --test=fileio --file-total-size=5G --file-test-mode=seqwr --init-rng=on --max-time=60 --max-requests=0 run

# sysbench --test=fileio --file-total-size=5G --file-test-mode=seqrd --init-rng=on --max-time=60 --max-requests=0 run

아래는 sysbench를 이용한 iwinv 인스턴스 ( 1코어 2기가 상품)의 iops 측정케이스이다.

 

 

초당 257.55MB/s 의 순차쓰기

 

초당 430.59MB/s의 순차 읽기


테스트가 완료되면 생성된 파일을 삭제 해준다.

# sysbench --test=fileio --file-total-size=8G cleanup

 

*참고

sysbench에 대한 설명은 다음의 링크를 참조.  ( http://imysql.com/wp-content/uploads/2014/10/sysbench-manual.pdf )