คำสั่ง lsblk: ตรวจสอบโครงสร้างดิสก์ พาร์ติชัน และ UUID

สภาพแวดล้อมทดสอบตระกูล RHELAlmaLinux 9.8บัญชี root

คำสั่ง lsblk แสดงดิสก์และพาร์ติชันที่เชื่อมต่อกับเซิร์ฟเวอร์ รวมถึงตำแหน่งเมานต์ในรูปแบบโครงสร้างต้นไม้ และดูขนาดดิสก์ ชนิดระบบไฟล์ ไปจนถึง UUID ได้ในคราวเดียว เมื่อเรารัน lsblk บนเซิร์ฟเวอร์ AlmaLinux 9 อุปกรณ์ loop ที่แพ็กเกจ snap สร้างขึ้นแสดงก่อนดิสก์ เราจึงกรองออกด้วย -e 7 จากนั้นจึงใช้ -f ตรวจสอบระบบไฟล์ xfs และ UUID ของพาร์ติชันรูท

ขนาดดิสก์และ UUID ในผลลัพธ์ด้านล่างเป็นค่าตัวอย่าง

1️⃣ อ่านผลลัพธ์พื้นฐานของคำสั่ง lsblk

บนเซิร์ฟเวอร์ที่ติดตั้งโปรแกรมด้วย snap หากรัน lsblk โดยไม่ใส่ตัวเลือก อุปกรณ์ loop ที่เมานต์ไว้ตามแต่ละเวอร์ชันของแพ็กเกจจะเรียงแสดงก่อนดิสก์ จึงต้องระบุหมายเลขอุปกรณ์ของ loop คือ 7 ด้วย -e เพื่อตัดออกก่อนตรวจสอบ

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 ในคอลัมน์ NAME คือดิสก์ ส่วน nvme0n1p1 ถึง nvme0n1p4 ที่ต่อลงมาด้านล่างด้วย [├─] และ [└─] คือพาร์ติชันที่แบ่งดิสก์นี้ เหมือนป้ายบอกชั้นที่ทางเข้าอาคาร ซึ่งเขียนไว้ใต้ชื่ออาคารว่าแต่ละชั้นมีอะไรอยู่

ในคอลัมน์ TYPE ดิสก์จะแสดงเป็น [disk] และพาร์ติชันเป็น [part] ส่วนคอลัมน์ MOUNTPOINTS บอกโฟลเดอร์ที่พาร์ติชันนั้นถูกเมานต์ไว้ บนเซิร์ฟเวอร์ที่ตรวจสอบ พาร์ติชันรูท nvme0n1p4 เมานต์ที่ / และ nvme0n1p3 เมานต์ที่ /boot ส่วน nvme0n1p1 ขนาด 1M เป็นพาร์ติชันบูต BIOS ที่ใช้บูตบน ดิสก์ GPT จึงไม่มีตำแหน่งเมานต์

MAJ:MIN คือหมายเลขหลักและหมายเลขรองที่เคอร์เนลกำหนดให้อุปกรณ์ อุปกรณ์ loop เป็น 7 และดิสก์ NVMe ที่ตรวจสอบเป็น 259 ส่วน RM บอกว่าเป็นอุปกรณ์ถอดได้หรือไม่ และ RO บอกว่าเป็นแบบอ่านอย่างเดียวหรือไม่ ด้วย 1 และ 0

SIZE อ่านเป็นพื้นที่ว่างได้ง่าย แต่ SIZE คือขนาดทั้งหมดของดิสก์หรือพาร์ติชัน พื้นที่ว่างของระบบไฟล์ให้ดูที่คอลัมน์ FSAVAIL ซึ่งแสดงเมื่อใส่ -f

ในแผนภาพด้านล่าง คุณเปรียบเทียบได้ทีละขั้นว่าแถวและคอลัมน์ในผลลัพธ์เปลี่ยนไปอย่างไรตามตัวเลือก

