What is Ext4? Ext4 คืออะไร?

posted on 02 May 2009 20:22 by tonhor in Linux

ระบบไฟล์ Ext4 ถูกเพิ่มเข้ามาใน Ubuntu 9.04
บทความนี้จึงขอพูดถึง 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
  
(ภาพจาก kerneltrap.org)

2.7 Compatibility
   ในระบบไฟล์ Ext3 สามารถเปลี่ยนไปเป็น Ext4 ด้วยวิธีง่ายๆเพียงแค่ 2 คำสั่ง
   คือ tune2fs และ fsck (จะกล่าวถึงในหัวข้อที่ 3.2) นั่นก็หมายความว่าเราสามารถเพิ่มประสิทธิภาพ
   เรื่องข้อจำกัดของพื้นที่ในการเก็บข้อมูล และคุณสมบัติที่เพิ่มขึ้นในระบบไฟล์ของเรา
   โดยไม่ต้อง reformatting และ/หรือ reinstalling โปรแกรมและระบบปฏิบัติการ

   และเขายังบอกอีกว่า เราสามารถอัพเกรดระบบไฟล์โดยที่ไม่ต้องเสี่ยงกับข้อมูลที่สูญหาย
   (แต่เขาวงเล็บไว้ว่า "เพื่อความแน่ใจก็ควรจะ backup ข้อมูลสำคัญๆไว้แม้ว่าจะไม่ได้อัพเกรดระบบไฟล์ก็ตาม")

   ตรงนี้สำคัญ : เมื่อเราเปลี่ยนระบบไฟล์จาก Ext3 ไปเป็น Ext4 ด้วยวิธีข้างต้นนี้ ครั้งหนึ่งแล้ว
   เราจะไม่สามารถเปลี่ยนระบบไฟล์กลับไปเป็น Ext3 ได้เนื่องจาก Ext4 มีโครงสร้างของระบบไฟล์แบบใหม่
   ถ้าเราเปลี่ยนกลับไปเป็น Ext3 ระบบจะแจ้งเตือนว่า "wrong fs type"
   (แต่เราสามารถเปลี่ยนระบบไฟล์กลับมาเป็น Ext3 ได้อีกครั้งหนึ่งด้วยวิธี mount จะกล่าวถึงในหัวข้อที่ 3.3)

2.8 Improved timestamps
   แก้ปัญหา Year 2038 problem ด้วยการเพิ่มไปอีก 2 bit ที่ timestamp field
   ทำให้ขยายเวลาไปอีกกว่า 500 ปี

(ภาพแสดงปัญหาปี 2038)

2.9 Persistent preallocation
   คุณสมบัตินี้ผมขออธิบายง่ายๆด้วยการไปเปรียบเทียบกับบน window นะครับ
   ก็คือให้นึกถึงเวลาที่เราโหลดบิต (P2P applications) แม้ว่าเราจะโหลดไฟล์ยังไม่เสร็จก็ตาม
   สมมติว่าโหลดไป 20% แต่การจองพื้นที่สำหรับการเขียนไฟล์ก็จองไป 100%
   ซึ่งตรงนี้เป็นการจองพื้นที่แบบถาวรแม้ว่าเราจะปิดเครื่องไปแล้วมาโหลดต่ออีกวันหนึ่งก็ตาม
   ใน linux ก็เหมือนกันตรงนี้จะมาช่วยลดการกระจายของข้อมูล

2.10 Online defragmentation (คุณสมบัตินี้กำลังอยู่ในช่วงพัฒนาและจะมาเพิ่มในอนาคต)
   ถึงจะมี delayed allocation, extents และ multiblock allocation มาช่วยในการลดกระจายของข้อมูล
   แต่บางทีก็ยังเกิดการกระจายของข้อมูลได้อยู่ ตรงนี้เขาเปรียบเทียบให้ดูว่า
   ถ้าเราเขียนไฟล์ขึ้นมา 3 ไฟล์ลงบนดิสก์ แล้ววันหนึ่งต่อมาเรามาแก้ไขไฟล์ที่อยู่ตรงกลาง
   แต่การแก้ไขนี้มันไปเพิ่มขนาดหรือจำนวนบิต ทำให้พื้นที่ตรงนั้นไม่พอ ไฟล์ที่เราแก้ไขจึงต้องไปอยู่อีกที่หนึ่ง
   ซึ่งไม่อยู่ติดกับที่เหลืออีก 2ไฟล์เดิม

   เพื่อแก้ไขปัญหานี้ใน Ext4 จึงมี e4defrag tool
   ซึ่งสามารถจัดระเบียบของข้อมูลเฉพาะของไฟล์นั้นๆ หรือทั้งระบบก็ได้

2.11 Inode-related features
  • Larger inodes : เพิ่มขนาดของ inode เป็น 256 bytes ( จากของเดิม 128 bytes ใน Ext3 )
    เพื่อรองรับการเก็บ timestamps แบบ Nanoseconds
  • Inode reservation : เพิ่มการจองให้ inode เมื่อมีการสร้าง Directory (คาดว่าจะมีใช้ในอนาคต)
    เมื่อมีการสร้างไฟล์ใหม่ขึ้นมาใน Directory ระบบก็จะสามารถใช้ inode ตรงส่วนที่ถูกจองไว้ได้เลย
  • Nanoseconds timestamps : ที่ inode fields ในส่วนของ modified time จะเก็บ timestamps
    ในหน่วย nanosecond แทนที่หน่วย second ใน Ext3

