Команда 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 показывает значением 1 или 0, съёмное ли устройство, а RO — доступно ли оно только для чтения.
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 в базовом выводе — это единицы по 1024, поэтому диск 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 | Выводит сведения о топологии, например размер сектора и планировщик ввода-вывода. | |
| -m, --perms | Выводит владельца, группу и права доступа устройств. | |
| -x, --sort | Сортирует по указанному столбцу и выводит результат списком. | |
| -O, --output-all | Выводит все доступные столбцы. |
🔲 Симулятор команды lsblk
В симуляторе ниже вы можете сами ввести команды из статьи и проверить, как меняется вывод при каждой опции.
🔢 FAQ & рекомендуемые материалы
Linux · Swap
Настройка памяти подкачки (Swap Memory)
Как создать память подкачки в виде раздела или файла с помощью команд mkswap и swapon.
Linux · Диск
Команда dd в Linux
Базовое использование, опции и примеры команды dd, которая служит для клонирования дисков и разделов или создания файлов образов.
Диск · Понятие
Что такое сектор диска?
Объясняет базовое устройство жёсткого диска и то, что такое сектор диска — деление носителя на единицы фиксированного размера.
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.