Lệnh df trong Linux — Kiểm tra dung lượng đĩa

Bạn đã bao giờ rơi vào tình huống dở khóc dở cười khi hệ thống bỗng dưng "đình công" chỉ vì ổ cứng bị đầy đột ngột chưa nhỉ? Với tư cách là một Senior System Admin, mình đã từng phải xử lý những sự cố khẩn cấp trên các VPS chạy production, nơi mà việc kiểm tra dung lượng trống ngay lập tức là yếu tố sống còn để duy trì dịch vụ. Để giải quyết vấn đề này một cách nhanh chóng, chúng ta cần đến một trợ thủ đắc lực. df là một lệnh cực kỳ quan trọng trong thế giới Linux giúp bạn kiểm tra dung lượng lưu trữ của hệ thống một cách trực quan. Vậy df là gì và làm thế nào để làm chủ nó? Trong bài viết này, mình sẽ hướng dẫn bạn chi tiết cách dùng df để quản lý tài nguyên hiệu quả, giúp bạn biết cách kiểm tra dung lượng ổ đĩa trên máy chủ một cách chuyên nghiệp nhất. Cùng bắt đầu khám phá ngay nhé!

Cần chuẩn bị gì trước khi dùng lệnh df?

  • Quyền người dùng: Có thể sử dụng với user thường để xem thông tin các phân vùng được gắn (mount). Quyền root hoặc sudo là cần thiết nếu muốn xem chi tiết thông tin của các file hệ thống bị hạn chế.
  • Hệ điều hành hỗ trợ: Hầu hết các bản phân phối Linux (Ubuntu, Debian, CentOS, RHEL, Fedora...) và các hệ điều hành dựa trên Unix như macOS.
  • Package dependencies: Lệnh df thuộc gói coreutils, thường được cài đặt sẵn mặc định trên mọi hệ thống Linux.

Cú pháp lệnh df là gì?

Lệnh df hỗ trợ nhiều dạng cú pháp khác nhau trên các hệ thống Linux/Unix.

df [OPTIONS] [FILE...]
# Output cho lệnh df ```html

Các tùy chọn của lệnh df là gì?

Lệnh df cung cấp nhiều tùy chọn để điều chỉnh cách hiển thị thông tin dung lượng đĩa, bao gồm các tùy chọn về định dạng đầu ra, đơn vị hiển thị, và bộ lọc hệ thống tệp.

Tùy chọn ngắn Tùy chọn dài Mô tả
-a --all df -a hiển thị tất cả các hệ thống tệp, bao gồm cả những hệ thống có dung lượng 0 byte.
-B --block-size df -B {đơn vị} thiết lập kích thước khối để hiển thị, ví dụ: 1K, 1M, 1G.
-h --human-readable df -h hiển thị dung lượng ở dạng dễ đọc (K, M, G, T).
-H --si df -H hiển thị dung lượng theo hệ SI (1 KB = 1000 byte thay vì 1024 byte).
-i --inodes df -i hiển thị số lượng inode được sử dụng và còn trống thay vì dung lượng khối.
-k df -k hiển thị dung lượng theo đơn vị kilobyte.
-m df -m hiển thị dung lượng theo đơn vị megabyte.
-P --portability df -P đưa ra kết quả theo định dạng POSIX, phù hợp với các hệ thống khác.
-T --print-type df -T hiển thị loại hệ thống tệp (ext4, ntfs, vfat, v.v.) cho mỗi điểm gắn.
-t --type df -t {loại} chỉ hiển thị các hệ thống tệp thuộc loại được chỉ định.
-x --exclude-type df -x {loại} loại trừ các hệ thống tệp thuộc loại được chỉ định khỏi kết quả.
--output df --output={cột1,cột2} chỉ định các cột cần hiển thị, ví dụ: source, target, used, avail.
--sync df --sync đồng bộ hóa hệ thống tệp trước khi lấy thông tin dung lượng.

xem thêm: Basic File and Directory Operations

Lệnh df được sử dụng như thế nào trong thực tế?

Các ví dụ dưới đây mô phỏng các tình huống kiểm tra dung lượng lưu trữ phổ biến mà quản trị viên hệ thống thường gặp.

df là gì? [Hiển thị dung lượng hệ thống file]

df
Filesystem     1K-blocks      Used Available Use% Mounted on
/dev/sda1       51457280  12456784  36420608  25% /
tmpfs            1635428         0   1635428   0 /dev/shm

Lệnh hiển thị danh sách tất cả các phân vùng và hệ thống file đang được mount. Trong thực tế, kết quả này thường hiển thị ở đơn vị block (1K), gây khó khăn khi đọc nhanh các con số lớn.

