이유는 모르겠지만 공격 속도에 큰 문제가 있습니다.
4WD RE4 7200RPM 500GB가 있습니다. RAID 5의 크기는 1000GB입니다. 예비용 HDD 1개.
그것이 문제이다:
Every 1,0s: cat /proc/mdstat Mon Dec 31 10:01:11 2012
Personalities : [raid1] [raid6] [raid5] [raid4]
md1 : active raid5 sdc2[0] sdb2[3](S) sdd2[2] sde2[1]
974812160 blocks super 1.2 level 5, 512k chunk, algorithm 2 [3/3] [UUU]
[=>...................] check = 9.0% (44241152/487406080) finish=6696.5min speed=1102K/sec
md0 : active raid1 sdc1[0] sdb1[3](S) sdd1[2] sde1[1]
975860 blocks super 1.2 [3/3] [UUU]
unused devices: <none>
아마 완료됐을지도 모른다는 생각에 새벽 2시부터 확인을 시작했습니다. 그러나 실제로는 그렇지 않습니다. 신규 시절(2개월 전)에는 레이드 점검에 150~300분 정도 밖에 걸리지 않았습니다.
vmstat 1 shows:
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 1 0 168108 278152 6649192 0 0 385 705 0 1 47 13 33 7
1 1 0 168092 278152 6649236 0 0 0 1564 24426 42090 28 11 46 16
3 1 0 173424 278152 6649236 0 0 0 1204 23750 41592 30 7 48 15
1 2 0 173416 278160 6649228 0 0 24 592 23131 41252 25 5 47 23
2 1 0 173424 278160 6649260 0 0 0 2340 24750 42888 29 8 45 18
1 1 0 172928 278176 6649244 0 0 0 1408 23818 41362 30 8 42 21
1 0 0 172696 278176 6649304 0 0 0 471 23144 40932 25 7 58 10
1 0 0 172488 278176 6649304 0 0 0 275 26299 45241 27 17 52 5
1 2 0 172612 278184 6649304 0 0 0 1806 24572 41288 40 6 44 9
5 2 0 172752 278200 6649328 0 0 0 780 23541 41308 28 6 33 33
Iostat 1은 다음을 보여줍니다.
Linux 2.6.32-5-amd64 () 31.12.2012 _x86_64_ (4 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
47,02 0,34 12,94 6,95 0,00 32,74
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 7,68 17,48 3428,36 112980468 22156867512
sdb 0,00 0,00 0,00 748 2208
sdc 70,20 3506,35 1574,01 22660920204 10172547974
sdd 70,32 3528,74 1551,86 22805657128 10029430470
sde 71,11 3548,29 1538,53 22931965117 9943244782
md0 0,00 0,01 0,00 55936 5416
md1 356,51 3276,98 2594,09 21178557866 16765170392
avg-cpu: %user %nice %system %iowait %steal %idle
24,88 0,00 6,47 18,41 0,00 50,25
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0,00 0,00 0,00 0 0
sdb 0,00 0,00 0,00 0 0
sdc 164,00 80,00 2792,00 80 2792
sdd 116,00 1072,00 1248,00 1072 1248
sde 138,00 0,00 1864,00 0 1864
md0 0,00 0,00 0,00 0 0
md1 369,00 0,00 2952,00 0 2952
avg-cpu: %user %nice %system %iowait %steal %idle
30,71 0,00 6,88 14,50 0,00 47,91
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0,00 0,00 0,00 0 0
sdb 0,00 0,00 0,00 0 0
sdc 187,00 1040,00 1944,00 1040 1944
sdd 286,00 64,00 4616,00 64 4616
sde 231,00 1024,00 3056,00 1024 3056
md0 0,00 0,00 0,00 0 0
md1 601,00 0,00 4808,00 0 4808
avg-cpu: %user %nice %system %iowait %steal %idle
22,03 0,00 6,68 3,71 0,00 67,57
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 0,00 0,00 0,00 0 0
sdb 0,00 0,00 0,00 0 0
sdc 30,00 8,00 716,00 8 716
sdd 10,00 40,00 44,00 40 44
sde 33,00 0,00 740,00 0 740
md0 0,00 0,00 0,00 0 0
md1 92,00 0,00 736,00 0 736
다음 질문을 드리겠습니다.
1) 내 레이드가 완전히 로드되는 데 문제가 있나요? (총 크기 916GB, 505G 사용, 365G 무료). 2) "512k 청크"에 문제가 있습니까?
3) EXT3는 SW RAID 5에 가장 적합합니까?
4) SW raid 5의 속도를 높이는 방법이 가능합니까?
5) 내 RAID에 다음 디스크를 추가하여 예비 디스크가 되지 않고 RAID 속도만 높일 수 있습니까?
6) SW Raid 5는 CPU TIME을 얼마나 소모하나요? 맨 위에는 다음과 같이 표시됩니다. PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 422 root 20 0 0 0 0 S 1 0.0 1743:38 md1_raid5 서버 가동 시간은 74일입니다(이전 서버로 변경한 이후).
인기 프로그램:
top - 10:18:43 up 74 days, 19:21, 3 users, load average: 2.33, 2.86, 2.94
Tasks: 147 total, 2 running, 145 sleeping, 0 stopped, 0 zombie
Cpu(s): 22.6%us, 6.9%sy, 0.0%ni, 52.9%id, 17.1%wa, 0.1%hi, 0.4%si, 0.0%st
Mem: 24743684k total, 24598984k used, 144700k free, 270604k buffers
Swap: 0k total, 0k used, 0k free, 6664872k cached
제 생각엔 로드 평균이 너무 높은 것 같아요. 그런데 왜? CPU를 너무 많이 소모하는 것은 보이지 않습니다.
Power TOP은 다음과 같이 표시됩니다.
Wakeups-from-idle per second : 6122,7 interval: 10,0s
Top causes for wakeups:
74,0% (17652,4) kvm : sys_timer_settime (posix_timer_fn)
15,0% (3579,6) <kernel IPI> : Rescheduling interrupts
5,5% (1319,6) kvm : apic_reg_write (kvm_timer_fn)
1,8% (422,4) <interrupt> : ahci
1,0% (248,2) events/0 : flush_to_ldisc (delayed_work_timer_fn)
0,7% (178,6) worldserver : __mod_timer (process_timeout)
0,6% (153,4) <interrupt> : eth0
0,5% (118,4) <interrupt> : pata_atiixp
0,2% ( 43,6) kvm : __kvm_migrate_timers (kvm_timer_fn)
0,1% ( 20,0) md1_raid5 : __mod_timer (blk_unplug_timeout)
0,0% ( 11,2) authserver : __mod_timer (process_timeout)
답변1
RAID 재동기화/검사는 일반 I/O보다 낮은 I/O 우선순위로 수행됩니다. 해당 디스크에 I/O가 많으면 가장 낮은 속도로 실행됩니다. 이를 다음과 같이 수정할 수 있습니다./sys/block/md1/md/sync_speed_min
답변2
다른 질문에 대한 추가 답변:
1) 내 레이드가 완전히 로드되는 데 문제가 있나요? (총 크기 916GB, 505G 사용, 365G 무료).
아니요, 맞습니다.
첫째, HDD 제조업체는 1GB를 1099511627776(1024 * 1024 * 1024 * 1024)바이트가 아닌 1,000,000,000바이트로 간주하기 때문에 500GB HDD는 실제로 500GB 크기가 아닙니다.
따라서 원래 용량은 약 931GB입니다. 파일 시스템은 구조 등에 대한 일부 메타 정보를 저장해야 하므로 자체 공간이 필요하며 이로 인해 ext3 형식 파티션에서 약 916GB의 여유 공간이 생깁니다.
각 파일은 최소한 하나의 블록(대부분 512바이트, 4KB 정도)을 차지하므로 10바이트에 불과한 파일도 디스크에서 512바이트를 사용합니다. 작은 파일이 많으면 모든 파일의 크기와 디스크에서 차지하는 공간 사이에 큰 차이가 있습니다.
2) "512k 청크"에 문제가 있습니까?
습관. 하지만 이 역시 작업량과 사용량에 따라 달라집니다. 인터넷에서 다양한 블록 크기에 대한 여러 가지 성능 비교를 찾을 수 있습니다.
3) EXT3는 SW RAID 5에 가장 적합합니까?
예, 그리고 다른 표준 파일 시스템도 가능합니다. 내 관점에서 볼 때 더 좋은 질문은 "RAID5 및/또는 EXT3가 내 사용/워크로드에 적합한가?"입니다.
예를 들어, 사용자 수가 적은 파일 서버가 있는 경우 RAID5 및 ext3이 적합합니다. ext3에 RAID5가 포함된 대규모 데이터베이스가 있는 경우 RAID10 및 XFS를 사용하는 것이 더 좋습니다.
5) 내 RAID에 다음 디스크를 추가하여 예비 디스크가 되지 않고 RAID 속도만 높일 수 있습니까?
물론 4개의 디스크로 구성된 RAID5를 사용할 수도 있습니다. 이렇게 하면 읽기 성능이 향상될 수 있지만 쓰기 성능은 향상되지 않습니다.
더 높은 쓰기 성능이 필요하다면 RAID10을 구입해야 합니다.
Linux의 mdraid는 높은 IOPS를 제공하는 데 형편없기 때문에 이는 순차 읽기/쓰기에만 작동합니다. 따라서 높은 임의 I/O 로드(예: 데이터베이스 또는 가상화)가 필요한 경우 하드웨어 기반 RAID를 사용하거나 ZFS(표준 Linux 커널에서는 사용할 수 없음)를 사용해야 합니다.