Exibição de dispositivos de bloco físico

0

Eu preciso listar todos os dispositivos de bloco instalados no meu sistema. Existe um comando chamado lsblk para mostrar todos os dispositivos de bloco.

[kni@hist ttyid:0 pią kwi 13 17:56:26 ~]$ lsblk 
NAME                   MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                      8:0    0   16G  0 disk 
├─sda1                   8:1    0    1G  0 part /boot
└─sda2                   8:2    0 13,5G  0 part 
  ├─fedora_211829-root 253:0    0   10G  0 lvm  /
  ├─fedora_211829-swap 253:1    0  1,5G  0 lvm  [SWAP]
  └─fedora_211829-home 253:2    0    2G  0 lvm  /home
sr0                     11:0    1 55,3M  0 rom  /run/media/kni/VBox_GAs_5.2
[knis@hist ttyid:0 pią kwi 13 17:56:31 ~]$ 

Este é o resgate do comando lsblk executado no meu sistema. O disco sda é o único dispositivo físico no meu sistema? Partições e lvm são partes lógicas do disco. Estou certo?

Existe outra maneira de imprimir dispositivos de bloco físico?

    
por Iomanip 13.04.2018 / 18:01

3 respostas

1

Obter informações (sem partições):

$ lsblk -a -d
NAME MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda    8:0    0   20G  0 disk
sdb    8:16   0   40G  0 disk
sr0   11:0    1 55.3M  0 rom

-a       print even empty devices (if disk is not loaded in CD/DVD device)
-d       discard print slaves
    
por 13.04.2018 / 18:31
1

Supondo que você realmente queira ver dispositivos físicos , e não apenas todos os dispositivos de bloco:

Minha recomendação será:

lsblk -a -d -e 230

Por quê?

Vamos revisar o que essas opções de linha de comando fazem, na página man:

       -a, --all
              Also list empty devices.  (By default they are skipped.)

Estranhamente, lsblk mostra o gravador de DVD do meu laptop mesmo quando está vazio, sem -a . Mas não parece doer nada para deixá-lo presente.

       -d, --nodeps
              Do not print holder  devices  or  slaves.   For  example,  lsblk
              --nodeps /dev/sda prints information about the sda device only.

Isso significa que não vemos partições em um dispositivo, apenas o próprio dispositivo.

       -e, --exclude list
              Exclude  the  devices  specified  by the comma-separated list of
              major  device  numbers.   Note  that  RAM  disks  (major=1)  are
              excluded  by  default.   The  filter is applied to the top-level
              devices only.

Por fim, uso -e 230 para excluir zvols do ZFS, que usam esse número principal. Eles são dispositivos de bloco totalmente lógicos, mas o driver do ZFS faz com que eles apareçam em lsblk da mesma forma que os dispositivos de disco físico. Se você usar o ZFS, poderá excluir zvols da exibição com -e 230 .

[root@dalaran ~]# lsblk -a -d -e 230
NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 894.3G  0 disk 
sr0      11:0    1  1024M  0 rom  
nvme0n1 259:0    0   477G  0 disk 

Eu faço não recomendo usar a opção -S , pois isso fará com que dispositivos NVMe não sejam exibidos.

Existem várias outras opções na página lsblk man, que permitem tornar a saída mais legível por máquina, caso você queira escrever um script de shell. Por exemplo, -n e -o ou -P .

    
por 13.04.2018 / 19:09
0
ls -l /sys/block/ | awk '$11 != "" && $11 !~ "^../devices/virtual" { print $9; }
    
por 13.04.2018 / 20:00