월간 보관물: 2017 7월

iperf 를 이용한 packet loss 확인

간단하게 iperf를 이용해서 packet loss를 확인 할 수 있다.

 

server 측 (-s(server) -u(udp) -i(interval))

[root@testlab1 ~]# iperf -s -u -i 1
————————————————————
Server listening on UDP port 5001
Receiving 1470 byte datagrams
UDP buffer size: 208 KByte (default)
————————————————————
[ 3] local 10.65.20.12 port 5001 connected with 10.65.20.191 port 39835
[ ID] Interval Transfer Bandwidth Jitter Lost/Total Datagrams
[ 3] 0.0- 1.0 sec 114 MBytes 957 Mbits/sec 0.011 ms 14/81400 (0.017%)
[ 3] 1.0- 2.0 sec 114 MBytes 957 Mbits/sec 0.012 ms 0/81377 (0%)
[ 3] 2.0- 3.0 sec 114 MBytes 957 Mbits/sec 0.012 ms 0/81379 (0%)
[ 3] 3.0- 4.0 sec 114 MBytes 957 Mbits/sec 0.014 ms 0/81378 (0%)
[ 3] 4.0- 5.0 sec 114 MBytes 957 Mbits/sec 0.013 ms 0/81378 (0%)
[ 3] 5.0- 6.0 sec 114 MBytes 957 Mbits/sec 0.012 ms 0/81378 (0%)
[ 3] 6.0- 7.0 sec 114 MBytes 957 Mbits/sec 0.013 ms 0/81378 (0%)
[ 3] 7.0- 8.0 sec 114 MBytes 957 Mbits/sec 0.014 ms 0/81377 (0%)
[ 3] 8.0- 9.0 sec 114 MBytes 957 Mbits/sec 0.014 ms 0/81379 (0%)
[ 3] 9.0-10.0 sec 114 MBytes 957 Mbits/sec 0.019 ms 0/81378 (0%)
[ 3] 0.0-10.0 sec 1.11 GBytes 957 Mbits/sec 0.018 ms 14/813845 (0.0017%)

 

client 측

[root@testlab2 ~]# iperf -c testlab1 -u -i1 -b 10000m -w 16KB
————————————————————
Client connecting to testlab1, UDP port 5001
Sending 1470 byte datagrams, IPG target: 1.18 us (kalman adjust)
UDP buffer size: 32.0 KByte (WARNING: requested 16.0 KByte)
————————————————————
[ 3] local 10.65.20.191 port 39835 connected with 10.65.20.12 port 5001
[ ID] Interval Transfer Bandwidth
[ 3] 0.0- 1.0 sec 114 MBytes 957 Mbits/sec
[ 3] 1.0- 2.0 sec 114 MBytes 957 Mbits/sec
[ 3] 2.0- 3.0 sec 114 MBytes 957 Mbits/sec
[ 3] 3.0- 4.0 sec 114 MBytes 957 Mbits/sec
[ 3] 4.0- 5.0 sec 114 MBytes 957 Mbits/sec
[ 3] 5.0- 6.0 sec 114 MBytes 957 Mbits/sec
[ 3] 6.0- 7.0 sec 114 MBytes 957 Mbits/sec
[ 3] 7.0- 8.0 sec 114 MBytes 957 Mbits/sec
[ 3] 8.0- 9.0 sec 114 MBytes 957 Mbits/sec
[ 3] 9.0-10.0 sec 114 MBytes 957 Mbits/sec
[ 3] 0.0-10.0 sec 1.11 GBytes 957 Mbits/sec
[ 3] Sent 813845 datagrams
[ 3] Server Report:
[ 3] 0.0-10.0 sec 1.11 GBytes 957 Mbits/sec 0.017 ms 14/813845 (0.0017%)
[root@testlab2 ~]#

각  server측과 client측에서 얼마만큼의 packet이 loss되었는지 알 수 잇다.!!!

[ 3] 0.0-10.0 sec 1.11 GBytes 957 Mbits/sec 0.018 ms 14/813845 (0.0017%)

저 빨간색 숫자가 높으면 높을수록 뭔가 물리적으로 문제가 있다는 뜻임…!!

IPMI sol setting

ipmi를 이용한 serial console setting하기를 해봣다.

