लिनक्स में ext4 + LVM + सॉफ़्टवेयर RAID पर काम कर रहे SSD TRIM (त्याग) प्राप्त करना संभव है?


18

हम md डिवाइस बनाने के लिए लिनक्स (वर्तमान में 2.6.37) पर md के साथ RAID1 + 0 का उपयोग करते हैं, फिर डिवाइस के शीर्ष पर वॉल्यूम प्रबंधन प्रदान करने के लिए LVM का उपयोग करते हैं, और फिर LVM वॉल्यूम समूहों पर हमारे फाइल सिस्टम के रूप में ext4 का उपयोग करते हैं।

ड्राइव के रूप में SSDs के साथ, हम TRIM कमांड को लेयर्स के माध्यम से प्रोपेगेट (ext4 -> LVM -> md -> SSD) के रूप में देखना चाहेंगे।

ऐसा लगता है कि हाल ही में 2.6.3x गुठली में कई नए एसएसडी-संबंधित TRIM समर्थन जोड़े गए हैं, जिसमें डिवाइस मैपर परिदृश्यों के बहुत अधिक कवरेज शामिल हैं, लेकिन हम अभी भी इसे ठीक से समझ नहीं पाते हैं।

क्या यह अभी तक संभव है? यदि हां, तो कैसे? यदि नहीं, तो क्या कोई प्रगति की जा रही है?


अद्यतन देखें serverfault.com/a/229486/67675 :)
poige

जवाबों:


7

संभव नहीं है, कारण लिनक्स सॉफ्ट RAID इस (अभी तक?) का समर्थन नहीं करता है।

युपीडी। : मुझे बताने के लिए Wodin के लिए धन्यवाद पता है - के अनुसार lkml.org/lkml/2012/3/11/261 इस कार्यात्मक कर दिया गया है जोड़ा प्रस्तावित हाल ही में। प्रस्तावित ! = स्वीकार किए जाते हैं , हालांकि।


आप अभी भी इस जवाब को घटा सकते हैं, लेकिन इससे एलएसआर को TRIM :) का समर्थन नहीं
मिलेगा

3
यह अब करता है। lkml.org/lkml/2012/3/11/261
Wodin

@Wodin, मैं 3.5 में भी प्रस्तावित परिवर्तन नहीं पा सकता हूँ। उन्हें स्वीकार नहीं किया जाता है।
जूल

14

2.6.37 तक, यह मौजूद होना चाहिए ( स्रोत ) । कर्नेल इसे पृष्ठभूमि में नहीं करता है, वर्तमान में ब्लॉक त्याग प्रक्रिया को मांग पर चलाने के लिए डिज़ाइन किया गया है (क्रोन स्क्रिप्ट!)। डीएम-क्रिप्ट समर्थन अभी तक मौजूद नहीं है।

13 जनवरी, 2011 को एक पैच को dm-raid1.c में मिला दिया गया, जिसमें लिखा था:

dm raid1: support discard

Enable discard support in the DM mirror target.
Also change an existing use of 'bvec' to 'addr' in the union.

मैं 100% नहीं हूं, लेकिन मुझे लगता है कि 2.6.38 के लिए मर्ज-विंडो है।

EXT4 ने कुछ समय पहले समर्थन जोड़ा, जैसा कि LVM ने किया था। RAID एक कुंजी है जिसका समर्थन नहीं है। 1/13/2011 तक, ऐसा लगता है कि समर्थन जोड़ा गया है। 2.6.38 या शायद 2.6.39 में इसके लिए देखें।


समय बीत चुका है और टीआरआईएम समर्थन निश्चित रूप से 3.7 कर्नेल में शामिल हैप्रतिबद्ध RAID10 पढ़ता के लिए :

यह md छापे को 10 समर्थन TRIM बनाता है। यदि एक डिस्क त्यागने का समर्थन करती है और दूसरी नहीं, या एक के पास त्याग_न्यास_दाता है और दूसरी नहीं, तो ऐसे डिस्क से डेटा के बीच असंगत हो सकता है। लेकिन यह बात नहीं होनी चाहिए, खारिज डेटा बेकार है। यह हालांकि पुनर्निर्माण में अतिरिक्त प्रतिलिपि जोड़ देगा।


उस धागे को देखा, और संबंधित संबंधित, लेकिन जैसा कि मैंने सवाल में कहा था - क्या इसका मतलब यह है कि यह केवल LVM (डिवाइस मैपर) के माध्यम से ही नहीं बल्कि md (सॉफ्टवेयर RAID) से भी गुजरेगा?
डॉन मैकएस्किल

1
यह आशाजनक लगता है, लेकिन मेरी समझ यह है कि dmraid मुख्य रूप से तथाकथित 'नकली' हार्डवेयर RAID नियंत्रकों के लिए उपयोग किया जाता है। मैं जिस बारे में बात कर रहा हूं वह एक अधिक विशिष्ट सॉफ्टवेयर है, केवल mdadm RAID-1 (+0) सरणी (ओं) के साथ LVM शीर्ष पर। AFAIK, वह सेटअप dmraid की नई-पाए जाने वाली क्षमता से लाभ नहीं उठाता है। सही?
डॉन मैकएसिल

1
@DonMacAskill 'raid1.c' फ़ाइल में TRIM, FITRIM या 'डिस्पोज़' का संदर्भ देने वाला कोई भी कमिट नहीं है। तो, लगता है mdadm - क्रिएट RAID सपोर्ट अभी तक नहीं है।
sysadmin1138

@ sysadmin1138 मुझे लगता है कि आप का मतलब है discard, जिसे यह लिनक्स कर्नेल के भीतर कहा जाता है। और यह पैच त्यागने के लिए संदर्भित करता है।
माइकल हैम्पटन

1

Mdtrim को अधिक काम करने की आवश्यकता हो सकती है:

Cyberax-mdtrim-0a40e8d# ./mdtrim.py -m /dev/md4 -s /home
Scratch directory is /home, trimmer file size is 0 GB 790 MB
Found slave sdc2 on /dev/sdc with MD offset 0 and partition offset 249856
Creating trimmer file
252,2: device not found in /dev
Traceback (most recent call last):
  File "./mdtrim.py", line 120, in <module>
    if lines[2].find("assuming %d byte sectors" % sector_size) == -1:
IndexError: list index out of range

0

आप मेरी MDTRIM स्क्रिप्ट ( https://github.com/Cyberax/mdtrim/ ) का उपयोग कर ext4 / 3 लेवल -1 RAID पर खाली जगह कर सकते हैं । हम इसे समय-समय पर क्रोन से शुरू करते हैं और यह हमारे लिए बहुत अच्छा काम करता है।

अन्य RAID स्तरों के लिए समर्थन जोड़ना संभव है, लेकिन मेरे पास इसके लिए समय (या आवश्यकता) नहीं है।


0

जैसा कि यहाँ सुझाया गया है आप उपयोग कर सकते हैं

lsblk -D

यह जांचने के लिए कि क्या आपके ब्लॉकदेवी त्याग आदेशों से गुजरते हैं।

यह भी ध्यान दें कि lvm.conf में सेक्शन डिवाइसेस में एक विकल्प issue_discards है। देख

man 5 lvm.conf

अधिक जानकारी के लिए।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.