서버 디스크 성능을 향상시키는 방법


10

Ubuntu 10.04 LTS를 실행하는 HP Microserver가 있습니다. 내부 드라이브 베이가 5 개인 저전력 서버입니다. 네트워크를 통해 원격 서버, VPS 및 로컬 랩톱을 백업하는 데 사용합니다. 디스크에서 최상의 성능을 얻고 싶지만 최적으로 설정되었는지 모르겠으므로 조언을 찾고 있습니다.

내 서버는 원격 호스트를 백업하기 위해 하루에 여러 번 rsnapshot을 실행합니다. 실제 증분 백업 부분은 시간이 거의 걸리지 않습니다. 중요한 시간은 다음과 같은 일을하는데 소비됩니다.

/bin/cp -al /srv/rsnapshot/hourly.0 /srv/rsnapshot/hourly.1

약 2 시간이 걸립니다. 나는 거기에 작은 작은 파일이 있다는 것을 알고 있습니다.

$ sudo du -hs hourly.1
659G    hourly.1

또한 rsnapshot이 오래된 백업을 삭제하면 시간이 오래 걸릴 수 있습니다.

/bin/rm -rf /srv/rsnapshot/daily.6/

약 30 분이 걸립니다.

내 질문은 다음과 같습니다. 서버 구성 및 일부 IO 통계는 아래에 자세히 설명되어 있습니다. 필요한 경우 더 많은 디버그 정보를 제공 할 수 있습니다.

병목 현상이있는 위치를 어떻게 식별 할 수 있습니까?

이 상자로 가능한 기능 (IO 현명한)의 한계에 도달하고 있습니까?

내가 할 수있는 성능 조정이 있습니까?

다른 RAID 레벨을 사용해야합니까?

내부 RAID 디스크 2 개 (각 미러의 절반)를 외부 어레이의 2 개의 '다른 미러의 다른 절반'으로 교체하는 것이 합리적입니까?

참고 : 내 커널을 컴파일하는 것과 같은 일을하는 경향이 다소 없습니다. 이상적으로는 10.04 LTS를 고수하고 싶습니다. 나중 버전 에서이 모든 것이 훨씬 빨리 작동하는 마술이 없다면.

내부적으로 서버에는 1x160GB SATA 부트 디스크와 4x2TB 디스크가 있습니다.

Disk /dev/sde: 160.0 GB, 160041885696 bytes
Disk /dev/sdf: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdh: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdi: 2000.4 GB, 2000398934016 bytes
Disk /dev/sdg: 2000.4 GB, 2000398934016 bytes

4 개의 내부 2TB 디스크는 소프트웨어 MD RAID10 설정에 있습니다.

md0 : active raid10 sdg1[3] sdh1[0] sdi1[2] sdf1[1]
      3907023872 blocks 64K chunks 2 near-copies [4/4] [UUUU]

또한 PCI-E eSATA 카드를 통해 연결되고 500GB의 4 개 이상의 드라이브를 포함하는 외부 EDGE10 드라이브 인클로저가 있습니다.

Disk /dev/sda: 500.1 GB, 500107862016 bytes
Disk /dev/sdb: 500.1 GB, 500107862016 bytes
Disk /dev/sdc: 500.1 GB, 500107862016 bytes
Disk /dev/sdd: 500.1 GB, 500107862016 bytes

이것은 MD RAID10 어레이로도 설정됩니다

md1 : active raid10 sdb1[1] sda1[0] sdd1[3] sdc1[2]
      976767872 blocks 64K chunks 2 near-copies [4/4] [UUUU]

md0과 md1은 하나의 큰 LVM을 만들기 위해 결합됩니다. 참고 : 최근에 외부 배열 만 추가 했으므로 거의 비어 있습니다. 지금 블록이 있다고 생각하지 않습니다.

이것은 LVM 볼륨으로 표시됩니다.

--- Logical volume ---
LV Name                /dev/data/data
VG Name                data
LV UUID                amZCgU-sQLi-R363-dUFx-Bcdf-iwlt-ZNnDp8
LV Write Access        read/write
LV Status              available
# open                 1
LV Size                4.54 TiB
Current LE             1190134
Segments               2
Allocation             inherit
Read ahead sectors     auto
- currently set to     512
Block device           251:0

EXT4 형식이며 / srv로 마운트됩니다.

/dev/mapper/data-data on /srv type ext4 (rw)

여유 공간이 충분합니다.

/dev/mapper/data-data
                      4.5T  2.2T  2.1T  51% /srv

유용 할 수있는 기타 정보 :-

$ uname -a
Linux ubuntuserver 2.6.32-32-server #62-Ubuntu SMP Wed Apr 20 22:07:43 UTC 2011 x86_64 GNU/Linux

.

00:11.0 SATA controller: ATI Technologies Inc SB700/SB800 SATA Controller [AHCI mode] (rev 40)
02:00.0 RAID bus controller: Silicon Image, Inc. SiI 3132 Serial ATA Raid II Controller (rev 01)