이걸 하게되면 일반 terminal을 이용하여 물리장비의 booting화면과 grub 화면, login 화면을 물리머신의 monitor앞에 가지 않고서도 text로 볼 수가 있다.

심지어 bios setup도 된다.

 

Screenshot from 2017-07-31 16-33-21

<ipmi sol을 통한 booting화면> 이거 console 부화면팅 인줄 아는사람이 있는데 terminal 화면이다.

일반적인 gnome-terminal 화면임 ㅋ

 

setting하는걸 알아보면…

일단 난 dell R620으로 하였다. ipmi를 지원하는 server들은 아마도 다 되지 않을까 싶다.

1. bios에서 아래와 같이 셋팅을 한다.

Serial Communication : On with Console Redirection via COM2
External Port Address
: Serial Device1=COM1,Serial Device2=COM2
External Serial Connector : Serial Device1
Failsafe Baud Rate
: 115200
Remote Terminal Type : VT100/VT220

 

2. grub 설정

[root@testlab1 default]# diff -urpN /etc/default/{grub-backup,grub}

— grub-backup 2017-07-07 13:41:06.655361133 +0900

+++ grub 2017-07-31 16:14:48.222973918 +0900

@@ -2,6 +2,8 @@ GRUB_TIMEOUT=5

GRUB_DISTRIBUTOR=”$(sed ‘s, release .*$,,g’ /etc/system-release)”

GRUB_DEFAULT=saved

GRUB_DISABLE_SUBMENU=true

-GRUB_TERMINAL_OUTPUT=”console”

-GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=rhgs/root rd.lvm.lv=rhgs/swap rhgb quiet”

+GRUB_CMDLINE_LINUX=”crashkernel=auto rd.lvm.lv=rhgs/root rd.lvm.lv=rhgs/swap rhgb”

GRUB_DISABLE_RECOVERY=”true”

+GRUB_TERMINAL=”serial console”

+GRUB_SERIAL_COMMAND=”serial –speed=115200 –unit=1 –word=8 –parity=no –stop=1″

+GRUB_CMDLINE_LINUX_DEFAULT=”console=tty1 console=ttyS1,115200n8″

[root@testlab1 default]# grub2-mkconfig -o /boot/grub2/grub.cfg

/etc/default/grub을 위에 같이 고친다.

앞에 가 붙은 곳은 빠진곳이고 +가 붙은부분이 추가된 부분이다.

그리고 # `grub2-mkconfig -o /boot/grub2/grub.cfg` 를 실행하여 grub.cfgupdate하자.

 

3. IPMI sol setting

[root@testlab1 default]# ipmitool sol info 1

Info: SOL parameter ‘Payload Channel (7)’ not supported – defaulting to 0x01

Set in progress : set-complete

Enabled : true

Force Encryption : true

Force Authentication : false

Privilege Level : ADMINISTRATOR

Character Accumulate Level (ms) : 50

Character Send Threshold : 255

Retry Count : 7

Retry Interval (ms) : 480

Volatile Bit Rate (kbps) : 115.2

Non-Volatile Bit Rate (kbps) : 115.2

Payload Channel : 1 (0x01)

Payload Port : 623

[root@testlab1 default]# ipmitool sol set force-authentication true 1

[root@testlab1 default]# ipmitool sol info 1 |grep -i authen

Force Authentication : true

force authenticationtrue로 고쳐주자.

 

 

4. ipmi user create

[root@testlab1 ~]# ipmitool user list 1

ID Name Callin Link Auth IPMI Msg Channel Priv Limit

2 root true true true ADMINISTRATOR

일단 root라는 user가 있다.

암호를 다시 셋팅해줘도 되긴 하는데 누군가 쓰고 있을지도 모르니 나만을 위한 user를 하나 만들자.

 

[root@testlab1 ~]# ipmitool user set name 3 admin

user id 2root가 사용하고 있으니 id 3을 이용해서 admin 계정을 만들었다.

 

[root@testlab1 ~]# ipmitool user set password 3 test123

admin userpasswordtest123으로 설정 하였다.

 

[root@testlab1 ~]# ipmitool channel setaccess 1 3 callin=on ipmi=on link=on privilege=4

[root@testlab1 ~]# ipmitool user list 1

ID Name Callin Link Auth IPMI Msg Channel Priv Limit

2 root true true true ADMINISTRATOR

3 admin true true true ADMINISTRATOR

[root@testlab1 ~]#

