ทางเลือกของระบบไฟล์สำหรับ GNU / Linux บนการ์ด SD


31

ฉันมีระบบ ARM ที่ทำงานบนการ์ด SD ในตัว ปัจจุบัน Debian GNU / Linux ใช้ ext3 เป็นระบบแฟ้ม ขณะที่ฉันกำลังจะติดตั้งระบบใหม่ฉันเริ่มสงสัยเกี่ยวกับการเปลี่ยนเป็นระบบไฟล์ที่เป็นมิตรกับแฟลชมากขึ้น ฉันเคยได้ยินเกี่ยวกับ JFFS2, YAFFS2 และ LogFS และพวกเขาทั้งหมดดูเหมือนเหมาะสมกับงาน คุณจะแนะนำแบบไหน นอกจากนี้ฉันได้ยินมาว่ามีการปรับปรุง ext4 จำนวนมากเพื่อให้เหมาะกับดิสก์ SSD ที่ดีขึ้น ฉันต้องตีความว่าการรัน ext4 ควรจะดีไหม? ฉันต้องคิดอะไรเป็นพิเศษในกรณีนี้

ฉันเดาว่าการใช้ระบบเป็นสิ่งสำคัญ แต่เพื่อประโยชน์ทั่วไปลองจินตนาการว่ามันจะทำสิ่งต่าง ๆ บนเดสก์ท็อปมาตรฐาน

ขอบคุณสำหรับการตอบกลับใด ๆ

แก้ไข:วิกิพีเดียบอกฉัน (ใน "อ้างจำเป็น" คำสั่ง) ที่การ์ดหน่วยความจำแฟลชแบบถอดได้และ USB แฟลชไดรฟ์ได้ในตัวควบคุมในการดำเนินการปรับระดับการสึกหรอและการแก้ไขข้อผิดพลาดเพื่อให้การใช้งานที่เฉพาะเจาะจงของระบบไฟล์แฟลชไม่เพิ่มผลประโยชน์ใด ดังนั้นฉันเอนตัวไปติดกับระบบไฟล์ ext

คำตอบ:


18

บทความที่ดีเกี่ยวกับระบบไฟล์แฟลช

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

ระบบไฟล์ทั่วไป (ตัวอย่างเช่น ReiserFS, NTFS, ext3 และอื่น ๆ ) ได้รับการออกแบบมาสำหรับฮาร์ดดิสก์ที่ไม่มีข้อ จำกัด ดังกล่าว

JFFS2

รวมถึงการบีบอัดและการป้องกันระดับการสึกหรอที่หรูหรา

YAFFS2

  • สิ่งเดียวที่สร้างความแตกต่าง: เวลาเมานต์สั้น ๆ หลังจากประสบความสำเร็จในการติดตั้ง
  • ใช้การเขียนครั้งเดียวคุณสมบัติ: เมื่อข้อมูลถูกเขียนลงในบล็อกเดียวไม่จำเป็นต้องเขียนใหม่ นี่เป็นสิ่งสำคัญเนื่องจากช่วยลดการสึกหรอ

LogFS

  • ไม่เป็นผู้ใหญ่มาก แต่รวมอยู่ใน Linux kernel tree แล้ว
  • รองรับระบบไฟล์ขนาดใหญ่กว่า JFFS2 / YAFFS2 โดยไม่มีปัญหา

UBIFS

  • เป็นผู้ใหญ่มากกว่า LogFS
  • สนับสนุนการเขียนแคช
  • บนความยืดหยุ่น: บทความ บนดิสก์ขนาดใหญ่ประสิทธิภาพที่ดีกว่ากับ JFFS2

ext4

หากไม่มีไดรเวอร์หรือการ์ด (ตัวอย่างเช่นไดรฟ์ SSD มีระดับการสึกหรอภายในอย่างน้อยที่สุด) จัดการระดับการสึกหรอจากนั้น ext4 ไม่ใช่ความคิดที่ดีที่สุดเนื่องจากไม่ได้มีไว้สำหรับการใช้แฟลชแบบดิบ

อันไหนดีที่สุด?

แน่นอนมันขึ้นอยู่กับการใช้งานและการสนับสนุน จากสิ่งที่ฉันอ่านบนอินเทอร์เน็ตฉันจะแนะนำ UBIFS การสนับสนุนที่ดีสำหรับระบบไฟล์ขนาดใหญ่ระยะการพัฒนาเต็มที่ประสิทธิภาพที่เพียงพอและไม่มีข้อเสียมาก


