Команда lsblk в Linux с практическими примерами

LinuxBeginner
Практиковаться сейчас

Введение

В этой лабораторной работе мы познакомимся с утилитой lsblk в Linux, которая отображает информацию обо всех доступных блочных устройствах в системе. К блочным устройствам относятся жесткие диски, SSD, USB-накопители и другие носители информации. Команда lsblk представляет эти данные в наглядном древовидном формате, что позволяет легко понять взаимосвязь между различными накопителями и их разделами.

Понимание устройства систем хранения данных жизненно важно для каждого, кто работает с Linux. Независимо от того, нужно ли вам найти свободное пространство, проверить размеры разделов или подтвердить точки монтирования, lsblk предлагает быстрый и эффективный способ получить эти данные.

К концу этой лабораторной работы вы научитесь использовать команду lsblk с различными ключами для получения детальной информации о накопителях в вашей системе Linux.

Шпаргалка по командам Linux

Базовое использование команды lsblk

На этом этапе вы воспользуетесь командой lsblk, чтобы вывести список доступных блочных устройств в вашей системе Linux. Блочные устройства — это накопители данных, такие как жесткие диски, SSD и USB-флешки.

Откройте терминал, если он еще не открыт. Затем выполните базовую команду lsblk:

lsblk

Вы должны увидеть примерно следующий вывод:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
loop0    7:0    0  55.5M  1 loop /snap/core18/2128
loop1    7:1    0  55.4M  1 loop /snap/core18/2284
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
sda      8:0    0   50G  0 disk
├─sda1   8:1    0   49G  0 part /
└─sda2   8:2    0  976M  0 part [SWAP]

Этот вывод отображает все блочные устройства системы и содержит следующие столбцы:

  • NAME: Имя устройства
  • MAJ:MIN: Старший и младший номера устройства
  • RM: Признак съемного устройства (1 означает съемное, 0 — несъемное)
  • SIZE: Размер устройства
  • RO: Признак только для чтения (1 — только чтение, 0 — чтение и запись)
  • TYPE: Тип устройства (диск, раздел, loop и т. д.)
  • MOUNTPOINT: Место монтирования устройства (если применимо)

В примере выше вы можете видеть:

  • Несколько устройств loop, используемых пакетами snap.
  • Основное устройство хранения sda (диск размером 50 ГБ).
  • Два раздела на диске sda: sda1 (смонтирован в корень /) и sda2 (используется как область подкачки swap).

Древовидная структура вывода позволяет легко понять, какие разделы какому диску принадлежат. Например, видно, что sda1 и sda2 являются разделами диска sda.

Теперь, когда вы поняли базовый вывод команды lsblk, давайте изучим полезные параметры на следующих шагах.

Отображение дополнительной информации с помощью lsblk

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

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

Ключ -f выводит сведения о файловых системах, включая их тип, метку (label), UUID и точку монтирования. Это особенно полезно, когда вам нужно идентифицировать устройства по их UUID или проверить используемые типы файловых систем.

Выполните следующую команду в терминале:

lsblk -f

Вы должны увидеть примерно следующий вывод:

NAME   FSTYPE   LABEL UUID                                 MOUNTPOINT
loop0  squashfs                                            /snap/core18/2128
loop1  squashfs                                            /snap/core18/2284
loop2  squashfs                                            /snap/snapd/15534
loop3  squashfs                                            /snap/gtk-common-themes/1535
loop4  squashfs                                            /snap/snapd/16292
sda
├─sda1 ext4           5fbb8eed-12a3-4b5c-9d67-9594ff4e2d1c /
└─sda2 swap           b409ae25-7589-44eb-a909-b56f1d42c5ab [SWAP]

Теперь вывод включает дополнительные столбцы:

  • FSTYPE: Тип файловой системы (ext4, swap, squashfs и т. д.)
  • LABEL: Метка файловой системы (если она была задана)
  • UUID: Уникальный универсальный идентификатор (Universal Unique Identifier) файловой системы

Использование параметра -m для просмотра владельца и прав доступа к устройствам

Параметр -m отображает информацию о правах доступа и владельце блочных устройств. Это пригодится при устранении неполадок, связанных с правами.

Выполните следующую команду:

lsblk -m

Результат будет выглядеть примерно так:

NAME   MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT OWNER GROUP MODE
loop0    7:0    0  55.5M  1 loop /snap/core18/2128 root  disk  brw-rw----
loop1    7:1    0  55.4M  1 loop /snap/core18/2284 root  disk  brw-rw----
loop2    7:2    0  43.6M  1 loop /snap/snapd/15534 root  disk  brw-rw----
loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535 root  disk  brw-rw----
loop4    7:4    0  31.1M  1 loop /snap/snapd/16292 root  disk  brw-rw----
sda      8:0    0   50G  0 disk            root  disk  brw-rw----
├─sda1   8:1    0   49G  0 part /          root  disk  brw-rw----
└─sda2   8:2    0  976M  0 part [SWAP]     root  disk  brw-rw----

Новые столбцы показывают:

  • OWNER: Пользователь-владелец устройства (обычно root)
  • GROUP: Группа-владелец устройства (обычно disk)
  • MODE: Права доступа к устройству

