Linux. Команда lsblk

12.08.2023

Теги: CLILinuxБлочноеУстройствоКомандаФайловаяСистема

Команда lsblk позволяет получить информацию о блочных устройствах. Блочное устройство — это термин для обозначения устройства хранения данных, которое считывает или записывает данные в блоках определенного размера. Этот термин относится почти к каждому типу энергонезависимой памяти, в том числе к жестким дискам (HDD), твердотельным накопителям (SSD), флэш-памяти и так далее.

Блочные устройства

Наиболее известным блочным устройством, вероятно, будет первый диск IDE в системе, который будет называться /dev/hda. Если в системе есть SCSI диски, то первый из них будет называться /dev/sda. Как нетрудно догадаться, второй IDE диск будет называться /dev/hdb, второй SCSI диск — /dev/sdb.

Блочные устройства представляют абстрактный интерфейс к диску. Пользовательские программы могут использовать эти блочные устройства для взаимодействия с диском, не беспокоясь о том, что у вас за диски — IDE, SCSI или какие-то другие. Программы могут легко адресовать место на диске, как последовательность блоков по 512 байт с произвольным доступом.

Разделы диска

В Linux файловые системы создаются с помощью команды mkfs, указывая в качестве аргумента конкретное блочное устройство.

Хотя возможно использовать блочные устройства, представляющие весь диск целиком, такие как /dev/hda или /dev/sda, для единственной файловой системы, это редко применяется на практике. Вместо этого дисковые блочные устройства разделяются на более удобные блочные устройства меньшего размера, называемые разделами.

Таблица разделов определяет, как именно разбито пространство на целом диске. На данный момент существует два стандарта таблицы разделов — MBR (основная загрузочная запись) и GPT (таблица разделов GUID). MBR был первым стандартом, на смену которому приходит GPT. MBR имеет ограничение в том, что позволяет конфигурировать не более четырех основных разделов и максимальный размер раздела не может превышать 2TB.

Для таблиц типа MBR существует три вида разделов — основной, расширенный и логический. Для MBR возможно создать только четыре основных раздела, поэтому, если необходимо создать более четырех разделов, то один из основных разделов необходимо определить в качестве расширенного. Расширенный раздел является, по сути, контейнером для одного или нескольких логических разделов, и к тому же диск может содержать только один расширенный раздел.

Что же касается таблицы разделов типа GPT, то ограничений на размер и количество разделов практически нет.

Команда lsblk

Команда lsblk позволяет получить информацию о блочных устройствах. У меня виртуальная машина с тремя SCSI дисками — sda, sdb и sdc.

$ lsblk
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
sda      8:0    0   25G  0 disk 
├─sda1   8:1    0    1M  0 part 
├─sda2   8:2    0  513M  0 part /boot/efi
└─sda3   8:3    0 24,5G  0 part /
sdb      8:16   0    8G  0 disk 
├─sdb1   8:17   0    2G  0 part 
├─sdb2   8:18   0    2G  0 part 
├─sdb3   8:19   0    2G  0 part 
└─sdb4   8:20   0    2G  0 part 
sdc      8:32   0    8G  0 disk 
├─sdc1   8:33   0    4G  0 part 
└─sdc2   8:34   0    4G  0 part 
sr0     11:0    1 1024M  0 rom 

Можно получить информацию об отдельном диске, если передавть его в качестве аргумента

$ lsblk /dev/sdb
NAME   MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sdb      8:16   0   8G  0 disk 
├─sdb1   8:17   0   2G  0 part 
├─sdb2   8:18   0   2G  0 part 
├─sdb3   8:19   0   2G  0 part 
└─sdb4   8:20   0   2G  0 part

Опция -f или --fs позволяет добавить в вывод информацию о файловых системах