df -h là gì? [Hiển thị dung lượng dạng dễ đọc]

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   12G   38G  25% /
tmpfs           1.6G     0  1.6G   0% /dev/shm

Tham số -h (human-readable) chuyển đổi các con số sang đơn vị GB, MB để con người dễ quan sát. Đây là cách dùng phổ biến nhất trên môi trường production để kiểm tra nhanh tình trạng ổ đĩa.

df -Th là gì? [Hiển thị loại hệ thống file]

df -Th
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       50G   12G   38G  25% /
tmpfs          tmpfs     1.6G     0  1.6G   0% /dev/shm
devtmpfs       devtmpfs  3.9G     0  3.9G   0% /dev/devtmpfs

Tham số -T cho phép xác định định dạng của hệ thống file như ext4, xfs hoặc tmpfs. Trong thực tế, thông tin này rất quan trọng khi cần kiểm tra tính tương thích của file system trước khi thực hiện các thao tác backup hoặc resize phân vùng.

df -h /dev/sda1 là gì? [Kiểm tra một phân vùng cụ thể]

df -h /dev/sda1
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   12G   38G  25% /

Lệnh chỉ tập trung vào một thiết bị lưu trữ hoặc một điểm mount nhất định. Điều này giúp giảm nhiễu thông tin khi hệ thống có quá nhiều phân vùng ảo hoặc loop device, giúp sysadmin tập trung vào ổ đĩa vật lý cần xử lý.

df -h | grep '^/dev/' là gì? [Lọc các ổ đĩa vật lý]

df -h | grep '^/dev/'
/dev/sda1        50G   12G   38G  25% /
/dev/sdb1       100G   40G   60G  40% /data

Sử dụng pipe kết hợp grep để chỉ lọc ra các dòng bắt đầu bằng /dev/. Trong các script automation hoặc monitor hệ thống, cách làm này giúp loại bỏ các hệ thống file tạm (tmpfs) để chỉ lấy dữ liệu về các ổ đĩa vật lý thực sự.

Lệnh df gặp lỗi hoặc không hiển thị đúng dung lượng ổ đĩa là gì?

Dưới đây là các trường hợp lỗi thực tế thường gặp khi quản trị hệ thống sử dụng lệnh df trong quá trình kiểm tra dung lượng lưu trữ.

Lỗi không hiển thị dung lượng thực tế do thiết bị treo (Stale NFS handle)

df -h
df: error reading '/mnt/nfs_share': Stale file handle

Lệnh df không thể hoàn tất việc quét toàn bộ hệ thống vì gặp phải một mount point NFS đã bị ngắt kết nối không đúng cách, khiến tiến trình bị chặn.

Lỗi không thấy dung lượng đã sử dụng dù ổ đĩa báo đầy

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   30G  40% /

Dung lượng hiển thị qua df không phản ánh đúng thực tế nếu các tệp tin lớn đã bị xóa nhưng vẫn đang bị một tiến trình (process) nắm giữ (open), khiến không gian chưa được giải phóng vào hệ thống tệp.

Lỗi hiển thị sai đơn vị đo lường gây khó khăn khi đọc dữ liệu

df
Filesystem     1K-blocks    Used Available Use% Mounted on
/dev/nvme0n1p2 494382720 123456789 370925931  25% /

Khi thiếu tham số tùy chọn, df mặc định hiển thị đơn vị theo block 1K, gây khó khăn cho việc ước lượng nhanh dung lượng thực tế của các ổ đĩa dung lượng lớn.

Lỗi không hiển thị các loại file system đặc biệt

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        40G   10G   30G  25% /

Trong một số cấu hình, lệnh df mặc định có thể bỏ qua các loại file system ảo như tmpfs hoặc devtmpfs, khiến người quản trị không kiểm soát được dung lượng bộ nhớ tạm.

Quy trình kiểm tra tài nguyên lưu trữ khi quản trị hệ thống Linux?

Trong kịch bản vận hành server, việc kiểm tra dung lượng đĩa cứng thường là bước đệm để xác định nguyên nhân gây đầy bộ nhớ trước khi thực hiện dọn dẹp hoặc mở rộng phân vùng.

Bước 1: Kiểm tra tổng quan dung lượng các phân vùng

df -h

Lệnh cho phép bạn xem danh sách các hệ thống tệp kèm theo dung lượng đã dùng và còn trống dưới định dạng dễ đọc (GB, MB).

Bước 2: Xác định thư mục nào đang chiếm dụng không gian lớn nhất

