ระบบไฟล์ linux ตัวใดทำงานได้ดีที่สุดกับ SSD


119

จากวิกิ:

ฟังก์ชั่น TRIM ที่สำคัญได้รับการสนับสนุนโดย Linux OS ที่เริ่มต้นด้วยเคอร์เนล 2.6.33 (เปิดให้บริการต้นปี 2010) อย่างไรก็ตามการสนับสนุนระหว่างระบบไฟล์ต่างๆยังคงไม่สอดคล้องกันหรือไม่มีอยู่ การจัดตำแหน่งพาร์ติชันที่เหมาะสมนั้นไม่ได้เกิดจากซอฟต์แวร์การติดตั้ง

ดังนั้นระบบไฟล์ใดที่ทำงานได้ดีที่สุดสำหรับ SSD และรองรับการจัดแนวพาร์ติชัน TRIM + ระหว่างการติดตั้งและมีอยู่ใน Ubuntu

คำตอบ:


89

ระบบไฟล์ EXT4 + TRIM:

  • EXT4 พร้อม TRIM ช่วยเพิ่มประสิทธิภาพโดยลดรอบการเขียนที่ไม่จำเป็นลงในไดรฟ์ SSD เนื่องจาก จำกัด รอบการเขียนซ้ำ
  • Ubuntu และ Linux รสชาติอื่น ๆ รองรับ EXT 4 พร้อม TRIM นอกกรอบ

พาร์ทิชัน SWAP:

  • ตรวจสอบให้แน่ใจว่าคุณไม่มีพื้นที่ SWAP บน SSD อีกครั้งเพื่อลดรอบการเขียน
  • หากคุณมีไดรฟ์เชิงกลคุณควรสร้างพื้นที่ SWAP บนไดรฟ์เชิงกลและหลีกเลี่ยงพื้นที่บน SSD

การจัดตำแหน่งพาร์ติชัน:

  • พาร์ติชันควรเริ่มต้นบนขอบเขต 1MB ใหม่ทั้งหมดเพื่อให้ขนาดบล็อกของระบบไฟล์สอดคล้องกับขนาดบล็อกของ SSD

ดังนั้นให้ใช้EXT4 + TRIMพร้อม SWAP ในฮาร์ดไดรฟ์เชิงกลหรือไม่มี SWAP บน SSD

ข้อมูลข้างต้นสามารถนำไปใช้ได้โดยอ้างอิงจากแหล่งที่มา: วิธีเพิ่มประสิทธิภาพ SSD ให้สูงสุด


GPT เป็นวิธีการที่ทันสมัยโดยใช้gdisk& grub 2.0.x, (ฉันเดาว่ามีคนพูดถึงคำตอบด้านล่าง) และ MBR เป็นวิธีดั้งเดิมที่ใช้วิธีเก่าgrub 0.9.7และfdisk.. คุณสามารถหาข้อมูลเพิ่มเติมได้ที่นี่: wiki.archlinux.org/index.php/Solid_State_Drives
aliasgar

7
มันไม่จำเป็นต้องระบุเมื่อคุณระบุnodiratime noatimeเห็นด้วยมันดูเจ๋งและก้าวหน้าไปสำหรับเพื่อน ๆ ผู้สนใจ แต่เนื่องจากnoatimeปิดการใช้งาน atime บน inodes และไดเรกทอรีเป็น inodes เหมือนกันมันก็เหมือนกับการพูดว่า"ล้างมือและล้างนิ้วหัวแม่มือของคุณด้วย" :)
Redsandro

จากประสบการณ์ฉันสามารถพูดได้ว่าไม่มีตัวกำหนดตารางเวลา ("noop") ทำงานได้เร็วกว่ากำหนด
drumfire

5
ไม่ " พาร์ติชันการสลับ Linuxเป็นค่าเริ่มต้นที่ดำเนินการการดำเนินการ TRIM เมื่ออุปกรณ์บล็อกพื้นฐานรองรับ TRIM โดยมีความเป็นไปได้ที่จะปิดหรือเพื่อเลือกระหว่างการดำเนินการ TRIM แบบครั้งเดียวหรือต่อเนื่อง" ดังนั้นควรวางพาร์ทิชัน swap ไว้ใน SSD เพื่อใช้ประโยชน์จากเวลาเข้าถึงที่รวดเร็วซึ่งจะเกิดขึ้นเป็นจำนวนมากในแต่ละครั้งที่มีการสลับหน้า
phuclv

2
@aliasgar F2FS เป็นตัวเลือกที่ดีหรือไม่กับ ext4?
SebMa

67

