Lệnh lsblk: kiểm tra cấu trúc ổ đĩa, phân vùng và UUID

Môi trường thử nghiệmHọ RHELAlmaLinux 9.8Tài khoản root
Lệnh ổ đĩa · mountlsblkVị trí/usr/bin/lsblk

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

🧭 Kết quả lsblk theo tùy chọn: ổ đĩa và phân vùng
Sơ đồ giải thích
⚙️ Tùy chọn
$ lsblk -f -d -p -e 7
Tên thiết bị
Kích thước
Hệ thống tệp
Điểm gắn kết
/dev/nvme0n1
80G
├─/dev/nvme0n1p1
1M
├─/dev/nvme0n1p2
200M
vfat, 5A1E-…
/boot/efi
├─/dev/nvme0n1p3
1G
xfs, 6d2f…
/boot
└─/dev/nvme0n1p4
78.8G
xfs, 2b9e…
/
🖥️ Những gì in ra màn hình
1 dòng ổ đĩa và 4 dòng phân vùng, 7 cột cơ bản (từ NAME đến MOUNTPOINTS)
1 dòng ổ đĩa và 4 dòng phân vùng, 8 cột hệ thống tệp (FSTYPE, UUID, FSAVAIL…)
Chỉ 1 dòng ổ đĩa, 7 cột cơ bản
1 dòng ổ đĩa và 4 dòng phân vùng, tên bắt đầu bằng /dev/
Khi không có tùy chọn, các phân vùng rẽ nhánh bên dưới ổ đĩa. Kích thước và điểm gắn kết cũng được hiển thị.
-f hiển thị loại hệ thống tệp, UUID và dung lượng trống thay cho kích thước. Ổ đĩa nvme0n1 và nvme0n1p1 không có hệ thống tệp nên để trống.
-d bỏ các dòng phân vùng và chỉ hiển thị dòng ổ đĩa.
Khi thêm -p, /dev/ được gắn vào trước tên thiết bị, nên có thể đưa thẳng đường dẫn hiển thị vào lệnh khác.

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 7
NAME        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 7
NAME         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 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

G 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 7
NAME    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 7
NAME             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/nvme0n1p4
NAME      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/nvme0n1p4
xfs

Khô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/nvme0n1p4
NAME="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ọnSao chépMô tả
-e, --excludeLoại trừ thiết bị có số chính đã chỉ định. Chỉ định 7 thì thiết bị loop bị loại ra.
-f, --fsHiển thị loại hệ thống tệp, UUID, dung lượng trống và tỷ lệ sử dụng.
-o, --outputChỉ hiển thị lần lượt các cột được chỉ định, cách nhau bằng dấu phẩy.
-b, --bytesHiển thị cột SIZE dưới dạng số nguyên theo byte.
-d, --nodepsBỏ các dòng phân vùng và chỉ hiển thị dòng ổ đĩa.
-p, --pathsHiển thị tên thiết bị dưới dạng đường dẫn đầy đủ bắt đầu bằng /dev/.
-n, --noheadingsBỏ dòng tiêu đề và chỉ hiển thị giá trị.
-P, --pairsHiển thị tên cột và giá trị theo từng cặp trên một dòng.
-J, --jsonHiển thị kết quả ở định dạng JSON.
-a, --allHiển thị cả thiết bị trống có kích thước 0.
Tùy chọnSao chépMô tả
-I, --includeChỉ hiển thị thiết bị có số chính đã chỉ định.
-l, --listHiển thị kết quả dạng danh sách thay vì cây.
-r, --rawHiển thị kết quả dạng raw, không căn chỉnh cột.
-i, --asciiHiể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, --scsiChỉ hiển thị thông tin thiết bị SCSI.
-t, --topologyHiể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, --permsHiển thị chủ sở hữu, nhóm và quyền của thiết bị.
-x, --sortSắp xếp theo cột đã chỉ định và hiển thị dạng danh sách.
-O, --output-allHiể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.

Trình mô phỏng lệnh lsblkutil-linux 2.37.4
[root@server work]#
Dùng phím ↑↓ trên bàn phím để gọi lại các lệnh đã gõ trước đó.

🔢 FAQ & nội dung đề xuất

Khi chạy -f bằng tài khoản thường, UUID và FSAVAIL vẫn hiện giống như tài khoản root. lsblk đọc thông tin từ sysfs và udev. Khi không dùng được thông tin của udev, nó phải đọc trực tiếp thiết bị nên cần quyền root.

Ngay sau khi thêm hoặc thay thiết bị, udev có thể chưa thu thập đủ thông tin, nên hãy chạy udevadm settle rồi chạy lại lsblk.

-a hiển thị cả thiết bị trống có kích thước 0, nên được dùng để kiểm tra xem có thiết bị nào bị thiếu trong kết quả cơ bản không. Trên cùng máy chủ, khi thêm -a thì hiện thêm một dòng: thiết bị loop 0B không kết nối với gì.

ℹ️ 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á.

Để lại một bình luận

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Prove your humanity: 3   +   5   =