J'ai un HP Microserver sous Ubuntu 10.04 LTS. C'est un serveur basse consommation avec 5 baies de disques internes. Je l'utilise pour sauvegarder mes serveurs distants, mes VPS et mes ordinateurs portables locaux sur le réseau. Je veux obtenir les meilleures performances des disques, mais je ne sais pas si sa configuration est optimale, je cherche donc des conseils.
Mon serveur exécute rsnapshot plusieurs fois par jour pour sauvegarder des hôtes distants. La partie de sauvegarde incrémentielle réelle prend très peu de temps. Le temps considérable est passé à faire des choses comme: -
/bin/cp -al /srv/rsnapshot/hourly.0 /srv/rsnapshot/hourly.1
Ce qui prend environ 2 heures. Je me rends compte qu'il y a un bazillion de petits fichiers.
$ Sudo du -hs hourly.1
659G hourly.1
De plus, lorsque rsnapshot supprime une ancienne sauvegarde, cela peut prendre beaucoup de temps: -
/bin/rm -rf /srv/rsnapshot/daily.6/
Ce qui prend environ une demi-heure.
Mes questions sont les suivantes: la configuration du serveur et certaines statistiques IO sont détaillées ci-dessous. Je peux bien sûr fournir plus d’informations de débogage si nécessaire: -
Comment puis-je identifier les goulots d'étranglement?
Est-ce que j'atteins les limites de ce qui est capable (sage) avec cette case?
Y a-t-il des réglages de performance que je pourrais faire?
Devrais-je utiliser un niveau RAID différent?
Est-il judicieux d’échanger deux des disques RAID internes (la moitié de chaque miroir) avec deux "autres moitiés de l’autre miroir" de la baie de disques externe?
Note: Je ne suis pas très enclin à faire des choses comme compiler mon propre noyau. Dans l’idéal, j’aimerais utiliser la version 10.04 LTS, à moins que, dans les versions ultérieures, quelque chose de magique permette que tout cela soit beaucoup plus rapide.
En interne, le serveur dispose de disques de démarrage SATA de 1x160 Go et de disques de 4x2 To: -
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
Les quatre disques internes de 2 To se trouvent dans une configuration logicielle MD RAID10: -
md0 : active raid10 sdg1[3] sdh1[0] sdi1[2] sdf1[1]
3907023872 blocks 64K chunks 2 near-copies [4/4] [UUUU]
De plus, j'ai un boîtier de disque externe Edge10 qui est connecté via une carte PCI-E eSATA et contient quatre autres disques de 500 Go: -
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
Ceci est également configuré en tant que matrice MD RAID10
md1 : active raid10 sdb1[1] sda1[0] sdd1[3] sdc1[2]
976767872 blocks 64K chunks 2 near-copies [4/4] [UUUU]
md0 et md1 sont combinés pour former un seul grand LVM. Remarque: j'ai récemment ajouté le tableau externe, il est donc à peu près vide, je ne pense pas qu'il y ait de bloc dessus pour le moment.
Ceci est présenté comme un volume 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
Qui est formaté en EXT4 et monté en/srv: -
/dev/mapper/data-data on /srv type ext4 (rw)
Il y a beaucoup d'espace libre.
/dev/mapper/data-data
4.5T 2.2T 2.1T 51% /srv
Autres informations qui pourraient être utiles: -
$ 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)
Lors de l'exécution de la commande cp pendant rsnapshot, les informations suivantes apparaissent dans 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
Donc, fondamentalement, beaucoup d'écritures, beaucoup de IO attendent.
Alors maintenant, la boîte est inactive, j'ai suspendu tous les travaux.
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
Regarde Peachy!
$ 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
Malheureusement, le cache en bande ne concerne que les RAID5 et 6 - il n'y a pas d'équivalent pour RAID 0/1/10.
Les performances de vos lecteurs individuels (selon hdparm
) semblent bonnes. Elles fonctionnent toutes comme prévu pour les lecteurs de cette classe.
Mes suggestions:
blockdev --setra <size> /dev/md1
par exemple (où <size>
correspond à des secteurs de 512 octets). Cela aidera seulement les lectures bien.L'alignement des partitions et les paramètres de création de système de fichiers (stride, etc.) peuvent également avoir une incidence sur les performances. Toutefois, l'utilisation d'outils modernes ne devrait pas poser de problème.