Bạn đã bao giờ tự hỏi làm thế nào để kiểm tra dung lượng ổ đĩa còn trống trên hệ thống Linux một cách nhanh chóng và chính xác chưa? Đối với bất kỳ ai làm công việc quản trị hệ thống, việc theo dõi không gian lưu trữ là một nhiệm vụ cực kỳ quan trọng. Nếu ổ đĩa bị đầy bất ngờ, các ứng dụng có thể ngừng hoạt động, dữ liệu không thể ghi, và toàn bộ hệ thống có thể gặp sự cố nghiêm trọng. May mắn thay, Linux cung cấp một công cụ dòng lệnh đơn giản nhưng vô cùng mạnh mẽ mang tên df. Lệnh này chính là giải pháp giúp bạn giám sát tài nguyên ổ đĩa một cách hiệu quả. Bài viết này sẽ hướng dẫn bạn từ những khái niệm cơ bản nhất về lệnh df, cách sử dụng, ý nghĩa các thông số đầu ra, cho đến các tùy chọn nâng cao và mẹo thực tế để bạn có thể làm chủ công cụ này.
Tổng quan về lệnh df và chức năng chính
Lệnh df là một trong những công cụ cơ bản và thiết yếu nhất trong kho vũ khí của một quản trị viên hệ thống Linux là gì. Hiểu rõ chức năng và tầm quan trọng của nó sẽ giúp bạn quản lý tài nguyên máy chủ một cách chủ động và hiệu quả hơn.
Lệnh df là gì?
df là viết tắt của “disk filesystem”, một lệnh trong các hệ điều hành Unix và tương tự Unix như Unix là gì và Linux, được sử dụng để hiển thị thông tin về tổng dung lượng, dung lượng đã sử dụng và dung lượng còn trống của các hệ thống tệp (filesystem) trên máy tính. Về cơ bản, khi bạn gõ lệnh df trong terminal, nó sẽ quét tất cả các hệ thống tệp đang được gắn kết (mounted) và báo cáo tình trạng lưu trữ của chúng.
Cách thức hoạt động của df khá đơn giản. Nó không kiểm tra dung lượng của từng tệp tin riêng lẻ. Thay vào đó, nó đọc thông tin từ “superblock” của mỗi filesystem. Superblock là một cấu trúc dữ liệu quan trọng chứa các thông tin siêu dữ liệu (metadata) về filesystem đó, bao gồm tổng số khối (block), số khối đã sử dụng, số khối còn trống. Nhờ vậy, df có thể trả về kết quả gần như ngay lập tức mà không cần phải duyệt qua toàn bộ cây thư mục, giúp tiết kiệm thời gian và tài nguyên hệ thống.