rsnapshot 중에 cp 명령을 수행 할 때 iostat에 다음이 표시됩니다.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.55    0.00    5.47   66.14    0.00   27.85

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sde               0.00     0.00    0.10    0.00     0.80     0.00     8.00     0.00    0.00   0.00   0.00
sdf               0.00   407.50    0.00   66.80     0.00  3790.40    56.74   124.86 1524.88  13.55  90.50
sdh               0.00   406.90    0.00   66.90     0.00  3790.40    56.66    92.89 1230.52  13.21  88.40
sdi               0.00   407.80    5.50   70.20    44.00  3824.00    51.10   113.83 1333.84  12.34  93.40
sdg               0.00   406.80    6.10   71.60    48.80  3827.20    49.88    64.32  787.68  11.69  90.80
md0               0.00     0.00   11.50 1484.60    92.00 11876.80     8.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00   11.50 1484.70    92.00 11877.60     8.00  5331.18  471.91   0.63  94.70
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

기본적으로 많은 쓰기, 많은 IO 대기.

그래서 지금 상자가 유휴 상태이므로 모든 작업을 일시 중단했습니다.

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           0.00    0.00    0.00    0.00    0.00  100.00

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdb               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdc               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdd               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sde               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdf               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdh               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdi               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sdg               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
md1               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
dm-0              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

복숭아처럼 보인다!

$ sudo hdparm -T -t /dev/sd[a-i]

/dev/sda:
 Timing cached reads:   2532 MB in  2.00 seconds = 1265.95 MB/sec
 Timing buffered disk reads:  270 MB in  3.02 seconds =  89.53 MB/sec

/dev/sdb:
 Timing cached reads:   2516 MB in  2.00 seconds = 1258.07 MB/sec
 Timing buffered disk reads:  264 MB in  3.02 seconds =  87.37 MB/sec

/dev/sdc:
 Timing cached reads:   2442 MB in  2.00 seconds = 1220.80 MB/sec
 Timing buffered disk reads:  272 MB in  3.00 seconds =  90.60 MB/sec

/dev/sdd:
 Timing cached reads:   2520 MB in  2.00 seconds = 1259.64 MB/sec
 Timing buffered disk reads:  272 MB in  3.02 seconds =  90.07 MB/sec

/dev/sde:
 Timing cached reads:   2524 MB in  2.00 seconds = 1261.48 MB/sec
 Timing buffered disk reads:  306 MB in  3.01 seconds = 101.56 MB/sec

/dev/sdf:
 Timing cached reads:   2366 MB in  2.00 seconds = 1183.28 MB/sec
 Timing buffered disk reads:  388 MB in  3.01 seconds = 128.88 MB/sec

/dev/sdg:
 Timing cached reads:   2536 MB in  2.00 seconds = 1267.52 MB/sec
 Timing buffered disk reads:  400 MB in  3.00 seconds = 133.12 MB/sec

/dev/sdh:
 Timing cached reads:   2538 MB in  2.00 seconds = 1269.08 MB/sec
 Timing buffered disk reads:  426 MB in  3.00 seconds = 141.90 MB/sec

/dev/sdi:
 Timing cached reads:   2538 MB in  2.00 seconds = 1268.57 MB/sec
 Timing buffered disk reads:  402 MB in  3.01 seconds = 133.69 MB/sec

흠. 디스크 구조를 다른 하드웨어로 나누는 것이 싫어서 문제를 해결하기가 어렵습니다. 일반적으로 bonnie++각 어레이에서 같은 것을 실행 하여 기본 속도 벤치 마크를 제공하는 것이 좋습니다. LVM에 대한 경험이 많지 않으므로 이제 분리 할 수있는 옵션이 확실하지 않습니다.
Oli

외부 배열은 실제로 문제가되지 않습니다. 블록이 없습니다. 소리를 내고자하는 내부 디스크 성능입니다.
popey 2016 년

답변:


3

불행하게도 스트라이프 캐시는 RAID5 및 6에만 적용되며 RAID 0/1/10에는 해당되지 않습니다.

에 따라 개별 드라이브의 성능이 hdparm좋아 보입니다. 모두 해당 클래스의 드라이브에 대해 예상대로 성능을 발휘합니다.

내 제안 :

  1. BIOS에서 AHCI가 활성화되어 있고 내부에 설치된 드라이브가 레거시 IDE 모드를 사용하고 있지 않은지 확인하십시오. MicroServer에 대한 해킹 된 BIOS가 있으며 eSATA 포트에 대해서도 AHCI를 활성화 할 수 있습니다 (자세한 내용은 이 링크 참조 ). 포트 승수.
  2. 모든 드라이브에 대해 NCQ를 활성화하고 차이가 있는지 확인하십시오 (그렇지 않을 수도 있음).
  3. 파일 시스템 설정이 최적화되어 있는지 확인하십시오 (noatime, nodiratime 마운트). 당신은 또한 수 비활성화 쓰기 장벽 ,하지만 그건 너무 위험 할 수있다.
  4. I / O 스케줄러 전환의 이점이 있는지 확인하십시오 (noop은 여기서 도움이 될 수 있습니다).
  5. md 및 LVM 장치 모두에 대해 미리 읽기 버퍼를 조정하십시오 blockdev --setra <size> /dev/md1(예 : <size>512 바이트 섹터). 그래도 읽는 데 도움이됩니다.

성능에 영향을 줄 수있는 다른 두 가지 요소는 파티션 정렬 및 파일 시스템 생성 매개 변수 (보조 등)이지만 최신 도구를 사용하는 경우에는 문제가되지 않습니다.


디스크 hdparm 시간을 추가하고, noatime 및 nodiratime을 사용하도록 fstab을 편집 (및 다시 마운트)했습니다. 그렇게 24 시간 내버려 두겠습니다.
popey
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.