Lệnh lsblk trong Linux — Liệt kê cấu trúc thiết bị lưu trữ

Bạn đã bao giờ rơi vào tình huống đang cần mở rộng dung lượng ổ cứng cho một con VPS đang chạy quá tải, nhưng lại loay hoay không biết phân vùng nào đang trống, phân vùng nào đã đầy chưa nhỉ? Với tư cách là một Senior System Admin, mình hiểu rằng việc xác định chính xác cấu trúc lưu trữ là bước sống còn để tránh mất mát dữ liệu. Đó chính là lúc bạn cần đến lsblk. lsblk là một công cụ mạnh mẽ giúp liệt kê thông tin về tất cả các thiết bị lưu trữ đang kết nối với hệ thống. Vậy thực chất lsblk 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 cách dùng lsblk một cách chi tiết nhất. Bạn có thể dễ dàng nắm bắt cách hiển thị cấu trúc block device trên lsblk Linux để quản lý vps của mình một cách chuyên nghiệp. Hãy cùng mình khám phá cách xem danh sách phân vùng một cách trực quan nhất nhé!

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

  • Quyền người dùng: Có thể sử dụng với quyền user thường để xem thông tin cơ bản, nhưng cần quyền sudo để xem đầy đủ các chi tiết về phân vùng và thiết bị.
  • Hệ điều hành hỗ trợ: Linux (hầu hết các bản phân phối như Ubuntu, Debian, CentOS, Fedora, Arch Linux...).
  • Package dependencies: Lệnh này nằm trong gói util-linux. Trên các hệ thống tối giản, nếu chưa có, bạn có thể cài đặt bằng lệnh:
    • Ubuntu/Debian: sudo apt install util-linux
    • CentOS/RHEL: sudo yum install util-linux
    • Arch Linux: sudo pacman -S util-linux

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

Lệnh lsblk hỗ trợ nhiều dạng cú pháp khác nhau trên các hệ thống Linux để hiển thị thông tin thiết bị lưu trữ.

lsblk [OPTIONS]

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

Lệnh lsblk hỗ trợ nhiều tùy chọn được phân thành các nhóm chức năng: kiểm soát đầu ra, lọc thiết bị, định dạng hiển thị và thu thập thông tin bổ sung.

