6 คะแนน โดย GN⁺ 2024-01-09 | 1 ความคิดเห็น | แชร์ทาง WhatsApp

ระบบไฟล์ ext4 มีหน้าตาเป็นอย่างไร?

  • เมื่อรันคำสั่ง mkfs.ext4 บนไดรฟ์เปล่า ระบบไฟล์ ext4 จะถูกสร้างขึ้นบนไดรฟ์
  • กระบวนการนี้ทำให้พื้นที่ที่เดิมเป็น "ไม่มีอะไรเลย" ซึ่งประกอบด้วย 0x00 เปลี่ยนเป็นการจัดเรียงไบต์อย่างมีความหมายของระบบไฟล์ ext4
  • สามารถทำให้การทดลองง่ายขึ้นได้ด้วยการเพิ่มไดรฟ์เสริมขนาดเล็กให้กับเครื่องเสมือน หรือใช้ไฟล์ธรรมดาที่ตั้งค่าเป็น loop device

ทดลองโดยใช้ loop device

  • การใช้ loop device ง่ายขึ้นมาก โดยไม่ต้องใช้ losetup แค่ mount -o loop <foo_file> <bar_dir> และ umount <bar_dir> ก็เมานต์และยกเลิกเมานต์ได้
  • ใช้คำสั่ง dd เพื่ออ่านข้อมูลจาก /dev/zero และสร้างไฟล์ที่มี 8 บล็อก โดยแต่ละบล็อกมีขนาด 64x1024 ไบต์

การเปลี่ยนแปลงหลังสร้างระบบไฟล์ ext4

  • หลังจากรัน mkfs.ext4 แล้ว สามารถดูโครงสร้างของไฟล์บล็อกได้ผ่านเอาต์พุตของคำสั่ง od
  • จากเอาต์พุตนี้จะมองเห็นลักษณะเชิงโครงสร้างของระบบไฟล์ ext4 ได้

ทำความเข้าใจโครงสร้าง ext4 ผ่านการทำภาพ

  • สร้างภาพแสดงผลโดยให้แต่ละบล็อกมีขนาด 1024x64 พิกเซล และแต่ละพิกเซลแทน 1 ไบต์
  • ในภาพหลังสร้างระบบไฟล์ ext4 จะเห็นโครงสร้างและตำแหน่งข้อมูลที่ถูกเพิ่มโดย mkfs.ext4
  • เพื่อแยกข้อมูล ext4 ออกจากข้อมูลของ "ผู้ใช้" ได้ชัดเจน จึงคัดลอกไฟล์ขนาด 1024 ไบต์ที่สร้างจาก /dev/urandom ลงใน loop device และให้โค้ดสำหรับการทำภาพแยกแสดงด้วยรหัสสี

การทำภาพหลังเพิ่มข้อมูลผู้ใช้

  • ภาพหลังจากคัดลอกข้อมูลผู้ใช้ลงไดรฟ์แล้ว ทำให้แยกความต่างระหว่างข้อมูล ext4 กับข้อมูลผู้ใช้ได้
  • นอกจากนี้ยังคัดลอกไฟล์ข้อมูลผู้ใช้ลงไดรฟ์ 3 ครั้งเพื่อสร้างภาพเคลื่อนไหว GIF

เปรียบเทียบ ext4 กับ ext2

  • นอกจากแอนิเมชันของระบบไฟล์ ext4 แล้ว ยังมีการสร้างแอนิเมชันของระบบไฟล์ ext2 เพื่อเปรียบเทียบด้วย

ความเห็นจาก GN⁺

  • บทความนี้ช่วยให้เข้าใจได้แบบเห็นภาพว่าระบบไฟล์ ext4 ถูกจัดวางอยู่บนไดรฟ์จริงอย่างไร
  • วิธีการทำภาพที่แยกข้อมูลผู้ใช้ออกจากข้อมูลระบบได้อย่างชัดเจน มีประโยชน์มากต่อการเรียนรู้หลักการทำงานของระบบไฟล์
  • การเปรียบเทียบ ext4 กับ ext2 ยังเปิดโอกาสให้เข้าใจความแตกต่างระหว่างระบบไฟล์ต่าง ๆ ได้อย่างเป็นสัญชาตญาณ

1 ความคิดเห็น

 
GN⁺ 2024-01-09
ความคิดเห็นจาก Hacker News
  • เมื่อหลายปีก่อน มีการทำภาพแสดงผลกราฟิกของระบบไฟล์ ext4 แบบแท้จริงที่ FOSDEM โดยมีวิดีโอที่การแสดงผลเริ่มราวนาทีที่ 20 โปรเจ็กเตอร์แสดงสีฟ้าอ่อนที่ใช้ได้ไม่ดีนักจนอาจทำให้งงได้ แต่ในบล็อกมีวิดีโอที่เรนเดอร์สีได้ถูกต้อง

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

  • ยูทิลิตีบรรทัดคำสั่งชื่อ pixd ให้การแสดงข้อมูลลักษณะคล้ายกัน แต่ก็ยังไม่เท่ากับ GIF แบบแอนิเมชันที่แสดงการเปลี่ยนแปลงของระบบไฟล์ตามเวลา การใช้เส้นโค้ง Hilbert เพื่อจัดเรียงพิกเซลอาจช่วยได้มากกว่าการวาดพิกเซลทีละบรรทัด

  • ดูเดโม nbdkit ที่แสดงภาพการทำงาน IO ของระบบไฟล์แล้วรู้สึกน่าสนใจ

  • เคยทำการทดลองเพื่อแสดงภาพระบบไฟล์ โดยผลลัพธ์ a.png สามารถแปลงกลับได้ จึงสามารถได้ไฟล์ .ext4 ที่ถูกต้องกลับมาอีกครั้ง

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

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

    • ตัวอย่างคำสั่ง: ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4
  • ชุดเครื่องมือชื่อ innodb_ruby มีประโยชน์มากสำหรับการแสดงภาพและเรียนรู้โครงสร้าง InnoDB

  • สามารถใช้ Kaitai IDE เพื่อแสดงภาพฟอร์แมตไบนารีหลากหลายแบบในระดับแต่ละไบต์ (หรือบิต) ได้ และจำได้ว่ามีไฟล์นิยามสำหรับ ext4 อยู่ด้วย

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