Tại sao nên dùng lệnh df?
Trong môi trường quản trị hệ thống, việc giám sát tài nguyên là yếu-tố-sống-còn. Lệnh df trở nên vô giá vì khả năng cung cấp một cái nhìn tổng quan, nhanh chóng về tình trạng lưu trữ của toàn bộ hệ thống. So với các công cụ khác như du (disk usage), df vượt trội hơn khi bạn cần câu trả lời cho câu hỏi: “Ổ đĩa của tôi còn bao nhiêu dung lượng?”.
Tầm quan trọng của df thể hiện rõ nhất trong các kịch bản thực tế. Ví dụ, trước khi cài đặt một phần mềm mới, bạn cần biết liệu phân vùng /usr có đủ chỗ trống hay không. Khi một cơ sở dữ liệu đang hoạt động, bạn cần đảm bảo phân vùng chứa dữ liệu không bị đầy. Hay đơn giản là khi bạn muốn dọn dẹp hệ thống, df sẽ chỉ ra những phân vùng nào đang sắp cạn kiệt dung lượng để bạn ưu tiên xử lý. Sử dụng df thường xuyên giúp bạn phát hiện sớm các vấn đề tiềm ẩn, ngăn chặn sự cố trước khi chúng xảy ra và đảm bảo hệ thống luôn hoạt động ổn định.
Cách sử dụng lệnh df để kiểm tra dung lượng ổ đĩa
Việc sử dụng lệnh df rất trực quan và dễ dàng, ngay cả đối với những người mới làm quen với Linux. Bằng cách nắm vững cú pháp cơ bản và hiểu rõ ý nghĩa của các thông tin mà nó cung cấp, bạn có thể nhanh chóng đánh giá được tình trạng sức khỏe của hệ thống lưu trữ.
Cú pháp cơ bản của lệnh df
Cú pháp chung để thực thi lệnh df vô cùng đơn giản. Bạn chỉ cần mở cửa sổ dòng lệnh (terminal) và gõ:
df [tùy chọn] [đường dẫn]
Trong đó:
- [tùy chọn] (options): là các tham số dùng để thay đổi cách lệnh
dfhiển thị thông tin. Chúng ta sẽ tìm hiểu chi tiết hơn ở phần sau. - [đường dẫn] (path): là một tệp hoặc thư mục cụ thể. Nếu bạn cung cấp một đường dẫn,
dfsẽ chỉ hiển thị thông tin về filesystem chứa đường dẫn đó. Nếu bỏ trống, lệnh sẽ liệt kê thông tin của tất cả các filesystem đang được gắn kết.
Để bắt đầu, bạn chỉ cần gõ lệnh df mà không cần thêm bất kỳ tùy chọn nào:
df
Kết quả trả về sẽ là một bảng liệt kê tình trạng dung lượng của các ổ đĩa. Mặc dù hữu ích, nhưng định dạng mặc định có thể hơi khó đọc vì dung lượng được hiển thị theo đơn vị block (thường là 1K).

Ý nghĩa các cột đầu ra của lệnh df
Khi bạn chạy lệnh df, bạn sẽ nhận được một bảng kết quả với các cột thông tin chi tiết. Việc hiểu rõ ý nghĩa của từng cột là chìa khóa để phân tích chính xác tình trạng hệ thống.
Hãy cùng phân tích một ví dụ đầu ra điển hình:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda1 20511356 8533444 10933092 44% /
tmpfs 938208 0 938208 0% /dev/shm
/dev/sdb1 51606140 25803070 23181870 53% /data
Dưới đây là giải thích chi tiết cho từng cột:
- Filesystem: Tên của hệ thống tệp (filesystem). Đây thường là tên của phân vùng ổ đĩa, ví dụ như
/dev/sda1. Đôi khi nó cũng có thể là các hệ thống tệp ảo nhưtmpfs. - 1K-blocks: Tổng dung lượng của filesystem, được tính bằng đơn vị block 1 kilobyte (1K). Đây là dung lượng tổng cộng mà phân vùng có thể chứa.
- Used: Dung lượng đã được sử dụng trong filesystem, cũng được tính bằng block 1K. Đây là phần không gian đã bị chiếm dụng bởi các tệp tin và thư mục.
- Available: Dung lượng còn trống trong filesystem, tính bằng block 1K. Đây là phần không gian bạn có thể sử dụng để lưu trữ dữ liệu mới. Lưu ý rằng con số này có thể không bằng
1K-blockstrừ điUsedvì hệ thống thường dành ra một phần nhỏ dung lượng cho người dùng root để thực hiện các tác vụ quản trị khẩn cấp. - Use%: Tỷ lệ phần trăm dung lượng đã sử dụng. Cột này cho bạn một cái nhìn nhanh về mức độ đầy của ổ đĩa. Đây là chỉ số quan trọng nhất cần theo dõi. Khi
Use%tiến gần đến 100%, bạn cần phải hành động ngay. - Mounted on: Điểm gắn kết (mount point). Đây là thư mục trong cây thư mục của hệ thống mà filesystem được gắn vào. Ví dụ,
/dev/sda1được gắn vào thư mục gốc/, nghĩa là nó chứa toàn bộ hệ điều hành và các tệp hệ thống.