Использование параметра -o для выбора определенных столбцов вывода

Ключ -o позволяет явно указать, какие столбцы выводить на экран. Это удобно, если вам нужны только определенные данные, а вывод хочется сделать более чистым и сфокусированным.

Давайте выведем только имя, размер и точку монтирования:

lsblk -o NAME,SIZE,MOUNTPOINT

Вывод станет гораздо лаконичнее:

NAME    SIZE MOUNTPOINT
loop0  55.5M /snap/core18/2128
loop1  55.4M /snap/core18/2284
loop2  43.6M /snap/snapd/15534
loop3  61.9M /snap/gtk-common-themes/1535
loop4  31.1M /snap/snapd/16292
sda     50G
├─sda1   49G /
└─sda2  976M [SWAP]

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

Фильтрация блочных устройств с помощью lsblk

На этом этапе мы научимся ограничивать вывод команды lsblk и отображать информацию в различных форматах.

Отображение только устройств верхнего уровня

Параметр --nodeps (сокращенно -e заменен на -d) исключает зависимые устройства, такие как разделы. Это полезно, если вам нужен лаконичный обзор только основных дисков.

Выполните следующую команду:

lsblk --nodeps

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

NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
vda  253:0    0   40G  0 disk
vdb  253:16   0  100G  0 disk /etc/hosts

Исключение устройств по старшему номеру (Major Number)

Параметр --exclude (сокращенно -e) принимает список старших номеров устройств через запятую, которые нужно пропустить. Например, loop-устройства используют старший номер 7, поэтому следующая команда исключает их из вывода:

lsblk --exclude 7

Этот фильтр применяется к устройствам верхнего уровня, однако их дочерние разделы все равно могут отображаться в дереве.

Отображение путей к устройствам

Параметр --paths выводит полные пути к устройствам вместо их коротких имен. Это удобно, если вам нужно ссылаться на устройства в скриптах или других командах.

Выполните следующую команду:

lsblk --paths

В выводе появятся полные пути:

NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
/dev/loop0    7:0    0  55.5M  1 loop /snap/core18/2128
/dev/loop1    7:1    0  55.4M  1 loop /snap/core18/2284
/dev/loop2    7:2    0  43.6M  1 loop /snap/snapd/15534
/dev/loop3    7:3    0  61.9M  1 loop /snap/gtk-common-themes/1535
/dev/loop4    7:4    0  31.1M  1 loop /snap/snapd/16292
/dev/sda      8:0    0   50G  0 disk
├─/dev/sda1   8:1    0   49G  0 part /
└─/dev/sda2   8:2    0  976M  0 part [SWAP]

Вывод данных в формате JSON

Параметр --json форматирует вывод в виде JSON, что очень удобно для программной обработки или интеграции с другими инструментами.

Выполните следующую команду:

lsblk --json

Результат будет представлен в формате JSON:

{
  "blockdevices": [
    {
      "name": "loop0",
      "maj:min": "7:0",
      "rm": false,
      "size": "55.5M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2128"
    },
    {
      "name": "loop1",
      "maj:min": "7:1",
      "rm": false,
      "size": "55.4M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/core18/2284"
    },
    {
      "name": "loop2",
      "maj:min": "7:2",
      "rm": false,
      "size": "43.6M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/15534"
    },
    {
      "name": "loop3",
      "maj:min": "7:3",
      "rm": false,
      "size": "61.9M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/gtk-common-themes/1535"
    },
    {
      "name": "loop4",
      "maj:min": "7:4",
      "rm": false,
      "size": "31.1M",
      "ro": true,
      "type": "loop",
      "mountpoint": "/snap/snapd/16292"
    },
    {
      "name": "sda",
      "maj:min": "8:0",
      "rm": false,
      "size": "50G",
      "ro": false,
      "type": "disk",
      "children": [
        {
          "name": "sda1",
          "maj:min": "8:1",
          "rm": false,
          "size": "49G",
          "ro": false,
          "type": "part",
          "mountpoint": "/"
        },
        {
          "name": "sda2",
          "maj:min": "8:2",
          "rm": false,
          "size": "976M",
          "ro": false,
          "type": "part",
          "mountpoint": "[SWAP]"
        }
      ]
    }
  ]
}

Комбинирование параметров для точного контроля

Вы можете объединять несколько ключей, чтобы настроить вывод под конкретные требования. Например, исключим зависимые и loop-устройства, выведем полные пути и упакуем результат в JSON:

lsblk --nodeps --exclude 7 --paths --json

На выходе мы получим JSON-структуру оставшихся устройств верхнего уровня с их полными путями:

{
  "blockdevices": [
    {
      "name": "/dev/vda",
      "maj:min": "253:0",
      "rm": false,
      "size": "40G",
      "ro": false,
      "type": "disk"
    }
  ]
}

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

Продвинутое использование lsblk в практических сценариях

На этом этапе мы рассмотрим реальные сценарии, в которых команда lsblk оказывается незаменимой при администрировании систем и устранении неполадок.

Проверка использования диска и свободного пространства