คำตอบสั้น ๆ

  • เลือกext4และต่อด้วยdiscardตัวเลือกสำหรับการรองรับTRIMหรือใช้ FITRIM (ดูด้านล่าง) ใช้noatimeตัวเลือกหากคุณกลัว "SSD wear"

  • อย่าเปลี่ยน I / O scheduler (CFQ) ที่เป็นค่าเริ่มต้นของคุณบนเซิร์ฟเวอร์ที่มีหลายแอพพลิเคชั่นเนื่องจากให้ความเป็นธรรมระหว่างกระบวนการและมีการสนับสนุน SSD อัตโนมัติ อย่างไรก็ตามใช้กำหนดเวลาบนเดสก์ท็อปเพื่อรับการตอบสนองที่ดีขึ้นภายใต้โหลด

  • เพื่อให้ง่ายต่อการรับประกันการจัดตำแหน่งข้อมูลที่เหมาะสมเซกเตอร์เริ่มต้นของแต่ละพาร์ติชันจะต้องมีค่าเท่ากับ 2048 (= 1 MiB) คุณสามารถใช้fdisk -cu /dev/sdXเพื่อสร้างพวกเขา ในการแจกแจงล่าสุดมันจะดูแลสิ่งนี้ให้คุณโดยอัตโนมัติ

  • คิดสองครั้งก่อนใช้ swap บน SSD มันอาจจะเร็วกว่ามากเมื่อเทียบกับการสลับบน HDD แต่ก็จะใส่ดิสก์ได้เร็วขึ้น (ซึ่งอาจไม่เกี่ยวข้องดูด้านล่าง)

คำตอบที่ยาว

  • ระบบแฟ้ม:

Ext4เป็นระบบไฟล์ Linux ที่พบมากที่สุด ให้ประสิทธิภาพที่ดีกับ SSD และรองรับคุณสมบัติTRIM (และ FITRIM) เพื่อรักษาประสิทธิภาพ SSD ที่ดีตลอดเวลา NILFSถูกออกแบบมาโดยเฉพาะอย่างยิ่งสำหรับไดรฟ์หน่วยความจำแฟลช แต่ไม่ได้ จริงๆทำงานได้ดีกว่าext4เกี่ยวกับการวัด Btrfsนั้นยังถือว่าอยู่ในช่วงทดลอง (และไม่ได้ผลดีกว่ากัน )

  • ประสิทธิภาพของ SSD & TRIM:

TRIMคุณลักษณะล้างบล็อก SSD ที่ไม่ได้ใช้อีกต่อไปโดยระบบแฟ้ม นี่จะเป็นการเพิ่มประสิทธิภาพการเขียนในระยะยาวและแนะนำให้ใช้กับ SSD เนื่องจากการออกแบบ หมายความว่าระบบไฟล์จะต้องสามารถบอกไดรฟ์เกี่ยวกับบล็อกเหล่านั้นได้ discardตัวเลือกภูเขาext4จะออกเช่นTRIMคำสั่งเมื่อบล็อกระบบแฟ้มเป็นอิสระ นี่คือทิ้งออนไลน์

อย่างไรก็ตามพฤติกรรมนี้แสดงถึงค่าใช้จ่ายเล็กน้อย ตั้งแต่ Linux 2.6.37 คุณอาจหลีกเลี่ยงการใช้discardและเลือกที่จะทำแบทช์ทิ้งเป็นครั้งคราวด้วย FITRIM แทน (เช่นจาก crontab) fstrimยูทิลิตี้ไม่นี้ (ออนไลน์) เช่นเดียวกับตัวเลือกของ-E discard fsck.ext4คุณจะต้องใช้เครื่องมือเหล่านี้ "รุ่นล่าสุด"

  • สวม SSD:

คุณอาจต้องการ จำกัด การเขียนบนไดรฟ์ของคุณเนื่องจาก SSD มีอายุการใช้งานที่ จำกัด ในเรื่องนี้ ไม่ต้องกังวลมากเกินไปอย่างไรก็ตาม SSD ขนาด 128 GB ในปัจจุบันสามารถรองรับข้อมูลที่เขียนอย่างน้อย 20 GB ต่อวันเป็นเวลามากกว่า 5 ปี (1,000 รอบการเขียนต่อเซลล์) คนที่ดีกว่า (และคนที่ยิ่งใหญ่กว่า) สามารถอยู่ได้นานกว่า: คุณอาจจะแทนที่มันในตอนนั้น

หากคุณต้องการใช้swapบน SSD เคอร์เนลจะสังเกตเห็นดิสก์ที่ไม่หมุนและจะสุ่มการใช้ swap (ระดับเคอร์เนลระดับการสึกหรอ): คุณจะเห็นSS(Solid State) ในข้อความเคอร์เนลเมื่อเปิดใช้งาน swap:

