Hệ thống tệp ext4 trông như thế nào?
- Khi chạy lệnh
mkfs.ext4 trên một ổ đĩa trống, một hệ thống tệp ext4 sẽ được tạo trên ổ.
- Trong quá trình này, ổ đĩa biến đổi từ trạng thái "không có gì" gồm toàn byte 0x00 thành một mảng byte có cấu trúc, có mục đích của hệ thống tệp ext4.
- Có thể đơn giản hóa việc thử nghiệm bằng cách thêm một ổ phụ nhỏ vào máy ảo hoặc làm việc với một tệp thông thường được cấu hình làm loop device.
Thử nghiệm bằng loop device
- Việc dùng loop device đã được đơn giản hóa, nên có thể mount và unmount chỉ với
mount -o loop <foo_file> <bar_dir> và umount <bar_dir> mà không cần losetup.
- Dùng lệnh
dd để đọc dữ liệu từ /dev/zero và tạo một tệp gồm 8 khối, mỗi khối có kích thước 64x1024 byte.
Những thay đổi sau khi tạo hệ thống tệp ext4
- Sau khi chạy
mkfs.ext4, có thể kiểm tra cấu trúc của tệp khối thông qua đầu ra của lệnh od.
- Từ đầu ra này có thể thấy các đặc điểm cấu trúc của hệ thống tệp ext4.
Hiểu cấu trúc ext4 thông qua trực quan hóa
- Tạo ảnh trực quan trong đó mỗi khối có kích thước 1024x64 pixel, và mỗi pixel đại diện cho một byte.
- Trong ảnh sau khi tạo hệ thống tệp ext4, có thể thấy các cấu trúc và vị trí dữ liệu được
mkfs.ext4 thêm vào.
- Để phân biệt dữ liệu ext4 với dữ liệu "người dùng", sao chép một tệp 1024 byte được tạo từ
/dev/urandom vào loop device, rồi trong mã trực quan hóa phân biệt chúng và biểu diễn bằng mã màu.
Trực quan hóa sau khi thêm dữ liệu người dùng
- Ảnh sau khi dữ liệu người dùng được sao chép vào ổ đĩa cho phép phân biệt dữ liệu ext4 với dữ liệu người dùng.
- Ngoài ra, tệp dữ liệu người dùng còn được sao chép vào ổ đĩa ba lần để tạo ảnh GIF động.
So sánh ext4 và ext2
- Ngoài ảnh động của hệ thống tệp ext4, cũng tạo ảnh động của hệ thống tệp ext2 để so sánh.
Ý kiến của GN⁺
- Bài viết này giúp hiểu trực quan cách hệ thống tệp ext4 thực sự được bố trí trên ổ đĩa.
- Cách trực quan hóa phân biệt dữ liệu người dùng và dữ liệu hệ thống rất hữu ích để học nguyên lý hoạt động của hệ thống tệp.
- So sánh ext4 và ext2 mang lại cơ hội hiểu trực quan sự khác biệt giữa các hệ thống tệp.
1 bình luận
Ý kiến Hacker News
Vài năm trước tại FOSDEM đã có một bản trực quan hóa đồ họa thực thụ của hệ thống tệp ext4. Có một video trong đó phần trực quan hóa bắt đầu từ khoảng phút 20. Máy chiếu không thể hiện đúng màu xanh nhạt được dùng nên có thể gây khó hiểu, nhưng trên blog có video được render đúng.
Mục tiêu của nhiều người muốn đơn giản hóa việc sử dụng máy tính lại tạo ra những thứ có thể mang giá trị giáo dục. Ví dụ, đèn đỏ biểu thị hoạt động ổ cứng có thể khơi gợi sự tò mò và cung cấp thông tin cho người dùng. Ẩn chế độ xem nâng cao nhưng vẫn để nguyên cho những người tò mò có thể là một phương án dung hòa tốt.
Một tiện ích dòng lệnh tên là
pixdcung cấp kiểu trực quan hóa dữ liệu tương tự, nhưng không ấn tượng bằng GIF động cho thấy các thay đổi của hệ thống tệp theo thời gian. Sử dụng đường cong Hilbert để sắp xếp pixel có thể hữu ích hơn so với việc vẽ pixel theo từng dòng.Tôi thấy bản demo nbdkit trực quan hóa IO hệ thống tệp rất thú vị.
Tôi đã tiến hành một thử nghiệm trực quan hóa hệ thống tệp. Kết quả là
a.pngcó thể được chuyển đổi ngược lại để thu được một tệp.ext4hợp lệ.Trực quan hóa dữ liệu có thể giúp hiểu được độ phức tạp của cách định dạng đĩa thực sự bố trí dữ liệu trên đĩa. Ví dụ, có siêu dữ liệu được cấp phát trước ngay cả cho mức sử dụng tối thiểu. Tôi tò mò điều gì sẽ xảy ra khi rơi vào tình trạng thiếu dung lượng, nhưng hoạt ảnh dừng lại trước đó.
Nếu tác giả thấy bình luận này, họ có thể chuyển GIF sang video để tiết kiệm số byte truyền đi và cung cấp cho người dùng các điều khiển video như tạm dừng, tua, chỉnh tốc độ, v.v.
ffmpeg -i ext4.gif -pix_fmt yuv420p -c:v libx264 ext4.mp4Bộ công cụ
innodb_rubyrất hữu ích để trực quan hóa và tìm hiểu cấu trúc InnoDB.Có thể dùng Kaitai IDE để trực quan hóa nhiều định dạng nhị phân khác nhau theo từng byte (hoặc bit). Tôi nhớ là có tệp định nghĩa cho ext4.
Khi nhìn vào sơ đồ này, tôi tự hỏi liệu có hệ thống tệp nào lưu siêu dữ liệu trên một thiết bị riêng không. Ví dụ, dữ liệu nằm trên HDD còn siêu dữ liệu nằm trên ổ SSD liên kết. Có thể vì siêu dữ liệu dễ được cache trong bộ nhớ nên lợi ích không lớn hơn việc tăng thêm độ phức tạp.