Các tùy chọn phổ biến kèm theo lệnh df để xem dữ liệu chi tiết hơn
Lệnh df cơ bản đã cung cấp những thông tin cần thiết, nhưng sức mạnh thực sự của nó nằm ở các tùy chọn đi kèm. Bằng cách kết hợp các tùy chọn này, bạn có thể tùy biến đầu ra để dễ đọc hơn, chi tiết hơn và phù hợp hơn với nhu-cầu-phân-tích của mình.
Các option thường dùng
Dưới đây là những tùy chọn (options) được sử dụng phổ biến nhất với lệnh df mà bất kỳ quản trị viên hệ thống nào cũng nên biết.
- -h (human-readable): Đây có lẽ là tùy chọn hữu ích nhất. Nó giúp chuyển đổi đơn vị dung lượng từ block sang các định dạng dễ đọc hơn cho con người như Kilobyte (K), Megabyte (M), Gigabyte (G). Thay vì phải vật lộn với những con số lớn, bạn sẽ thấy ngay dung lượng một cách trực quan.
- Ví dụ:
df -h
Filesystem Size Used Avail Use% Mounted on /dev/sda1 20G 8.2G 11G 44% / tmpfs 917M 0 917M 0% /dev/shm /dev/sdb1 49G 25G 23G 53% /data - Ví dụ:
- -T (print-type): Tùy chọn này sẽ thêm một cột mới vào bảng kết quả, hiển thị loại của từng filesystem (ví dụ:
ext4,xfs,nfs,tmpfs). Điều này rất hữu ích khi bạn quản lý một hệ thống phức tạp với nhiều loại phân vùng khác nhau.- Ví dụ:
df -hT
Filesystem Type Size Used Avail Use% Mounted on /dev/sda1 ext4 20G 8.2G 11G 44% / tmpfs tmpfs 917M 0 917M 0% /dev/shm /dev/sdb1 xfs 49G 25G 23G 53% /data - Ví dụ:
- -i (inodes): Thay vì hiển thị dung lượng theo block, tùy chọn
-isẽ hiển thị thông tin về inode. Inode là một cấu trúc dữ liệu lưu trữ thông tin về một tệp tin hoặc thư mục (như quyền truy cập, chủ sở hữu, dấu thời gian) nhưng không bao gồm nội dung và tên tệp. Mỗi filesystem có một số lượng inode cố định. Nếu hết inode, bạn sẽ không thể tạo thêm tệp mới ngay cả khi vẫn còn dung lượng trống. Vấn đề này thường xảy ra trên các hệ thống chứa rất nhiều tệp tin nhỏ (như máy chủ mail).- Ví dụ:
df -i
Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda1 1310720 34567 1276153 3% / tmpfs 234552 1 234551 1% /dev/shm - Ví dụ:

Ví dụ thực tế sử dụng lệnh df trong quản trị hệ thống
Trong thực tế, lệnh df thường được kết hợp với các công cụ khác để tự động hóa việc giám sát.
- Kịch bản 1: Kiểm tra dung lượng máy chủ web: Một máy chủ web thường có các thư mục quan trọng như
/var/log(chứa file log) và/var/www/html(chứa mã nguồn website). Các file log có thể tăng lên rất nhanh và làm đầy ổ đĩa. Quản trị viên có thể chạy lệnhdf -h /var/logđể kiểm tra dung lượng của phân vùng chứa thư mục log. Nếu thấyUse%cao, họ cần phải thực hiện các hành động như xoay vòng log (log rotation) hoặc xóa các log cũ. - Kịch bản 2: Lập báo cáo dung lượng định kỳ: Để giám sát chủ động, bạn có thể viết một script đơn giản để chạy lệnh
dfvà gửi kết quả qua email mỗi ngày.#!/bin/bash df -h | mail -s "Báo cáo dung lượng ổ đĩa hàng ngày" admin@example.comBạn có thể đặt lịch cho script này chạy tự động bằng cronjob. Bằng cách này, bạn luôn nắm được tình hình sử dụng dung lượng mà không cần phải đăng nhập vào máy chủ mỗi ngày. Điều này giúp phát hiện sớm các xu hướng sử dụng bất thường và ngăn chặn sự cố trước khi chúng ảnh hưởng đến người dùng.
So sánh lệnh df với các công cụ kiểm tra dung lượng khác như du
Trong hệ sinh thái Linux, df không phải là công cụ duy nhất để kiểm tra dung lượng. Một lệnh khác cũng rất phổ biến là du (disk usage). Mặc dù cả hai đều liên quan đến không gian đĩa, chúng hoạt động theo cách khác nhau và phục vụ các mục đích riêng biệt. Hiểu rõ sự khác biệt này giúp bạn chọn đúng công cụ cho đúng công việc.

