Thứ Bảy, 29 tháng 7, 2023

Disk Inode là gì? Cách xem và sử dụng Inode trên Linux

Trong bài này chúng ta sẽ tìm hiểu về Disk Inode trong Linux, đây là một cấu trúc lưu trữ dữ liệu trên hệ thống Linux và UNIX. Ngoài ra mình cũng chỉ bạn cách sử dụng Inode tối ưu.

Như bạn biết, mọi thứ trong Linux đều được xem là một file để bảo đảm tính nhất quán, nó bao gồm các thiết bị phần cứng, máy in, thư mục và bộ vi xử lý processes. Còn các dữ liệu như file hình ảnh, video, văn bản thì ta gọi là siêu dữ liệu (metadata).

Vậy những điều trên có liên quan gì đến Inode? Inode là cơ sở của cấu trúc hệ thống file, chúng quản lý các siêu dữ liệu metadata và là một phần quan trọng của các hoạt động bên trong Linux.

Mục lục

  • 1. Tìm hiểu cấu trúc hệ thống file của Linux
  • 2. Vậy inode là gì?
  • 3. Inodes hoạt động thế nào?
  • 3. Xem số lượng inode đã dùng
  • 4. Cách tối ưu inodes trên Linux là có thực?

1. Tìm hiểu cấu trúc hệ thống file của Linux

Một hệ thống file trong Linux được chia làm hai phần, đó là phần khối dữ liệu (data block) và phần inode. Phần block thì được cố định và không thể thay đổi, còn phần inode thì bạn có thể thay đổi được.

Bài viết này được đăng tại tranvanbinh.vn

Tên, đường dẫn, vị trí, liên kết và các thuộc tính khác của file không tồn tại trong thư mục. Thư mục chỉ đơn giản là các bảng chứa tên của các file có số inode phù hợp.

Bạn có thể tạo ra nhiều liên kết cứng (hard link) trỏ đến một file trong hệ thống, lúc này Linux cũng tạo một tên mới trong table của inode nhưng không di chuyển file.

Nếu bạn di chuyển một file lớn thì sẽ mất rất nhiều thời gian, nên tốt nhất là bạn tạo một entry mới trong thư mục mới, sau đó xóa entry ở thư mục cũ đi.

Về cấu trúc file, phần trên cùng chính là hệ thống file (file system). Trong file system là các file name, file name liên kết đến các inodes, các inodes liên kết đến dữ liệu vật lý.

file structure JPG

2. Vậy inode là gì?

Trong Linux, inode là cấu truc dữ liệu, nó định nghĩa một file hoặc một folder trong file system và được lưu trữ trong directory entry. Inode sẽ trỏ đến các khối tạo nên một file và chứa tất cả các dữ liệu cần thiết để đọc một file. Mọi thông tin của siêu dữ liệu (metadata) đều được lưu trữ trong inode.

Inodes thường lặp gần vị trí bắt đầu của một phân vùng, nó lưu trữ tất cả thông tin liên quan đến file (ngoại trừ tên file và dữ liệu). Tất cả các file trong Linux đều có tên file và số inodes, và người dùng có thể truy xuất đến các thông tin của metadata thông qua inode.

Mọi inodes trong Linux đều có một identified number duy nhất, nó còn được gọi là số chỉ mục (index number) và có những thuộc tính sau.

  • Kích thước
  • Người tạo
  • Ngày tạo
  • Phân quyền
  • Vị trí file
  • Loại file
  • Số lượng links
  • Thông tin bổ sung về tệp

Để xem danh sách các chỉ số trên của inodes thì bạn chạy lệnh sau.

1
ls -i

Kết quả bên dưới hiển thị số inode ở cột đầu tiên.

inode numbers JPG

3. Inodes hoạt động thế nào?

Khi bạn tạo một file mới thì nó sẽ được gán cho một tên và một inode, cả hai đều được lưu trữ dưới dạng enty trong một thư mục directory.

Bạn chạy lệnh ls -li để hiển thị danh sách các file và số inodes được lưu trữ trong một thư mục.

Sử dụng lệnh df -hi để liệt kê thông tin inode cho từng hệ thống file.

1
df -hi

list inode information JPG

3. Xem số lượng inode đã dùng

Khi bạn sử dụng hết số lượng inodes tối đa thì dù dung lượng ổ cứng disk vẫn còn thì vẫn không thể tạo file mới, đây chính là nguyên nhân dẫn đến một số VPS bị lỗi.

Việc số lượng inodes bị hết khiến các ứng dụng không thể tự động tạo ra các file log cần thiết, điều này có thể dẫn đến vps / server chết đột ngột.

Và để xem danh sách số lượng inodes đã dùng thì ta sử dụng lệnh sau.

1
sudo df -ih

list inodes JPG

4. Cách tối ưu inodes trên Linux là có thực?