Inode จะเก็บรายละเอียดต่างๆของไฟล์ เช่น
   • การแสดงสิทธิต่าง ๆ ของไฟล์
   • การบอกถึงชนิดของไฟล์
   • แสดงถึงเจ้าของและกลุ่มเจ้าของไฟล์
   • วันเวลาที่สร้างไฟล์ เปลี่ยนแปลงไฟล์ หรือการเข้าถึงไฟล์ (access file)
   • จำนวนการเชื่อมโยงของไฟล์เชื่อมโยง


3. How to use Ext4

3.1 Creating a new Ext4 filesystem

$ mkfs -t ext4 /dev/filesystem

   Or

$ mkfs.ext4 /dev/filesystem


3.2 Migrate existing Ext3 filesystems to Ext4
   ในการอัพเกรดระบบไฟล์จาก Ext3 ไปเป็น Ext4 เราใช้เพียง 2 คำสั่งคือ tune2fs and fsck
   แล้วก่อนทำอย่าลืม umount filesystem ก่อนนะครับ

tonhor@ubuntu:~# tune2fs -O extents,uninit_bg,dir_index /dev/filesystem

tune2fs 1.41.4 (27-Jan-2009)
Please run e2fsck on the filesystem.


tonhor@ubuntu:~# fsck -pDf /dev/filesystem

fsck 1.41.4 (27-Jan-2009)
/dev/sdb1: Group descriptor 0 checksum is invalid. FIXED.
/dev/sdb1: Group descriptor 1 checksum is invalid. FIXED.
/dev/sdb1: Group descriptor 2 checksum is invalid. FIXED.
/dev/sdb1: Group descriptor 3 checksum is invalid. FIXED.
/dev/sdb1: Group descriptor 4 checksum is invalid. FIXED.
[..]


3.3 Mount an existing Ext3 filesystem with Ext4 without changing the format
   ถ้าเราต้องการให้ระบบไฟล์ของเราเปลี่ยนจาก Ext3 เป็น Ext4 แล้วสามารถเปลี่ยนกลับมาเป็น Ext3 ได้อีก
   เราสามารถใช้การ mount ระบบไฟล์ Ext3 เป็น Ext4 ได้

tonhor@ubuntu:~# mount -t ext4 /dev/filesystem /mnt/ext3


   และเปลี่ยนระบบไฟล์กลับมาเป็น Ext3 อีกครั้งด้วยการ mount

tonhor@ubuntu:~# mount -t ext3 /dev/filesystem /mnt/ext3

   ref :


Comment

Comment:

Tweet

ขอบคุณครับ

confused smile confused smile

#13 By ~ Phoenixus ~ on 2011-10-06 13:05

โอ้โห สุดยอดเลยแฮะ

surprised smile

#12 By iAmSonicE on 2009-05-05 21:40

งงไม่ไหวแล้ว
T^T

ษาจะเรียนคอม แต่ไม่รุ้เรื่อง อ๊ากกก
วาดสาวแว่นแล้ว แต่เอ๋อได้ใจเลย 55

#11 By ★ FANCiiFull ★ on 2009-05-05 16:06

อ่านแล้ว งงมากมาย

ไม่ได้เรียนคอมง่ะ
sad smile

เดี๋ยวไปเรียนคอมดีก่าbig smile

#10 By noojooza on 2009-05-04 20:20

ขยันดี

#9 By X-Pect on 2009-05-04 10:20

#2 By [ HOoliGan ]
ลงทุนเรียนโท ก็เพราะสาเหตุนี้แระ ฮ่าๆ

#6 By กระเจียว โดดเดี่ยว
เรียกผมสะแก่เลย แต่ผมก็คิดอยากจะเป็นเหมือนกันนะครับ big smile

#8 By TonHor on 2009-05-03 17:36

ได้ความรู้เพิ่มมากครับ
ubuntu 9.04 ของผมยังใช้ Ext3 อยู่เลยครับ รอรอบหน้าเดียวค่อยลองดู

#7 By bbx on 2009-05-03 09:25

เอ้อ..อาจารย์ค่ะ..ศิษย์พยาย๊าม พยายามอย่างมากที่จะอ่านและทำความเข้าใจ..แต่มันยากมากอ่ะค่ะ..sad smile

แต่ต้องขอบอกว่า..ลึกล้ำ จริงๆ อิอิ..กระเจียวต้องใส่เสก็ตค่ะ.งถึงจะตามทัน..เอิ๊กๆๆquestion

Hot! Hot!
ไม่ได้เรียนคอม เห้นบทความแล้วมึนเลย ไม่เข้าจายย

คิดถึงจังง พรุ่งนี้เจอกันนะ

#5 By L y w R y on 2009-05-03 00:42

สุดโค่ยยย open-mounthed smile

#4 By inooaii2 on 2009-05-03 00:13

ใช้เวลารวบรวมนานมากbig smile

#3 By Meowzilla Zilla on 2009-05-02 23:47

ไปทำบัตรนิสิตไมอ่ะพี่ฮ้อ

ลงทุนเรียนให้เพื่อจะไปหลีเด็กเหรอ

ฮ่าๆ

#2 By [ HOoliGan ] on 2009-05-02 22:32

บทความนี้
รวบรวมเนื้อหา 2 วันเขียนอีก 3 ชม. sad smile

วันนี้ไปทำบัตรนิสิตใหม่มาครับ
เป็นนิสิตปี 1 big smile

#1 By TonHor on 2009-05-02 20:38