ServerAID
Найти гайд, команду, тег… ⌘ K
Shell и скрипты

Команда lsblk в Linux: как посмотреть диски, разделы и точки монтирования

lsblk показывает все блочные устройства сервера деревом: диски, разделы, LVM-тома, шифрованные контейнеры и куда они смонтированы. Разбираем колонки вывода, флаг -f для файловых систем и UUID, свои наборы колонок через -o и типовые задачи — найти новый диск, собрать строку для fstab, понять структуру LVM.

lsblk — первая команда, которую набирают, подключив к серверу новый диск или разбираясь, куда делось место. Она читает информацию из sysfs, работает без root и показывает всю структуру хранилища деревом: диски, разделы, LVM-тома и точки монтирования.

Базовый вывод

lsblk
NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
sda           8:0    0 465,8G  0 disk
├─sda1        8:1    0     1G  0 part /boot/efi
├─sda2        8:2    0     2G  0 part /boot
└─sda3        8:3    0 462,8G  0 part
  └─vg0-root 252:0   0   100G  0 lvm  /
sdb           8:16   0   1,8T  0 disk
└─sdb1        8:17   0   1,8T  0 part /mnt/data
sr0          11:0    1  1024M  0 rom

Дерево читается сверху вниз: sda — физический диск, sda1sda3 — его разделы, vg0-root — логический том LVM внутри третьего раздела.

Что означают колонки:

Колонка Значение
NAME Имя устройства в /dev
MAJ:MIN Старший и младший номер устройства для ядра
RM Съёмное устройство: 1 — да (флешка, привод)
SIZE Размер
RO Только для чтения: 1 — да
TYPE Тип: disk, part, lvm, crypt, rom, loop
MOUNTPOINTS Куда смонтировано; пусто — не смонтировано

Типы устройств стоит различать: disk — физический носитель, part — раздел на нём, lvm — логический том, crypt — расшифрованный контейнер LUKS, loop — файл, подключённый как устройство (в Ubuntu это в основном snap-пакеты), rom — оптический привод.

Флаг -f: файловые системы и UUID

Самый полезный режим в повседневной работе:

lsblk -f
NAME        FSTYPE      FSVER LABEL  UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda
├─sda1      vfat        FAT32        A1B2-C3D4                             1004M     2% /boot/efi
├─sda2      ext4        1.0          8f3c...b21a                            1,4G    22% /boot
└─sda3      LVM2_member LVM2 001     kR3f...9dPz
  └─vg0-root ext4       1.0   root   3d9a...7c14                           62,3G    28% /
sdb
└─sdb1      xfs               data   b71e...02ff                            1,6T     8% /mnt/data

Здесь сразу видно тип файловой системы, метку, UUID и процент заполнения. Именно этот вывод нужен, чтобы прописать раздел в fstab — монтировать по UUID надёжнее, чем по имени /dev/sdb1, которое может измениться после перестановки дисков.

Скопировать UUID одной строкой:

lsblk -no UUID /dev/sdb1

Свои колонки через -o

Полный список доступных колонок:

lsblk --help | less

Часто нужные наборы:

# модель и серийный номер — чтобы найти нужный диск физически
lsblk -o NAME,SIZE,MODEL,SERIAL

# SSD или HDD: ROTA=1 означает вращающийся диск
lsblk -o NAME,SIZE,ROTA,TYPE,MOUNTPOINTS

# планировщик ввода-вывода и размер сектора
lsblk -o NAME,SCHED,PHY-SEC,LOG-SEC

# всё про монтирование
lsblk -o NAME,FSTYPE,LABEL,UUID,MOUNTPOINTS

Дополнить стандартный вывод, а не заменять его целиком, — флаг -O выводит все колонки, а --output-all то же самое:

lsblk -o +MODEL,SERIAL

Плюс перед списком означает «добавить к колонкам по умолчанию».

Остальные полезные флаги

