ระบบไฟล์ 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 ความคิดเห็น
ความคิดเห็นจาก 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 ที่จับคู่กัน อย่างไรก็ตาม เมตาดาต้าน่าจะถูกแคชไว้ในหน่วยความจำได้ง่ายอยู่แล้ว จึงอาจไม่ได้คุ้มพอที่จะเพิ่มความซับซ้อน