du -sh /var/log/*

Sau khi xác định được phân vùng đầy bằng df, lệnh này giúp bạn liệt kê kích thước cụ thể của từng thư mục hoặc tệp tin trong đường dẫn mục tiêu.

Bước 3: Tìm kiếm các tệp tin lớn để thực hiện dọn dẹp

find /var/log -type f -size +100M

Trong trường hợp dung lượng đã cạn kiệt, lệnh này cho phép bạn tìm nhanh các tệp tin có kích thước lớn hơn 100MB để ưu tiên xử lý.

Bước 4: Giải phóng không gian lưu trữ

rm -f /var/log/old_logfile.log

Sau khi đã xác định được tệp tin dư thừa, lệnh này thực hiện xóa tệp để khôi phục dung lượng trống cho hệ thống.

Việc sử dụng lệnh df trên môi trường VPS đòi hỏi sự chính xác về đơn vị đo lường để tránh nhầm lẫn trong quá trình quản trị. Khi thực hiện lệnh df -h, hệ thống hiển thị dung lượng dưới dạng dễ đọc (Human-readable) như GB hoặc MB. Trong các trường hợp kiểm tra dung lượng ổ đĩa trên VPS, việc thiếu tham số -h dẫn đến việc hiển thị đơn vị block mặc định, gây khó khăn cho việc đọc số liệu thực tế. Một lỗi phổ biến xảy ra khi hệ thống file sử dụng định dạng lớn nhưng lệnh df không hiển thị đầy đủ dung lượng khả dụng do cơ chế dành riêng cho root (reserved blocks). Khi quản trị VPS, việc chạy lệnh df -T cho phép xác định chính xác loại định dạng hệ thống file như ext4 hoặc xfs, giúp hỗ trợ việc debug lỗi tràn ổ đĩa một cách hiệu quả hơn.

Những câu hỏi thường gặp về lệnh df?

Dưới đây là các câu hỏi phổ biến nhất mà người dùng thường gặp khi thao tác với lệnh df trong hệ điều hành Linux.

Làm thế nào để xem dung lượng đĩa dưới định dạng dễ đọc (GB, MB)?

Sử dụng tùy chọn -h để chuyển đổi các con số sang đơn vị human-readable giúp người dùng dễ dàng quan sát dung lượng thực tế.

df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   30G  40% /

Làm sao để kiểm tra dung lượng của một thư mục hoặc phân vùng cụ thể?

Bạn có thể truyền đường dẫn của thư mục hoặc điểm gắn kết (mount point) trực tiếp vào sau lệnh df.

df -h /home
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       100G   40G   60G  40% /home

Lệnh df hiển thị các loại hệ thống tệp (Filesystem type) như thế nào?

Sử dụng tùy chọn -T để hiển thị thêm cột thông tin về định dạng hệ thống tệp như ext4, xfs hoặc tmpfs.

df -T
Filesystem     Type      Size  Used Avail Use% Mounted on
/dev/sda1      ext4       50G   20G   30G  40% /
tmpfs          tmpfs     3.9G     0  3.9G   0% /run

Làm thế nào để lọc kết quả chỉ hiển thị các hệ thống tệp thực (physical disks)?

Sử dụng tùy chọn -x để loại bỏ các loại hệ thống tệp ảo như tmpfs hoặc devtmpfs khỏi danh sách hiển thị.

df -h -x tmpfs -x devtmpfs
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   30G  40% /

Làm cách nào để kiểm tra dung lượng inode còn trống?

Sử dụng tùy chọn -i để xem thông tin về số lượng inode thay vì dung lượng lưu trữ vật lý.

df -i
Filesystem       Inodes  IUsed   IFree IUse% Mounted on
/dev/sda1        6561440 123456 6437984   2% /

Làm thế nào để hiển thị dung lượng của tất cả các hệ thống tệp, kể cả các tệp ảo?

Sử dụng tùy chọn -a để hiển thị mọi tệp hệ thống hiện có trên máy tính.

df -a
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda1        50G   20G   30G  40% /
sysfs           0     0      0    0% /sys
proc            0     0      0    0% /proc

Lệnh df là một công cụ vô cùng hữu ích giúp bạn kiểm tra và hiển thị thông tin chi tiết về dung lượng các phân vùng hệ thống tệp trên Linux. Bạn có thể dễ dàng sử dụng tham số -h để đọc dữ liệu dưới định dạng dễ hiểu hơn, hoặc kết hợp với -T để biết chính xác loại hệ thống tệp đang sử dụng, đúng không nhỉ? Việc nắm vững các tùy chọn này 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 rất nhiều. Chúc bạn thành công!