$ lsblk -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1                                                                        
├─sda2 vfat   FAT32       2773-7D34                             505,9M     1% /boot/efi
└─sda3 ext4   1.0         9a23a2d1-3f1d-4edd-839b-ab543af19da7   13,6G    38% /
sdb
├─sdb1 ext4   1.0         c2cc3e46-5706-4fb9-a75c-543b3817cc6a
├─sdb2 vfat   FAT32       2706-CF3B
├─sdb3 xfs                4579e138-dabf-4358-990d-714645868beb
└─sdb4 btrfs              b1b2dbc2-d138-4a66-820e-6cf0696ebd64
sdc
├─sdc1 ext4   1.0         4082e045-1810-4d2d-91d9-76e5b5b2fe35
└─sdc2 ext4   1.0         a58d3a08-51f2-400a-8a71-c07079d9b735
sr0 

Опция -o или --output позволяет задать столбцы таблицы для вывода

$ lsblk -o NAME,SIZE,TYPE,MOUNTPOINTS,MODEL,SERIAL
NAME    SIZE TYPE MOUNTPOINTS MODEL         SERIAL
sda      25G disk             VBOX HARDDISK VB9b4d2f1b-b3b1a502
├─sda1    1M part                           
├─sda2  513M part /boot/efi                 
└─sda3 24,5G part /                         
sdb       8G disk             VBOX HARDDISK VB9f5abf94-5e1aad03
├─sdb1    2G part                           
├─sdb2    2G part                           
├─sdb3    2G part                           
└─sdb4    2G part                           
sdc       8G disk             VBOX HARDDISK VBb8b60e50-7cfcfcec
├─sdc1    4G part                           
└─sdc2    4G part                           
sr0    1024M rom              VBOX CD-ROM   VB2-01700376

Кроме перечисления столбцов можно указать — какие столбцы добавить

$ lsblk -o +MODEL,SERIAL
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS MODEL         SERIAL
sda      8:0    0   25G  0 disk             VBOX HARDDISK VB9b4d2f1b-b3b1a502
├─sda1   8:1    0    1M  0 part                           
├─sda2   8:2    0  513M  0 part /boot/efi                 
└─sda3   8:3    0 24,5G  0 part /                         
sdb      8:16   0    8G  0 disk             VBOX HARDDISK VB9f5abf94-5e1aad03
├─sdb1   8:17   0    2G  0 part                           
├─sdb2   8:18   0    2G  0 part                           
├─sdb3   8:19   0    2G  0 part                           
└─sdb4   8:20   0    2G  0 part                           
sdc      8:32   0    8G  0 disk             VBOX HARDDISK VBb8b60e50-7cfcfcec
├─sdc1   8:33   0    4G  0 part                           
└─sdc2   8:34   0    4G  0 part                           
sr0     11:0    1 1024M  0 rom              VBOX CD-ROM   VB2-01700376

Доступные столбцы можно посмотреть в справке по команде, это опция --help

$ lsblk --help
Использование:
 lsblk [параметры] [<устройство> ...]

Вывести информацию о блочных устройствах.

Параметры:
 -D, --discard        print discard capabilities
 -E, --dedup <column> de-duplicate output by <column>
 -I, --include <list> show only devices with specified major numbers
 -J, --json           использовать для вывода формат JSON
 -O, --output-all     выводить все столбцы
 -P, --pairs          выводить в формате ключ="значение"
 -S, --scsi           вывести информацию об устройствах SCSI
 -T, --tree[=<column>] use tree format output
 -a, --all            показать все устройства
 -b, --bytes          вывести столбец SIZE в байтах, а не в удобочитаемом формате
 -d, --nodeps         don't print slaves or holders
 -e, --exclude <list> exclude devices by major number (default: RAM disks)
 -f, --fs             показать информацию о файловых системах
 -i, --ascii          использовать только ASCII-символы
 -l, --list           показать данные в виде списка
 -M, --merge          group parents of sub-trees (usable for RAIDs, Multi-path)
 -m, --perms          показать информацию о разрешениях
 -n, --noheadings     не выводить заголовки
 -o, --output <список>  выводимые столбцы
 -p, --paths          печатать полный путь к устройству
 -r, --raw            выводить в "сыром" формате
 -s, --inverse        inverse dependencies
 -t, --topology       вывести информацию о топологии
 -w, --width <num>    specifies output width as number of characters
 -x, --sort <столбец> сортировать вывод по <столбцу>
 -z, --zoned          print zone model
     --sysroot <dir>  use specified directory as system root

 -h, --help           показать эту справку
 -V, --version        показать версию