Điểm khác biệt chính giữa df và du
Sự khác biệt cốt lõi nằm ở câu hỏi mà chúng trả lời:
df(disk free) trả lời câu hỏi: “Toàn bộ filesystem này còn bao nhiêu dung lượng trống?“. Nó nhìn vào tổng thể của một phân vùng hoặc một ổ đĩa. Dữ liệu màdfcung cấp được lấy từ siêu dữ liệu của filesystem, vì vậy nó chạy rất nhanh. Nó cho bạn biết sức chứa và mức độ sử dụng của cả một “cái thùng chứa” (filesystem).du(disk usage) trả lời câu hỏi: “Thư mục hoặc tệp tin này đang chiếm bao nhiêu dung lượng?“. Nó hoạt động bằng cách đi sâu vào từng thư mục, tính toán kích thước của từng tệp tin và thư mục con bên trong, sau đó cộng dồn lại. Quá trình này có thể mất nhiều thời gian nếu thư mục có chứa nhiều tệp.ducho bạn biết những “món đồ” nào bên trong “cái thùng chứa” đang chiếm nhiều diện tích nhất.
Khi nào nên dùng df, khi nào nên dùng du?
- Sử dụng
dfkhi:- Bạn cần một cái nhìn tổng quan nhanh về tất cả các ổ đĩa.
- Bạn muốn biết dung lượng còn lại trên một phân vùng cụ thể trước khi cài đặt phần mềm.
- Bạn cần giám sát tổng thể tình trạng lưu trữ của máy chủ.
- Sử dụng
dukhi:- Bạn thấy một phân vùng sắp đầy (thông qua
df) và cần tìm ra thư mục nào đang chiếm nhiều dung lượng nhất. - Bạn muốn biết kích thước chính xác của một thư mục dự án.
- Bạn cần dọn dẹp và muốn xác định các tệp tin hoặc thư mục lớn không cần thiết để xóa.
- Bạn thấy một phân vùng sắp đầy (thông qua
Ví dụ: Bạn chạy df -h và thấy phân vùng /home đã sử dụng 95%. Bây giờ, bạn sẽ dùng du -sh /home/* để xem thư mục người dùng nào trong /home đang là “thủ phạm” chính.
Ưu – nhược điểm của từng công cụ
Mỗi công cụ đều có những thế mạnh và hạn chế riêng.
Lệnh df:
- Ưu điểm:
- Nhanh: Trả về kết quả gần như ngay lập tức vì nó chỉ đọc siêu dữ liệu.
- Tổng quan: Cung cấp cái nhìn toàn cảnh về tất cả các filesystem được gắn kết.
- Đơn giản: Cú pháp dễ nhớ và sử dụng.
- Nhược điểm:
- Không chi tiết: Không cho biết tệp tin hay thư mục nào đang chiếm dung lượng.
- Có thể gây hiểu lầm: Kết quả của
dfcó thể không khớp với tổng kết quả từdunếu có các tệp đã bị xóa nhưng vẫn đang được một tiến trình nào đó sử dụng. Hệ thống sẽ không giải phóng không gian cho đến khi tiến trình đó kết thúc.
Lệnh du:
- Ưu điểm:
- Chi tiết: Cung cấp thông tin dung lượng chính xác đến từng tệp tin và thư mục.
- Mục tiêu rõ ràng: Giúp xác định chính xác nguồn gốc của việc sử dụng dung lượng.
- Nhược điểm:
- Chậm: Có thể mất rất nhiều thời gian và tiêu tốn tài nguyên I/O trên các thư mục lớn với hàng triệu tệp tin.
- Phạm vi hẹp: Chỉ cung cấp thông tin cho đường dẫn được chỉ định, không có cái nhìn tổng thể.
Trong quản lý hệ thống, df và du không phải là đối thủ mà là một cặp bài trùng. Bạn sẽ dùng df để phát hiện vấn đề và dùng du để điều tra sâu hơn.

Các vấn đề thường gặp khi sử dụng lệnh df
Mặc dù df là một công cụ đáng tin cậy, đôi khi kết quả nó trả về có thể gây bối rối hoặc có vẻ không chính xác. Hiểu được nguyên nhân của những vấn đề này sẽ giúp bạn diễn giải thông tin một cách đúng đắn và khắc phục sự cố hiệu quả hơn.
Kết quả hiển thị không chính xác do quyền truy cập
Một trong những vấn đề phổ biến là sự khác biệt nhỏ trong kết quả khi chạy df với tư cách người dùng thường so với người dùng root (quản trị viên). Điều này là do các hệ thống tệp Linux (như ext4) thường mặc định dành riêng khoảng 5% tổng dung lượng cho người dùng root.
Mục đích của việc này là để phòng ngừa trường hợp ổ đĩa bị đầy 100%. Khi đó, người dùng thường sẽ không thể ghi thêm bất kỳ dữ liệu nào, nhưng người dùng root vẫn có thể đăng nhập và thực hiện các tác vụ dọn dẹp, sửa chữa hệ thống. Vì vậy, cột Available (dung lượng còn trống) mà người dùng thường thấy sẽ ít hơn so với dung lượng thực tế mà root có thể sử dụng. Đây không phải là lỗi, mà là một tính năng an toàn của hệ thống. Nếu bạn cần biết con số chính xác nhất, hãy chạy lệnh với quyền quản trị, ví dụ: sudo df -h.

Lỗi hiển thị với các filesystem đặc biệt
Lệnh df được thiết kế để hoạt động tốt nhất với các hệ thống tệp trên đĩa cứng cục bộ. Tuy nhiên, khi làm việc với các loại filesystem đặc biệt, kết quả có thể không như mong đợi.
- Hệ thống tệp mạng (Network Filesystems – NFS, Samba): Khi bạn gắn kết một thư mục từ một máy chủ khác qua mạng,
dfsẽ hiển thị dung lượng của phân vùng trên máy chủ từ xa. Tuy nhiên, nếu có sự cố kết nối mạng, lệnhdfcó thể bị “treo” hoặc mất rất nhiều thời gian để phản hồi vì nó đang cố gắng liên lạc với máy chủ mạng mà không được. - Hệ thống tệp ảo (Virtual Filesystems): Linux sử dụng nhiều hệ thống tệp ảo để hiển thị thông tin hệ thống, ví dụ như
/proc,/sys,tmpfs,devtmpfs. Khi chạydf, bạn sẽ thấy các filesystem này được liệt kê với dung lượng bằng 0 hoặc các giá trị lạ. Điều này hoàn toàn bình thường vì chúng không tồn tại trên ổ đĩa vật lý mà nằm trong bộ nhớ RAM. Chúng không tiêu tốn không gian đĩa thực sự và bạn thường có thể bỏ qua chúng khi phân tích dung lượng. - Thiết bị lưu trữ gắn ngoài (NAS, SAN): Đối với các hệ thống lưu trữ phức tạp hơn, cách
dfbáo cáo dung lượng có thể phụ thuộc vào cách chúng được cấu hình và gắn kết. Đôi khi, các tính năng như “thin provisioning” có thể làm cho dung lượng báo cáo bởidfkhác với dung lượng thực tế được cấp phát trên thiết bị lưu trữ.
Các best practices khi sử dụng lệnh df
Để khai thác tối đa sức mạnh của lệnh df và biến nó thành một công cụ giám sát hiệu quả, bạn nên áp dụng một số thói quen và phương pháp tốt nhất. Những mẹo này không chỉ giúp công việc của bạn dễ dàng hơn mà còn nâng cao tính chuyên nghiệp trong quản trị hệ thống.
- Luôn sử dụng
df -hđể tăng tính dễ hiểu: Đây là quy tắc vàng. Việc hiển thị dung lượng dưới dạng GB, MB giúp bạn nắm bắt thông tin nhanh hơn rất nhiều so với các con số block khó hiểu. Hãy biếndf -hthành lệnh mặc định trong đầu bạn mỗi khi cần kiểm tra dung lượng tổng quan. - Kết hợp với các lệnh giám sát khác:
dfchỉ cho bạn một phần của câu chuyện về “sức khỏe” hệ thống. Để có một bức tranh toàn cảnh, hãy kết hợp nó với các lệnh khác.- Sử dụng top hoặc htop để xem tình trạng CPU và RAM.
- Sử dụng iotop để kiểm tra hoạt động đọc/ghi của đĩa (I/O).
- Sử dụng du để điều tra sâu hơn khi
dfbáo cáo một phân vùng sắp đầy.
Một quản trị viên giỏi là người biết cách kết hợp thông tin từ nhiều nguồn để chẩn đoán vấn đề một cách chính xác.

- Không dùng df để đo dung lượng từng file: Hãy nhớ rằng
dfđược thiết kế để xem dung lượng của cả một filesystem, không phải của từng tệp tin hay thư mục riêng lẻ. Nếu bạn muốn biết một tệp cụ thể lớn bao nhiêu, hãy dùng lệnhls -lh [tên tệp]. Nếu muốn biết tổng dung lượng của một thư mục, hãy dùng du -sh [tên thư mục]. Sử dụng sai công cụ sẽ dẫn đến kết quả không chính xác và lãng phí thời gian. - Làm quen lịch trình kiểm tra định kỳ: Đừng đợi đến khi có sự cố mới chạy lệnh
df. Hãy tạo thói quen kiểm tra dung lượng hệ thống định kỳ, ví dụ như mỗi buổi sáng hoặc mỗi đầu tuần. Việc này giúp bạn phát hiện sớm các xu hướng tăng dung lượng bất thường, chẳng hạn như một tệp log đang phình to không kiểm soát hoặc một ứng dụng đang tạo ra quá nhiều tệp tạm. Phát hiện sớm cho phép bạn xử lý vấn đề một cách chủ động trước khi nó ảnh hưởng đến hoạt động của hệ thống. Bạn cũng có thể tự động hóa việc này bằng các script và cronjob để nhận cảnh báo khi dung lượng sử dụng vượt một ngưỡng nhất định (ví dụ 85%).

Kết luận
Qua bài viết này, chúng ta đã cùng nhau khám phá lệnh df – một công cụ tuy nhỏ bé nhưng lại có vai trò cực kỳ quan trọng trong công tác quản trị hệ thống Linux. Từ việc hiểu rõ chức năng cốt lõi, nắm vững cú pháp cơ bản và các tùy chọn hữu ích như -h, -T, -i, cho đến việc phân biệt nó với lệnh du, bạn đã có đủ kiến thức nền tảng để tự tin sử dụng df trong công việc hàng ngày.
Lệnh df không chỉ là một công cụ để xem số liệu; nó là “người lính gác” thầm lặng giúp bạn giám sát tài nguyên lưu trữ, một trong những tài nguyên quý giá nhất của hệ thống. Bằng cách áp dụng các phương pháp tốt nhất như kiểm tra định kỳ và kết hợp với các công cụ giám sát khác, bạn có thể chuyển từ thế bị động “chữa cháy” sang chủ động “phòng cháy”, đảm bảo hệ thống luôn hoạt động ổn định và hiệu quả.
Chúng tôi khuyến khích bạn hãy bắt đầu áp dụng lệnh df ngay hôm nay. Hãy mở terminal và thực hành các ví dụ đã học. Việc sử dụng thành thạo công cụ này sẽ giúp bạn trở thành một quản trị viên hệ thống chuyên nghiệp và hiệu quả hơn. Để tiếp tục hành trình khám phá thế giới Linux, bạn có thể tìm hiểu sâu hơn về lệnh du để phân tích chi tiết dung lượng thư mục hoặc khám phá các công cụ giám sát hệ thống nâng cao như Nagios, Zabbix hay Prometheus.