การใช้ UDF บน USB แฟลชไดรฟ์


75

หลังจากคัดลอกไฟล์ที่ใหญ่กว่า 4G ลงในแฟลชไดรฟ์ USB 8G ของฉันฉันฟอร์แมตเป็น ext3 แม้ว่านี่จะใช้งานได้ดีสำหรับฉัน แต่มันจะทำให้เกิดปัญหาหากฉันต้องการใช้มันเพื่อคัดลอกไฟล์ไปยังบุคคลที่ไม่ได้ใช้ Linux

ผมคิดว่าการจัดรูปแบบเป็นUDFแทนซึ่งผมหวังว่าจะช่วยให้มีการอ่าน (และอาจจะเขียนแม้) ในสามระบบปฏิบัติการที่นิยมมากที่สุด (Windows, MacOS และ Linux) โดยไม่ต้องติดตั้งไดรเวอร์พิเศษใดอย่างไรก็ตามจากสิ่งที่ฉันพบบนเว็บดูเหมือนว่าจะมี gotchas ขนาดเล็กจำนวนมากที่เกี่ยวข้องกับพารามิเตอร์ที่ใช้ในการสร้างระบบไฟล์ซึ่งสามารถลดความสามารถในการทำงานร่วมกันได้ ไดรฟ์)

ผมอยากจะรู้ว่า:

  • ฉันควรใช้ยูทิลิตีใดในการสร้างระบบไฟล์ (จนถึงตอนนี้ฉันได้พบmkudffsและgenisoimageและmkudffsดูเหมือนว่าเป็นตัวเลือกที่ดีที่สุด)
  • ฉันควรใช้พารามิเตอร์ใดกับยูทิลิตี้ที่เลือกเพื่อให้มีความสอดคล้องสูงสุด
  • วิธีที่เข้ากันได้กับ UDF ระบบปฏิบัติการทั้งสามรุ่นทั่วไปนี้จริง ๆ แล้วเป็นอย่างไร
  • การใช้ UDF เป็นความคิดที่ดีที่สุดจริงหรือ มีระบบไฟล์อื่นที่เข้ากันได้ดีกว่าโดยไม่มีข้อ จำกัด ที่เป็นปัญหาเช่นการ จำกัด ขนาดไฟล์ FAT32 4G และไม่ต้องติดตั้งไดรเวอร์พิเศษในคอมพิวเตอร์ทุกเครื่องที่แตะหรือไม่

3
คำถามที่เกี่ยวข้อง: serverfault.com/questions/55089/…
CesarB

คำตอบ:


57

ก่อนอื่นฉันจะสร้างไดรฟ์ให้สมบูรณ์ก่อนที่จะสร้างระบบไฟล์ UDF ด้วย:

dd if=/dev/zero of=/dev/sdx bs=512

นี่คือการหลีกเลี่ยง superblock ที่เหลือหรือเมตาดาต้าอื่น ๆ ที่อาจสร้างความสับสนในการตรวจจับประเภทระบบไฟล์ของระบบปฏิบัติการ (อย่างน้อยก็ต้องมีเซคเตอร์แรกในภาคแรก, เพื่อกำจัดตารางพาร์ติชัน; ตารางพาร์ทิชันอาจทำให้สิ่งต่าง ๆ สับสน) คุณสามารถใช้count=1สวิตช์บนคำสั่ง dd เพื่อให้เร็วขึ้นเป็นศูนย์เพียง 512 ไบต์แรกของไดรฟ์ (โดยที่ MBR มักจะอยู่ภายใน) แม้ว่าจะไม่ได้ทดสอบ

เพื่อสร้างระบบไฟล์คำสั่งที่ฉันใช้คือ:

mkudffs --media-type=hd --blocksize=512 /dev/sdx

mkudffsคำสั่งจะพร้อมใช้งานบน Linux ที่ใช้ Debian (เช่น Ubuntu) หลังจากติดตั้งudftoolsแพคเกจ:

sudo apt-get install udftools

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

ฉันยังใช้ไดรฟ์ทั้งหมดแทนพาร์ติชัน ควรจะเข้ากันได้มากกว่านี้