lsblk -d                 # только диски, без разделов
lsblk -p                 # полные пути: /dev/sda1 вместо sda1
lsblk -a                 # включая пустые устройства
lsblk -m                 # владелец, группа и права на устройства
lsblk -t                 # топология: сектора, выравнивание, очередь
lsblk -S                 # только SCSI/SATA/NVMe-устройства с моделью и транспортом
lsblk -e 7               # исключить loop-устройства (major 7)
lsblk /dev/sdb           # только конкретное устройство с его разделами

Флаг -e 7 стоит запомнить: на Ubuntu Desktop вывод lsblk обычно завален десятками loop-устройств от snap-пакетов, и полезная информация в них тонет.

lsblk -e 7 -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS

Комбинация -p с -e 7 даёт готовые к копированию пути без мусора — удобно, когда следующей командой идёт mkfs или mount.

Находим новый диск

Типовая задача: к серверу подключили диск, нужно понять, как он называется и есть ли на нём данные.

lsblk -o NAME,SIZE,TYPE,FSTYPE,MOUNTPOINTS,MODEL

Новый диск отличается тем, что у него нет разделов и пустая колонка FSTYPE. Убедиться, что это действительно новое устройство, помогает журнал ядра:

sudo dmesg | tail -20
sudo journalctl -k --since "5 minutes ago"

Там видно, какое имя ядро присвоило устройству при подключении. Про работу с журналом подробно — в шпаргалке по journalctl.

Дальше диск размечают (fdisk, parted или GParted), создают файловую систему и монтируют:

sudo mkfs.ext4 -L data /dev/sdb1
sudo mkdir -p /mnt/data
sudo mount /dev/sdb1 /mnt/data
lsblk -f /dev/sdb

Последняя команда подтверждает, что файловая система создалась и раздел смонтирован.

Как читать имена устройств

Имя Что это
sda, sdb SATA/SAS/USB-диски: первый, второй
sda1, sda2 Разделы на первом диске
nvme0n1 NVMe-накопитель: контроллер 0, пространство имён 1
nvme0n1p1 Первый раздел на нём (у NVMe разделы через p)
vda, vdb Виртуальные диски (virtio) в KVM/QEMU
xvda Виртуальные диски в Xen, часто в облаках
dm-0 Устройство device-mapper: LVM или LUKS
loop0 Файл, подключённый как блочное устройство

Порядок букв sda/sdb не гарантирован между загрузками — он зависит от порядка инициализации контроллеров. Поэтому в fstab и в скриптах используют UUID или метку, а не имя устройства.

lsblk против других команд

Команда Что показывает Нужен root
lsblk Дерево устройств, разделы, точки монтирования нет
lsblk -f То же плюс ФС, метки, UUID, свободное место нет
df -h Занятое место по смонтированным ФС нет
blkid UUID и типы ФС списком да (для полного вывода)
fdisk -l Таблицы разделов, геометрия, тип таблицы да
parted -l То же, плюс работа с GPT да
mount Что и с какими опциями смонтировано нет

Практическое разделение: lsblk — увидеть структуру, df — узнать про место, fdisk/parted — менять разметку. Несмонтированный диск в df не появится вообще, поэтому «диска не видно» чаще всего означает, что смотрели не той командой.

Разобраться в слоях LVM удобнее всего именно lsblk: он показывает цепочку «раздел → группа томов → логический том» деревом, тогда как lvs и pvs дают плоские списки. Про сами тома — в статье про LVM.

lsblk в скриптах

Для машинной обработки есть JSON:

lsblk -J -o NAME,SIZE,TYPE,MOUNTPOINTS
# все несмонтированные разделы
lsblk -J -o NAME,TYPE,MOUNTPOINTS \
  | jq -r '.blockdevices[].children[]? | select(.type=="part" and .mountpoints[0]==null) | .name'

Для простых случаев хватает пар флагов -n (без заголовка) и -o (нужные колонки):

lsblk -dno NAME,SIZE          # список дисков с размерами
lsblk -no MOUNTPOINTS /dev/sdb1

Байты вместо человекочитаемых размеров — флаг -b, это важно при сравнении в скриптах:

lsblk -bdno SIZE /dev/sdb     # 2000398934016

Пример проверки, смонтирован ли раздел, — в связке с условиями bash:

