Сделать список устройств lsblk по идентификатору

Имея UUID логического тома, узнайте, смонтирован ли он и где.

  1. Узнайте имя группы томов и имя логического тома:

sudo lvs -o vg_name,name,uuid

Это позволит получить список всех известных логических томов с их UUID, именами и именами содержащих их групп томов. Запомните 'vgname' и 'lvname', соответствующие данному UUID.

  1. Теперь перечислите все смонтированные файловые системы с поддержкой устройств и найдите свой логический том:

findmnt -l | grep ' /dev/\S\+'

Простой сценарий:

UUID='B3629a-B11c-4aec-bE1f-rUdk-a6d2-dd0a6bc'
LVName="$(
  sudo lvs -o vg_name,name,uuid |
  grep "$UUID" |
  sed -e 's/^\s*\(\S\+\)\s\+\(\S\+\).*/\1-\2/'
)"
if [ -z "$LVName" ] ; then
  echo "Cannot find logical volume with UUID=$UUID"
else
  MountPoint="$(
    findmnt -l |
    grep " /dev/mapper/$LVName" |
    awk '{ print $1 }'
  )"
  if [ -z "$MountPoint" ] ; then
    echo "Logical volume /dev/mapper/$LVName with UUID $UUID is not mounted"
  else
    echo "Logical volume /dev/mapper/$LVName with UUID $UUID is mounted on $MountPoint"
  fi
fi
2
23.08.2017, 14:28
2 ответа

Имена by -id состоят из модели привода вместе с серийным номером, который lsblkможет быть указан для перечисления:

lsblk -o name,model,serial

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

NAME   MODEL            SERIAL
sda    SAMSUNG HD203WI  S1UYJ1VZ500792                                       
├─sda1                  
└─sda9                  
sdb    ST500DM002-1BD14 W2APGFP8
├─sdb1                  
└─sdb9                  
sdc    ST500DM002-1BD14 W2APGFS0
├─sdc1                  
└─sdc9 

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

sudo lsblk -o name,size,fstype,label,model,serial,mountpoint

Результатом которого может быть:

NAME     SIZE FSTYPE            LABEL         MODEL            SERIAL          MOUNTPOINT
sda      1,8T zfs_member                      SAMSUNG HD203WI  S1UYJ1VZ500792
├─sda1   1,8T zfs_member        storage                                        /home    
└─sda9     8M zfs_member                                                       
sdb    465,8G btrfs                           ST500DM002-1BD14 W2APGFP8        
├─sdb1 465,8G btrfs                                                            
└─sdb9     8M btrfs                                                            
sdc    465,8G btrfs                           ST500DM002-1BD14 W2APGFS0        
├─sdc1 465,8G btrfs             rpool                                          /      
└─sdc9     8M btrfs 
5
27.01.2020, 21:58

Как указано здесь , идентификаторы устройств можно увидеть по ls -l /dev/disk/by-id.
Итак, ваша задача может быть выполнена, например. чем-то вроде:

lsblk |awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;gsub("[^[:alnum:]]","",dev);printf $0"\t\t";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'

или

lsblk -r|awk 'NR==1{print $0" DEVICE-ID(S)"}NR>1{dev=$1;printf $0" ";system("find /dev/disk/by-id -lname \"*"dev"\" -printf \" %p\"");print "";}'
4
27.01.2020, 21:58

Теги

Похожие вопросы