Như mình đã nói ở trên, bạn không thể tạo một file khi số inodes đã hết, cho dù là dung lượng ổ cứng vẫn còn.

Khi bạn tạo một file trên Linux thì bạn nên sử dụng tùy chọn -i để thiết lập số byte cho mỗi inode (bytes-per-inode). Tỉ lệ byte trên inode càng lớn thì càng có ít inode được tạo ra.

Ví dụ dưới đây là cách tạo một file system EXT4 với tỷ lệ byte trên mỗi inode nhỏ trên phân vùng 4GB.

1
$ sudo mkfs.ext4 -i 16400 /dev/sdc1

Create EXT4 Filesystem with Smaller Inode Ratio png

Khi file system được tạo ra thì bạn không thể thay đổi số bytes-per-inode, trừ khi bạn format nó. Và việc thay đổi kích thước của file system thì cũng đồng nghĩa với việc đổi số lượng inodes để duy trì tỉ lệ đã thiết lập ở trên.

Ví dụ dưới đây là ta đã tạo với tỉ lệ byte per node lớn hơn.

1
$ sudo mkfs.ext4 -i  196800 /dev/sdc1

Create EXT4 Filesystem with Larger Inode Ratio png

Trên là những thông tin cơ bản về khái niệm inode là gì, cấu trúc và cách thức hoạt động của inodes trên Linux. Chúc bạn thành công.

=============================
* KHOÁ HỌC ORACLE DATABASE A-Z ENTERPRISE trực tiếp từ tôi giúp bạn bước đầu trở thành những chuyên gia DBA, đủ kinh nghiệm đi thi chứng chỉ OA/OCP, đặc biệt là rất nhiều kinh nghiệm, bí kíp thực chiến trên các hệ thống Core tại VN chỉ sau 1 khoá học.
* CÁCH ĐĂNG KÝ: Gõ (.) hoặc để lại số điện thoại hoặc inbox https://m.me/tranvanbinh.vn hoặc Hotline/Zalo 090.29.12.888
* Chi tiết tham khảo:
https://bit.ly/oaz_w
=============================
KẾT NỐI VỚI CHUYÊN GIA TRẦN VĂN BÌNH:
📧 Mail: binhoracle@gmail.com
☎️ Mobile/Zalo: 0902912888
👨 Facebook: https://www.facebook.com/BinhOracleMaster
👨 Inbox Messenger: https://m.me/101036604657441 (profile)
👨 Fanpage: https://www.facebook.com/tranvanbinh.vn
👨 Inbox Fanpage: https://m.me/tranvanbinh.vn
👨👩 Group FB: https://www.facebook.com/groups/DBAVietNam
👨 Website: https://www.tranvanbinh.vn
👨 Blogger: https://tranvanbinhmaster.blogspot.com
🎬 Youtube: https://www.youtube.com/@binhguru
👨 Tiktok: https://www.tiktok.com/@binhguru
👨 Linkin: https://www.linkedin.com/in/binhoracle
👨 Twitter: https://twitter.com/binhguru
👨 Podcast: https://www.podbean.com/pu/pbblog-eskre-5f82d6
👨 Địa chỉ: Tòa nhà Sun Square - 21 Lê Đức Thọ - Phường Mỹ Đình 1 - Quận Nam Từ Liêm - TP.Hà Nội

=============================
oracle tutorial, học oracle database, Tự học Oracle, Tài liệu Oracle 12c tiếng Việt, Hướng dẫn sử dụng Oracle Database, Oracle SQL cơ bản, Oracle SQL là gì, Khóa học Oracle Hà Nội, Học chứng chỉ Oracle ở đầu, Khóa học Oracle online,sql tutorial, khóa học pl/sql tutorial, học dba, học dba ở việt nam, khóa học dba, khóa học dba sql, tài liệu học dba oracle, Khóa học Oracle online, học oracle sql, học oracle ở đâu tphcm, học oracle bắt đầu từ đâu, học oracle ở hà nội, oracle database tutorial, oracle database 12c, oracle database là gì, oracle database 11g, oracle download, oracle database 19c, oracle dba tutorial, oracle tunning, sql tunning , oracle 12c, oracle multitenant, Container Databases (CDB), Pluggable Databases (PDB), oracle cloud, oracle security, oracle fga, audit_trail,oracle RAC, ASM, oracle dataguard, oracle goldengate, mview, oracle exadata, oracle oca, oracle ocp, oracle ocm , oracle weblogic, postgresql tutorial, mysql tutorial, mariadb tutorial, ms sql server tutorial, nosql, mongodb tutorial, oci, cloud, middleware tutorial, hoc solaris tutorial, hoc linux tutorial, hoc aix tutorial, unix tutorial, securecrt, xshell, mobaxterm, putty

ĐỌC NHIỀU

Trần Văn Bình - Oracle Database Master