คำสั่ง lsblk: ตรวจสอบโครงสร้างดิสก์ พาร์ติชัน และ UUID
คำสั่ง lsblk แสดงดิสก์และพาร์ติชันที่เชื่อมต่อกับเซิร์ฟเวอร์ รวมถึงตำแหน่งเมานต์ในรูปแบบโครงสร้างต้นไม้ และดูขนาดดิสก์ ชนิดระบบไฟล์ ไปจนถึง UUID ได้ในคราวเดียว เมื่อเรารัน lsblk บนเซิร์ฟเวอร์ AlmaLinux 9 อุปกรณ์ loop ที่แพ็กเกจ snap สร้างขึ้นแสดงก่อนดิสก์ เราจึงกรองออกด้วย -e 7 จากนั้นจึงใช้ -f ตรวจสอบระบบไฟล์ xfs และ UUID ของพาร์ติชันรูท
ขนาดดิสก์และ UUID ในผลลัพธ์ด้านล่างเป็นค่าตัวอย่าง
1️⃣ อ่านผลลัพธ์พื้นฐานของคำสั่ง lsblk
บนเซิร์ฟเวอร์ที่ติดตั้งโปรแกรมด้วย snap หากรัน lsblk โดยไม่ใส่ตัวเลือก อุปกรณ์ loop ที่เมานต์ไว้ตามแต่ละเวอร์ชันของแพ็กเกจจะเรียงแสดงก่อนดิสก์ จึงต้องระบุหมายเลขอุปกรณ์ของ loop คือ 7 ด้วย -e เพื่อตัดออกก่อนตรวจสอบ
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 ในคอลัมน์ 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
ในแผนภาพด้านล่าง คุณเปรียบเทียบได้ทีละขั้นว่าแถวและคอลัมน์ในผลลัพธ์เปลี่ยนไปอย่างไรตามตัวเลือก
2️⃣ lsblk -f ตรวจสอบระบบไฟล์และ UUID
ผลลัพธ์พื้นฐานไม่แสดงชนิดระบบไฟล์ จึงต้องใช้ -f ตรวจสอบว่าพาร์ติชันฟอร์แมตด้วยรูปแบบใด -f แสดงแปดคอลัมน์ ได้แก่ NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% และ 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% /เมื่อรันดู พาร์ติชันรูทและ /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 7NAME 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 7NAME SIZE
nvme0n1 85899345920
├─nvme0n1p1 1048576
├─nvme0n1p2 209715200
├─nvme0n1p3 1073741824
└─nvme0n1p4 84613774848G และ M ในผลลัพธ์พื้นฐานเป็นหน่วยละ 1,024 ดิสก์ 80G จึงแสดงเป็น 85,899,345,920 ไบต์
4️⃣ lsblk -d รายการดิสก์ และ -p พาธเต็ม
บนเซิร์ฟเวอร์ที่มีดิสก์หลายลูก แถวพาร์ติชันจะปนกันจนดูรายการดิสก์ได้ยาก จึงใช้ -d ตัดพาร์ติชันออกและแสดงเฉพาะแถวดิสก์
lsblk -d -e 7NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 80G 0 disk ในผลลัพธ์เหลือเพียงแถวเดียวของดิสก์ nvme0n1 และแถวพาร์ติชันสี่แถวด้านล่างไม่แสดง
เมื่อใส่ -p จะมี /dev/ นำหน้าชื่ออุปกรณ์และแสดงเป็นพาธเต็ม พาธนี้นำไปใส่ในคำสั่งอื่นอย่าง 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 /มีเพียงคอลัมน์ NAME ที่เปลี่ยนเป็นพาธเต็มตั้งแต่ /dev/nvme0n1 ถึง /dev/nvme0n1p4 ส่วนคอลัมน์อื่นเหมือนผลลัพธ์พื้นฐาน
หากใส่พาธอุปกรณ์เป็นอาร์กิวเมนต์ จะแสดงเฉพาะอุปกรณ์นั้นและพาร์ติชันด้านล่าง และหากใส่พาธพาร์ติชัน จะแสดงเพียงแถวของพาร์ติชันนั้น
lsblk /dev/nvme0n1p4NAME 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/nvme0n1p4xfsเมื่อไม่มีแถวหัวข้อ จะแสดงเพียงคำเดียวคือ xfs ซึ่งเป็นชนิดระบบไฟล์ของพาร์ติชันรูท จึงเก็บลงตัวแปรเชลล์ได้ทันที
-P แสดงแต่ละคอลัมน์ในรูปแบบ [ชื่อ=”ค่า”] ในบรรทัดเดียว ใน util-linux 2.37 ของ AlmaLinux 9 แค่ใส่ -P ชื่อก็จะเปลี่ยนให้อ่านเป็นตัวแปรเชลล์ได้ง่าย เช่น MAJ:MIN เป็น MAJ_MIN และ FSUSE% เป็น FSUSE_PCT
lsblk -P -o NAME,FSTYPE,MOUNTPOINT /dev/nvme0n1p4NAME="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
ในตัวจำลองด้านล่าง คุณพิมพ์คำสั่งที่ผ่านมาได้เองและดูว่าเอาต์พุตเปลี่ยนไปอย่างไรตามตัวเลือก
🔢 FAQ & เนื้อหาแนะนำ
Linux · สวอป
การตั้งค่าหน่วยความจำสวอป (Swap Memory)
วิธีสร้างหน่วยความจำสวอปแบบพาร์ติชันและแบบไฟล์ด้วยคำสั่ง mkswap และ swapon
Linux · ดิสก์
คำสั่ง dd บน Linux
วิธีใช้พื้นฐาน ตัวเลือก และตัวอย่างของคำสั่ง dd ที่ใช้โคลนดิสก์และพาร์ติชันหรือสร้างไฟล์อิมเมจ
ดิสก์ · แนวคิด
เซกเตอร์ของดิสก์คืออะไร
อธิบายโครงสร้างพื้นฐานของฮาร์ดดิสก์ และเซกเตอร์ของดิสก์ซึ่งแบ่งสื่อเก็บข้อมูลออกเป็นหน่วยขนาดคงที่คืออะไร
ℹ️ ประกาศเรื่องลิงก์แอฟฟิลิเอต
เนื้อหาของเว็บไซต์นี้มีลิงก์แอฟฟิลิเอต หากผู้เข้าชมซื้อสินค้าหรือบริการผ่านลิงก์เหล่านี้ เว็บไซต์นี้จะได้รับค่าคอมมิชชันจากผู้ขาย ในกระบวนการนี้ ราคาที่ผู้ซื้อจ่าย(ราคาจะลดลงเมื่อมีโปรโมชัน↓)จะไม่สูงขึ้นแต่อย่างใด ราคา ส่วนลด และข้อมูลสต็อกที่แสดงเป็นข้อมูล ณ เวลาที่เขียนและอาจต่างจากความเป็นจริง โปรดตรวจสอบกับผู้ขายอีกครั้งก่อนซื้อ การเลือกและการประเมินสินค้าเขียนตามเกณฑ์ของเราเอง และการได้รับค่าคอมมิชชันหรือไม่ไม่มีผลต่อลำดับการแนะนำหรือเนื้อหาการประเมิน