- vừa được xem lúc

Những điều bạn cần biết về Inode trong File System !!!

0 0 23

Người đăng: Thanh Tùng Vũ

Theo Viblo Asia

Lời đầu

Có lẽ ai trong chúng ta cũng đã quá quen thuộc với khái niệm "File",

Nhưng bạn đã bao giờ tự hỏi, các hệ điều hành UNIX/Linux lưu trữ và quản lý các file trong ổ đĩa kiểu gì? Các "file" có thực chất gắn liền với dữ liệu tương ứng của nó? Và nếu ta xóa một "file", dữ liệu của nó có thực sự mất đi?

Để trả lời cho câu hỏi trên, chúng ta sẽ cần biết đến khái niệm "Inode".

Inode là gì?

Trước tiên, chúng ta cần bàn chút về ổ cứng. Trên hệ điều hành, ổ cứng được coi như một mảng các "logical block" để lưu trữ dữ liệu. Và mỗi một file dữ liệu tương ứng với nhiều logical block phân tán trên khắp các phân vùng của ổ cứng.

Vậy làm cách nào hệ điều hành biết được một file bao gồm các block nào? Hay nói cách khác, làm sao nó lưu trữ và quản lý các block dữ liệu trong hệ thống của mình?

Câu trả lời là: Inode

Inode là một cấu trúc dữ liệu (Data structure) được sử dụng bởi các hệ điều hành UNIX, Linux để lưu trữ các thông tin quan trọng của file trong file system. Các thông tin đó bao gồm: Owner, group, Access permission, Size, Number of block, và quan trọng nhất là pointer to data blocks (con trỏ tới các block dữ liệu của file).

Để xem các thông tin của một file được lưu trữ bởi inode, ta có thể sử dụng lệnh

$ stat <file location>

Kết quả sẽ hiện thị tương tự như hình:

Số lượng inode có giới hạn?

Mỗi file/folder tương ứng với một inode, vậy số lượng inode có hữu hạn không?

Câu trả lời là có. Khi file system được khởi tạo, một thuật toán sẽ được áp dụng để tính ra số lượng inode dựa trên dung lượng của ổ đĩa tương ứng. Ví dụ, một số hệ thống sử dụng tỉ lệ 1:16 KB, tức là trung bình với mỗi 16KB storage thì sẽ có một inode.

Đây cũng chính là số lượng file/folder tối đa bạn có thể tạo và lưu trữ trên hệ thống file của mình.

Bạn có thể kiểm tra tình trạng sử dụng inode hiện tại của file system với câu lệnh:

$ df -i \<file system mount path>
# ví dụ
$ df -i /

Kết quả hiển thị sẽ bao gồm:

  • Tổng số inode
  • Số inode đã sử dụng, % inode đã sử dụng
  • Số inode chưa sử dụng

Nếu đã sử dụng hết Inode của hệ thống, ngay cả khi dung lượng ổ đĩa vẫn còn, bạn sẽ không thể tạo được file/folder mới và nhận được thông báo "No space left on device".

Trường hợp phổ biến nhất gây nên hiện tượng này là khởi tạo quá nhiều thư mục và file có kích thước nhỏ. Do đó, chúng ta nên giữ số lượng inode ở mức thấp bằng các biện pháp như: xóa bớt files/thư mục ko dùng đến hay xóa cache files, old mail files, ...

Quay lại với câu hỏi ban đầu?

Liệu khi xóa một file thì dữ liệu tương ứng có mất đi?

Khi ta xóa file, thực chất là xóa liên kết từ file đến inode. Một inode có thể được liên kết với nhiều file, liên kết này được gọi là hard link.

Khi có nhu cầu chia sẻ một file dữ liệu cho nhiều người dùng, nhiều dịch vụ, thay vì copy dữ liệu, ta có thể tạo ra các hard link cùng trỏ tới một inode để tiết kiệm dung lượng.

Và dữ liệu cũng như inode tương ứng sẽ chỉ mất đi khi ta xóa tất cả các hard link tới inode, hay xóa tất cả các "hard linked" file.

That's it!!

Kết luận

Trong bài viết lần này mình đã chia sẻ chút hiểu biết của mình về Inode.

Nếu mọi người thấy kiến thức này bổ ích, đừng ngại upvote để tác giả có thêm động lực cho các bài viết tiếp theo nhé 😁😁!

Bình luận

Bài viết tương tự

- vừa được xem lúc

Docker: Chưa biết gì đến biết dùng (Phần 3: Docker-compose)

1. Mở đầu. . .

0 0 121

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 5

Hello 500 ae, sau 4 số trong seri này mình thấy có vẻ ae có hứng thú đọc chủ đề này ghê. Hi vọng những gì mình tìm hiểu được sẽ giúp ích được cho nhiều bạn hơn.

0 0 51

- vừa được xem lúc

Những lệnh command shell linux cơ bản có thể bạn chưa biết - Phần 1

Bài viết này sẽ liệt kê một số command cơ bản thường được dùng trong linux, tiện dụng cho các bạn khi sử dụng linux mà có thể bạn chưa biết. Tôi là ai, câu lệnh này sẽ cho bạn biết bạn đang sử dụng linux bằng tài khoản người dùng nào.

0 0 55

- vừa được xem lúc

Cách sử dụng lệnh SCP để truyền tệp an toàn

SCP (secure copy) là một tiện ích dòng lệnh cho phép bạn sao chép an toàn các tệp và thư mục giữa hai vị trí. . From your local system to a remote system. Between two remote systems from your local system.

0 0 55

- vừa được xem lúc

Người ta làm cách nào để backup thường xuyên thư mục rất lớn?

. Vấn đề về sao lưu thư mục lớn. Mình có lưu "sương sương" 300GB các tệp tin của người dùng upload lên, như hình ảnh hay các tệp đính kèm.

0 0 49

- vừa được xem lúc

Các command trên ubuntu (chiếm 80%) - phần 4

Sau một kì nghỉ tết trong thời buổi đại dịch vừa qua. Không còn những buổi dong chơi đi chúc tết nữa. Ở nhà ra số tiếp theo cho anh em đây. Dưới đây sẽ là 2 command được sử dụng nhiều nhất khi sử dụng file.

0 0 52