หลังจากที่ผมได้เริ่มศึกษา Linux สักระยะเวลาหนึ่งก็ได้เกิดความสงสัยที่ว่าทำไมเวลา install ubuntu หรือ linux ตัวอื่นๆ ต้องใช้ file system แบบ Ext2 หรือ Ext3 เอะมันยังไง มันหมายความว่ายังไง แตกต่างกันยังไงวา… ด้วยความสงสัยเลยไปถามจารย์ใหญ่ (Google) และได้ข้อสรุปที่พอจะอธิบาย และเก็บไว้เพื่อตัวเองลืมจะได้กลับมาอ่านใหม่

File Systems

File Systems คือ ระบบไฟล์ในระบบปฏิบัติการลีนุกซ์ จะจัดเก็บข้อมูลหรือสารสนเทศซึ่งอยู่ใน long term state ของระบบ คือ อยู่ในหน่วยความจำสำรองเช่น hard disk ซี่งข้อมูลที่อยู่ใน long term state จะประกอบด้วย operating system kernel , executable files (สำหรับเก็บคำสั่งที่ OS สนับสนุน) , configuration information(ข้อมูลสารสนเทศเกี่ยวกับรายระเอียดต่างๆของระบบ) , temporary workfiles (ไฟล์ใช้งานชั่วคราวซี่งจะถูกลบทิ้งเมื่อระบบมีการรีสตาร์ทเครื่องใหม่) , user data (ข้อมูลของผู้ใช้) , various special files (ใช้ควบคุมการเข้าถึงฮาร์ดแวร์ระบบและฟังก์ชันการทำงานของOS) ซึ่งทั้งหมดนี้จะถูกจัดเก็บ ในระบบไฟล์ของระบบปฏิบัติการลีนุกซ์ และยังเป็นศูนย์กลางของระบบปฏิบัติการสมัยใหม่ และได้คาดหวังไว้ว่า File Systems นี้ทั้งเร็วและมีความน่าเชื่อถือ แต่อย่างไรก็ตาม ปัญหาต่าง ๆ ก็ยังคงเกิดขึ้น และมักจะมีปัญหาจากการปิดเครื่องโดยไม่ได้ shut down จะทำให้เกิดปัญหา เช่น จำไม่ได้ว่า Mount อุปกรณ์ตัวใดไว้บ้าง หรือมีปัญหาความถูกต้องของไฟล์ (File Integrity) เป็นต้น

ดังนั้น จึงมีการพัฒนาระบบไฟล์จาก ext2 เป็น ext3 โดย Linux ext3 เป็นระบบไฟล์ (File System) ตัวใหม่ของ Linux ที่ถูกสร้างขึ้นเพื่อลบจุดด้อยของระบบไฟล์แบบ Ext2 เพื่อแก้ไขปัญหาดังกล่าว และมี 4 เหตุผลหลักที่ได้มีการเปลี่ยนแปลงระบบไฟล์จาก ext2 เป็น ext3 ได้แก่ การใช้งานง่าย, ความถูกต้องและสมบูรณ์ของข้อมูล, ความรวดเร็วโดย ext3 จะใช้การเขียนข้อมูลมากกว่า 1 ที่เพื่อสำรองข้อมูลที่สำคัญ ๆ ไว้ แต่ไม่ได้ทำให้ความเร็วในการอ่านช้าลงแต่อย่างใด และ ง่ายต่อการเปลี่ยนแปลงอีกด้วย นอกจากนี้ยังมีการใช้คำสั่งต่าง ๆ ในการจัดการระบบไฟล์ของ ext2 และ ext3 อย่างเช่น คำสั่งการสร้างระบบไฟล์ ( mke2fs ) คำสั่งที่ใช้ในการแบ่งพาร์ทิชัน ( fdisk ) เป็นต้น ซึ่งในรายละเอียดจะแสดงในส่วนต่อไป

Ext2 (the second extended filesystem)
คือ files system พื้นฐานของ linux ซึ่งสนับสนุนการตั้งชื่อไฟล์ยาว ๆ ได้ถึง 255 ตัวอักษรและขนาดของไฟล์มีขนาดได้ถึง 2 GB และขนาดต่อ 1 พาร์ติชั่นสามารถขยายได้ถึง 4 TB

ระบบไฟล์แบบ ext2 จะมีลักษณะคล้าย ๆ กับระบบไฟล์ที่ใช้ในระบบปฏิบัติการ DOS หรือ Windows จะมีลักษณะพิเศษ คือ สามารถเชื่อมระบบไฟล์แต่ละพาร์ติชั่นให้เป็นระบบไฟล์เดียวกันได้ โครงสร้างของระบบไฟล์ ext2 ภายในฮาร์ดดิสก์จะประกอบด้วยข้อมูลดังนี้

Super Block ประกอบด้วยข้อมูลที่เป็นรายละเอียดของแต่ละพาร์ติชั่น

Group Descriptor ใช้เก็บข้อมูลที่เป็นรายละเอียดของโครงสร้างระบบไฟล์ในพาร์ติชั่นนั้น ๆ ข้อมูลที่เก็บอยู่ใน Group Descriptor จะเก็บไว้ใช้เมื่อข้อมูลเกิดความเสียหาย โดยระบบจะใช้ข้อมูลใน Group Descriptor เพื่อซ่อมแซมระบบไฟล์

Block Bitmap เป็นที่เก็บข้อมูลว่า Block ไดถูกนำไปใช้แล้ว

Inode Bitmap เป็นที่เก็บข้อมูลว่ามี inode ใดที่ถูกนำไปใช้แล้ว

Inode Table เป็นที่เก็บรายละเอียดต่าง ๆ ของไฟล์และไดเรคทอรี โดยใช้ inode ในการเก็บรายละเอียดของข้อมูล

Ext3(the third extended filesystem)
ซึ่ง Ext3 ได้ถูกพัฒนาต่อมาจาก Ext2 โดยการเพิ่ม Journalizing สำหรับลีนุกซ์ ด้วย Ext3 จะรวมกับ code ของ kernel ไปแล้ว ใน kernel 2.4.15 เป็นต้นไป

journaling หมายถึง เมื่อข้อมูลในระบบเสียหาย ไม่ต้องมีการใช้คำสั่ง fsck เพื่อตรวจสอบและซ่อมแซมแฟ้มข้อมูลนั้น เพราะว่าการทำงานของ journaling นั้นจะมีการกู้แฟ้มข้อมูลที่เสียหายขึ้นมาให้โดยอัติโนมัติ รวมทั้งการทำงานของ VFS ด้วย

ปล.ข้อความทั้งหมดนี้ผมได้รวบรวมมาจาก Google ผิดพลาดประการใดขออภัย ณ ที่นี้ด้วย