बहुत सारी मुफ्त रैम, एनवीएमई इंटेल पी 4500 और सब कुछ धीमा हो जाता है - विभाजन की असफल जोड़ की कहानी

इस लेख में, मैं उस स्थिति के बारे में बात करूंगा जो हाल ही में हमारे वीपीएस क्लाउड में एक सर्वर के साथ हुई, मुझे कई घंटों तक भ्रमित करती है। मैं लगभग 15 वर्षों से लिनक्स सर्वरों को कॉन्फ़िगर और समस्या निवारण कर रहा हूं, लेकिन यह मामला मेरे व्यवहार में बिल्कुल भी फिट नहीं है - मैंने समस्या के कारण को सही ढंग से निर्धारित करने और इसे हल करने से पहले कुछ गलत धारणाएं और थोड़ी निराशा की।


प्रस्तावना


हम एक मध्यम आकार के क्लाउड का संचालन करते हैं, जिसे हम निम्नलिखित कॉन्फ़िगरेशन के विशिष्ट सर्वरों पर बनाते हैं - 32 कोर, 256 जीबी रैम और एनवीएमआई पीसीआई-ई इंटेल पी 4500 4 टीबी। हम वास्तव में इस कॉन्फ़िगरेशन को पसंद करते हैं, क्योंकि यह हमें IO की कमी के बारे में सोचने की अनुमति नहीं देता है, जो VM के उदाहरणों (उदाहरणों) के स्तर पर सही प्रतिबंध प्रदान करता है। क्योंकि NVMe Intel P4500 में प्रभावशाली प्रदर्शन है, हम एक साथ पूर्ण IOPS प्रावधान मशीनों और बैकअप स्टोरेज को शून्य IOWAIT के साथ बैकअप सर्वर को प्रदान कर सकते हैं।


हम उसी पुराने विश्वासियों के हैं जो वीएम संस्करणों के भंडारण के लिए हाइपर-कन्वर्जेंट एसडीएन और अन्य स्टाइलिश, फैशनेबल, युवा टुकड़ों का उपयोग नहीं करते हैं, यह विश्वास करते हुए कि सिस्टम जितना सरल होगा, "मुख्य गुरु पहाड़ों पर गए" की शर्तों के तहत मजाक करना आसान होगा। नतीजतन, हम एक्सएफएस या एक्सटी 4 में वीएम वॉल्यूम को क्यूसीडब्ल्यू 2 फॉर्मेट में स्टोर करते हैं, जो एलवीएम 2 के शीर्ष पर तैनात है।


हम ऑर्केस्ट्रेशन के लिए उपयोग किए जाने वाले उत्पाद द्वारा QCOW2 का उपयोग करने के लिए भी मजबूर हैं - Apache CloudStack।

बैकअप करने के लिए, हम LVM2 स्नैपशॉट की तरह फुल वॉल्यूम इमेज लेते हैं (हां, हम जानते हैं कि LVM2 स्नैपशॉट धीमा है, लेकिन Intel P4500 हमें यहां भी मदद करता है)। हम ZFS स्टोरेज के साथ एक रिमोट सर्वर पर बैकअप भेजने के lvmcreate -s ..लिए करते हैं और इसका उपयोग करते हैं dd। यहां हम अभी भी थोड़ा प्रगतिशील हैं - फिर भी जेडएफएस एक संपीड़ित रूप में डेटा स्टोर कर सकते हैं, और हम इसका उपयोग करके DDव्यक्तिगत वीएम वॉल्यूम प्राप्त कर सकते हैं या इसे जल्दी से बहाल कर सकते हैं mount -o loop ...


, , LVM2, RO QCOW2, , , XFS , , . , - "" , - , . XFS RO , LVM2.

, 600-800 MB/s , — 10Gbit/s, .


8 . , , , -, , , 8 GB/, -.


, — Intel P4500, NFS , , ZFS.



- SWAP 8 GB, - "" DD . 2xSATA SSD RAID1 2xSAS HDD RAID1 LSI HP. , , , " readonly", SWAP-. RAM 30-40% , SWAP .


. :


#!/bin/bash

mkdir -p /mnt/backups/volumes

DIR=/mnt/images-snap
VOL=images/volume
DATE=$(date "+%d")
HOSTNAME=$(hostname)

lvcreate -s -n $VOL-snap -l100%FREE $VOL
ionice -c3 dd iflag=direct if=/dev/$VOL-snap bs=1M of=/mnt/backups/volumes/$HOSTNAME-$DATE.raw
lvremove -f $VOL-snap

ionice -c3, NVMe , IO :


cat /sys/block/nvme0n1/queue/scheduler
[none] 

, legacy- SSD RAID-, , AS IS. , , ionice .


iflag=direct DD. direct IO , IO . , oflag=direct , ZFS .


.


… , , IOWAIT 50%. :


Volume group "images" not found

" Intel P4500", , , . LVM2 LVM2:


vgcfgrestore images

:


— , , VPS- , . , — iostat IOPS- IOWAIT. , " NVMe" , .



. VPS- 128 GB RAM. , 32 GB . VPS , , SWAP- .


. vm.swappiness - 60. SWAP SAS HDD RAID1.


( ). DD , RAM NFS. , swappiness, VPS , HDD RAID1. , IOWAIT , IO NVMe, IO HDD RAID1.


. 32GB. 16 , , SWAP . swappiness 5 .


यह कैसे नहीं हो सकता हैसबसे पहले, अगर SWAP SSD RAID या NVMe डिवाइस पर था, और दूसरी बात, अगर कोई NVMe डिवाइस नहीं था, लेकिन एक धीमी डिवाइस जो डेटा का इतना मात्रा में उत्पादन नहीं करेगी - विडंबना यह है कि समस्या हुई वह NVMe बहुत तेज़ है।


उसके बाद, सब कुछ पहले की तरह काम करना शुरू कर दिया - शून्य IOWAIT के साथ।


All Articles