SSD के साथ कौन सा linux filesystem सबसे अच्छा काम करता है


119

विकि से:

महत्वपूर्ण TRIM फ़ंक्शन Linux OS द्वारा 2.6.33 कर्नेल (2010 के आरंभ से उपलब्ध) के साथ समर्थित है। हालाँकि, विभिन्न फाइल सिस्टम के बीच समर्थन अभी भी असंगत है या मौजूद नहीं है। स्थापना सॉफ्टवेयर द्वारा उचित विभाजन संरेखण भी नहीं किया जाता है।

तो, कौन सा फाइलसिस्टम SSD के लिए सबसे अच्छा काम करता है और स्थापित करने के दौरान TRIM + विभाजन संरेखण का समर्थन करता है और उबंटू पर उपलब्ध है?

जवाबों:


89

फाइलसिस्टम EXT4 + TRIM:

  • TRT के साथ EXT4 अनावश्यक लेखन चक्रों को कम करके SSD ड्राइव में प्रदर्शन को बेहतर बनाता है क्योंकि वे राइट-रीराइट साइकल को सीमित करते हैं।
  • Ubuntu और कुछ अन्य लिनक्स फ्लेवर EXT 4 को TRIM आउट ऑफ द बॉक्स के साथ सपोर्ट करते हैं।

स्वैप विभाजन:

  • सुनिश्चित करें कि आपके पास SSD पर एक SWAP स्थान नहीं है, फिर से लिखने के चक्र को कम करने के लिए।
  • यदि आपके पास एक यांत्रिक ड्राइव है, तो आपको मैकेनिकल ड्राइव पर एक SWAP स्थान बनाना चाहिए, और SSD पर होने से बचें।

विभाजन संरेखण:

  • विभाजन एक साफ 1 एमबी सीमा पर शुरू होना चाहिए ताकि एसएसडी के ब्लॉक आकार के साथ फाइलसिस्टम का ब्लॉक आकार संरेखित हो।

तो एक यांत्रिक हार्ड ड्राइव पर एक स्वैप के साथ EXT4 + TRIM का उपयोग करें या SSD पर कोई स्वैप नहीं।

स्रोत का हवाला देकर ऊपर लागू किया जा सकता है: एसएसडी प्रदर्शन को अधिकतम कैसे करें


GPT आधुनिक विधि है gdisk& का उपयोग करते हुए grub 2.0.x, (मुझे लगता है कि किसी ने उत्तर में इसका उल्लेख किया है) और MBR पुराने का उपयोग करते हुए विरासत विधि है grub 0.9.7और fdisk.. आप यहाँ और अधिक जानकारी प्राप्त कर सकते हैं: wiki.archlinux.org/index.php/Solid_ate_Drives
उपनाम

7
यह निर्दिष्ट करना अनावश्यक है nodiratimeकि आप कब निर्दिष्ट करते हैं noatime। सहमत है, यह शांत और साथी नर्ड के लिए उन्नत दिखता है, लेकिन जब से noatimeपरमाणुओं को निष्क्रिय करता है, और निर्देशिका भी इनोड होती है, तो यह कहने के समान है "अपने हाथ धो लो, और अपने अंगूठे भी धो लो"। :)
रेडसंड्रो

अनुभव से मैं कह सकता हूं कि कोई भी अनुसूचक ("नहीं") समय सीमा से अधिक तेजी से काम करता है।
ढोलकिया

5
नहीं, " लिनक्स स्वैप विभाजन डिफ़ॉल्ट रूप से TRIM संचालन करते हैं जब अंतर्निहित ब्लॉक डिवाइस TRIM का समर्थन करता है, उन्हें बंद करने की संभावना के साथ, या एक बार या निरंतर TRIM संचालन के बीच चयन करने के लिए।" इतनी स्वैप विभाजन को एसएसडी पर रखा जाना चाहिए ताकि तेजी से पहुंच समय का लाभ उठाया जा सके, जिससे प्रत्येक पृष्ठ स्वैप में बहुत समय लगेगा
phuclv

2
@aliasgar F24 एक अच्छा विकल्प है?
सेबमा

67