Чтобы проверить заполненность дисков и объем свободного места, можно объединить lsblk с ключом -b (для отображения размеров в байтах) и выбрать определенные столбцы:

lsblk -b -o NAME,SIZE,FSAVAIL,FSUSE%,MOUNTPOINT

В результате выведется статистика использования дискового пространства:

NAME     SIZE FSAVAIL FSUSE% MOUNTPOINT
loop0  58195968        0     - /snap/core18/2128
loop1  58130432        0     - /snap/core18/2284
loop2  45719552        0     - /snap/snapd/15534
loop3  64897024        0     - /snap/gtk-common-themes/1535
loop4  32604160        0     - /snap/snapd/16292
sda   53687091200       -     -
├─sda1 52613349376 39128932352  26% /
└─sda2 1023410176        0     - [SWAP]

Значения в столбцах:

  • SIZE: Общий размер в байтах
  • FSAVAIL: Свободное место на файловой системе
  • FSUSE%: Процент занятого пространства файловой системы
  • MOUNTPOINT: Точка монтирования устройства

Идентификация USB-накопителей

Когда вы подключаете USB-флешку, вы можете быстро найти ее с помощью lsblk, отфильтровав устройства по признаку съемного носителя:

lsblk -o NAME,SIZE,TYPE,RM,MOUNTPOINT

В выводе ищите устройства, у которых значение столбца RM (removable) равно 1:

NAME   SIZE TYPE RM MOUNTPOINT
loop0  55.5M loop  0 /snap/core18/2128
loop1  55.4M loop  0 /snap/core18/2284
loop2  43.6M loop  0 /snap/snapd/15534
loop3  61.9M loop  0 /snap/gtk-common-themes/1535
loop4  31.1M loop  0 /snap/snapd/16292
sda     50G disk  0
├─sda1   49G part  0 /
└─sda2  976M part  0 [SWAP]

Если бы у вас был подключен USB-накопитель, он бы отобразился как дополнительный диск (например, sdb) со значением RM равным 1.

Поиск серийных номеров устройств

Для инвентаризации оборудования или устранения неполадок вам могут понадобиться серийные номера дисков. Команда lsblk умеет показывать и эту информацию:

lsblk -o NAME,SIZE,TYPE,SERIAL

Вывод будет содержать серийные номера для тех устройств, которые их предоставляют:

NAME   SIZE TYPE SERIAL
loop0  55.5M loop
loop1  55.4M loop
loop2  43.6M loop
loop3  61.9M loop
loop4  31.1M loop
sda     50G disk ABCD1234
├─sda1   49G part
└─sda2  976M part

Обратите внимание, что не все устройства передают серийный номер, а виртуальные накопители (например, loop-устройства) их обычно не имеют.

Анализ атрибутов производительности дисков

Для просмотра параметров геометрии и производительности диска можно использовать ключ --topology или -t:

lsblk --topology

Вывод включает топологические данные, такие как выравнивание (alignment) и оптимальный размер операций ввода-вывода (I/O):

NAME   ALIGNMENT MIN-IO OPT-IO PHY-SEC LOG-SEC ROTA SCHED     RQ-SIZE  RA WSAME
loop0          0    512      0     512     512    1 mq-deadline     256 128    0B
loop1          0    512      0     512     512    1 mq-deadline     256 128    0B
loop2          0    512      0     512     512    1 mq-deadline     256 128    0B
loop3          0    512      0     512     512    1 mq-deadline     256 128    0B
loop4          0    512      0     512     512    1 mq-deadline     256 128    0B
sda            0    512      0     512     512    1 mq-deadline     256 128    0B
├─sda1         0    512      0     512     512    1 mq-deadline     256 128    0B
└─sda2         0    512      0     512     512    1 mq-deadline     256 128    0B

Эта информация полезна при настройке производительности и решении проблем, связанных с дисковым вводом-выводом.

Эти практические примеры демонстрируют, насколько универсальна команда lsblk в повседневном администрировании систем. Освоив данные техники, вы сможете быстро собирать важные сведения о дисковой подсистеме вашей Linux-системы.

Резюме

В этой лабораторной работе мы изучили команду lsblk в Linux — мощный инструмент для перечисления и отображения информации о блочных устройствах системы. Мы рассмотрели несколько ключевых аспектов работы с утилитой:

  • Базовое использование lsblk для вывода древовидного списка всех блочных устройств.
  • Способы отображения дополнительных данных, включая детали файловых систем, владельцев/права доступа и выбор произвольных столбцов.
  • Методы фильтрации для фокусировки на определенных типах устройств или форматах вывода.
  • Сценарии продвинутого использования для задач системного администрирования.

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

Освоив команду lsblk, вы сможете эффективнее решать следующие задачи:

  • Идентифицировать накопители и управлять ими.
  • Контролировать использование дискового пространства и объем свободной памяти.
  • Диагностировать проблемы, связанные с хранением данных.
  • Документировать конфигурацию дисковой подсистемы системы.

Эти навыки служат прочным фундаментом для решения более сложных задач администрирования Linux, связанных с управлением дисковыми ресурсами.

Шпаргалка по командам Linux