admin user에게 모든 권한을 다 줬다. root와 똑같이…

 

[root@testlab1 ~]# ipmitool sol payload status 1 3

User 3 on channel 1 is disabled

[root@testlab1 ~]# ipmitool sol payload enable 1 3

[root@testlab1 ~]# ipmitool sol payload status 1 3

User 3 on channel 1 is enabled

마지막으로 sol paylaodenable 시켜준다. 이거 안해주면 admin usersol 사용 불가능함.

 

5. rhel7/centos7 환경에서 getty setting

[root@testlab1 default]# systemctl enable getty@ttyS1

Created symlink from /etc/systemd/system/getty.target.wants/getty@ttyS1.service to /usr/lib/systemd/system/getty@.service.

[root@testlab1 default]# systemctl status getty@ttyS1

getty@ttyS1.service – Getty on ttyS1

Loaded: loaded (/usr/lib/systemd/system/getty@.service; enabled; vendor preset: enabled)

Active: inactive (dead)

Docs: man:agetty(8)

man:systemd-getty-generator(8)

http://0pointer.de/blog/projects/serial-console.html

[root@testlab1 default]# systemctl restart getty@ttyS1

[root@testlab1 default]#

 

이제 접속을 해보면…

youngjulee@youngjulee-ThinkPad-S2:~$ ipmitool -I lanplus -H testlab1-ipmi -U admin -P test123 sol activate

[SOL Session operational. Use ~? for help]

요렇게 나올것이다.

이러면 잘 된거임 ㅋ

 

 

이제 재부팅을 해보자.

youngjulee@youngjulee-ThinkPad-S2:~$ ipmitool -I lanplus -H testlab1-ipmi -U admin -P test123 sol activate

[SOL Session operational. Use ~? for help]

[root@testlab1 ~]# reboot

[ 5215.005606] FAT-fs (sdo): unable to read boot sector to mark fs as dirty

[ 5215.016773] type=1305 audit(1501491730.976:3228): audit_pid=0 old=2081 auid=4294967295 ses=4294967295 res=1

[ 5215.018859] type=1130 audit(1501491730.978:3229): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=lvm2-lvmetad comm=”s’

[ 5215.018876] type=1131 audit(1501491730.978:3230): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=lvm2-lvmetad comm=”s’

[ 5215.019231] type=1130 audit(1501491730.978:3231): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=auditd comm=”systemd’

[ 5215.019244] type=1131 audit(1501491730.978:3232): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=auditd comm=”systemd’

[ 5215.019717] type=1130 audit(1501491730.979:3233): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=systemd-user-session’

[ 5215.019730] type=1131 audit(1501491730.979:3234): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=systemd-user-session’

[ 5215.020219] type=1130 audit(1501491730.979:3235): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=ksm comm=”systemd” e’

[ 5215.020231] type=1131 audit(1501491730.979:3236): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=ksm comm=”systemd” e’

[ 5215.021845] type=1130 audit(1501491730.981:3237): pid=1 uid=0 auid=4294967295 ses=4294967295 msg=’unit=systemd-tmpfiles-set’