ผลการทดสอบของฉัน:

  • Linux พร้อมเคอร์เนลล่าสุด (2.6.31 จาก Ubuntu 9.10): ใช้งานได้
  • ลินุกซ์กับเคอร์เนลเก่า: ต้องการbs=512ตัวเลือกที่จะmountเพราะมันไม่ถูกต้องที่ใช้ 2048 แทนเซกเตอร์ขนาดอุปกรณ์ (แก้ไขในกระทำ 1197e4d )
  • Windows Vista: ใช้งานได้
  • Mac ใหม่ล่าสุด: ใช้งานได้
  • Windows XP: สามารถอ่านได้ดี แต่ให้ "ปฏิเสธการเข้าถึง" เมื่อพยายามเขียน ดูเหมือนว่าจะคิดว่าดิสก์เต็ม

ในขณะที่ฉันยังไม่ได้พยายามสร้างไฟล์ที่มีขนาดใหญ่กว่า 4G ในนั้นฉันเห็นเหตุผลว่าทำไมมันไม่ทำงาน

ระบุว่ามันทำงานได้อย่างสมบูรณ์แบบในระบบปฏิบัติการล่าสุดทั้งหมด (ต้องติดตั้งด้วยตนเองบน Linux ซึ่งไม่จำเป็นอีกต่อไปทันทีที่ Ubuntu 9.10 และ Fedora 12 หมด) และทำงานอ่านอย่างเดียวใน Windows XP (ซึ่งแปลกใจ สำหรับฉันฉันคาดหวังว่าจะไม่รู้จักระบบไฟล์เลย) โดยใช้ UDF แทน FAT32 หรือ NTFS ในแฟลชไดรฟ์ USB ขนาดใหญ่ดูเหมือนว่าเป็นความคิดที่ดี


1
คุณฟอร์แมต / พาร์ติชั่นไดรฟ์ได้อย่างไร? ฉันใช้ไดรฟ์ USB 32GB ของฉันเป็นศูนย์โดยdd if=/dev/zero of=/dev/sdb bs=1Mที่ทิ้งไว้โดยไม่มีตารางพาร์ติชันใด ๆ
romeovs

4
@romeovs: ฉันไม่ได้แบ่งพาร์ติชันไดรฟ์ นั่นคือจุดรวมของ zeroing เพื่อลบตารางพาร์ติชันและระบบไฟล์เก่าเหลือและวางระบบไฟล์ UDF ในไดรฟ์ไม่แบ่งพาร์ติชันทั้งหมด การสร้างตารางพาร์ทิชันอาจทำให้เกิดความสับสนได้เท่านั้น
CesarB

3
ใช้งานไม่ได้กับฉันด้วยฮาร์ดไดรฟ์ภายนอก SeaGate FreeAgent Desktop USB 2.0 เดสก์ท็อป USB (ไม่แน่ใจว่าควรทำหรือไม่เนื่องจากหัวข้อนี้เป็นเรื่องเกี่ยวกับแฟลชไดรฟ์) Windows 7 แสดงให้เห็นว่าไดรฟ์นั้นเป็น "ไม่ได้ถูกจัดสรร" ในยูทิลิตี้การจัดการดิสก์ ฉันลองชุดค่าผสมที่แตกต่างกันหลายตัว
Adam Monsen

2
ขอบคุณมากสำหรับการติดตาม มันหายากถ้าไม่ใช่ครั้งแรกที่ฉันเห็นคำถามที่ฉลาดซึ่งได้รับคำตอบอย่างละเอียดจาก OP หลังจากการทดสอบสองสามวัน / สัปดาห์ เยี่ยมมากขอบคุณ!
Luc

1
ดูสคริปต์จาก Pieter Wuilleที่สร้างกระบวนการ UDF โดยอัตโนมัติและสร้างตารางพาร์ติชันเพื่อความเข้ากันได้ที่ดีขึ้น ผมโพสต์ว่ามันเป็นวิธีการแก้ปัญหาอื่น
dolmen

7

CesarB ทำงานได้อย่างยอดเยี่ยมในการแก้ไขปัญหา สิ่งหนึ่งที่ไม่สามารถขีดได้มากพอก็คือความสำคัญในการใช้ขนาดบล็อกที่เหมาะสมเมื่อจัดรูปแบบ UDF