Tùy chọn ngắn Tùy chọn dài Mô tả
-a --all lsblk -a hiển thị tất cả các thiết bị khối, bao gồm cả các thiết bị rỗng thường bị ẩn theo mặc định.
-b --bytes lsblk -b hiển thị kích thước thiết bị theo đơn vị byte thay vì định dạng dễ đọc như KB, MB, GB.
-D --discard lsblk -D in thông tin về khả năng discard (TRIM) của từng thiết bị, hữu ích khi kiểm tra hỗ trợ SSD.
-d --nodeps lsblk -d chỉ hiển thị các thiết bị gốc, bỏ qua các phân vùng và thiết bị con phụ thuộc.
-e --exclude lsblk -e loại trừ các thiết bị có major number được chỉ định khỏi danh sách đầu ra.
-f --fs lsblk -f hiển thị thông tin filesystem bao gồm loại filesystem, nhãn (label) và UUID của từng thiết bị.
-I --include lsblk -I chỉ hiển thị các thiết bị có major number được chỉ định, ngược lại với tùy chọn -e.
-i --ascii lsblk -i sử dụng ký tự ASCII thuần thay vì ký tự Unicode để vẽ cây phân cấp thiết bị.
-J --json lsblk -J xuất kết quả dưới định dạng JSON, thuận tiện cho việc xử lý bằng script hoặc công cụ tự động hóa.
-l --list lsblk -l hiển thị kết quả theo dạng danh sách phẳng thay vì dạng cây phân cấp mặc định.
-M --merge lsblk -M gộp các hàng của cây phân cấp khi thiết bị có nhiều cha mẹ, dùng cho thiết bị MD RAID hoặc DM.
-m --perms lsblk -m hiển thị thông tin quyền sở hữu gồm chủ sở hữu, nhóm và quyền truy cập của từng thiết bị.
-n --noheadings lsblk -n bỏ qua dòng tiêu đề cột trong đầu ra, hữu ích khi dùng kết quả trong script.
-o --output lsblk -o chỉ định danh sách các cột cụ thể cần hiển thị, ví dụ NAME, SIZE, TYPE, MOUNTPOINT.
-O --output-all lsblk -O hiển thị tất cả các cột thông tin có sẵn cho mỗi thiết bị khối.
-p --paths lsblk -p hiển thị đường dẫn đầy đủ của thiết bị thay vì chỉ tên ngắn, ví dụ /dev/sda thay vì sda.
-P --pairs lsblk -P xuất kết quả theo định dạng cặp key=value, thuận tiện cho việc phân tích cú pháp trong shell script.
-r --raw lsblk -r xuất kết quả ở định dạng thô không có căn chỉnh cột và không có ký tự vẽ cây.
-S --scsi lsblk -S chỉ hiển thị thông tin về các thiết bị SCSI, bao gồm các cột đặc thù như HCTL, TRANSPORT.
-s --inverse lsblk -s in cây phụ thuộc theo chiều ngược lại, từ thiết bị con lên thiết bị cha.
-t --topology lsblk -t hiển thị thông tin cấu trúc vật lý của thiết bị gồm alignment, min-io, opt-io và physical-sector.
-T --tree lsblk -T bắt buộc hiển thị theo dạng cây, hữu ích khi dùng kết hợp với tùy chọn --output để vẫn giữ cấu trúc phân cấp.
-x --sort lsblk -x sắp xếp kết quả đầu ra theo cột được chỉ định, ví dụ sắp xếp theo SIZE hoặc NAME.
-z --zoned lsblk -z hiển thị thông tin về kiểu vùng (zone model) của thiết bị, áp dụng cho ổ đĩa hỗ trợ Zoned Block Device.
--sysroot --sysroot lsblk --sysroot thu thập dữ liệu từ một thư mục gốc hệ thống khác được chỉ định thay vì hệ thống đang chạy.
-h --help lsblk -h hiển thị thông tin trợ giúp tóm tắt về cú pháp và các tùy chọn của lệnh.
-V --version lsblk -V hiển thị phiên bản hiện tại của lệnh lsblk đang được cài đặt trên hệ thống.

xem thêm: System Monitoring and Management

Cách sử dụng lệnh lsblk trong các tình huống thực tế?

Dưới đây là các trường hợp sử dụng lệnh lsblk phổ biến để quản lý thiết bị lưu trữ trong quá trình vận hành hệ thống.

lsblk là gì? [Hiển thị danh sách thiết bị lưu trữ]

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
└─sda1        8:1    0 465.8G  0 part /
sdb           8:16   0 100G    0 disk 

Lệnh hiển thị cấu trúc phân cấp của các ổ đĩa, phân vùng và điểm gắn kết (mount point). Trong thực tế, đây là bước đầu tiên để kiểm tra xem một ổ cứng mới vừa gắn vào hệ thống đã được nhận diện hay chưa.

lsblk -f là gì? [Xem thông tin hệ thống tập tin]

lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                        
└─sda1      ext4   root UUID 550e8400-e29b-41d4-a716-446655443322 /
sdb                                                        
└─sdb1      ntfs   Data UUID 1234-5678-90AB                     /mnt/data

Lệnh hiển thị thêm cột FSTYPE (loại định dạng như ext4, ntfs, xfs) và UUID của phân vùng. Trên môi trường production, việc biết chính xác UUID là bắt buộc để cấu hình file /etc/fstab nhằm đảm bảo tính ổn định khi mount ổ đĩa.

lsblk -d là gì? [Chỉ liệt kê các thiết bị vật lý]

lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    8:0    0 465.8G  0 disk 
sdb    8:16   0 100G    0 disk 

Lệnh loại bỏ việc hiển thị các phân vùng con và chỉ tập trung vào các thiết bị vật lý (disk). Trong các kịch bản automation hoặc script backup, tham số này giúp tránh việc quét trùng lặp dữ liệu từ các phân vùng nhỏ nằm trong cùng một ổ đĩa vật lý.

lsblk -o NAME,SIZE,MODEL,SERIAL là gì? [Kiểm tra thông tin phần cứng]

lsblk -o NAME,SIZE,MODEL,SERIAL
NAME        SIZE MODEL           SERIAL
sda         465.8G Samsung SSD 870    S62NF0N123456
sdb         100G Kingston SSD F0    8D21-4567-89AB