Доступные столбцы вывода:
         NAME  имя устройства
        KNAME  internal kernel device name
         PATH  path to the device node
      MAJ:MIN  старший:младший номер устройства
      FSAVAIL  доступный размер файловой системы
       FSSIZE  размер файловой системы
       FSTYPE  тип файловой системы
       FSUSED  использованный размер файловой системы
       FSUSE%  использование файловой системы в процентах
      FSROOTS  mounted filesystem roots
        FSVER  filesystem version
   MOUNTPOINT  куда примонтировано устройство
  MOUNTPOINTS  all locations where device is mounted
        LABEL  МЕТКА файловой системы
         UUID  UUID файловой системы
       PTUUID  partition table identifier (usually UUID)
       PTTYPE  partition table type
     PARTTYPE  partition type code or UUID
 PARTTYPENAME  partition type name
    PARTLABEL  МЕТКА раздела
     PARTUUID  UUID раздела
    PARTFLAGS  флаги разделов
           RA  read-ahead of the device
           RO  устройство только для чтения
           RM  съёмное устройство
      HOTPLUG  съемное устройство или устройство с горячим подключением (usb, pcmcia, ...)
        MODEL  идентификатор устройства
       SERIAL  серийный номер диска
         SIZE  размер устройства
        STATE  состояние устройства
        OWNER  имя пользователя
        GROUP  название группы
         MODE  device node permissions
    ALIGNMENT  смещение выравнивания
       MIN-IO  минимальный размер I/O
       OPT-IO  оптимальный размер I/O
      PHY-SEC  размер физического сектора
      LOG-SEC  размер логического сектора
         ROTA  вращающееся устройство
        SCHED  имя планировщика I/O
      RQ-SIZE  запросить размер очереди
         TYPE  тип устройства
     DISC-ALN  discard alignment offset
    DISC-GRAN  discard granularity
     DISC-MAX  discard max bytes
    DISC-ZERO  discard zeroes data
        WSAME  write same max bytes
          WWN  уникальный идентификатор хранилища
         RAND  добавляет случайное значение
       PKNAME  internal parent kernel device name
         HCTL  Host:Channel:Target:Lun для SCSI
         TRAN  device transport type
   SUBSYSTEMS  de-duplicated chain of subsystems
          REV  ревизия устройства
       VENDOR  производитель устройства
        ZONED  zone model
          DAX  dax-capable device

Постоянные имена

В процессе загрузки Linux дисковые устройства распознаются ядром и доступны через файл блочного устройства, находящийся в каталоге /dev. Если в систему будет добавлен новый диск, имя виртуального устройства, назначенное физическому устройству, также может измениться, что приведет к проблемам загрузки.

Чтобы избежать этой проблемы, в набор компонент Systemd в ​​Linux был добавлен модуль udev для управления как постоянными, так и непостоянными именами устройств. Во многих дистрибутивах Linux каталог /dev является временной файловой системой, которая создается udev при каждой загрузке системы.

В дополнение к непостоянным именам виртуальных устройств, таким как /dev/sda, модуль udev создает постоянные имена устройств, такие как /dev/disk/by-id или /dev/disk/by-uuid. Это могут быть уникальные UUID-номера или строки, сгенерированные из комбинаций названия производителя жесткого диска и серийных номеров.

Обращаясь к устройствам, использующим постоянные имена устройств, можно избежать проблем с загрузкой и настройкой операционной системы при перезагрузке серверов и смене непостоянных имен. Важный момент — UUID назначаются при создании файловой системы, то есть UUID не существует до момента форматирования.

Существует четыре различных схемы постоянного именования: по метке by-label, по идентификатору by-uuid, по идентификатору by-id и по пути by-path. Для дисков с таблицей разделов GPT могут использоваться две дополнительные схемы — by-partlabel и by-partuuid.