संक्षिप्त जवाब

  • चुनें ext4 , और या तो साथ यह माउंट discardके लिए विकल्प TRIM समर्थन, या FITRIM का उपयोग (नीचे देखें)। noatime"एसएसडी पहनने" से डरने पर भी विकल्प का उपयोग करें ।

  • मल्टी-एप्लिकेशन सर्वर पर अपने डिफ़ॉल्ट I / O अनुसूचक (CFQ) को न बदलें , क्योंकि यह प्रक्रियाओं के बीच निष्पक्षता प्रदान करता है और इसमें स्वचालित SSD का समर्थन है। हालांकि, लोड के तहत बेहतर जवाबदेही पाने के लिए डेस्कटॉप पर डेडलाइन का उपयोग करें

  • उचित डेटा संरेखण की आसानी से गारंटी देने के लिए, प्रत्येक विभाजन का शुरुआती क्षेत्र 2048 (= 1 MiB) का एक होना चाहिए । आप fdisk -cu /dev/sdXउन्हें बनाने के लिए उपयोग कर सकते हैं। हाल के वितरणों पर, यह स्वचालित रूप से आपके लिए इसका ख्याल रखेगा।

  • SSD पर स्वैप का उपयोग करने से पहले दो बार सोचें। यह शायद एचडीडी पर स्वैप की तुलना में बहुत तेज होगा, लेकिन यह डिस्क को तेजी से भी पहनेगा (जो प्रासंगिक नहीं हो सकता है, नीचे देखें)।

लंबा जवाब

  • फ़ाइल सिस्टम:

Ext4 सबसे आम लिनक्स फाइल सिस्टम है (अच्छी तरह से बनाए रखा गया है)। यह एसएसडी के साथ अच्छा प्रदर्शन प्रदान करता है और समय के साथ अच्छा एसएसडी प्रदर्शन रखने के लिए TRIM (और FITRIM) सुविधा का समर्थन करता है (यह त्वरित बाद में लिखने की पहुंच के लिए अप्रयुक्त मेमोरी ब्लॉकों को साफ करता है)। NILFS को विशेष रूप से फ्लैश मेमोरी ड्राइव के लिए डिज़ाइन किया गया है, लेकिन वास्तव में बेंचमार्क पर ext4 से बेहतर प्रदर्शन नहीं करता है । Btrfs अभी भी प्रायोगिक माना जाता है (और वास्तव में बेहतर प्रदर्शन नहीं करता है या तो )।

  • SSD प्रदर्शन और TRIM:

TRIM सुविधा एसएसडी ब्लॉक कि फाइल सिस्टम द्वारा अब और उपयोग नहीं किया जाता साफ करता है। यह लंबे समय तक लिखने के प्रदर्शन को अनुकूलित करेगा और उनके डिजाइन के कारण एसएसडी पर अनुशंसित है। इसका मतलब है कि फाइल सिस्टम को उन ब्लॉकों के बारे में बताने में सक्षम होना चाहिए। Ext4 का discardमाउंट विकल्प इस तरह के TRIM आदेश जारी करेगा जब फाइल सिस्टम ब्लॉक से मुक्त हो जाए। यह ऑनलाइन हार है

हालाँकि, इस व्यवहार का अर्थ है कि ओवरहेड थोड़ा प्रदर्शन। लिनक्स 2.6.37 के बाद से, आप उपयोग करने से बच सकते हैं discardऔर इसके बजाय FITRIM के साथ कभी-कभी बैच त्यागने का विकल्प चुन सकते हैं (उदाहरण के लिए क्रॉस्टब से)। fstrimउपयोगिता करता है यह (ऑनलाइन), साथ ही साथ -E discardकरने का विकल्प fsck.ext4। आपको इन उपकरणों के "हाल के" संस्करण की आवश्यकता होगी।

  • SSD पहनें:

आप अपने ड्राइव पर लिखना सीमित करना चाहते हैं क्योंकि इस संबंध में SSD का जीवनकाल सीमित हो सकता है। हालांकि बहुत चिंता न करें , आज का सबसे खराब 128 जीबी एसएसडी प्रति दिन कम से कम 20 जीबी लिखित डेटा को 5 साल से अधिक (1000 प्रति चक्र लिख सकता है) का समर्थन कर सकता है। बेहतर वाले (और बड़े भी) लंबे समय तक रह सकते हैं: आपने शायद इसे तब तक बदल दिया होगा।

यदि आप SSD पर स्वैप का उपयोग करना चाहते हैं , तो कर्नेल एक गैर-घूर्णी डिस्क को नोटिस करेगा और स्वैप उपयोग (कर्नेल स्तर पहनने लेवलिंग) को यादृच्छिक करेगा : SSस्वैप के सक्षम होने पर आप कर्नेल संदेश में एक (ठोस अवस्था) देखेंगे।

2097148k स्वैप को / dev / sda1 पर जोड़ना। प्राथमिकता: -1 विस्तार: 1 भर में: 2097148k एसएस

  • I / O अनुसूचक:

इसके अलावा, मैं अधिकांश उपनामों के उत्तर से सहमत हूं (भले ही इसमें से अधिकांश -गलित रूप से हो? - इस वेबसाइट से कॉपी किए गए ), लेकिन मुझे अनुसूचक भाग पर आंशिक रूप से असहमत होना चाहिए । डिफ़ॉल्ट रूप से, समय सीमा अनुसूचक को घूर्णी डिस्क के लिए अनुकूलित किया जाता है क्योंकि यह लिफ्ट एल्गोरिथ्म को लागू करता है । तो, आइए इस भाग को स्पष्ट करें।

अनुसूचियों पर लंबा जवाब

कर्नेल 2.6.29 से शुरू, SSD डिस्क स्वचालित रूप से पाई जाती है, और आप इसके साथ सत्यापित कर सकते हैं:

cat /sys/block/sda/queue/rotational

आपको 1हार्ड डिस्क और 0एक एसएसडी के लिए मिलना चाहिए ।

अब, CFQ अनुसूचक इस जानकारी के आधार पर अपने व्यवहार को अनुकूलित कर सकता है। लिनक्स 3.1 के बाद से, कर्नेल डॉक्यूमेंट cfq-iosched.txtफाइल कहती है :

सीएफक्यू में एसएसडी के लिए कुछ अनुकूलन हैं और अगर यह एक गैर-घूर्णी मीडिया का पता लगाता है जो उच्च कतार गहराई (एक समय में उड़ान में कई अनुरोध), [...] का समर्थन कर सकता है।

इसके अलावा, डेडलाइन अनुसूचक सेक्टर संख्या के आधार पर घूर्णी डिस्क पर अनियंत्रित सिर आंदोलनों को सीमित करने की कोशिश करता है। कोटिंग कर्नेल डॉक्टर deadline-iosched.txt, fifo_batch विकल्प विवरण :

अनुरोधों को एक विशेष डेटा दिशा (पढ़ने या लिखने) के `` बैचों '' में वर्गीकृत किया जाता है जो कि बढ़ते हुए क्षेत्रीय क्रम में सेवित होते हैं।

हालांकि, SSD का उपयोग करते समय इस पैरामीटर को 1 से ट्यूनिंग करना दिलचस्प हो सकता है:

यह पैरामीटर प्रति-अनुरोध विलंबता और कुल थ्रूपुट के बीच संतुलन को ट्यून करता है। जब कम विलंबता प्राथमिक चिंता का विषय है, तो छोटा बेहतर होता है (जहां 1 पैदावार का मूल्य पहले आओ-पहले पाओ के व्यवहार में आता है)। विलंबता भिन्नता की कीमत पर, थेनो_बैच बढ़ने से आमतौर पर थ्रूपुट में सुधार होता है।

कुछ बेंचमार्क बताते हैं कि अलग-अलग शेड्यूलर्स के बीच प्रदर्शन में बहुत कम अंतर है। फिर, निष्पक्षता की सिफारिश क्यों नहीं की गई ? जब CFQ बेंच में शायद ही कभी खराब होता है । हालांकि, डेस्कटॉप सेटअप पर, आप आमतौर पर इसकी डिजाइन के कारण डेडलाइन के तहत लोड के तहत बेहतर जवाबदेही का अनुभव करेंगे (शायद कम थ्रूपुट लागत पर हालांकि)।

उस ने कहा, एक बेहतर बेंचमार्क डेडलाइन के साथ प्रयोग करने की कोशिश करेगा fifo_batch=1

डिफ़ॉल्ट रूप से SSDs पर समय सीमा का उपयोग करने के लिए, आप एक फ़ाइल बना सकते हैं, /etc/udev.d/99-ssd.rulesइस प्रकार कहें :

# all non-rotational block devices use 'deadline' scheduler
# mostly useful for SSDs on desktops systems
SUBSYSTEM=="block", ATTR{queue/rotational}=="0", ACTION=="add|change", KERNEL=="sd[a-z]", ATTR{queue/scheduler}="deadline"

क्या मतलब है कि विभाजन के संरेखण से स्वचालित रूप से हाल के वितरण पर ध्यान दिया जाता है? क्या यह तब भी लागू होता है जब आप उदा। स्थापना के दौरान मैनुअल विभाजन का उपयोग करते हैं या जब gparted द्वारा विभाजन करते हैं?
जर्नो