🧭 ผลลัพธ์ lsblk ตามตัวเลือก: ดิสก์และพาร์ติชัน
แผนภาพอธิบาย
⚙️ ตัวเลือก
$ lsblk -f -d -p -e 7
ชื่ออุปกรณ์
ขนาด
ระบบไฟล์
ตำแหน่งเมานต์
/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…
/
🖥️ สิ่งที่แสดงบนหน้าจอ
ดิสก์ 1 แถวและพาร์ติชัน 4 แถว คอลัมน์พื้นฐาน 7 คอลัมน์ (NAME ถึง MOUNTPOINTS)
ดิสก์ 1 แถวและพาร์ติชัน 4 แถว คอลัมน์ระบบไฟล์ 8 คอลัมน์ (FSTYPE, UUID, FSAVAIL ฯลฯ)
ดิสก์ 1 แถวเท่านั้น คอลัมน์พื้นฐาน 7 คอลัมน์
ดิสก์ 1 แถวและพาร์ติชัน 4 แถว ชื่อขึ้นต้นด้วย /dev/
ถ้าไม่มีตัวเลือก พาร์ติชันจะแตกกิ่งอยู่ใต้ดิสก์ และแสดงขนาดกับตำแหน่งเมานต์ด้วย
-f แสดงชนิดระบบไฟล์ UUID และพื้นที่ว่างแทนขนาด ดิสก์ nvme0n1 และ nvme0n1p1 ที่ไม่มีระบบไฟล์จะเว้นว่างไว้
-d ตัดแถวพาร์ติชันออกและแสดงเฉพาะแถวดิสก์
เมื่อใส่ -p จะมี /dev/ นำหน้าชื่ออุปกรณ์ จึงนำพาธที่แสดงไปใช้กับคำสั่งอื่นได้ทันที

2️⃣ lsblk -f ตรวจสอบระบบไฟล์และ UUID

ผลลัพธ์พื้นฐานไม่แสดงชนิดระบบไฟล์ จึงต้องใช้ -f ตรวจสอบว่าพาร์ติชันฟอร์แมตด้วยรูปแบบใด -f แสดงแปดคอลัมน์ ได้แก่ NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% และ 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% /

เมื่อรันดู พาร์ติชันรูทและ /boot เป็น xfs ส่วน /boot/efi เป็น vfat เวอร์ชัน FAT16 ดิสก์ nvme0n1 และ nvme0n1p1 ไม่มีระบบไฟล์จึงเว้นว่างไว้ UUID คือหมายเลขเฉพาะที่กำหนดให้แต่ละระบบไฟล์ ใช้ใน /etc/fstab เพื่อระบุพาร์ติชันที่จะเมานต์ด้วย UUID แทนชื่ออุปกรณ์

หากต้องการตรวจสอบข้อมูลระบบไฟล์ให้แม่นยำที่สุด คำสั่ง blkid คือเครื่องมือที่ควรใช้

FSAVAIL และ FSUSE% คือพื้นที่ว่างและอัตราการใช้งานของระบบไฟล์ที่เมานต์อยู่ พาร์ติชันที่ไม่ได้เมานต์จะไม่มีค่าแสดง คำสั่ง df แสดงเฉพาะขนาดและการใช้งานของระบบไฟล์ที่เมานต์อยู่ ส่วน lsblk แสดงโครงสร้างดิสก์และพาร์ติชันด้วย ไม่ว่าจะเมานต์อยู่หรือไม่

3️⃣ lsblk -o เลือกคอลัมน์ และ -b แสดงเป็นไบต์