$ ls -la /dev/disk
итого 0
drwxr-xr-x  7 root root  140 авг 12 12:00 .
drwxr-xr-x 19 root root 4260 авг 12 12:00 ..
drwxr-xr-x  2 root root  300 авг 12 14:18 by-id
drwxr-xr-x  2 root root  100 авг 12 13:50 by-partlabel
drwxr-xr-x  2 root root  220 авг 12 14:18 by-partuuid
drwxr-xr-x  2 root root  560 авг 12 14:18 by-path
drwxr-xr-x  2 root root  200 авг 12 14:18 by-uuid

Схема постоянного именования по идентификатору by-id

$ ls -la /dev/disk/by-id
итого 0
drwxr-xr-x 2 root root 300 авг 12 14:18 .
drwxr-xr-x 7 root root 140 авг 12 12:00 ..
lrwxrwxrwx 1 root root   9 авг 12 12:00 ata-VBOX_CD-ROM_VB2-01700376 -> ../../sr0
lrwxrwxrwx 1 root root   9 авг 12 12:00 ata-VBOX_HARDDISK_VB9b4d2f1b-b3b1a502 -> ../../sda
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9b4d2f1b-b3b1a502-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9b4d2f1b-b3b1a502-part2 -> ../../sda2
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9b4d2f1b-b3b1a502-part3 -> ../../sda3
lrwxrwxrwx 1 root root   9 авг 12 12:00 ata-VBOX_HARDDISK_VB9f5abf94-5e1aad03 -> ../../sdb
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9f5abf94-5e1aad03-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9f5abf94-5e1aad03-part2 -> ../../sdb2
lrwxrwxrwx 1 root root  10 авг 12 14:18 ata-VBOX_HARDDISK_VB9f5abf94-5e1aad03-part3 -> ../../sdb3
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VB9f5abf94-5e1aad03-part4 -> ../../sdb4
lrwxrwxrwx 1 root root   9 авг 12 12:00 ata-VBOX_HARDDISK_VBb8b60e50-7cfcfcec -> ../../sdc
lrwxrwxrwx 1 root root  10 авг 12 12:00 ata-VBOX_HARDDISK_VBb8b60e50-7cfcfcec-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  10 авг 12 13:50 ata-VBOX_HARDDISK_VBb8b60e50-7cfcfcec-part2 -> ../../sdc2

Схема постоянного именования по идентификатору by-uuid

$ ls -la /dev/disk/by-uuid
итого 0
drwxr-xr-x 2 root root 200 авг 12 14:18 .
drwxr-xr-x 7 root root 140 авг 12 12:00 ..
lrwxrwxrwx 1 root root  10 авг 12 12:00 2706-CF3B -> ../../sdb2
lrwxrwxrwx 1 root root  10 авг 12 12:00 2773-7D34 -> ../../sda2
lrwxrwxrwx 1 root root  10 авг 12 12:00 4082e045-1810-4d2d-91d9-76e5b5b2fe35 -> ../../sdc1
lrwxrwxrwx 1 root root  10 авг 12 14:18 4579e138-dabf-4358-990d-714645868beb -> ../../sdb3
lrwxrwxrwx 1 root root  10 авг 12 12:00 9a23a2d1-3f1d-4edd-839b-ab543af19da7 -> ../../sda3
lrwxrwxrwx 1 root root  10 авг 12 13:50 a58d3a08-51f2-400a-8a71-c07079d9b735 -> ../../sdc2
lrwxrwxrwx 1 root root  10 авг 12 12:00 b1b2dbc2-d138-4a66-820e-6cf0696ebd64 -> ../../sdb4
lrwxrwxrwx 1 root root  10 авг 12 12:00 c2cc3e46-5706-4fb9-a75c-543b3817cc6a -> ../../sdb1

Схема постоянного именования по пути by-path