if [ -z "$(lsblk -no MOUNTPOINTS /dev/sdb1)" ]; then
    echo "раздел не смонтирован"
fi

Частые вопросы

Чем lsblk отличается от fdisk -l?

lsblk показывает структуру блочных устройств деревом, включая LVM, LUKS и точки монтирования, и работает без root. fdisk -l показывает таблицы разделов и требует прав root, зато выводит тип таблицы (MBR/GPT), точные границы разделов и их идентификаторы.

Для «посмотреть, что есть и куда смонтировано» удобнее lsblk; для работы с самой разметкой — fdisk или parted.

Как узнать UUID раздела?

Командой lsblk -f — UUID выводится в отдельной колонке для всех устройств сразу. Для одного раздела: lsblk -no UUID /dev/sdb1.

Альтернатива — sudo blkid /dev/sdb1. UUID нужен для fstab: монтирование по нему не сломается, если диски поменяются местами.

Почему lsblk показывает много loop-устройств?

Это snap-пакеты: каждый смонтирован как отдельный образ через loop-устройство. На Ubuntu Desktop их бывает несколько десятков.

Скрыть их: lsblk -e 7. Устройства при этом никуда не деваются, просто не мешают читать вывод.

Диск подключён, но lsblk его не видит

Значит устройство не появилось на уровне ядра. Проверьте sudo dmesg | tail -20 — там будет видно, обнаружен ли носитель и не было ли ошибок.

Для горячего подключения помогает пересканирование шины: echo "- - -" | sudo tee /sys/class/scsi_host/host0/scan. Если и после этого пусто, проблема аппаратная — кабель, питание или сам контроллер.

Как посмотреть, SSD это или обычный диск?

Через колонку ROTA: lsblk -o NAME,SIZE,ROTA,TYPE. Значение 1 означает вращающийся диск (HDD), 0 — SSD или NVMe.

На виртуальных машинах значение может быть недостоверным: гипервизор часто отдаёт 1 независимо от реального носителя.

Что запомнить

  • lsblk показывает все блочные устройства деревом и не требует root — это первая команда при работе с дисками.
  • lsblk -f даёт файловые системы, метки и UUID; из неё берут UUID для fstab.
  • Имена sda/sdb не закреплены между загрузками — в конфигах используйте UUID или метку.
  • -e 7 убирает из вывода loop-устройства snap-пакетов, -p печатает полные пути, -d оставляет только диски.
  • Несмонтированный диск не виден в df — для полной картины смотрите именно lsblk.

Похожие материалы

Shell и скрипты

Как распаковать tar.gz в Linux через терминал: tar, zip, xz и другие форматы

Короткий ответ — tar -xzf archive.tar.gz. Дальше разбираем, что означает каждая буква, как распаковать в нужный каталог, посмотреть содержимое до распаковки, вытащить один файл из большого архива и не поймать «tar-бомбу», которая раскидает сотни файлов по текущему каталогу.

Редакция
Shell и скрипты

Команды vi в Linux: режимы, навигация, поиск и замена — шпаргалка

Начнём с главного: выйти из vi — это Esc, затем :q! без сохранения или :wq с сохранением. Дальше — рабочий минимум команд, которого хватает для правки конфигов на сервере: режимы, перемещение, удаление и вставка, поиск с заменой и трюк для сохранения файла, который открыли без sudo.

Редакция
Shell и скрипты

Как скопировать файл в Linux через терминал: cp, rsync и scp с примерами

Разбираем копирование в терминале: cp для файлов и каталогов, флаг -a для сохранения прав и симлинков, rsync для больших объёмов и докачки, scp для переноса на другой сервер. Плюс ловушки со слэшем в конце пути и скрытыми файлами, на которых теряют данные.

Редакция
Shell и скрипты

Как удалить файл или каталог в Linux через терминал: rm, rmdir и безопасные привычки

Разбираем удаление в терминале: rm для файлов, rmdir для пустых каталогов, rm -r для каталогов с содержимым. Отдельно — чем опасен rm -rf, как удалить файл со странным именем, почему после удаления не освободилось место и как настроить автоочистку старых логов.

Редакция