Ext4 คืออะไร?
1. Introduction
Ext4 วิวัฒนาการมาจากระบบไฟล์ของลีนุกซ์ที่ได้รับความนิยมมากที่สุดก็คือ Ext3
Ext3 นั้นมีจุดเด่นก็คือระบบไฟล์แบบ Journaling ที่เพิ่มเข้าไปใน Ext2
แต่ Ext4 ได้ปรับปรุงแก้ไขส่วนสำคัญในเรื่องของโครงสร้างของระบบไฟล์ อย่างเช่น
ได้มีการกำหนดพื้นที่ที่เก็บข้อมูลไฟล์ไว้ล่วงหน้า ทำให้ระบบไฟล์มีการจัดสรรพื้นที่เก็บข้อมูลที่ดีขึ้น
ประสิทธิภาพมากขึ้นรวมทั้งความน่าเชื่อถือและคุณสมบัติที่ดีขึ้นอีกด้วย
Note :
1. Ext4 ถูกนำมาใช้ใน kernel 2.6.28
2. Journaling หมายถึง เมื่อข้อมูลในระบบเสียหาย ไม่ต้องมีการใช้คำสั่ง fsck
เพื่อตรวจสอบและซ่อมแซมแฟ้มข้อมูลนั้น เพราะว่าการทำงานของ journaling
นั้นจะมีการกู้แฟ้มข้อมูลที่เสียหายขึ้นมาให้โดยอัติโนมัติ
2. EXT4 features
2.1 Large file system/file sizes
Ext3 รองรับพื้นที่ได้มากสุด 16 TB และขนาดของไฟล์ใหญ่ที่สุด 2 TB
แต่ Ext4 ได้มีการเพิ่ม block address เป็นขนาด 48-bit
ทำให้สามารถรองรับพื้นที่ได้ถึง 1 EB (= 1,048,576 TB)และขนาดของไฟล์ใหญ่ที่สุด 16 TB
1 EB = 1024 PB
1 PB = 1024 TB
1 TB = 1024 GB
แล้วเขายังตั้งคำถามต่ออีกว่า ทำไมไม่เป็น 64bit หละ?
เขาบอกว่ามันมีข้อจำกัดอยู่ซึ่งถ้าเป็นขนาด 64 bit แล้วจะมี address บางส่วนหายไป
ซึ่งลองคำนวณดูว่า Ext4 ขนาด 64bit นี้จะพื้นที่มากถึง 74,000EB เลยที่เดียว
Note : ขนาดของบล็อค(block size) ใน Ext4 เท่ากับ 4KB
2.2 Sub Directory
ใน Ext3 มีไดเรกทอรีย่อย 32,000 ไดเรกทอรีย่อย
แต่ใน Ext4 สามารถมีไดเรกทอรีย่อยได้ถึง 64,000 ไดเรกทอรีย่อย
Note : ตรงนี้บางแหล่งอ้างอิงบอกว่ามีได้ถึง 640,000 หรือบางแหล่งบอกว่ามีได้ไม่จำกัด
2.3 Extents (การเขียนไฟล์แบบใหม่ใน Ext4)
Extents เป็นการเขียนไฟล์แบบใหม่ที่เพิ่มเข้ามาใน Ext4 แทนที่ block mapping ใน Ext3
ซึ่ง Extents จะมีการจองพื้นที่ที่อยู่ติดกัน ก่อนที่จะเขียนไฟล์
ทำให้ไฟล์ที่มีขนาดใหญ่มีประสิทธิภาพมากขึ้นและช่วยลดการกระจายของข้อมูล
2.4 Multiblock allocation
ใน Ext3 เวลาที่มีการเขียนไฟล์ก็จะมีการจัดสรรพื้นที่ทีละบล็อค (only allocates one block)
ในแต่ละครั้งที่เขียนลงไฟล์ ก็คือว่าถ้ามีการเขียนไฟล์ขนาด 100MB
ก็จะมีการจัดสรรบล็อคในการเขียนไฟล์ 25,600 ครั้ง (block size = 4KB)
แต่ใน Ext4 ใช้ "multiblock allocator" (mballoc) ซึ่งจะมีการจัดสรรบล็อกได้ทีละหลายๆบล็อค
ในการเรียกเขียนไฟล์ใน1ครั้ง
2.5 delayed allocation
ในระบบไฟล์แบบเก่าจะมีการการจัดสรรพื้นที่ของบล็อคโดยทันทีเพื่อให้ข้อมูลถูกเขียนลงดิสก์
แต่ในบางครั้งข้อมูลอาจจะถูกเก็บไว้ที่แคลช (cache)
ไม่ได้ถูกเขียนลงดิสก์จริงๆ มันก็จะเสียเวลาไปกับการ จัดสรรพื้นที่ของบล็อคไป
ใน Ext4 ใช้เทคนิคที่เรียกว่า allocate-on-flush หรือที่รู้จักกันในชื่อ delayed allocation
ซึ่งวิธีของ delayed allocation นี้ ถ้าเกิดมีการเขียนไฟล์ขึ้นมามันจะยังไม่จัดสรรพื้นที่ของบล็อคที่จะเขียนโดยทันที จนกว่าข้อมูลนั้นจะถูกเขียนลงดิสก์จริงๆ จึงจะมีการจัดสรรพื้นที่ของบล็อค
2.6 Faster file system checking (Fast fsck)
เพิ่มความเร็วในการตรวจสอบและซ่อมแซมแฟ้มข้อมูลของระบบไฟล์ เหมือนกับ Scandisk บน window
2.7 Compatibility
ในระบบไฟล์ Ext3 สามารถเปลี่ยนไปเป็น Ext4 ด้วยวิธีง่ายๆเพียงแค่ 2 คำสั่ง คือ tune2fs และ fsck นั่นก็หมายความว่าเราสามารถเพิ่มประสิทธิภาพ เรื่องข้อจำกัดของพื้นที่ในการเก็บข้อมูล และคุณสมบัติที่เพิ่มขึ้นในระบบไฟล์ของเรา โดยไม่ต้อง reformatting และ/หรือ reinstalling โปรแกรมและระบบปฏิบัติการ
2.8 Improved timestamps
แก้ปัญหา Year 2038 problem ด้วยการเพิ่มไปอีก 2 bit ที่ timestamp field ทำให้ขยายเวลาไปอีกกว่า 500 ปี
ขอบคุณข้อมูลดีดีจากพี่ฮ้อค่ะ