Lệnh tùy chỉnh các cột hiển thị bao gồm tên, dung lượng, model và số serial của thiết bị. Điều này đặc biệt hữu ích cho kỹ sư DevOps khi cần kiểm tra vật lý hoặc đối soát thông tin phần cứng trong các trung tâm dữ liệu (Data Center) có hàng nghìn ổ đĩa.

lsblk --nodeps là gì? [Liệt kê thiết bị không theo phân cấp]

lsblk --nodeps
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    8:0    0 465.8G  0 disk 
sdb    8:16   0 100G    0 disk 

Lệnh hiển thị danh sách thiết bị theo dạng phẳng, không hiển thị các nhánh cây phân vùng con. Trong các tác vụ lập trình hệ thống hoặc viết script điều khiển lưu trữ, việc sử dụng tham số này giúp xử lý dữ liệu đầu ra một cách đơn giản và tránh các lỗi logic do cấu trúc cây gây ra.

Tại sao lệnh lsblk không hiển thị đầy đủ thông tin thiết bị hoặc báo lỗi?

Trong quá trình quản trị hệ thống, người dùng thường gặp phải các tình huống lệnh lsblk không hiển thị chính xác cấu trúc phân vùng hoặc thiếu quyền truy cập vào thông tin phần cứng.

Không hiển thị thông tin khi không có quyền root

$ lsblk

Kết quả có thể không hiển thị đầy đủ các thông tin chi tiết về kích thước hoặc cấu trúc phân vùng của các thiết bị vật lý nếu người dùng không có quyền quản trị.

Thiết bị mới gắn vào không xuất hiện trong danh sách

$ lsblk
[không có output hoặc thiếu thiết bị vừa cắm]

Lệnh lsblk đọc thông tin từ hệ thống tệp /sys; do đó, các thiết bị mới kết nối qua USB hoặc ổ cứng rời đôi khi chưa được kernel nhận diện ngay lập tức.

Lỗi không thể truy cập thông tin thiết bị do thiếu quyền sudo

$ lsblk
[thiếu thông tin chi tiết về các loop device hoặc mount point]

Khi chạy lệnh với quyền user thường, một số thông tin nhạy cảm về cấu trúc mount point hoặc các thiết bị loop có thể bị ẩn hoặc hiển thị không đầy đủ.

Lỗi không hiển thị các phân vùng chưa được định dạng

$ lsblk

Trong một số trường hợp, các phân vùng mới được tạo nhưng chưa có bảng phân vùng (partition table) hoặc chưa được định dạng sẽ không hiển thị đúng cấu trúc phân cấp như mong đợi.

Quy trình thực tế dùng lsblk trong quản trị lưu trữ hệ thống Linux?

Trong kịch bản thiết lập một máy chủ lưu trữ dữ liệu mới, lsblk được sử dụng như một phần của quy trình xác định thiết bị, phân vùng và định dạng ổ đĩa.

Bước 1: Kiểm tra danh sách các thiết bị lưu trữ hiện có

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
└─sda1        8:1    0 465.8G  0 part /
sdb           8:16   0 931.5G  0 disk 

Lệnh cho phép bạn xác định chính xác tên thiết bị (như sdb) và dung lượng còn trống để chuẩn bị cho việc cấu hình phân vùng mới.

Bước 2: Kiểm tra cấu trúc cây của các phân vùng và LVM

lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda1        ext4   root UUID b4f5a1e2-3c4d-5e6f-7g8h-9i0j1k2l3m4n /
sdb                                                          
└─sdb1      ext4   data UUID a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6 /mnt/data

Sử dụng tùy chọn -f giúp bạn kiểm tra định dạng hệ thống tệp (FSTYPE) và mã UUID, đảm bảo thiết bị đã được định dạng đúng trước khi thực hiện mount.

Bước 3: Xác định thiết bị mục tiêu để thực hiện chia phân vùng

lsblk -d -o NAME,SIZE,MODEL
NAME SIZE MODEL
sda 466G Samsung SSD 870 EVO
sdb 932G Seagate Barracuda

