Polecenie lsblk: struktura dysków i partycji oraz sprawdzanie UUID

Środowisko testoweRodzina RHELAlmaLinux 9.8konto root
Polecenia dysków · montowanialsblkLokalizacja/usr/bin/lsblk

Polecenie lsblk wyświetla w postaci drzewa dyski i partycje podłączone do serwera oraz ich punkty montowania, a przy tym od razu pokazuje rozmiar dysków, typ systemu plików, a nawet UUID. Po uruchomieniu lsblk na serwerze z AlmaLinux 9 urządzenia loop utworzone przez pakiety snap pojawiły się przed dyskiem, więc odfiltrowaliśmy je za pomocą -e 7. Następnie za pomocą -f sprawdziliśmy system plików xfs i UUID partycji głównej.

Rozmiary dysków i UUID w poniższych wynikach to przykładowe wartości.

1️⃣ Jak czytać podstawowy wynik polecenia lsblk

Na serwerze, na którym programy zainstalowano przez snap, lsblk bez opcji wyświetla przed dyskiem szereg urządzeń loop zamontowanych dla każdej wersji pakietu. Dlatego za pomocą -e podaje się numer urządzenia loop, czyli 7, aby je pominąć.

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 w kolumnie NAME to dysk. nvme0n1p1–nvme0n1p4, połączone pod nim znakami [├─] i [└─], to partycje, na które podzielony jest ten dysk. To tak jak tablica pięter przy wejściu do budynku, na której pod nazwą budynku wypisano, co znajduje się na każdym piętrze.

W kolumnie TYPE dyski pojawiają się jako [disk], a partycje jako [part], a kolumna MOUNTPOINTS pokazuje katalog, w którym zamontowana jest dana partycja. Na sprawdzanym serwerze partycja główna nvme0n1p4 była zamontowana w /, a nvme0n1p3 w /boot. nvme0n1p1 o rozmiarze 1M to partycja rozruchowa BIOS używana do uruchamiania systemu z dysku GPT, dlatego nie ma punktu montowania.

MAJ:MIN to numery główny i poboczny, które jądro nadaje urządzeniu; urządzenia loop mają 7, a sprawdzany dysk NVMe miał 259. RM pokazuje wartością 1 lub 0, czy urządzenie jest wymienne, a RO, czy jest tylko do odczytu.

Łatwo odczytać SIZE jako wolne miejsce, ale SIZE to całkowity rozmiar dysku lub partycji. Wolne miejsce w systemie plików sprawdza się w kolumnie FSAVAIL, która pojawia się po dodaniu -f.

Na poniższym diagramie można krok po kroku porównać, jak zmieniają się wiersze i kolumny wyniku w zależności od opcji.

🧭 Wynik lsblk według opcji: dyski i partycje
Diagram objaśniający
⚙️ Opcja
$ lsblk -f -d -p -e 7
Nazwa urządzenia
Rozmiar
System plików
Punkt montowania
/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…
/
🖥️ Co pojawia się na ekranie
1 wiersz dysku i 4 wiersze partycji, 7 podstawowych kolumn (od NAME do MOUNTPOINTS)
1 wiersz dysku i 4 wiersze partycji, 8 kolumn systemu plików (FSTYPE, UUID, FSAVAIL itd.)
Tylko 1 wiersz dysku, 7 podstawowych kolumn
1 wiersz dysku i 4 wiersze partycji, nazwy zaczynają się od /dev/
Bez opcji partycje rozgałęziają się pod dyskiem. Wyświetlane są też rozmiar i punkt montowania.
-f zamiast rozmiaru wyświetla typ systemu plików, UUID i wolne miejsce. Dysk nvme0n1 oraz nvme0n1p1 bez systemu plików pozostają puste.
-d pomija wiersze partycji i wyświetla tylko wiersz dysku.
Z -p przed nazwami urządzeń pojawia się /dev/, więc wyświetlone ścieżki można od razu przekazać innym poleceniom.

2️⃣ lsblk -f: sprawdzanie systemów plików i UUID

Podstawowy wynik nie pokazuje typu systemu plików, dlatego to, jak sformatowano partycję, sprawdza się za pomocą -f. -f wyświetla osiem kolumn: NAME, FSTYPE, FSVER, LABEL, UUID, FSAVAIL, FSUSE% i 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% /