[ OK [ 5223.715686] audit_printk_skb: 81 callbacks suppressed

… 생략

[ 5229.200238] sd 1:2:1:0: [sdc] Synchronizing SCSI cache

[ 5229.263038] sd 1:2:0:0: [sdb] Synchronizing SCSI cache

[ 5229.325825] sd 0:2:0:0: [sda] Synchronizing SCSI cache

[ 5231.830824] failed to kill vid 0081/0 for device em4

[ 5232.203091] br-em3: port 1(em3) entered disabled state

[ 5232.267099] failed to kill vid 0081/0 for device em3

[ 5232.612309] failed to kill vid 0081/0 for device em2

[ 5232.957757] failed to kill vid 0081/0 for device em1

[ 5233.024440] Restarting system.

[ 5233.063405] reboot: machine restart

reboot log가 나오고…

 

Screenshot from 2017-07-31 18-12-16

부팅로그가 나온다..!!

<이 블로그를 참조 함. http://coffeenix.net/board_print.php?bd_code=1767>

ubuntu touchpad disable

touchpad가 너무 민감한건지 싫컷 타이핑 하고 있으면 어먼데 클릭이 되서 원하지 않는곳에 타이핑이 들어갔었다.

난 이걸 계속 function key 조합해서 키고 끄는걸 찾고 있었는데, OS level에서 당연히 되어야 하는 기능이었다.

역시나 찾아보니 xinput 이란게 있더라…

man page에는 “X input의 test나 설정을 하는 도구.” 라고 나와있다.

간단하게 사용법을 보면…

root@youngjulee-ThinkPad-S2:~# xinput –list
⎡ Virtual core pointer id=2 [master pointer (3)]
⎜ ↳ Virtual core XTEST pointer id=4 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech TrackPoint id=13 [slave pointer (2)]
⎜ ↳ USB Optical Mouse id=15 [slave pointer (2)]
⎜ ↳ ETPS/2 Elantech Touchpad id=12 [slave pointer (2)]
⎣ Virtual core keyboard id=3 [master keyboard (2)]
↳ Virtual core XTEST keyboard id=5 [slave keyboard (3)]
↳ Power Button id=6 [slave keyboard (3)]
↳ Video Bus id=7 [slave keyboard (3)]
↳ Power Button id=8 [slave keyboard (3)]
↳ Sleep Button id=9 [slave keyboard (3)]
↳ Integrated Camera id=10 [slave keyboard (3)]
↳ AT Translated Set 2 keyboard id=11 [slave keyboard (3)]
↳ ThinkPad Extra Buttons id=14 [slave keyboard (3)]
root@youngjulee-ThinkPad-S2:~#

위에서 touch pad의 id를 검색한다.

그리고 여러가지 기능들이 있는데 이중에 우리가 쓸것은 “Enable” 그 자체이다.

root@youngjulee-ThinkPad-S2:~# xinput –list-props 12
Device ‘ETPS/2 Elantech Touchpad’:
Device Enabled (139): 0
Coordinate Transformation Matrix (141): 1.000000, 0.000000, 0.000000, 0.000000, 1.000000, 0.000000, 0.000000, 0.000000, 1.000000
Device Accel Profile (268): 1
Device Accel Constant Deceleration (269): 2.500000
Device Accel Adaptive Deceleration (270): 1.000000

그리고 –set-prop option을 이용해서 키고 끄는것을 할 수가 있다.

root@youngjulee-ThinkPad-S2:~# xinput –set-prop 12 “Device Enabled” 0

마지막으로 쓰기 쉽도록 alias를 걸어두자.

root@youngjulee-ThinkPad-S2:~# alias touch
alias touch=’xinput –set-prop 12 “Device Enabled”‘
root@youngjulee-ThinkPad-S2:~# touch 0
root@youngjulee-ThinkPad-S2:~# touch 1

이제 원할 때 아무대나 terminal을 열어서 touch pad를 키고 끌 수 있다. !!

 

RAID level 별 성능 테스트

RAID level 별 성능 테스트

 

 

회사에 어떤분이 “raid 6에서는 write 일 때 쓰기를 3번해서 io가 1/3이 된다.!” 라고해서 이 test를 시작하기 되었다.

다행이도 회사에 disk 12 bay짜리 array가 있고, 놀고있는 server도 있었다.

주말전에 2일 휴가도 내서 시간도 충분했다.

 

 

test case는

Disk : 2 ~ 12

Raid : 0, 10, 5, 6

R/W : read, write, R70:W30

이렇게해서 총 312개 case의 test를 하였다.

 

 

일단 server와 HBA(disk controller), disk array의 spec을 알아보면…

1. server

PowerEdge R620

Architecture: x86_64

CPU op-mode(s): 32-bit, 64-bit

Byte Order: Little Endian

CPU(s): 24

On-line CPU(s) list: 0-23

Thread(s) per core: 2

Core(s) per socket: 6

Socket(s): 2

NUMA node(s): 2

Vendor ID: GenuineIntel

CPU family: 6

Model: 45

Model name: Intel(R) Xeon(R) CPU E5-2620 0 @ 2.00GHz

Stepping: 7

CPU MHz: 1200.000

BogoMIPS: 4004.06

Virtualization: VT-x

L1d cache: 32K

L1i cache: 32K

L2 cache: 256K

L3 cache: 15360K

NUMA node0 CPU(s): 0,2,4,6,8,10,12,14,16,18,20,22

NUMA node1 CPU(s): 1,3,5,7,9,11,13,15,17,19,21,23

 

 

memory 8 x 22 = 176G

Memory Device

Array Handle: 0x1000

Error Information Handle: Not Provided

Total Width: 72 bits

Data Width: 64 bits

Size: 8192 MB

Form Factor: DIMM

Set: 1

Locator: DIMM_A4

Bank Locator: Not Specified

Type: DDR3

Type Detail: Synchronous Registered (Buffered)

Speed: 1600 MHz

Manufacturer: 00CE00B300CE

Serial Number:

Asset Tag: 03132463

Part Number: M393B1G70BH0-YK0

Rank: 1

Configured Clock Speed: 1333 MHz

 

 

2. HBA

Name : PERC H810 Adapter

Slot ID : PCI Slot 1

State : Ready

Firmware Version : 21.3.2-0005

Minimum Required Firmware Version : Not Applicable

Driver Version : 06.811.02.00-rh1

Minimum Required Driver Version : Not Applicable

Storport Driver Version : Not Applicable

Minimum Required Storport Driver Version : Not Applicable

Number of Connectors : 2

Rebuild Rate : 30%

BGI Rate : 30%

Check Consistency Rate : 30%

Reconstruct Rate : 30%

Alarm State : Not Applicable

Cluster Mode : Not Applicable

SCSI Initiator ID : Not Applicable

Cache Memory Size : 1024 MB

Patrol Read Mode : Auto

Patrol Read State : Stopped

Patrol Read Rate : 30%

Patrol Read Iterations : 0

Abort Check Consistency on Error : Disabled

Allow Revertible Hot Spare and Replace Member : Enabled

Load Balance : Auto

Auto Replace Member on Predictive Failure : Disabled

Redundant Path view : Not Applicable

CacheCade Capable : Yes

Persistent Hot Spare : Disabled

Encryption Capable : Yes

Encryption Key Present : No

Encryption Mode : None

Preserved Cache : Not Applicable

Spin Down Unconfigured Drives : Disabled

Spin Down Hot Spares : Disabled

Spin Down Configured Drives : Disabled

Automatic Disk Power Saving (Idle C) : Disabled

Start Time (HH:MM) : Not Applicable

Time Interval for Spin Up (in Hours) : Not Applicable

T10 Protection Information Capable : No

Non-RAID HDD Disk Cache Policy : Not Applicable

 

 

3. OS

[root@testlab1 youngju]# lsb_release -a

LSB Version: :core-4.1-amd64:core-4.1-noarch

Distributor ID: RedHatEnterpriseServer

Description: Red Hat Enterprise Linux Server release 7.3 (Maipo)

Release: 7.3

Codename: Maipo

[root@testlab1 youngju]# uname -a

Linux testlab1 3.10.0-514.10.2.el7.x86_64 #1 SMP Mon Feb 20 02:37:52 EST 2017 x86_64 x86_64 x86_64 GNU/Linux

[root@testlab1 youngju]#

 

 

performance test는 vdbench를 이용해서 하였다.

vdbench script

sd=sd1,lun=/dev/sdc

wd=wd1,sd=sd1,rdpct=100,xfersize=512

rd=run1,wd=wd1,iorate=max,elapsed=120,interval=5,openflags=o_direct,forrdpct=(100,0,70),forxfersize=(512,4096)

 

 

4. disk 1TB, 7200rpm sas

ID : 1:0:11

Status : Ok

Name : Physical Disk 1:0:11

State : Online

Power Status : Spun Up

Bus Protocol : SAS

Media : HDD

Part of Cache Pool : Not Applicable

Remaining Rated Write Endurance : Not Applicable

Failure Predicted : No

Revision : GS0A

Driver Version : Not Applicable

Model Number : Not Applicable

T10 PI Capable : No

Certified : Yes

Encryption Capable : No

Encrypted : Not Applicable

Progress : Not Applicable

Mirror Set ID : Not Applicable

Capacity : 931.00 GB (999653638144 bytes)

Used RAID Disk Space : 1.20 GB (1288437760 bytes)

Available RAID Disk Space : 929.80 GB (998365200384 bytes)

Hot Spare : No

Vendor ID : DELL(tm)

Product ID : ST1000NM0023

Serial No. :

Part Number :

Negotiated Speed : 6.00 Gbps

Capable Speed : 6.00 Gbps

PCIe Negotiated Link Width : Not Applicable

PCIe Maximum Link Width : Not Applicable

Sector Size : 512B

Device Write Cache : Not Applicable

Manufacture Day : 07

Manufacture Week : 29

Manufacture Year : 2013

SAS Address : 5000C50056FBA12D

Non-RAID HDD Disk Cache Policy : Not Applicable

Disk Cache Policy : Not Applicable

Form Factor : Not Available

Sub Vendor : Not Available

ISE Capable : No

 

 

[root@testlab1 youngju]# omreport storage pdisk controller=1

 

 

test에 사용된 shell script

[root@testlab1 youngju]# grep -iv ‘^#[a-zA-Z]’ create-vdisk.sh

#!/bin/bash

 

 

RAID=${1}

DISKN=`echo $(($2-1)) `

PDISK=`seq -s “,” -f 1:0:%g 0 $DISKN`

SIZE=$3

echo -e “\e[93m———– dell omsa RAID=$RAID PDISK=$2 vdisk create ———–\e[0m”

omconfig storage controller action=createvdisk controller=1 raid=r${RAID:=0} size=${SIZE:=5g} pdisk=${PDISK:=1:0:0,1:0:1} stripesize=64kb readpolicy=nra writepolicy=wt name=yj-r${RAID}-${2}disk

if [ $? = 0 ]; then

echo -e “\e[93m———– dell omsa RAID=$RAID PDISK=$2 vdisk create done ———–\e[0m”

else

echo -e “\e[91m———– dell omsa RAID=$RAID PDISK=$2 vdisk create fail ———–\e[0m”

exit 1

fi

 

 

[root@testlab1 youngju]# grep -iv ‘^#[a-zA-Z]’ delete-vdisk.sh

#!/bin/bash

 

 

VDISK=$1

VNAME=`bash status-vdisk.sh |grep -i name |head -n1|awk ‘{print $3}’`

 

 

echo -e “\e[93m———– dell omsa vdisk ${VNAME:=no vdisk} delete ———–\e[0m”

omconfig storage vdisk action=deletevdisk controller=1 vdisk=${VDISK:=1}

echo -e “\e[93m———– dell omsa vdisk ${VNAME:=no vdisk} delete done ———–\e[0m”

 

 

[root@testlab1 youngju]# grep -iv ‘^#[a-zA-Z]’ status-vdisk.sh

#!/bin/bash

 

 

omreport storage vdisk controller=1 vdisk=1

 

 

[root@testlab1 youngju]# grep -iv ‘^[[:space:]]*#\|^$’ raid-test.sh

#!/bin/bash

RSTD=test-result-`date +%Y%m%d-%H%M`

RSTD512=test-512-result-`date +%Y%m%d-%H%M`

RSTDCACHE=test-cache-result-`date +%Y%m%d-%H%M`

mkdir $RSTD512

for R in 0 10 5 6

do

for D in `seq 2 12`

do

sleep 2

bash delete-vdisk.sh

sleep 2

bash create-vdisk.sh $R $D 12g

if [ $? = 0 ] ; then

sleep 3

omconfig storage vdisk action=slowinit controller=1 vdisk=1

sleep 2

while [ `bash status-vdisk.sh |grep -i state|head -n1 |awk ‘{print $3}’` != Ready ]

do

echo -e “\e[91m —– vdisk is initializing ——–\e[0m”

bash status-vdisk.sh |grep -i progress

sleep 5

done

echo

echo -e “\e[93m —– vdisk is initialized ——–\e[0m”

sleep 1

vdbench/vdbench -f youngju-test.param-512 -o ${RSTD512}/raid${R}-disk${D} -w 10

sleep 1

else

echo vdisk create fail raid $R disk $D

echo

fi

echo -e “\e[96m———– test raid $R disk $D done ————\e[0m”

echo

echo

done

done

[root@testlab1 youngju]#

 

 

test는 최대한 cache effect를 타지 않게 하였다.

test 결과는 다음과 같다.

io/cache raid disk R/W iops

512 raid 0 2 read 514.26

512 raid 0 3 read 677.07

512 raid 0 4 read 830.22

512 raid 0 5 read 947.13

512 raid 0 6 read 1027.46

512 raid 0 7 read 1108.98

512 raid 0 8 read 1121.44

512 raid 0 9 read 1207.18

512 raid 0 10 read 1265.49

512 raid 0 11 read 1286.46

512 raid 0 12 read 1335.8

512 raid 10 4 read 815.64

512 raid 10 6 read 975.67

512 raid 10 8 read 1119.82

512 raid 10 10 read 1212.33

512 raid 10 12 read 1303.5

512 raid 5 3 read 635.9

512 raid 5 4 read 783.8

512 raid 5 5 read 911.86

512 raid 5 6 read 1010.51

512 raid 5 7 read 1074.68

512 raid 5 8 read 1145.63

512 raid 5 9 read 1187.66

512 raid 5 10 read 1242.5

512 raid 5 11 read 1289.53

512 raid 5 12 read 1310.89

512 raid 6 4 read 729.6

512 raid 6 5 read 850.5

512 raid 6 6 read 983.22

512 raid 6 7 read 1053.27

512 raid 6 8 read 1126.92

512 raid 6 9 read 1179.58

512 raid 6 10 read 1217.82

512 raid 6 11 read 1274.77

512 raid 6 12 read 1296.48

더 많은데… 일단 것만함..

이걸 graph로 만들어 보면…

 

 

read

1

 

write

2

 

 

read write 비교

3

 

대략 이와같은 결과가 나왓다.

test는 transper size 512byte 일때 4096byte 일때 HBA write policy를 writeback일 때 이렇게 3종류 case로 진행 했는데 비슷하더라. 512와 4096은 어차피 1개 page가 4k라서 인것같고, writeback policy로 진행한것은 약간의 성능 향상이 있었는데 결과는 비슷햇다.

 

 

Raid 당 순수 performance를 계산하는 공식이다. I/O처리하는데 있어 대기시간이 전혀 없다는 가정이다.

N=disk 갯수(8)

X=1개 disk가 낼수 있는 iops (125)

Read는 모두 parity를 뺀 NX 만큼의 iops가 나온다.

Write Raid 0 = NX = 8×125= 1000

Write Raid 10 = NX/2 = 8×125 = 500

Write Raid 5 = NX/4 = 8×125/4 = 250

Write Raid 6 = NX/6 = 8×125/6 = 166

아래 site 참조함.

https://www.storagecraft.com/blog/raid-performance/

raid 5는 write를 할 때 4개의 operation이 들어가게 된다. 먼저 data를 읽고, parity를 읽고, data를 쓰고, parity쓰는 4개의 operation이 일어나게 되어 4를 나눈것이고, 6은 parity가 1개 더 들어가서 6을 나눈다.

 

 

대략적인 test결과도 비슷하게 나왔다.

operation size 별 read 대비 write performance

4

 

결론

1. HBA의 성능이 받쳐주는 이상 disk를 늘리면 늘릴 수록 I/O의 성능은 올라간다. storage vendor에 물어보니까. HBA의 cache size에 따라서 몇개의 disk까지 수용 할 수 있는지가 정해 진단다. test에서는 12개 까지밖에 쓸 수가 없어서 12개까지만 test 해봄.

2. 위 site에서 raid 5는 안전상의 이유로 사용하지 말라고 하더라. 사실상 raid5와 raid6과의 read 대비 write의 차이가 그리 크지 않다. raid5가 약 25% 정도의 효율이 나오고, raid6이 20% 정도의 효율이 나온다. disk가 많아지면 많아질 수록 이 격차는 좁아진다. 그러므로 raid 6을 쓰자.

 

command 실행 스크립트

지정된 command를 한줄 한줄 실행시켜 주는 scrip이다.

점검script 같은거 짤 때 괜찮을듯 ㅋ

CMD 변수 안에 command를 한줄 한줄 넣어주면 된다.

OLDIFS=$IFS
IFS=$(echo -en “\n\b”)
CMD=”df -h
echo 3 > /proc/sys/vm/drop_caches
ps aux |grep -i gluster
grep -i ’42 second’ /var/log/messages |wc -l
grep -i ‘transport endpoint is not connected’ /var/log/glusterfs/${LOGFILE}.log |wc -l
top -b -n 1 |tee /root/RH/before_top-`date +%Y%m%d-%H%M%S`
free -m |tee /root/RH/before_free-`date +%Y%m%d-%H%M%S`

for i in $CMD
do
IFS=$OLDIFS
echo -e “\e[93m—— $i excute ———–\e[0m”
eval $i
echo -e “\e[93m—— $i done ———–\e[0m”
echo
echo
sleep 1
done