6
ขอบคุณนี่เป็นข้อมูลมาก! อย่างไรก็ตาม "โน้ตสีแดงขนาดใหญ่" จากเว็บไซต์ UBIFS กล่าวว่า: "สิ่งหนึ่งที่ผู้คนต้องเข้าใจเมื่อต้องรับมือกับ UBIFS คือ UBIFS นั้นแตกต่างจากระบบไฟล์ทั่วไปมาก - มันไม่ทำงานบนอุปกรณ์บล็อก (เช่นฮาร์ดไดรฟ์ , การ์ด MMC / SD, แฟลชไดรฟ์ USB, SSD ฯลฯ ) UBIFS ได้รับการออกแบบมาเพื่อทำงานบนแฟลชดิบซึ่งไม่มีส่วนเกี่ยวข้องกับอุปกรณ์บล็อคนี่คือเหตุผลที่ UBIFS ไม่ทำงานกับการ์ด MMC และสิ่งที่คล้ายกัน - ดูเหมือนอุปกรณ์บล็อกกับโลกภายนอกเพราะพวกเขาใช้การสนับสนุน FTL (Flash Translation Layer) ในฮาร์ดแวร์ "
gspr

3
คำตอบที่ดีบวกกับ F2FS จาก Samsung ยังมีระบบที่ดีมาก ๆ
lzap

16
@gspr ถูกต้อง: SD มีเลเยอร์การแปลแฟลชและ JFFS2, YAFFS2, LOGFS และ UBIFS ทั้งหมดได้รับการออกแบบมาสำหรับแฟลชที่ไม่มีการจัดการ ตัวเลือกสำหรับ SD เป็นระบบไฟล์ของอุปกรณ์บล็อกแบบดั้งเดิมเช่น ext2 / ext3 / ext4
Robert Calhoun

@Olli NILFS2 เป็นตัวเลือกที่ดีสำหรับไดรฟ์ SSD หรือไม่
SebMa

12

ฉันกำลังเผชิญกับปัญหาเดียวกันและทำการวิจัยบางอย่างเช่นกัน ในที่สุดฉันก็ตัดสินใจที่จะไปกับ ext2

ดูเหมือนว่าการ์ด SDHC บางตัวใช้การปรับระดับการสึกหรอของตนเองที่ชั้นฮาร์ดแวร์ หากคุณสามารถถือ SDHC การ์ดได้ซึ่งมีการปรับระดับการสวมใส่

ระบบไฟล์ที่จัดระดับการสวมสามารถรบกวนการปรับระดับแฟลชได้ดังนั้นจึงเป็นเรื่องที่ไม่ดีสำหรับแฟลชที่จะใช้ (บทความ IBM อ้างถึงข้างต้นพูดถึงวิธีการที่ JFFS ทำดังนั้นจึงชัดเจนว่าจะไม่ทำงาน เมื่อใช้แฟลชระดับ WL) ฉันตัดสินใจว่าฉันไม่ต้องการบันทึกรายวันของ ext3 เนื่องจากฉันไม่ได้เก็บข้อมูลที่สำคัญไว้และฉันก็มักจะสำรองข้อมูลเป็นประจำอยู่ดี (cron)

ฉันยังติดตั้ง / tmp และ / var เป็น tmpfs เพื่อเร่งความเร็วสิ่งต่างๆ หากคุณมี RAM เพียงพอคุณควรทำเช่นนั้น (แต่ต้องแน่ใจว่าได้หมุนเวียนหรือลบบันทึกของคุณเป็นประจำ)

คำแนะนำ: เมานต์การ์ด SD แบบขยายของคุณด้วยตัวเลือก "noatime"


ฉันมีปัญหากับการ์ด SD แบบเก่าและ ext2 (ข้อมูลเสียหาย) ที่หายไปเมื่อเปลี่ยนเป็น XFS แทน
Alexander

1

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

แล้วมี unionfs ตามที่ฉันเข้าใจมันมัน "แตก" ระบบไฟล์ที่แตกต่างกัน (เช่น ro fs ด้านบนของ rw fs) หากมียูเนี่ยนการเข้าถึงการอ่านค้นหาผ่านสแต็ก th จนกว่าจะพบ FS ที่มีไฟล์ที่เราค้นหา เมื่อเขียน unionfs ค้นหา FS ที่เขียนได้ครั้งแรกบนสแต็กและใช้มัน

ฉันยังพบบทความเหล่านี้ที่อาจน่าสนใจ: http://www.linux-mag.com/id/7357/ http://www.linux-mag.com/id/7345/

และสองบทความพร้อมด้วยเคล็ดลับสำหรับการใช้ SSD: http://danweinreb.org/blog/using-solid-state-disks-on-linux http://www.zdnet.com/blog/perlow/geek-sheet-a- tweakers คู่มือการ solid-state-ไดรฟ์ SSDs และลินุกซ์ / 9190