การเพิ่มการสลับ 2097148k บน / dev / sda1 ลำดับความสำคัญ: -1 ขอบเขต: 1 ข้าม: 2097148k SS

  • I / O Schedulers:

นอกจากนี้ฉันเห็นด้วยกับคำตอบส่วนใหญ่ของaliasgar (แม้ว่าส่วนใหญ่จะเป็นแบบคัดลอกมาจากเว็บไซต์นี้ ) แต่ฉันต้องไม่เห็นด้วยกับส่วนกำหนดการ โดยค่าเริ่มต้นการจัดตารางเวลาที่กำหนดเส้นตายจะถูกปรับให้เหมาะสมกับดิสก์หมุนในขณะที่มันดำเนินการขั้นตอนวิธีการลิฟท์ ดังนั้นขออธิบายส่วนนี้

คำตอบยาวเกี่ยวกับ schedulers

เริ่มต้นจากเคอร์เนล 2.6.29 ดิสก์ SSD จะตรวจพบโดยอัตโนมัติและคุณอาจตรวจสอบสิ่งนี้ด้วย:

cat /sys/block/sda/queue/rotational

คุณควร1หาฮาร์ดดิสก์และ0SSD

ตอนนี้ CFQ scheduler สามารถปรับพฤติกรรมของมันตามข้อมูลนี้ ตั้งแต่ linux 3.1 cfq-iosched.txtไฟล์เอกสารเคอร์เนลบอกว่า :

CFQ มีการปรับแต่งบางอย่างสำหรับ SSD และหากตรวจพบสื่อที่ไม่หมุนเวียนซึ่งสามารถรองรับความลึกคิวที่สูงขึ้น (คำขอหลายรายการพร้อมกันในเที่ยวบินในเวลาเดียวกัน) [... ]

นอกจากนี้ตัวกำหนดตารางเวลาจะพยายาม จำกัด การเคลื่อนไหวของส่วนหัวที่ไม่เรียงลำดับบนดิสก์ที่หมุนได้ตามหมายเลขเซ็กเตอร์ เธซเธฑ doc เคอร์เนลdeadline-iosched.txt, fifo_batch คำอธิบายตัวเลือก :

คำขอถูกจัดกลุ่มเป็น `` batches '' ของทิศทางข้อมูลเฉพาะ (อ่านหรือเขียน) ซึ่งให้บริการเพื่อเพิ่มเซกเตอร์

อย่างไรก็ตามการปรับพารามิเตอร์นี้เป็น 1 เมื่อใช้ SSD อาจน่าสนใจ:

พารามิเตอร์นี้ปรับแต่งความสมดุลระหว่างเวลาแฝงต่อคำขอและปริมาณงานรวม เมื่อเวลาในการตอบสนองต่ำเป็นความกังวลหลักจะมีขนาดเล็กกว่าดีกว่า (ซึ่งค่า 1 จะให้บริการแก่ผู้ที่มาก่อนได้ก่อน) การเพิ่ม fifo_batch โดยทั่วไปจะช่วยเพิ่มปริมาณงานที่ค่าใช้จ่ายของการเปลี่ยนแปลงความล่าช้า

เกณฑ์มาตรฐาน บางอย่างชี้ให้เห็น ว่าประสิทธิภาพการทำงานระหว่างตัวกำหนดเวลาที่ต่างกันมีความแตกต่างกันเล็กน้อย ถ้าเช่นนั้นทำไมไม่แนะนำความยุติธรรมล่ะ? เมื่อCFQ ไม่ดีน้อยมากในม้านั่ง อย่างไรก็ตามในการตั้งค่าเดสก์ท็อปคุณมักจะได้รับการตอบสนองที่ดีขึ้นโดยใช้กำหนดเวลาที่รอโหลดเนื่องจากการออกแบบ (อาจมีค่าใช้จ่ายในการรับส่งข้อมูลที่ต่ำกว่า)

fifo_batch=1ที่กล่าวว่าเป็นมาตรฐานที่ดีกว่าจะลองใช้กับเส้นตาย

ในการใช้ Deadline บน SSD ตามค่าเริ่มต้นคุณสามารถสร้างไฟล์ได้/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"

คุณหมายถึงอะไรโดยการจัดเรียงพาร์ติชันนั้นจะได้รับการดูแลโดยอัตโนมัติในการแจกแจงล่าสุด มันใช้ยังเมื่อคุณใช้การแบ่งพาร์ติชันด้วยตนเองในระหว่างการติดตั้ง Ubuntu หรือเมื่อทำการแบ่งพาร์ติชันโดย gparted?
jarno

