Lệnh lsblk: kiểm tra cấu trúc ổ đĩa, phân vùng và UUID
Lệnh lsblk hiển thị các ổ đĩa và phân vùng kết nối với máy chủ cùng điểm gắn kết của chúng dưới dạng cây, đồng thời cho xem ngay kích thước ổ đĩa, loại hệ thống tệp và cả UUID. Khi chạy lsblk trên máy chủ AlmaLinux 9, các thiết bị loop do gói snap tạo ra hiện trước ổ đĩa, nên chúng tôi lọc bỏ bằng -e 7. Sau đó chúng tôi dùng -f để kiểm tra hệ thống tệp xfs và UUID của phân vùng gốc.
Kích thước ổ đĩa và UUID trong kết quả bên dưới là giá trị ví dụ.
1️⃣ Cách đọc kết quả cơ bản của lệnh lsblk
Trên máy chủ cài chương trình bằng snap, nếu chạy lsblk không kèm tùy chọn, các thiết bị loop được gắn kết cho từng phiên bản gói sẽ xếp hàng hiện trước ổ đĩa, vì vậy hãy chỉ định số thiết bị của loop là 7 bằng -e để loại chúng ra.
lsblk -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk
├─nvme0n1p1 259:1 0 1M 0 part
├─nvme0n1p2 259:2 0 200M 0 part /boot/efi
├─nvme0n1p3 259:3 0 1G 0 part /boot
└─nvme0n1p4 259:4 0 78.8G 0 part /nvme0n1 trong cột NAME là ổ đĩa. Các dòng từ nvme0n1p1 đến nvme0n1p4 nối bên dưới bằng [├─] và [└─] là các phân vùng chia ổ đĩa này. Giống như bảng chỉ dẫn các tầng ở lối vào tòa nhà, ghi bên dưới tên tòa nhà những gì có ở mỗi tầng.
Trong cột TYPE, ổ đĩa hiện là [disk] và phân vùng là [part], còn cột MOUNTPOINTS cho biết thư mục mà phân vùng đó được gắn kết. Trên máy chủ chúng tôi kiểm tra, phân vùng gốc nvme0n1p4 được gắn vào / và nvme0n1p3 vào /boot. nvme0n1p1 dung lượng 1M là phân vùng khởi động BIOS dùng để khởi động trên ổ đĩa GPT, nên không có điểm gắn kết.
MAJ:MIN là số chính và số phụ mà kernel gán cho thiết bị; thiết bị loop là 7, còn ổ NVMe chúng tôi kiểm tra là 259. RM cho biết thiết bị có tháo rời được không, RO cho biết có phải chỉ đọc không, bằng 1 và 0.
Dễ đọc nhầm SIZE là dung lượng trống, nhưng SIZE là tổng kích thước của ổ đĩa hoặc phân vùng. Dung lượng trống của hệ thống tệp được xem ở cột FSAVAIL, cột này hiện khi thêm -f.
Trong sơ đồ bên dưới, bạn có thể so sánh từng bước xem các dòng và cột trong kết quả thay đổi thế nào theo từng tùy chọn.
2️⃣ lsblk -f: kiểm tra hệ thống tệp và UUID
Kết quả cơ bản không hiển thị loại hệ thống tệp, nên phân vùng được định dạng theo kiểu nào thì kiểm tra bằng -f. -f hiển thị tám cột: NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% và MOUNTPOINTS.
lsblk -f -e 7NAME FSTYPE FSVER LABEL UUID FSAVAIL FSUSE% MOUNTPOINTS
nvme0n1
├─nvme0n1p1
├─nvme0n1p2 vfat FAT16 5A1E-3B7C 192.1M 4% /boot/efi
├─nvme0n1p3 xfs 6d2f0c4e-8b1a-4f3d-a7e2-9c5b1d0e4f28 691.4M 28% /boot
└─nvme0n1p4 xfs 2b9e7f41-c3d6-4a85-b0f1-7e4a2c9d6b13 68.5G 13% /Khi chạy thử, phân vùng gốc và /boot là xfs, còn /boot/efi là vfat phiên bản FAT16. Ổ đĩa nvme0n1 và nvme0n1p1 không có hệ thống tệp nên để trống. UUID là số định danh duy nhất gán cho mỗi hệ thống tệp, dùng trong /etc/fstab để chỉ định phân vùng cần gắn kết bằng UUID thay cho tên thiết bị.
Để kiểm tra thông tin hệ thống tệp chính xác nhất, hãy dùng lệnh blkid.
FSAVAIL và FSUSE% là dung lượng trống và tỷ lệ sử dụng của hệ thống tệp đã gắn kết. Phân vùng chưa gắn kết thì không có giá trị. Lệnh df chỉ hiển thị kích thước và mức sử dụng của các hệ thống tệp đã gắn kết. lsblk hiển thị cả cấu trúc ổ đĩa và phân vùng, dù đã gắn kết hay chưa.
3️⃣ lsblk -o để chọn cột và -b để hiển thị theo byte
Nếu viết tên cột sau -o, cách nhau bằng dấu phẩy, thì chỉ các cột đó hiện ra theo thứ tự. Tên cột dùng được có trong danh sách ở cuối [lsblk --help].
lsblk -o NAME,SIZE,FSTYPE,MOUNTPOINT -e 7NAME SIZE FSTYPE MOUNTPOINT
nvme0n1 80G
├─nvme0n1p1 1M
├─nvme0n1p2 200M vfat /boot/efi
├─nvme0n1p3 1G xfs /boot
└─nvme0n1p4 78.8G xfs /MOUNTPOINT chỉ hiển thị một điểm gắn kết, còn MOUNTPOINTS hiển thị tất cả khi cùng một hệ thống tệp được gắn ở nhiều nơi. Để thêm đúng một cột sau các cột cơ bản, đặt + trước tên cột, như [-o +UUID].
-b hiển thị kích thước dưới dạng số nguyên theo byte. Khi so sánh bằng mắt, đơn vị cơ bản dễ đọc hơn, nên -b phù hợp với script tính toán hoặc so sánh kích thước.
lsblk -b -o NAME,SIZE -e 7NAME SIZE
nvme0n1 85899345920
├─nvme0n1p1 1048576
├─nvme0n1p2 209715200
├─nvme0n1p3 1073741824
└─nvme0n1p4 84613774848G và M trong kết quả cơ bản là đơn vị 1.024, nên ổ đĩa 80G hiện là 85.899.345.920 byte.
4️⃣ lsblk -d cho danh sách ổ đĩa và -p cho đường dẫn đầy đủ
Trên máy chủ có nhiều ổ đĩa, các dòng phân vùng xen vào khiến danh sách ổ đĩa khó xem, vì vậy dùng -d để bỏ phân vùng và chỉ hiển thị các dòng ổ đĩa.
lsblk -d -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk Kết quả chỉ còn một dòng của ổ đĩa nvme0n1, bốn dòng phân vùng bên dưới không hiện ra.
Khi thêm -p, /dev/ được gắn vào trước tên thiết bị và hiện thành đường dẫn đầy đủ. Đường dẫn này có thể đưa thẳng vào lệnh khác như mount.
lsblk -p -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
/dev/nvme0n1 259:0 0 80G 0 disk
├─/dev/nvme0n1p1 259:1 0 1M 0 part
├─/dev/nvme0n1p2 259:2 0 200M 0 part /boot/efi
├─/dev/nvme0n1p3 259:3 0 1G 0 part /boot
└─/dev/nvme0n1p4 259:4 0 78.8G 0 part /Chỉ cột NAME đổi thành đường dẫn đầy đủ, từ /dev/nvme0n1 đến /dev/nvme0n1p4, các cột còn lại giống kết quả cơ bản.
Nếu đưa đường dẫn thiết bị làm đối số, chỉ thiết bị đó và các phân vùng bên dưới được hiển thị; nếu đưa đường dẫn phân vùng, chỉ một dòng của phân vùng đó hiện ra.
lsblk /dev/nvme0n1p4NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4 0 78.8G 0 part /Kết quả chỉ có một dòng của nvme0n1p4, không kèm dòng ổ đĩa và ký hiệu nhánh. Khi thử đưa đường dẫn thiết bị không tồn tại, lỗi [not a block device] xuất hiện và mã thoát là 32.
5️⃣ Kết quả và tùy chọn của lệnh lsblk dùng cho script
Cắt kết quả cơ bản để dùng trong script trông có vẻ tiện, nhưng cấu trúc cột của kết quả cơ bản và của -f có thể thay đổi sau này, nên trong script hãy tự chỉ định cột bằng -o.
-n bỏ dòng tiêu đề và chỉ hiển thị giá trị, nên phù hợp khi chỉ cần một giá trị, như loại hệ thống tệp của một phân vùng.
lsblk -no FSTYPE /dev/nvme0n1p4xfsKhông có dòng tiêu đề, chỉ hiện một từ xfs là loại hệ thống tệp của phân vùng gốc, nên có thể gán thẳng vào biến shell.
-P hiển thị mỗi cột trên một dòng theo dạng [tên=”giá trị”]. Trong util-linux 2.37 của AlmaLinux 9, chỉ cần thêm -P là tên cột đổi để dễ đọc như biến shell, ví dụ MAJ:MIN thành MAJ_MIN và FSUSE% thành FSUSE_PCT.
lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"Ba cột đã chỉ định hiện trên một dòng theo thứ tự NAME, FSTYPE, MOUNTPOINT. Mọi giá trị đều nằm trong dấu ngoặc kép.
-J hiển thị kết quả dạng JSON. Nếu không có -d, các phân vùng nằm trong mảng children bên dưới ổ đĩa. Khi dùng cùng -b, chỉ size chuyển thành số, còn các cột kích thước khác như FSAVAIL vẫn là chuỗi.
lsblk -J -d -o NAME,SIZE,TYPE -e 7{
"blockdevices": [
{
"name": "nvme0n1",
"size": "80G",
"type": "disk"
}
]
}Khi thêm -d, mảng blockdevices chỉ chứa một ổ đĩa và mảng children không xuất hiện.
🔲 Tùy chọn của lệnh lsblk
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -e, --exclude | Loại trừ thiết bị có số chính đã chỉ định. Chỉ định 7 thì thiết bị loop bị loại ra. | |
| -f, --fs | Hiển thị loại hệ thống tệp, UUID, dung lượng trống và tỷ lệ sử dụng. | |
| -o, --output | Chỉ hiển thị lần lượt các cột được chỉ định, cách nhau bằng dấu phẩy. | |
| -b, --bytes | Hiển thị cột SIZE dưới dạng số nguyên theo byte. | |
| -d, --nodeps | Bỏ các dòng phân vùng và chỉ hiển thị dòng ổ đĩa. | |
| -p, --paths | Hiển thị tên thiết bị dưới dạng đường dẫn đầy đủ bắt đầu bằng /dev/. | |
| -n, --noheadings | Bỏ dòng tiêu đề và chỉ hiển thị giá trị. | |
| -P, --pairs | Hiển thị tên cột và giá trị theo từng cặp trên một dòng. | |
| -J, --json | Hiển thị kết quả ở định dạng JSON. | |
| -a, --all | Hiển thị cả thiết bị trống có kích thước 0. |
| Tùy chọn | Sao chép | Mô tả |
|---|---|---|
| -I, --include | Chỉ hiển thị thiết bị có số chính đã chỉ định. | |
| -l, --list | Hiển thị kết quả dạng danh sách thay vì cây. | |
| -r, --raw | Hiển thị kết quả dạng raw, không căn chỉnh cột. | |
| -i, --ascii | Hiển thị các đường của cây bằng ký tự ASCII. | |
| -s, --inverse | Đảo ngược quan hệ phụ thuộc và hiển thị ổ đĩa bên dưới phân vùng. | |
| -S, --scsi | Chỉ hiển thị thông tin thiết bị SCSI. | |
| -t, --topology | Hiển thị thông tin cấu trúc liên kết như kích thước sector và bộ lập lịch I/O. | |
| -m, --perms | Hiển thị chủ sở hữu, nhóm và quyền của thiết bị. | |
| -x, --sort | Sắp xếp theo cột đã chỉ định và hiển thị dạng danh sách. | |
| -O, --output-all | Hiển thị tất cả các cột có thể dùng. |
🔲 Trình mô phỏng lệnh lsblk
Trong trình mô phỏng dưới đây, bạn có thể tự gõ các lệnh đã xem và kiểm tra đầu ra thay đổi thế nào với mỗi tùy chọn.
🔢 FAQ & nội dung đề xuất
Linux · Swap
Thiết lập bộ nhớ swap (Swap Memory)
Cách tạo bộ nhớ swap theo kiểu phân vùng và kiểu tệp bằng lệnh mkswap và swapon.
Linux · Ổ đĩa
Lệnh dd trên Linux
Cách dùng cơ bản, tùy chọn và ví dụ của lệnh dd, dùng để sao chép ổ đĩa, phân vùng hoặc tạo tệp ảnh.
Ổ đĩa · Khái niệm
Sector ổ đĩa là gì?
Giải thích cấu trúc cơ bản của ổ cứng và sector ổ đĩa là gì, tức là cách chia phương tiện lưu trữ thành các đơn vị có kích thước cố định.
ℹ️ Thông báo tiếp thị liên kết
Nội dung trên trang này có chứa liên kết affiliate (tiếp thị liên kết). Khi khách truy cập mua sản phẩm hoặc dịch vụ qua các liên kết này, trang sẽ nhận hoa hồng từ bên bán. Trong quá trình đó, số tiền người mua phải trả (sẽ giảm khi có chương trình khuyến mãi ↓) không hề tăng lên. Giá, khuyến mãi và tình trạng hàng được đăng theo thời điểm viết bài và có thể khác với thực tế, vì vậy hãy kiểm tra lại lần cuối với bên bán trước khi mua. Việc chọn và đánh giá sản phẩm dựa trên tiêu chí riêng của trang; việc có nhận hoa hồng hay không không ảnh hưởng đến thứ tự giới thiệu hay nội dung đánh giá.