मैं अपने सर्वर डिस्क के प्रदर्शन को कैसे सुधार सकता हूं


10

मेरे पास एक HP Microserver है जो Ubuntu 10.04 LTS पर चल रहा है। यह कम आंतरिक सर्वर है जिसमें 5 आंतरिक ड्राइव बे हैं। मैं इसका उपयोग नेटवर्क पर अपने रिमोट सर्वर, वीपीएस और स्थानीय लैपटॉप का बैकअप लेने के लिए करता हूं। मैं डिस्क से सर्वश्रेष्ठ प्रदर्शन प्राप्त करना चाहता हूं, लेकिन मुझे नहीं पता कि क्या यह सेटअप के लिए है, इसलिए मैं कुछ सलाह लेना चाहता हूं।

मेरा सर्वर दूरस्थ मेजबान के बैकअप के लिए दिन में कई बार rsnapshot चलाता है। वास्तविक वृद्धिशील बैकअप भाग में बहुत कम समय लगता है। महत्वपूर्ण समय चीजों को करने में व्यतीत होता है जैसे: -

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

जिसमें लगभग 2 घंटे लगते हैं। मुझे लगता है कि वहाँ एक bazillion छोटे फ़ाइलें हैं।

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

जब rsnapshot एक पुराने बैकअप को हटाता है, तो इसमें लंबा समय लग सकता है: -

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

जिसमें लगभग आधा घंटा लगता है।

मेरे प्रश्न इस प्रकार हैं, सर्वर का विन्यास और कुछ IO आँकड़े नीचे विस्तृत हैं। यदि आवश्यक हो तो मैं निश्चित रूप से अधिक डिबग जानकारी प्रदान कर सकता हूं: -

मैं कैसे पहचान सकता हूं कि अड़चनें कहां हैं?

क्या मैं इस बॉक्स के साथ सक्षम (IO वार) की सीमा तक पहुँच रहा हूँ?

क्या कोई प्रदर्शन है जो मैं कर सकता हूं?

मैं एक अलग RAID स्तर का उपयोग करना चाहिए?

यह बाहरी सरणी पर दो 'अन्य दर्पण के अन्य हिस्सों' के साथ आंतरिक RAID डिस्क (प्रत्येक दर्पण का आधा) के दो स्वैप करने के लिए समझ में आता है?

नोट: मैं अपने कर्नेल को संकलित करने जैसी चीज़ों के लिए इच्छुक नहीं हूँ। आदर्श रूप से मैं 10.04 एलटीएस पर रहना चाहूंगा, जब तक कि बाद के संस्करणों में कुछ जादू न हो जो यह सब बहुत तेज काम करता है।

आंतरिक रूप से सर्वर में 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

चार आंतरिक 2TB डिस्क एक सॉफ्टवेयर एमडी RAID10 सेटअप में हैं: -

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

इसके अतिरिक्त मेरे पास एक बाहरी EDGE10 ड्राइव संलग्नक है जो एक PCI-E eSATA कार्ड के माध्यम से जुड़ा हुआ है और इसमें 500GB की चार और ड्राइव हैं: -

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 RAID सरणी के रूप में भी सेटअप है

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 के साथ बहुत अधिक अनुभव नहीं है, इसलिए मुझे यकीन नहीं है कि अब उन्हें डिकॉप्ल करना एक विकल्प है।
ओली

बाहरी सरणी वास्तव में कोई समस्या नहीं है। उस पर कोई ब्लॉक नहीं है। यह आंतरिक डिस्क प्रदर्शन है जो मुझे ध्वनि प्राप्त करने की उम्मीद कर रहा है।
पोप

जवाबों:


3

दुर्भाग्य से धारी कैश केवल RAID5 और 6 पर लागू होता है - RAID 0/1/10 के लिए कोई समकक्ष नहीं है।

आपकी व्यक्तिगत ड्राइव का प्रदर्शन (प्रति के रूप में hdparm) ठीक दिखता है - वे सभी उस वर्ग के ड्राइव के लिए अपेक्षित प्रदर्शन कर रहे हैं।

मेरे सुझाव:

  1. जाँच करें कि AHCI BIOS में सक्षम है और आंतरिक रूप से संस्थापित ड्राइव लीगेसी IDE मोड का उपयोग नहीं कर रहे हैं। उपलब्ध माइक्रोएसवर के लिए एक हैक किया गया BIOS है जो ईएचटीए पोर्ट के लिए एएचसीआई को भी सक्षम करता है ( अधिक जानकारी के लिए इस लिंक को देखें ) - बाहरी बाड़े में ड्राइव के लिए जांच के लायक हो सकता है, हालांकि वे अभी भी पीछे होने से सीमित होंगे। बंदरगाह गुणक।
  2. NCQ को सभी ड्राइव्स के लिए सक्षम करें और देखें कि क्या फर्क पड़ता है (यह नहीं हो सकता है)।
  3. सुनिश्चित करें कि फाइलसिस्टम सेटिंग्स को ऑप्टिमाइज़ किया गया है (बढ़ते नॉमैट, नोडिरैटाइम)। आप लेखन बाधाओं को भी अक्षम कर सकते हैं , लेकिन यह बहुत जोखिम भरा हो सकता है।
  4. जांचें कि क्या आपको I / O अनुसूचक स्विच करने से कोई लाभ दिखाई देता है (noop यहाँ मदद कर सकता है)।
  5. एमडी और एलवीएम दोनों उपकरणों के लिए रीड-फॉरवर्ड बफर को समायोजित करें: blockdev --setra <size> /dev/md1उदाहरण के लिए (जहां <size>512-बाइट सेक्टर हैं)। हालांकि यह केवल पढ़ने में मदद करेगा।

प्रदर्शन को प्रभावित करने वाली दो अन्य चीजें विभाजन संरेखण और फाइलसिस्टम निर्माण पैरामीटर (स्ट्राइड, आदि) हैं, लेकिन जैसा कि आप आधुनिक उपकरणों का उपयोग कर रहे हैं, यह एक मुद्दा नहीं होना चाहिए।


डिस्क hdparm बार जोड़ा, और nostime और nodiratime का उपयोग करने के लिए fstab (और remounted) को संपादित किया है। 24 घंटे ऐसे ही छोड़ देंगे।
पॉप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.