หากเขียนชื่อคอลัมน์คั่นด้วยจุลภาคต่อท้าย -o จะแสดงเฉพาะคอลัมน์เหล่านั้นตามลำดับ ชื่อคอลัมน์ที่ใช้ได้ดูได้จากรายการท้าย [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 แสดงตำแหน่งเมานต์เพียงแห่งเดียว ส่วน MOUNTPOINTS แสดงทั้งหมดเมื่อระบบไฟล์เดียวกันถูกเมานต์ไว้หลายที่ หากต้องการเพิ่มเพียงคอลัมน์เดียวต่อท้ายคอลัมน์พื้นฐาน ให้ใส่ + หน้าชื่อคอลัมน์ เช่น [-o +UUID]

-b แสดงขนาดเป็นจำนวนเต็มหน่วยไบต์ หากเปรียบเทียบด้วยตา หน่วยพื้นฐานอ่านง่ายกว่า -b จึงเหมาะกับสคริปต์ที่คำนวณหรือเปรียบเทียบขนาด

lsblk -b -o NAME,SIZE -e 7
NAME               SIZE
nvme0n1     85899345920
├─nvme0n1p1     1048576
├─nvme0n1p2   209715200
├─nvme0n1p3  1073741824
└─nvme0n1p4 84613774848

G และ M ในผลลัพธ์พื้นฐานเป็นหน่วยละ 1,024 ดิสก์ 80G จึงแสดงเป็น 85,899,345,920 ไบต์

4️⃣ lsblk -d รายการดิสก์ และ -p พาธเต็ม

บนเซิร์ฟเวอร์ที่มีดิสก์หลายลูก แถวพาร์ติชันจะปนกันจนดูรายการดิสก์ได้ยาก จึงใช้ -d ตัดพาร์ติชันออกและแสดงเฉพาะแถวดิสก์

lsblk -d -e 7
NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0    0  80G  0 disk 

ในผลลัพธ์เหลือเพียงแถวเดียวของดิสก์ nvme0n1 และแถวพาร์ติชันสี่แถวด้านล่างไม่แสดง

เมื่อใส่ -p จะมี /dev/ นำหน้าชื่ออุปกรณ์และแสดงเป็นพาธเต็ม พาธนี้นำไปใส่ในคำสั่งอื่นอย่าง 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 /

มีเพียงคอลัมน์ NAME ที่เปลี่ยนเป็นพาธเต็มตั้งแต่ /dev/nvme0n1 ถึง /dev/nvme0n1p4 ส่วนคอลัมน์อื่นเหมือนผลลัพธ์พื้นฐาน

หากใส่พาธอุปกรณ์เป็นอาร์กิวเมนต์ จะแสดงเฉพาะอุปกรณ์นั้นและพาร์ติชันด้านล่าง และหากใส่พาธพาร์ติชัน จะแสดงเพียงแถวของพาร์ติชันนั้น

lsblk /dev/nvme0n1p4
NAME      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
nvme0n1p4 259:4    0 78.8G  0 part /

ผลลัพธ์แสดงเพียงแถวเดียวของ nvme0n1p4 โดยไม่มีแถวดิสก์และเครื่องหมายกิ่ง เมื่อลองใส่พาธอุปกรณ์ที่ไม่มีอยู่ จะขึ้นข้อผิดพลาด [not a block device] และรหัสออกเป็น 32

5️⃣ ผลลัพธ์และตัวเลือกของคำสั่ง lsblk สำหรับสคริปต์

การตัดผลลัพธ์พื้นฐานไปใช้ในสคริปต์ดูสะดวก แต่โครงสร้างคอลัมน์ของผลลัพธ์พื้นฐานและของ -f อาจเปลี่ยนในอนาคต ในสคริปต์จึงควรระบุคอลัมน์เองด้วย -o

-n ตัดแถวหัวข้อออกและแสดงเฉพาะค่า จึงเหมาะเมื่อต้องการค่าเพียงค่าเดียว เช่น ชนิดระบบไฟล์ของพาร์ติชันหนึ่ง

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

เมื่อไม่มีแถวหัวข้อ จะแสดงเพียงคำเดียวคือ xfs ซึ่งเป็นชนิดระบบไฟล์ของพาร์ติชันรูท จึงเก็บลงตัวแปรเชลล์ได้ทันที

-P แสดงแต่ละคอลัมน์ในรูปแบบ [ชื่อ=”ค่า”] ในบรรทัดเดียว ใน util-linux 2.37 ของ AlmaLinux 9 แค่ใส่ -P ชื่อก็จะเปลี่ยนให้อ่านเป็นตัวแปรเชลล์ได้ง่าย เช่น MAJ:MIN เป็น MAJ_MIN และ FSUSE% เป็น FSUSE_PCT

lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4
NAME="nvme0n1p4" FSTYPE="xfs" MOUNTPOINT="/"

สามคอลัมน์ที่ระบุแสดงในบรรทัดเดียวตามลำดับ NAME, FSTYPE, MOUNTPOINT และค่าทั้งหมดอยู่ในเครื่องหมายอัญประกาศคู่

-J แสดงผลเป็น JSON หากไม่ใส่ -d พาร์ติชันจะอยู่ในอาร์เรย์ children ใต้ดิสก์ เมื่อใช้ร่วมกับ -b เฉพาะ size ที่เปลี่ยนเป็นตัวเลข ส่วนคอลัมน์ขนาดอื่นอย่าง FSAVAIL ยังเป็นสตริง

lsblk -J -d -o NAME,SIZE,TYPE -e 7
{
   "blockdevices": [
      {
         "name": "nvme0n1",
         "size": "80G",
         "type": "disk"
      }
   ]
}

เมื่อใส่ -d อาร์เรย์ blockdevices จะมีเพียงดิสก์เดียว และไม่มีอาร์เรย์ children

🔲 ตัวเลือกของคำสั่ง lsblk

ตัวเลือกคัดลอกคำอธิบาย
-e, --excludeไม่รวมอุปกรณ์ที่มีหมายเลขหลักที่ระบุ หากระบุ 7 อุปกรณ์ loop จะถูกตัดออก
-f, --fsแสดงชนิดระบบไฟล์ UUID พื้นที่ว่าง และอัตราการใช้งาน
-o, --outputแสดงเฉพาะคอลัมน์ที่ระบุคั่นด้วยจุลภาคตามลำดับ
-b, --bytesแสดงคอลัมน์ SIZE เป็นจำนวนเต็มหน่วยไบต์
-d, --nodepsตัดแถวพาร์ติชันออกและแสดงเฉพาะแถวดิสก์
-p, --pathsแสดงชื่ออุปกรณ์เป็นพาธเต็มที่ขึ้นต้นด้วย /dev/
-n, --noheadingsตัดแถวหัวข้อออกและแสดงเฉพาะค่า
-P, --pairsแสดงชื่อคอลัมน์และค่าเป็นคู่ในบรรทัดเดียว
-J, --jsonแสดงผลในรูปแบบ JSON
-a, --allแสดงอุปกรณ์ว่างที่มีขนาด 0 ด้วย
ตัวเลือกคัดลอกคำอธิบาย
-I, --includeแสดงเฉพาะอุปกรณ์ที่มีหมายเลขหลักที่ระบุ
-l, --listแสดงผลเป็นรายการแทนโครงสร้างต้นไม้
-r, --rawแสดงผลในรูปแบบ raw โดยไม่จัดแนวคอลัมน์
-i, --asciiแสดงเส้นของต้นไม้ด้วยอักขระ ASCII
-s, --inverseกลับลำดับการพึ่งพาและแสดงดิสก์ไว้ใต้พาร์ติชัน
-S, --scsiแสดงเฉพาะข้อมูลอุปกรณ์ SCSI
-t, --topologyแสดงข้อมูลโทโพโลยี เช่น ขนาดเซกเตอร์และตัวจัดลำดับ I/O
-m, --permsแสดงเจ้าของ กลุ่ม และสิทธิ์ของอุปกรณ์
-x, --sortเรียงตามคอลัมน์ที่ระบุแล้วแสดงผลเป็นรายการ
-O, --output-allแสดงคอลัมน์ทั้งหมดที่ใช้ได้

🔲 ตัวจำลองคำสั่ง lsblk

ในตัวจำลองด้านล่าง คุณพิมพ์คำสั่งที่ผ่านมาได้เองและดูว่าเอาต์พุตเปลี่ยนไปอย่างไรตามตัวเลือก

ตัวจำลองคำสั่ง lsblkutil-linux 2.37.4
[root@server work]#
ใช้ปุ่ม ↑↓ บนแป้นพิมพ์เพื่อเรียกคำสั่งที่พิมพ์ไว้ก่อนหน้ากลับมา

🔢 FAQ & เนื้อหาแนะนำ

เมื่อรัน -f ด้วยบัญชีผู้ใช้ทั่วไป UUID และ FSAVAIL ก็แสดงเหมือนบัญชี root lsblk อ่านข้อมูลจาก sysfs และ udev หากใช้ข้อมูล udev ไม่ได้ จะต้องอ่านจากอุปกรณ์โดยตรง จึงต้องใช้สิทธิ์ root

ทันทีหลังเพิ่มหรือเปลี่ยนอุปกรณ์ udev อาจยังรวบรวมข้อมูลไม่ครบ จึงให้รัน udevadm settle แล้วรัน lsblk อีกครั้ง

-a แสดงอุปกรณ์ว่างที่มีขนาด 0 ด้วย จึงใช้ตรวจสอบว่ามีอุปกรณ์ที่หายไปจากผลลัพธ์พื้นฐานหรือไม่ บนเซิร์ฟเวอร์เดียวกัน เมื่อใส่ -a มีอุปกรณ์ loop ขนาด 0B ที่ไม่ได้เชื่อมต่อกับสิ่งใดแสดงเพิ่มมาอีกหนึ่งแถว

🔗 เนื้อหาแนะนำ
Linux · การเมานต์ เมานต์ดิสก์บน Linux: ตั้งค่าเมานต์อัตโนมัติด้วย /etc/fstab ขั้นตอนสร้างระบบไฟล์บนสตอเรจที่เพิ่มเข้ามาด้วยคำสั่ง mkfs แล้วเมานต์ จากนั้นลงทะเบียนใน /etc/fstab ให้เมานต์อัตโนมัติ อ่านบทความ → การเมานต์อัตโนมัติบน Linux - คำแนะนำ /etc/fstab

ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน

ใส่ความเห็น

อีเมลของคุณจะไม่แสดงให้คนอื่นเห็น ช่องข้อมูลจำเป็นถูกทำเครื่องหมาย *

Prove your humanity: 9   +   4   =