แรงบันดาลใจจากการโพสต์ของ CesarB (และการวิจัย / การทดสอบอื่น ๆ ของฉัน) ฉันเขียนสคริปต์เพื่อทำให้กระบวนการจัดรูปแบบใน UDF เป็นแบบอัตโนมัติโดยใช้ขนาดเซกเตอร์ที่ตรวจพบได้อย่างถูกต้อง ดูรูปแบบ UDF บน GitHub คุณสมบัติที่โดดเด่น:

  • จัดรูปแบบไดรฟ์บล็อก (ฮาร์ดไดรฟ์หรือแฟลชไดรฟ์) ในรูปแบบดิสก์สากล (UDF)
    • UDF revision 2.01 ใช้เพื่อความเข้ากันได้สูงสุด
    • 4096 ภาคแรกจะถูก zeroed out เพื่อลบ MBR ใด ๆ ที่มีอยู่ (จำเป็นสำหรับการตรวจสอบ UDF ที่เหมาะสม)
  • ระบบไฟล์ที่เป็นผลลัพธ์สามารถอ่าน / เขียนข้ามตระกูลของระบบปฏิบัติการหลายระบบ (Windows, OS X และ Linux)
  • ทำงานบนระบบปฏิบัติการใด ๆ ที่มีสภาพแวดล้อม Bash

เนื่องจากจุดสุดท้ายสคริปต์นี้ฉันเขียนไม่สามารถใช้บน Windows อย่างไรก็ตามสคริปต์จะทำงานบน OS X และ Linux หลังจากทำเช่นนั้น Windows จะสามารถตรวจจับไดรฟ์ UDF ที่จัดรูปแบบใหม่ได้อย่างน่าอัศจรรย์

หากต้องการตอบคำถามที่โพสต์โดยตรง format-udf จะ:

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

1
ฉันลองดูที่ยูทิลิตี้ฟอร์แมตรูปแบบ udf ของคุณบน Github และฉันมีคำถามหนึ่งข้อเกี่ยวกับมัน สคริปต์ตรวจพบขนาดฟิสิคัลบล็อกของไดรฟ์ คุณแน่ใจหรือว่าพารามิเตอร์ Linux เรียกว่า "ขนาดเซกเตอร์กายภาพ (บล็อก)" และไม่ใช่ "ขนาดเซกเตอร์ตรรกะ" เป็นขนาดที่ถูกต้องที่จะใช้หรือไม่ ทางกายภาพและตรรกะอาจหมายถึงสิ่งต่าง ๆ มากมาย สิ่งที่hdparmเรียกว่า "ขนาดเซกเตอร์ตรรกะ" คือหน่วยของการกำหนดแอดเดรสที่ใช้โดยโปรโตคอล SATA ในขณะที่ "ขนาดเซกเตอร์กายภาพ" เป็นสิ่งที่อยู่ภายในไดรฟ์ สำหรับฉันมันสมเหตุสมผลกว่าที่ "ฟิสิคัลบล็อก" ในข้อมูลจำเพาะ UDF จริง ๆ แล้วหมายถึง "บล็อกโลจิคัล" ของ Linux
Johan Myréen

คุณเป็นคนที่โดดเด่น @ JohanMyréen ฉันเชิญคุณเข้าร่วมการสนทนาในหัวข้อนี้ใน GitHub github.com/JElchison/format-udf/issues/13 มีการเปลี่ยนแปลงที่ใกล้เคียงกับคำถามของคุณรอการทดสอบเพิ่มเติมใน Windows 7 และ 10
j0nam1el

1
รูปแบบ -udf เป็นสิ่งที่ดีจริงๆ เพิ่งทดสอบบน Linux และสามารถอ่าน / เขียนไดรฟ์ที่จัดรูปแบบแล้วใน OS X และบน Windows 10
mivk

ในขณะที่ความสามารถในการ "ทำงานบนระบบปฏิบัติการใด ๆ ที่มีการทุบตี" มีการอุทธรณ์บางอย่างมันจะดีกว่าที่จะใช้วิธีการเดียวกันmkudffsโดยตรง ผมหมายถึงการเพิ่มใหม่บางตัวเลือกในการ--best-block-size mkudffs
MarcH

