LinuxRuLinux без лишней теории
Диски и разделы

Посмотреть диски и разделы в Linux: lsblk, fdisk -l и проверка SMART

Редакция LinuxRu7 мин чтенияИнструкции

Посмотреть диски в Linux проще всего командой lsblk: она без sudo покажет дерево дисков, разделов и точек монтирования. Для таблицы разделов нужен sudo fdisk -l, для свободного места df -hT, для UUID blkid, а здоровье диска проверяет smartctl из пакета smartmontools.

Посмотреть диски и разделы в Linux: lsblk, fdisk -l и проверка SMART
Фото: Jacek Halicki, CC BY-SA 4.0, Wikimedia Commons
Содержание
  1. Имена дисков
  2. lsblk
  3. fdisk -l и parted
  4. df и место
  5. blkid и UUID
  6. Диск не виден
  7. Какая команда
  8. smartctl
  9. Частые вопросы

Как Linux называет диски: sda, nvme0n1, mmcblk0

Прежде чем смотреть вывод команд, надо понимать имена. Каждый диск и раздел в Linux представлен файлом в /dev:

  • /dev/sda, /dev/sdb - SATA-диски, SSD и HDD, а также USB-флешки и внешние диски. Разделы: sda1, sda2.
  • /dev/nvme0n1 - NVMe SSD. Разделы через букву p: nvme0n1p1, nvme0n1p2.
  • /dev/mmcblk0 - SD-карты и eMMC в ноутбуках и Raspberry Pi, разделы mmcblk0p1.
  • /dev/loop0 и дальше - не диски, а файлы-образы. Их много в Ubuntu из-за snap-пакетов.
  • /dev/zram0 - сжатая память под swap, тоже не физический диск.
  • /dev/mapper/... и /dev/dm-0 - логические устройства LVM и зашифрованные LUKS-разделы.

Буквы sda, sdb не закреплены за дисками: после перезагрузки или подключения флешки они могут поменяться местами. Поэтому в /etc/fstab и скриптах используют UUID, о нём ниже.

lsblk: дерево дисков и разделов одной командой

Команда lsblk из пакета util-linux есть в любом дистрибутиве и не требует sudo. Она показывает диски, разделы на них и куда они смонтированы, в виде дерева.

lsblk

Колонки по умолчанию: имя, номера устройства, съёмный ли (RM), размер, только чтение (RO), тип (disk, part, lvm, crypt, rom) и точки монтирования. Полезные варианты:

# файловые системы, метки, UUID, свободное место
lsblk -f
# только диски целиком, без разделов
lsblk -d
# свои колонки: модель, тип подключения, SSD или HDD
lsblk -d -o NAME,SIZE,MODEL,TRAN,ROTA
# спрятать loop-устройства snap (major-номер 7)
lsblk -e7
# вывод в JSON для скриптов
lsblk -J -o NAME,SIZE,FSTYPE,MOUNTPOINTS

Колонка ROTA отвечает на вопрос "SSD у меня или HDD": 1 значит вращающийся диск, 0 значит SSD или NVMe. TRAN показывает интерфейс: sata, nvme, usb. Если флешка видна в lsblk, но без разделов, она не размечена или повреждена, а если её нет совсем, проблема в подключении или в самом устройстве.

Полный список колонок выводит lsblk --help, а описание каждой есть в man-странице lsblk.

fdisk -l и parted -l: таблица разделов и размер сектора

lsblk не говорит, какая таблица разделов на диске и где именно начинается каждый раздел. Это показывает fdisk, и ему нужны права root:

sudo fdisk -l
# только один диск
sudo fdisk -l /dev/nvme0n1

В выводе ищите строки Disklabel type (gpt или dos, то есть MBR), Sector size и таблицу с колонками Start, End, Sectors, Size, Type. В колонке Type видно назначение: EFI System, Linux filesystem, Linux swap, Microsoft basic data. Так быстро находят раздел EFI при восстановлении загрузчика или Windows-раздел при установке второй системы.

Альтернатива с более понятным выводом:

sudo parted -l

Обе команды в режиме -l только читают. Но fdisk /dev/sda без ключа открывает редактор разметки, и там уже можно стереть таблицу разделов. Создание и изменение разделов разобрано в статье про разметку диска.

df: сколько места занято на смонтированных разделах

lsblk и fdisk видят все разделы, даже несмонтированные. df смотрит с другой стороны: только смонтированные файловые системы и сколько на них свободно.

# размеры в человеческом виде плюс тип ФС
df -hT
# без виртуальных tmpfs и devtmpfs
df -hT -x tmpfs -x devtmpfs
# конкретный каталог: на каком разделе он лежит
df -h /home
# закончились inode, хотя место есть
df -i

Если df показывает, что раздел заполнен на 100%, переходите к поиску крупных каталогов, это подробно описано в статье как освободить место на диске. На Btrfs цифры df бывают неточными из-за снимков и сжатия, там точнее sudo btrfs filesystem usage /. Для красивой цветной таблицы вместо df можно поставить duf.

blkid и findmnt: UUID, метки и точки монтирования

UUID - постоянный идентификатор файловой системы. Он не меняется, когда диски переставляют местами, поэтому его пишут в /etc/fstab.

sudo blkid
# только один раздел
sudo blkid /dev/sdb1
# короткий вывод, только UUID
sudo blkid -s UUID -o value /dev/sdb1

Без sudo blkid может показать устаревшие данные из кэша или ничего. Те же UUID без прав root даёт lsblk -f, а постоянные ссылки лежат в /dev/disk/by-uuid/ и /dev/disk/by-id/.

Посмотреть, что и с какими опциями смонтировано прямо сейчас:

findmnt
findmnt /home
findmnt -t ext4,btrfs