$ ls -la /dev/disk/by-path
итого 0
drwxr-xr-x 2 root root 560 авг 13 09:17 .
drwxr-xr-x 7 root root 140 авг 13 09:17 ..
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:01.1-ata-2 -> ../../sr0
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:01.1-ata-2.0 -> ../../sr0
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-1 -> ../../sda
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-1.0 -> ../../sda
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1.0-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1.0-part2 -> ../../sda2
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1.0-part3 -> ../../sda3
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1-part1 -> ../../sda1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1-part2 -> ../../sda2
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-1-part3 -> ../../sda3
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-2 -> ../../sdb
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-2.0 -> ../../sdb
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2.0-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2.0-part2 -> ../../sdb2
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2.0-part3 -> ../../sdb3
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2.0-part4 -> ../../sdb4
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2-part1 -> ../../sdb1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2-part2 -> ../../sdb2
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2-part3 -> ../../sdb3
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-2-part4 -> ../../sdb4
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-3 -> ../../sdc
lrwxrwxrwx 1 root root   9 авг 13 09:17 pci-0000:00:0d.0-ata-3.0 -> ../../sdc
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-3.0-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-3.0-part2 -> ../../sdc2
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-3-part1 -> ../../sdc1
lrwxrwxrwx 1 root root  10 авг 13 09:17 pci-0000:00:0d.0-ata-3-part2 -> ../../sdc2

Просмотр by-label (нужно назначить метки файловым системам), by-uuid и частично by-id с помощью lsblk

$ lsblk -o +LABEL,UUID,SERIAL
NAME   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS LABEL   UUID                                 SERIAL
sda      8:0    0   25G  0 disk                                                          VB9b4d2f1b-b3b1a502
├─sda1   8:1    0    1M  0 part                                                          
├─sda2   8:2    0  513M  0 part /boot/efi           2773-7D34                            
└─sda3   8:3    0 24,5G  0 part /                   9a23a2d1-3f1d-4edd-839b-ab543af19da7 
sdb      8:16   0    8G  0 disk                                                          VB9f5abf94-5e1aad03
├─sdb1   8:17   0    2G  0 part                     c2cc3e46-5706-4fb9-a75c-543b3817cc6a 
├─sdb2   8:18   0    2G  0 part                     2706-CF3B                            
├─sdb3   8:19   0    2G  0 part                     4579e138-dabf-4358-990d-714645868beb 
└─sdb4   8:20   0    2G  0 part                     b1b2dbc2-d138-4a66-820e-6cf0696ebd64 
sdc      8:32   0    8G  0 disk                                                          VBb8b60e50-7cfcfcec
├─sdc1   8:33   0    4G  0 part             fs_sdc1 4082e045-1810-4d2d-91d9-76e5b5b2fe35 
└─sdc2   8:34   0    4G  0 part             fs_sdc2 a58d3a08-51f2-400a-8a71-c07079d9b735 
sr0     11:0    1 1024M  0 rom                                                           VB2-01700376

Посмотрим вывод команды lsblk для отображения текущего именования

$ lsblk -f
NAME   FSTYPE FSVER LABEL UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
sda                                                                           
├─sda1                                                                        
├─sda2 vfat   FAT32       2773-7D34                             505,9M     1% /boot/efi
└─sda3 ext4   1.0         9a23a2d1-3f1d-4edd-839b-ab543af19da7   13,6G    38% /
sdb
├─sdb1 ext4   1.0         c2cc3e46-5706-4fb9-a75c-543b3817cc6a
├─sdb2 vfat   FAT32       2706-CF3B
├─sdb3 xfs                4579e138-dabf-4358-990d-714645868beb
└─sdb4 btrfs              b1b2dbc2-d138-4a66-820e-6cf0696ebd64
sdc
├─sdc1 ext4   1.0         4082e045-1810-4d2d-91d9-76e5b5b2fe35
└─sdc2 ext4   1.0         a58d3a08-51f2-400a-8a71-c07079d9b735
sr0 

Поиск: CLI • Linux • Команда • lsblk • диск • раздел • Файловая система • Блочное устройство

Каталог оборудования
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Производители
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Функциональные группы
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.