Linux. Команда lsblk
12.08.2023
Теги: CLI • Linux • БлочноеУстройство • Команда • ФайловаяСистема
Команда 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 • диск • раздел • Файловая система • Блочное устройство