Po uruchomieniu okazało się, że partycje główna i /boot mają xfs, a /boot/efi to vfat w wersji FAT16. Dysk nvme0n1 i nvme0n1p1 nie mają systemu plików, dlatego pozostały puste. UUID to unikalny numer nadawany każdemu systemowi plików; w /etc/fstab używa się go, aby wskazać partycję do zamontowania przez UUID zamiast nazwy urządzenia.

Do najdokładniejszego sprawdzania informacji o systemie plików służy polecenie blkid.

FSAVAIL i FSUSE% to wolne miejsce i procent zajętości zamontowanego systemu plików. Dla niezamontowanych partycji wartości się nie pojawiają. Polecenie df wyświetla tylko rozmiar i zajętość zamontowanych systemów plików. lsblk pokazuje dodatkowo strukturę dysków i partycji, niezależnie od tego, czy są zamontowane.

3️⃣ lsblk -o do wyboru kolumn i -b do bajtów

Jeśli po -o wpiszesz nazwy kolumn oddzielone przecinkami, pojawią się tylko te kolumny, w tej kolejności. Dostępne nazwy kolumn znajdują się na liście na końcu [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 wyświetla tylko jeden punkt montowania, a MOUNTPOINTS wszystkie, gdy ten sam system plików jest zamontowany w kilku miejscach. Aby dodać tylko jedną kolumnę za podstawowymi, wstaw + przed nazwą kolumny, jak w [-o +UUID].

-b wyświetla rozmiary jako liczby całkowite w bajtach. Przy porównywaniu na oko podstawowe jednostki są czytelniejsze, dlatego -b pasuje do skryptów, które obliczają lub porównują rozmiary.

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

G i M w podstawowym wyniku to jednostki 1024, dlatego dysk 80G pojawia się jako 85 899 345 920 bajtów.

4️⃣ lsblk -d do listy dysków i -p do pełnych ścieżek

Na serwerze z kilkoma dyskami wiersze partycji mieszają się i utrudniają odczytanie listy dysków, dlatego za pomocą -d pomija się partycje i wyświetla tylko wiersze dysków.

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

W wyniku został tylko jeden wiersz dysku nvme0n1, a cztery wiersze partycji pod nim się nie pojawiły.

Z -p przed nazwami urządzeń pojawia się /dev/ i są one wyświetlane jako pełne ścieżki. Te ścieżki można przekazać bez zmian innym poleceniom, takim jak 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 /

Tylko kolumna NAME zmienia się na pełne ścieżki, od /dev/nvme0n1 do /dev/nvme0n1p4, a pozostałe kolumny są takie same jak w podstawowym wyniku.

Jeśli jako argument podasz ścieżkę urządzenia, wyświetlone zostaną tylko to urządzenie i partycje pod nim; jeśli podasz ścieżkę partycji, pojawi się tylko wiersz tej partycji.

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

W wyniku pojawia się tylko jeden wiersz nvme0n1p4, bez wiersza dysku i znaków rozgałęzień. Po podaniu ścieżki nieistniejącego urządzenia pojawił się błąd [not a block device], a kod wyjścia wynosił 32.

5️⃣ Wynik i opcje polecenia lsblk do skryptów

Kusi, by w skryptach wycinać fragmenty podstawowego wyniku, ale układ kolumn podstawowego wyniku i -f może się w przyszłości zmienić, dlatego w skryptach kolumny podaje się samodzielnie za pomocą -o.

-n pomija wiersz nagłówka i wyświetla tylko wartości, więc pasuje, gdy potrzebna jest jedna wartość, na przykład typ systemu plików jednej partycji.

lsblk -no FSTYPE /dev/nvme0n1p4
xfs

Bez wiersza nagłówka pojawia się tylko jedno słowo, xfs, czyli typ systemu plików partycji głównej, więc można je od razu zapisać w zmiennej powłoki.

-P wyświetla każdą kolumnę w jednym wierszu w postaci [nazwa=”wartość”]. W util-linux 2.37 w AlmaLinux 9 samo dodanie -P zmienia nazwy tak, by łatwo było je odczytać jako zmienne powłoki, na przykład MAJ:MIN na MAJ_MIN i FSUSE% na FSUSE_PCT.

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

Trzy podane kolumny pojawiają się w jednym wierszu w kolejności NAME, FSTYPE, MOUNTPOINT. Wszystkie wartości są w cudzysłowach.

-J wyświetla wynik w formacie JSON. Bez -d partycje trafiają do tablicy children pod dyskiem. Razem z -b tylko size staje się liczbą, a inne kolumny rozmiaru, takie jak FSAVAIL, pozostają ciągami znaków.

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

Z -d tablica blockdevices zawiera tylko dysk, a tablica children się nie pojawia.

🔲 Opcje polecenia lsblk

OpcjaKopiujOpis
-e, --excludeWyklucza urządzenia o podanym numerze głównym. Po podaniu 7 urządzenia loop zostają pominięte.
-f, --fsWyświetla typ systemu plików, UUID, wolne miejsce i procent zajętości.
-o, --outputWyświetla po kolei tylko kolumny podane jako lista oddzielona przecinkami.
-b, --bytesWyświetla kolumnę SIZE jako liczby całkowite w bajtach.
-d, --nodepsPomija wiersze partycji i wyświetla tylko wiersze dysków.
-p, --pathsWyświetla nazwy urządzeń jako pełne ścieżki zaczynające się od /dev/.
-n, --noheadingsPomija wiersz nagłówka i wyświetla tylko wartości.
-P, --pairsWyświetla nazwy kolumn i wartości parami w jednym wierszu.
-J, --jsonWyświetla wynik w formacie JSON.
-a, --allWyświetla także puste urządzenia o rozmiarze 0.
OpcjaKopiujOpis
-I, --includeWyświetla tylko urządzenia o podanym numerze głównym.
-l, --listWyświetla wynik w formie listy zamiast drzewa.
-r, --rawWyświetla wynik w formacie raw, bez wyrównywania kolumn.
-i, --asciiWyświetla linie drzewa znakami ASCII.
-s, --inverseOdwraca zależności i wyświetla dyski pod partycjami.
-S, --scsiWyświetla tylko informacje o urządzeniach SCSI.
-t, --topologyWyświetla informacje o topologii, takie jak rozmiar sektora i planista we/wy.
-m, --permsWyświetla właściciela, grupę i uprawnienia urządzeń.
-x, --sortSortuje według podanej kolumny i wyświetla wynik w formie listy.
-O, --output-allWyświetla wszystkie dostępne kolumny.

🔲 Symulator polecenia lsblk

W symulatorze poniżej wpiszesz samodzielnie dotychczasowe polecenia i sprawdzisz, jak zmienia się wynik przy każdej opcji.

Symulator polecenia lsblkutil-linux 2.37.4
[root@server work]#
Klawiszami ↑↓ przywołasz wcześniej wpisane polecenia.

🔢 FAQ & polecane treści

Po uruchomieniu -f ze zwykłego konta UUID i FSAVAIL zostały wyświetlone tak samo jak z konta root. lsblk odczytuje informacje z sysfs i udev. Gdy informacje z udev są niedostępne, musi odczytać urządzenie bezpośrednio, a do tego potrzebne są uprawnienia root.

Tuż po dodaniu lub wymianie urządzenia udev mógł jeszcze nie zebrać wszystkich informacji, dlatego uruchom udevadm settle, a potem ponownie lsblk.

-a wyświetla także puste urządzenia o rozmiarze 0, dlatego używa się jej, aby sprawdzić, czy w podstawowym wyniku nie brakuje jakiegoś urządzenia. Na tym samym serwerze po dodaniu -a pojawił się jeszcze jeden wiersz: urządzenie loop o rozmiarze 0B, do którego nic nie było podłączone.

ℹ️ Informacja o linkach partnerskich
Treści tej witryny zawierają linki partnerskie. Jeśli odwiedzający kupi produkt lub usługę przez taki link, witryna otrzymuje od sprzedawcy prowizję. Kwota płacona przy tym przez kupującego (podczas promocji spada↓) nie wzrasta. Podane ceny, rabaty i dostępność odnoszą się do chwili pisania i mogą różnić się od stanu faktycznego, dlatego przed zakupem sprawdź je u sprzedawcy. Produkty wybieramy i oceniamy według własnych kryteriów, a prowizja nie wpływa ani na kolejność prezentacji, ani na treść ocen.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Wymagane pola są oznaczone *

Prove your humanity: 0   +   8   =