Dự án mới của mình là gamehow.net, mời anh em ghé thăm và góp ý ạ.

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).

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

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.

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.

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.

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.

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.

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.

$ 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.

$ 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.

Cùng chuyên mục:

Cách dùng lệnh Users trong Linux để xem user đang online

Cách dùng lệnh Users trong Linux để xem user đang online

Nếu bạn đang là quản trị viên thì việc quản lý thông tin / xem…

Cách sử dụng lệnh Wall trong Linux

Cách sử dụng lệnh Wall trong Linux

Wall là một công cụ dòng lệnh giúp hiển thị thông báo đến tất cả…

Cách dùng lệnh Whereis trong Linux

Cách dùng lệnh Whereis trong Linux

Whereis là một tiện ích dòng lệnh command line, nó cho phép bạn tìm ..

Cách sử dụng lệnh Which trong Linux

Cách sử dụng lệnh Which trong Linux

Linux dùng lệnh which để xác định vị trí file thực thi của lệnh mà…

Cách sử dụng lệnh whoami trong Linux

Cách sử dụng lệnh whoami trong Linux

Giống như tên gọi của nó, lệnh whoami in tên người dùng đang chạy ...

Cách dùng lệnh zcat trong Linux

Cách dùng lệnh zcat trong Linux

Mặc dù tính năng nén file rất hữu ích vì nó giúp ta tiết kiệm…

Hiểu rõ hơn về chmod 777 trong Linux

Hiểu rõ hơn về chmod 777 trong Linux

Bạn đang xây dựng một website và sử dụng tính năng upload ...

Cách sử dụng lệnh tail trong Linux

Cách sử dụng lệnh tail trong Linux

Mặc định thì lệnh tail sẽ hiển thị 10 dòng cuối cùng của file, thông…

Cách sử dụng lệnh Head trong Linux

Cách sử dụng lệnh Head trong Linux

Trong quá trình quản trị dữ liệu trên Linux đôi khi bạn muốn xem nhanh…

Cách sử dụng lệnh Whatis trong Linux

Cách sử dụng lệnh Whatis trong Linux

Trong bài này chúng ta sẽ tìm hiểu lệnh whatis trong ...

Cách sử dụng lệnh kill trong Linux

Cách sử dụng lệnh kill trong Linux

Linux là một hệ điều hành rất nhanh nhưng không phải lúc nào nó không…

Cách dùng lệnh who trong Linux

Cách dùng lệnh who trong Linux

Who là một công cụ dòng lệnh command-line, được ...

Cách dùng lệnh basename trong Linux

Cách dùng lệnh basename trong Linux

basename là một tiện ích dòng lệnh (command line) dùng để lấy ...

Cách sử dụng lệnh gzip trên Linux

Cách sử dụng lệnh gzip trên Linux

Gzip là một trong những thuật toán nén file phổ biến nhất, nó cho phép…

Cách dùng lệnh wait trong Linux

Cách dùng lệnh wait trong Linux

Wait là lệnh dùng để đợi một thời gian cho tới khi công việc nào…

Cách dùng lệnh ping trong Linux

Cách dùng lệnh ping trong Linux

Lệnh ping là một trong những công cụ được sử dụng nhiều nhất để khắc…

Cách dùng lệnh sleep trong Linux

Cách dùng lệnh sleep trong Linux

sleep là một tiện ích command line cho phép lập trình viên ..

Các ví dụ học Bash Script trong Linux cơ bản nhất

Các ví dụ học Bash Script trong Linux cơ bản nhất

Bash Script đuọc xem là mã code lập trình trên Linux ...

Vòng lặp until trong Shell Script

Vòng lặp until trong Shell Script

Vòng lặp while trong Shell Script

Vòng lặp while trong Shell Script

Trong Linux script, vòng lặp while được sử dụng trong ...

Top