3

ฉันดูเหมือนจะจำได้ว่าทำไปแล้วปัญหาที่ฉันพบคือรุ่นลินุกซ์ที่ฉันติดตั้งไว้อ่านอย่างเดียวเนื่องจากไดรเวอร์ไม่ได้ถูกสร้างขึ้นสำหรับ r / w มันใช้งานได้ใน windows และฉันคิดว่า mac

ใช่ทางออกที่ดีหายาก ในขณะที่ฉันมีไดรฟ์ภายนอกที่มีพาร์ติชัน fat32 ที่มีไดรเวอร์สำหรับ win และ mac พาร์ติชัน mac และพาร์ติชัน ext3 ขนาดใหญ่ มันใช้งานได้ แต่มันหมายถึงการติดตั้งไดรเวอร์ เคล็ดลับเรียบร้อยก็คือมันสามารถบูตได้บน mac (fw & usb) คุณต้องออกจากพื้นที่และจดบันทึกบางส่วนจากนั้นคุณสามารถเพิ่มพาร์ติชันผ่านบรรทัดคำสั่งและตารางพาร์ติชัน mac ได้เช่นกัน

โลกต้องการระบบไฟล์ฟรีทุกอย่างสามารถใช้งานได้ ZFS จะเป็นตัวเลือกที่ดี :-)


ZFS นั้นดี แต่มีผู้คนจำนวนมากสับสน นอกจากนี้ยังเป็นเรื่อง overkill สำหรับสื่อภายนอกคุณไม่คิดเหรอ? เหมาะกว่าสำหรับไฟล์เซิร์ฟเวอร์ขนาดใหญ่จากสิ่งที่ฉันสามารถบอกได้
Mike Cooper

2
ดี ZFS ตรวจสอบข้อสรุปและการกู้คืนข้อผิดพลาดซึ่งเหมาะสมสำหรับผู้บริโภคที่ไม่สม่ำเสมอ :-D เราทุกคนเก็บพอวันนี้ที่เน่าบิตจะกินอะไรบางอย่างในที่สุด (ดูการศึกษาอาทิตย์ได้ทำในเรื่องที่นำไปสู่ ​​ZFS นอกจากนี้ยังทราบอัตราข้อผิดพลาดตรวจไม่พบสำหรับการเข้ารหัสบน HD) เราต้องการ fs ที่แท้จริงที่ทุกอย่างสามารถใช้ได้และ fatX ไม่ได้เป็นเช่นนั้น ไม่ได้อยู่ที่นี่จริงๆ
Ronald Pottol

ZFS ไม่ทำงานในลินุกซ์
Ignis

2

Pieter Wuille เขียนเครื่องมือเพื่อแบ่งพาร์ติชันและฟอร์แมตดิสก์เพื่อสร้างโครงร่างUDFที่เข้ากันได้กับทั้ง Windows (> = Vista, อ่านได้เฉพาะ XP), MacOS X 10.5, Linux 2.6.30+:

อีกวิธีหนึ่งคือ:


1

เพื่อให้บรรลุความเข้ากันได้สูงสุดคุณควรใช้ mkudffs จากโครงการudftoolsอย่างน้อยในเวอร์ชัน 2.0 ไม่จำเป็นต้องมีพารามิเตอร์พิเศษทุกอย่างถูกตรวจสอบโดยอัตโนมัติ

มีข้อ จำกัด 3 ประการคือ:

  1. ระบบ Microsoft Windows ไม่รู้จักฮาร์ดดิสก์ที่ไม่สามารถถอดออกได้หากไม่มี MBR หรือตารางพาร์ติชัน GPT

  2. ระบบ Apple Mac OS X ไม่รู้จักระบบไฟล์ UDF บนดิสก์ที่แบ่งพาร์ติชัน

  3. อาจเป็นไปได้ว่าระบบทั้งหมด (ยกเว้นเคอร์เนล Linux ล่าสุด) ไม่รู้จักระบบไฟล์ UDF หากขนาดบล็อก UDF ไม่ตรงกับขนาดเซกเตอร์ของโลจิคัล