Lệnh này giúp loại bỏ các phân vùng con để bạn tập trung vào thông tin phần cứng vật lý, tránh thao tác nhầm lẫn lên các phân vùng hệ thống quan trọng.

Việc sử dụng lệnh lsblk trên VPS yêu cầu sự chính xác về định danh thiết bị để tránh rủi ro mất dữ liệu. Người quản trị thường nhầm lẫn giữa tên thiết bị vật lý và các phân vùng logic khi cấu hình mount ổ đĩa mới. Trong các trường hợp thiết lập VPS sử dụng LVM (Logical Volume Management), kết quả từ lsblk hiển thị cấu trúc phân cấp phức tạp giữa Physical Volume, Volume Group và Logical Volume. Việc thực hiện lệnh lsblk để kiểm tra dung lượng thường đi kèm với tùy chọn -f nhằm xác định chính xác định dạng hệ thống tệp (file system) hiện có. Một lỗi phổ biến là can thiệp nhầm vào các phân vùng swap hoặc phân vùng boot của hệ điều hành do không phân biệt được cấu trúc cây thiết bị. Lệnh lsblk -p giúp hiển thị đường dẫn đầy đủ của thiết bị, hỗ trợ việc viết script tự động hóa quản lý lưu trữ trên VPS chính xác hơn.

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

Dưới đây là tổng hợp các thắc mắc phổ biến nhất khi người dùng bắt đầu sử dụng lệnh lsblk để quản lý thiết bị lưu trữ.

Làm thế nào để xem cấu trúc phân vùng và thiết bị lưu trữ?

Sử dụng lệnh lsblk mặc định để hiển thị danh sách tất cả các thiết bị lưu trữ dưới dạng cây phân cấp.

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
└─sda1        8:1    0 465.8G  0 part /
sdb           8:16   0 14.9G  0 disk 

Làm sao để hiển thị thêm thông tin về định dạng hệ thống tệp (File System)?

Sử dụng tùy chọn -f để xem chi tiết về loại định dạng tệp (ext4, vfat, ntfs...) và UUID của phân vùng.

lsblk -f
NAME        FSTYPE LABEL UUID                                 MOUNTPOINT
sda                                                         
└─sda1      ext4   root UUID a1b2c3d4-e5f6-g7h8-i9j0-k1l2m3n4o5p6 /

Làm cách nào để hiển thị dung lượng theo đơn vị dễ đọc hơn?

Thêm tùy chọn -o để định nghĩa cột hiển thị, kết hợp với việc đọc mặc định giúp thông tin dễ hiểu hơn.

lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
NAME        SIZE TYPE MOUNTPOINT
sda       465.8G disk 
└─sda1    465.8G part /

Làm sao để kiểm tra các thiết bị lưu trữ đang được gắn kết (mount)?

Lệnh lsblk sẽ hiển thị cột MOUNTPOINT cho các thiết bị đã được mount vào hệ thống.

lsblk | grep mountpoint
sda1        465.8G part /
sdb1        14.9G part /mnt/usb

Làm cách nào để liệt kê các thiết bị dựa trên ID của chúng?

Sử dụng tùy chọn -d để chỉ liệt kê thiết bị chính (disk) mà không liệt kê các phân vùng con.

lsblk -d
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda    8:0    0 465.8G  0 disk 
sdb    8:16   0 14.9G  0 disk 

Làm sao để xem thông tin về các thiết bị không có điểm gắn kết?

lsblk -a
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda           8:0    0 465.8G  0 disk 
└─sda1        8:1    0 465.8G  0 part 
sdb           8:16   0 14.9G  0 disk 

Lệnh lsblk là một công cụ mạnh mẽ giúp bạn liệt kê và hiển thị cấu trúc các thiết bị lưu trữ dưới dạng cây trực quan trên hệ thống Linux. Bạn có thể vô cùng dễ dàng kiểm soát không gian lưu trữ thông qua tham số -f để xem định dạng file hệ thống, hoặc sử dụng tham số -d khi chỉ muốn quan sát thông tin thiết bị gốc mà không cần xem các phân vùng con, đúng không nhỉ? Việc nắm vững công cụ này chắc chắn sẽ giúp bạn quản lý ổ đĩa một cách chuyên nghiệp và nhanh chóng hơn rất nhiều. Chúc bạn thành công!