1
โปรดทราบว่าฉันไม่ใช่คนที่ลงคะแนนคำตอบนี้ มันมีข้อมูลที่เป็นประโยชน์โดยทั่วไป แต่ไม่เกี่ยวข้องกับสิ่งที่ฉันต้องการ ขอบคุณครับ :)
gspr

0

การเลือก (และขนาด) ระบบไฟล์ที่ถูกต้องมีความสำคัญมากกว่าสิ่งอื่นไม่เพียง แต่เพื่อความปลอดภัย แต่เพื่อเหตุผลอื่น ๆ ที่ผู้คนมักไม่รู้จัก หากไม่มีระบบไฟล์การประมวลผลทั้งหมดจะเป็นโมฆะ

ตอบสนองได้ดีมากโดย Olli และ OP เก่ามาก แต่ระบบไฟล์เป็นสัตว์เลี้ยงของฉันฉันไม่สามารถอยู่ได้ superuser.com ไม่ใช่สิ่งที่ฉันเคยเยี่ยมชมมาก่อนฉันไม่ใช่ผู้ดูแลระบบ แต่ฉันสมัครแล้วฉันจะไปเยี่ยมชมมากขึ้น

สิ่งต่าง ๆ เปลี่ยนแปลงไปมากตั้งแต่ปี 2011 แต่ถึงอย่างนั้นฉันก็ฟอร์แมตการ์ด USB FAT และใช้ไดรฟ์ USB เพื่อพกพาไฟล์ 4Gb + เหตุผลที่แน่นอนก็คือความเข้ากันได้ไม่ใช่ความปลอดภัย (มากสำหรับ S ใน SD แต่ฉันใช้รหัสผ่านใน 7z ของฉัน) และฉันไม่เคยพกอะไรที่ใหญ่กว่า CD ISO จริงๆพวกเขาส่วนใหญ่ใช้สคริปต์ SQL และความแตกต่างรายชั่วโมงทุกวัน สแนปชอตฐานข้อมูลที่เข้ารหัสถูกบีบให้ใกล้ถึงขั้นต้องตายด้วย 7-Zip

วันนี้ฉันสวม SD ออกเร็วกว่าใคร ๆ ที่ฉันรู้จัก ฉันมีอุปกรณ์ USB ติดไว้ในเครื่องจักรบางเครื่องที่นายจ้างของฉันสำหรับการสำรองข้อมูลอัตโนมัติทุกชั่วโมงโดยมีการจัดรูปแบบ FAT ฉันจับตาดูพวกเขาทุกวันและ - คุณเดาเอาเอง - พวกเขานับถือศาสนาด้วยมือ SSD ปรับระดับพื้นที่เล่นบางส่วน แต่ฉันก็ยังไม่ไว้ใจพวกเขามากเท่ากับ HD ทั่วไปและ SD นั้นแย่กว่าออปติคัล พวกเขาไปไม่ดีในทันทีและการสูญเสียทั้งหมด