2
सबसे हाल के वितरण (अभी कई वर्षों के लिए) में @jarno, विभाजन संबंधी उपकरण, ग्राफिक चीजों के माध्यम से fdisk से, डिवाइस शुरू होने से 1Mb के गुणकों में विभाजन संरेखण बनाने के लिए ऑटो-डिफ़ॉल्ट हो जाते हैं। यह प्राथमिक रूप से 512byte, 4k, 8k, और आधे bazillion अन्य ब्लॉक / क्लस्टर आकार के साथ संरेखित करता है जो प्रकृति में 2 ^ n हैं। जब तक आप ऐसा करने के लिए महत्वपूर्ण प्रयास नहीं करते हैं, तब तक विभाजन को गलत तरीके से संरेखित करना लगभग असंभव है।
हत्यारे

13

फाइल सिस्टम के सेक्शन च्वाइस में आर्कलिनक्स आर्टिकल सॉलिड स्टेट ड्राइव्स कहते हैं :

फ़ाइल सिस्टम के लिए कई विकल्प मौजूद हैं जिनमें Ext2 / 3/4, Btrfs आदि शामिल हैं।


लिनक्स कर्नेल के मेनलाइन 2.6.29 रिलीज के साथ Btrfs Btrfs समर्थन को शामिल किया गया है। कुछ को लगता है कि यह उत्पादन के उपयोग के लिए पर्याप्त रूप से परिपक्व नहीं है, जबकि इस संभावित उत्तराधिकारी के शुरुआती अपनाने वाले भी ext4 हैं। उपयोगकर्ताओं को अधिक जानकारी के लिए Btrfs लेख पढ़ने के लिए प्रोत्साहित किया जाता है ।

Ext4
Ext4 एक और फाइल सिस्टम है जिसमें SSD के लिए समर्थन है। इसे 2.6.28 के बाद से स्थिर माना जाता है और दैनिक उपयोग के लिए पर्याप्त परिपक्व है। Btrfs के विपरीत, ext4 स्वचालित रूप से डिस्क प्रकृति का पता नहीं लगाता है; उपयोगकर्ताओं को स्पष्ट रूप से fstab में त्याग माउंट विकल्प का उपयोग करके TRIM कमांड समर्थन को सक्षम करना चाहिए (या ट्यून 2 एफए-त्याग / देव / sdaX के साथ)।

SSD के कुशल उपयोग के लिए Btrfs और Ext4 दोनों ही दो प्रमुख आवश्यकताओं को पूरा करते हैं:

  • फाइलसिस्टम को अंतर्निहित SSD को ATA_TRIM कमांड जारी करने में सक्षम होना चाहिए
  • फाइलसिस्टम को डिस्क पर अनावश्यक लिखा नहीं करना चाहिए

प्रदर्शन के लिए, दो अन्य आवश्यकताएं हैं:

  • विभाजन को SSD के ब्लॉक आकार में संरेखित करने की आवश्यकता है
  • TRIM को प्रत्येक Ext4 स्वरूपित विभाजन के लिए स्पष्ट रूप से सक्षम होना चाहिए

पहले वाला आजकल अधिकांश लिनक्स इंस्टॉलर के साथ स्वचालित है। अगर "-cu" झंडे के साथ शुरू किया गया तो fdisk 1024KB सीमा पर विभाजन बनाएगा।

दूसरा Btrfs के लिए स्वचालित है, लेकिन Ext4 के लिए यह मैन्युअल रूप से "/ etc / fstab" फ़ाइल में प्रत्येक Ext4 विभाजन के लिए माउंट विकल्पों की सूची में "त्यागें" जोड़कर किया जाता है। अधिक जानकारी के लिए यह देखने howto

मेरी राय में, Ext4 के लिए fstab के साथ इस छोटे से फ़िडलिंग को इस परिपक्व और उत्कृष्ट फाइल सिस्टम का उपयोग नहीं करने का कोई कारण नहीं है।


-2

BTRFS IMO। Ubuntu 8.04 और बाद में GRUB के संस्करण शामिल किए गए हैं जो GPT से अवगत हैं। GPT और Gdisk के साथ यह आपके लिए आपके विभाजन को संरेखित करेगा। मुझे विश्वास है कि fdisk हालांकि ऐसा करेगा।

वैसे भी, यहाँ एक BTRFS फ़ाइल सिस्टम पर उबंटू इंस्टॉल का लिंक है।

http://www.linuxbsdos.com/2011/05/05/how-to-install-ubuntu-11-04-on-a-btrfs-file-system/

उम्मीद है की वो मदद करदे।

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