เครื่องมือ mkudffs ตั้งแต่เวอร์ชั่น 2.0 รองรับข้อ จำกัด ทั้ง 3 ข้อ เมื่อทำการฟอร์แมตฮาร์ดดิสก์ที่ไม่สามารถถอดออกได้จะสร้างตาราง MBR "ปลอม" ซึ่งเริ่มต้นที่เซกเตอร์ 0 และขยายดิสก์ทั้งหมด ดังนั้นระบบไฟล์ UDF สามารถอ่านได้ทั้งจากพาร์ติชั่นแรก (จำเป็นสำหรับ Microsoft Windows) หรือจากทั้งดิสก์ (จำเป็นสำหรับ Apple Mac OS X) ดูรายละเอียดเพิ่มเติมที่หน้า man mkudffs 2.0


0

NTFS ด้วย NTFS-3G คุณสามารถเขียนโดยใช้ Linux และดูที่http://macntfs-3g.blogspot.com/สำหรับเครื่อง Mac ของคุณ


4
ดูเหมือนว่าจะเกี่ยวข้องกับไดรเวอร์เพิ่มเติมสำหรับ Mac
Mike Cooper

หากเขาไม่ต้องการใช้ FAT เขาติดอยู่และ NTFS-3G ทำงานบน Mac แล้วเขาต้องการสิ่งที่ฉันเชื่อมโยงเพื่อเขียน
user10547

4
ปัญหาเล็กน้อยอย่างหนึ่งก็คือไม่ใช่Mac ของฉัน ฉันไม่ต้องการติดตั้งไดรเวอร์ในคอมพิวเตอร์ของคนอื่น
CesarB

-1

มีไดรเวอร์สำหรับ Windows (และ Mac) ที่สามารถเข้าถึงพาร์ติชัน EXT3 ได้ดังนั้นคุณสามารถฟอร์แมตเป็น EXT3 และใช้ (พร้อมไดรเวอร์) ไปทุกที่ อีกวิธีหนึ่งคือการใช้ Archiever เพื่อจัดเก็บไฟล์ขนาดใหญ่ในสองไฟล์ขึ้นไปสูงสุด 4GB แต่ละไฟล์ วิธีนี้คุณสามารถใช้ระบบไฟล์ FAT32 ซึ่งเป็นสากล บนโฮสต์คอมพิวเตอร์คุณจะต้องแตกไฟล์เก็บถาวรเพื่อที่จะใช้ แต่มันเป็นวิธีที่ทำได้โดยไม่มีไดรเวอร์ ใช้ Archiver ฟอร์แมต RAR เพราะมันใช้งานได้กับ Windows, Linux, Mac แต่ฉันคิดว่ารูปแบบ ZIP สามารถใช้งานได้เช่นกัน แต่ฉันจะไปกับคนขับ เมื่อติดตั้งแล้วคุณสามารถทำอะไรได้โดยไม่มีข้อ จำกัด ในพีซีฉันใช้ Ext2Fsd สำหรับการเข้าถึงเต็มรูปแบบ EXT2, EXT3 และ EXT4 และ Macdrive สำหรับการเข้าถึงรูปแบบ MacOS เต็มรูปแบบ มีเครื่องมือที่คล้ายกันสำหรับ Linux และ MacOS รวมถึงการเข้าถึงพาร์ติชัน NTFS อย่างเต็มที่ หากคุณต้องการเข้าถึงแบบอ่านเท่านั้นคุณไม่จำเป็นต้องใช้ไดรเวอร์ใด ๆ Linux และ MacOS รองรับการอ่านพาร์ติชัน NTFS ดังนั้นฟอร์แมต USB เป็น NTFS! หากคอมพิวเตอร์ทั้งหมดเหล่านี้อยู่ในเครือข่ายเดียวกันสิ่งต่าง ๆ ง่ายขึ้น! ทำให้ USB เป็นรูปแบบและแบ่งปันบนเครือข่าย คอมพิวเตอร์เครื่องอื่นไม่ควรมีปัญหาในการเข้าถึง!


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