Как прописать раздел по UUID в автомонтирование, смотрите в статье про mount и fstab.

Новый диск не появился в lsblk: что проверить

Подключили второй SSD или внешний диск, а в lsblk пусто. Идём от железа к системе.

  1. Посмотрите сообщения ядра в момент подключения: sudo dmesg -w, затем вставьте USB-диск. Строки с usb, sd, nvme и I/O error скажут больше любой утилиты.
  2. Для USB проверьте, видит ли система само устройство: lsusb. Если диска нет и там, виноваты кабель, порт или питание. Внешним HDD на 2,5 дюйма часто не хватает тока от порта на передней панели.
  3. Для внутренних дисков загляните в настройки UEFI: виден ли диск там. NVMe-слот на некоторых платах делит линии с SATA-портами и отключает их.
  4. Если диск виден в lsblk, но без разделов, он новый и пустой. Его нужно разметить и отформатировать, после этого он появится в файловом менеджере.
  5. Диск есть, разделы есть, но в файловом менеджере не открывается: проверьте тип ФС в lsblk -f. Для NTFS после гибернации Windows монтирование бывает только для чтения, а для LUKS сначала нужен пароль.

Если раздел есть, но нет ни одной точки монтирования, его просто никто не смонтировал. Временно это делается командой sudo mount /dev/sdb1 /mnt.

Какая команда что показывает

КомандаНужен rootЧто показываетКогда применять
lsblkнетдерево дисков, разделов, LVM, LUKSпервый взгляд на систему
lsblk -fнетФС, метки, UUID, свободное местонайти нужный раздел
fdisk -lдатаблица разделов, секторы, типыразметка, EFI, загрузчик
df -hTнетзанятое и свободное местокончилось место
blkidжелательноUUID, PARTUUID, тип ФСправка fstab
findmntнетточки монтирования и опциипроверить, как смонтировано
smartctlдаздоровье диска, ошибки, наработкаподозрение на сбой диска

Из графических программ то же самое показывает GNOME Disks (пакет gnome-disk-utility) и KDE Partition Manager. В "Дисках" GNOME есть пункт SMART Data & Self-Tests, это обёртка над той же технологией.

smartctl: как проверить здоровье диска

SMART - система самодиагностики, встроенная в HDD и SSD. Читает её smartctl из пакета smartmontools, который по умолчанию обычно не установлен:

# Debian, Ubuntu
sudo apt install smartmontools
# Fedora
sudo dnf install smartmontools
# Arch
sudo pacman -S smartmontools

Дальше по шагам:

# какие диски видит smartctl
sudo smartctl --scan
# модель, серийный номер, включён ли SMART
sudo smartctl -i /dev/sda
# общий вердикт PASSED или FAILED
sudo smartctl -H /dev/sda
# все атрибуты и журнал ошибок
sudo smartctl -a /dev/sda
# NVMe-диск
sudo smartctl -a /dev/nvme0

Какие строки смотреть

Вердикт PASSED успокаивает слабо: диск может умирать и с ним. Для HDD и SATA SSD смотрите сырые значения (RAW_VALUE) атрибутов:

  • 5 Reallocated_Sector_Ct - переназначенные сектора. Ноль норма, растущее число - повод скопировать данные.
  • 197 Current_Pending_Sector и 198 Offline_Uncorrectable - сектора, которые не читаются. Любое ненулевое значение тревожно.
  • 199 UDMA_CRC_Error_Count - ошибки передачи. Чаще виноват кабель SATA или разъём, а не сам диск.

Для NVMe раздел другой: Percentage Used (износ по оценке производителя), Available Spare (резерв ячеек) и Media and Data Integrity Errors, где должен быть ноль.

Самотестирование

# короткий тест, пара минут
sudo smartctl -t short /dev/sda
# полный тест поверхности, часы на больших HDD
sudo smartctl -t long /dev/sda
# результат
sudo smartctl -l selftest /dev/sda

Тест идёт внутри диска в фоне, систему можно использовать. Для внешних USB-дисков часто нужен ключ типа моста: sudo smartctl -d sat -a /dev/sdb. Справка по опциям есть на сайте smartmontools.

Если атрибуты 5, 197 или 198 начали расти, не запускайте долгий тест и проверки файловой системы "на всякий случай". Сначала снимите копию важных данных: каждое лишнее чтение умирающего диска может стать последним. Для полной копии подходит rsync на другой носитель.

Чтобы не проверять вручную, включите службу наблюдения: sudo systemctl enable --now smartd. В Debian и Ubuntu она называется smartmontools. Служба периодически опрашивает диски и пишет предупреждения в системный журнал.

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

Как узнать, SSD у меня или HDD?

Выполните lsblk -d -o NAME,ROTA,MODEL. Значение ROTA 1 означает вращающийся HDD, 0 означает SSD или NVMe.

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

Это смонтированные образы snap-пакетов, физическими дисками они не являются. Скрыть их можно командой lsblk -e7.

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

lsblk работает без root и показывает структуру и точки монтирования. fdisk -l требует sudo и выводит таблицу разделов: тип GPT или MBR, секторы, типы разделов.

Как проверить NVMe SSD на ошибки?

Поставьте smartmontools и выполните sudo smartctl -a /dev/nvme0. Смотрите Percentage Used, Available Spare и Media and Data Integrity Errors.

smartctl пишет PASSED, значит диск исправен?

Не обязательно. Вердикт меняется только при выходе атрибутов за порог производителя. Смотрите сырые значения переназначенных и нечитаемых секторов.

Документация и источники

Читайте также

Команды проверены на актуальных версиях дистрибутивов на момент обновления. Перед изменением системных настроек сделайте резервную копию.