2
@jarno ในการกระจายล่าสุด (เป็นเวลาหลายปีในขณะนี้) เครื่องมือการแบ่งพาร์ติชันจาก fdisk ไปจนถึงสิ่งกราฟิกมีแนวโน้มที่จะเริ่มต้นโดยอัตโนมัติเพื่อสร้างการจัดตำแหน่งพาร์ทิชันที่ทวีคูณ 1Mb จากอุปกรณ์เริ่มต้น สิ่งนี้สอดคล้องกับ 512byte, 4k, 8k, และครึ่งหนึ่งพันล้านบล็อก / คลัสเตอร์อื่น ๆ ที่มีขนาด 2 ^ n ในธรรมชาติ ทำให้แทบเป็นไปไม่ได้ที่จะจัดแนวพาร์ติชันผิดพลาดเว้นแต่คุณจะใช้ความพยายามอย่างมาก
killermist

13

บทความ Archlinux Solid State Drivesกล่าวในส่วนทางเลือกของระบบไฟล์ :

มีตัวเลือกมากมายสำหรับระบบไฟล์รวมถึง Ext2 / 3/4, Btrfs เป็นต้น

Btrfs
สนับสนุน Btrfs ได้รับพร้อมกับฉีด 2.6.29 การเปิดตัวของลินุกซ์ บางคนรู้สึกว่ามันไม่เป็นผู้ใหญ่เพียงพอสำหรับการใช้งานด้านการผลิตในขณะที่ยังมีผู้รับช่วงแรกของตัวตายตัวแทนที่จะเกิดขึ้นกับ ext4 ผู้ใช้ควรอ่าน บทความBtrfsสำหรับข้อมูลเพิ่มเติม

Ext4
Ext4 เป็นระบบไฟล์อื่นที่รองรับ SSD มันถือว่ามีเสถียรภาพตั้งแต่ 2.6.28 และมีความเพียงพอสำหรับการใช้งานทุกวัน ตรงกันข้ามกับ Btrfs, ext4 ไม่ตรวจจับลักษณะของดิสก์โดยอัตโนมัติ ผู้ใช้ต้องเปิดใช้งานการสนับสนุนคำสั่ง TRIM อย่างชัดเจนโดยใช้ตัวเลือกยกเลิกการเมานต์ใน fstab (หรือกับ tune2fs -o ทิ้ง / dev / sdaX)

ทั้ง Btrfs และ Ext4 เป็นไปตามข้อกำหนดหลักสองข้อสำหรับการใช้งาน SSD อย่างมีประสิทธิภาพ:

  • ระบบไฟล์จะต้องสามารถออกคำสั่ง ATA_TRIM ให้กับ SSD พื้นฐานได้
  • ระบบไฟล์ต้องไม่ทำการเขียนที่ไม่จำเป็นไปยังดิสก์

สำหรับประสิทธิภาพมีข้อกำหนดอื่นสองประการ:

  • พาร์ติชั่นจะต้องปรับให้สอดคล้องกับขนาดบล็อกของ SSD
  • TRIM ต้องเปิดใช้งานอย่างชัดเจนสำหรับแต่ละพาร์ติชันที่จัดรูปแบบ Ext4

สิ่งแรกคือปัจจุบันอัตโนมัติกับตัวติดตั้ง Linux ส่วนใหญ่ fdisk จะสร้างพาร์ติชันที่ชายแดน 1024KB หากเริ่มด้วยแฟล็ก "-cu"

ที่สองเป็นแบบอัตโนมัติสำหรับ Btrfs แต่สำหรับ Ext4 ทำได้ด้วยตนเองโดยการเพิ่ม "ทิ้ง" ลงในรายการตัวเลือกการเมานท์สำหรับแต่ละพาร์ติชัน Ext4 ในไฟล์ "/ etc / fstab" สำหรับรายละเอียดเพิ่มเติมเห็นนี้HOWTO

ในความคิดของฉันสิ่งนี้ต้องการเล่นซอกับ fstab สำหรับ Ext4 ก็ไม่มีเหตุผลที่จะไม่ใช้ระบบไฟล์ที่สมบูรณ์และยอดเยี่ยมนี้


-2

BTRFS IMO Ubuntu 8.04 และใหม่กว่าได้รวม GRUB เวอร์ชันที่ทราบ GPT แล้ว ด้วย GPT และ Gdisk มันจะจัดพาร์ติชั่นให้คุณ ฉันเชื่อว่า fdisk จะทำเช่นนั้นเช่นกัน

อย่างไรก็ตามนี่คือลิงค์สำหรับการติดตั้ง Ubuntu บนระบบไฟล์ BTRFS

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

หวังว่าจะช่วย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.