ระบบไฟล์ใด ๆ ที่เชิญโฮสต์ระบบปฏิบัติการให้เขียนแบบสุ่ม (NTFS, Recycle Bin) เป็นข่าวร้ายสำหรับ SD นอกจากนี้การยกเลิกการต่อเชื่อมจะช่วยได้มากไม่มีระบบปฏิบัติการใดที่จะลองเข้าถึงที่เก็บข้อมูลที่ไม่ได้ต่อเชื่อมดังนั้นระบบไฟล์ใด ๆ ที่จะทำตราบใดที่ SD มีสคริปต์ที่จะเปิดใช้งานตัวเอง (หนึ่งในไฟล์มาตรฐาน

การอ่าน SD ยังช้าในวันนี้ดังนั้นฉันขอแนะนำบางอย่างเช่น disk dump (dd) เพื่อจับภาพทั้งหมดเมื่อทำมิเรอร์แทนที่จะเป็นไฟล์ต่อไฟล์ วันยังแจ้งให้คุณทราบเมื่อมีสิ่งผิดปกติดังนั้นตัวจัดการไฟล์ของคุณจะไม่ไป kaboom

แน่นอนถ้าจุดประสงค์หลักของคุณคือการยืดอายุของหุ้นที่มีเงินคุณกำลังทำธุรกิจของคุณในทางที่ผิด ฉันทำสิ่งที่ฉันไม่ได้ทำเพื่อยืดอายุของ SD แต่เพื่อป้องกันไม่ให้มันแย่เมื่อฉันไม่ได้ดูและมีความแตกต่าง

ฉันหลีกเลี่ยง ext4 หรือ FS ที่บันทึกประจำวันใน SD เพราะฉันไม่สนใจว่าเมื่อใดที่พวกเขาเขียนจดหมายถึงพวกเขาไม่ดี แต่แน่นอนว่ามันเจ็บปวดเมื่อวันหนึ่งหรือหลังจากนั้นฉันไม่สามารถอ่านได้!


2
ขออภัย แต่นี่ไม่ได้ตอบคำถามจริงๆ มันเป็นบทความที่น่าสนใจเกี่ยวกับการใช้สื่อแบบถอดได้ แต่ไม่เกี่ยวกับการเลือกระบบไฟล์
suspectus

ฉันต้องการแสดงความคิดเห็น แต่ไม่สามารถทำได้ โพสต์นั้นค่อนข้างละเอียดสิ่งที่ฉันแนะนำคือทั้ง OP พิจารณาด้วยฉันแนะนำ FAT แทน ฉันควรจะมีสมาธิและความชัดเจนมากขึ้นอย่างแน่นอน
arch-abit

เป็นเพราะเหตุใดAny file system which invites the host OS to write randomly to it (NTFS, Recycle Bin) is bad news for an SD.? มันไม่ได้ประกอบด้วยดิสก์หมุนวนดังนั้นทุกที่ที่คุณอ่าน / เขียนไม่ควรสำคัญผมคิดว่า และ btw, NTFS เขียนอย่างต่อเนื่อง - ซึ่งนำไปสู่การแยกส่วน «ร้านค้าสุ่มของไฟล์»คือเช่นเกี่ยวกับEXTα
Hi-Angel

0

ตามการตอบสนองต่อคำแนะนำการใช้ไขมัน (32?): ฉันได้ทำการทดสอบประสิทธิภาพแล้วและพบว่า fat32 มีเวลาที่คาดเดาได้มากในการเขียนไฟล์ (2 GB ต้องการสองเท่าของ 1 GB + ออฟเซ็ต 3 GB ต้องการเวลาของต้นไม้ 1GB + ออฟเซ็ต) ประสิทธิภาพของ ext4 นั้นดีกว่า ext3 เล็กน้อย ทั้ง ext3 และ ext4 บางครั้งเร็ว แต่บางครั้งก็ต้องการเวลาเพิ่มเติมในการเขียนไฟล์เจอร์นัลไปยังดิสก์ (ไม่มีพฤติกรรมการเขียนเชิงเส้นเวลา) การทดสอบทั้งหมดทำด้วย fsync () เพื่อให้แน่ใจว่าไฟล์นั้นถูกเขียนลงดิสก์จริงๆ ฉันทำการทดสอบด้วยการซิงค์ () มันส่งผลให้ประสิทธิภาพการเขียนแย่มาก ดังนั้นฉันกลับไปที่ fsync () ฉันตรวจสอบบางอย่างว่า fsync () เพียงพอหรือไม่ ดังนั้นฉันจึงขับเคลื่อนอุปกรณ์โดยไม่ต้องปิดระบบหรือถอดการ์ด SD ออกโดยไม่ต้องถอด ไม่ว่าในกรณีใดไฟล์ที่เขียนหรือโครงสร้างไดเรกทอรีเสียหาย

ขอแสดงความนับถือโทมัส


1
การเปรียบเทียบไม่ยุติธรรม คุณเปรียบเทียบการไม่ทำเจอร์นัล FAT กับการทำเจอร์นัล EXT3 / 4 คุณควรจะเปรียบเทียบ FAT กับ EXT2 และเพียงแค่ FYI ระบบไฟล์ที่ฟอร์แมตโดยผู้ผลิตมักจะมีขนาด / การบล็อกที่เหมาะสมที่สุด คือหลังจากคุณฟอร์แมตระบบไฟล์ใหม่อาจมีความเป็นไปได้ที่ IO อาจใช้เวลานานกว่าระบบเดิม
Hi-Angel

0

หากคุณต้องการสูญเสียการ์ด SD ฟรีฉันแนะนำให้ใช้BTRFSเพราะ:

BTRFS เป็นระบบไฟล์ใหม่เมื่อเปรียบเทียบกับ EXT ซึ่งสร้างโดย Oracle ในปี 2550

มันนำคุณสมบัติใหม่มาสู่ระบบไฟล์แบบดั้งเดิม:

  • โคลน / ภาพรวม
  • ผลต่าง (ส่ง / รับ)
  • Quotat
  • สหภาพ
  • การรักษาตนเอง

สำหรับคำอธิบายเพิ่มเติมและการเปรียบเทียบอ้างอิงไฟล์ PDF นี้

สำหรับการเปรียบเทียบใหม่อ้างถึงเว็บไซต์นี้

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