Прилагается все устройства хранения к машине Linux

Существует простой способ извлечь все блоки из a bar к a foo с sed:

sed -n '/bar/,/foo/p'

или с awk:

awk '/bar/, /foo/'

Если Вы хотите усечь блоки, это немного более сложно (в awk; в sed это намного более сложно). Вот решение:

awk -vmax_lines_per_chunk=100 '
    /bar/ {n=max_lines_per_chunk}
    /foo/ {if (n) print; n=0}
    n {--n; print}
'
32
03.10.2012, 19:51
12 ответов

Если Вы интересуетесь только устройствами блочной системы хранения, можно использовать lsblk от широко доступного пакета util-linux:

$ lsblk -o KNAME,TYPE,SIZE,MODEL
KNAME TYPE   SIZE MODEL
sda   disk 149.1G TOSHIBA MK1637GS
sda1  part  23.3G 
sda2  part    28G 
sda3  part  93.6G 
sda4  part   4.3G 
sr0   rom   1024M CD/DVDW TS-L632M

Это предоставляет себя хорошо сценариям со многими другими доступными столбцами.

47
27.01.2020, 19:37

Попробуйте эту команду

ls -l /dev /dev/mapper |grep '^b'

Это перечислит Вас всех блочные устройства в Вашей системе

5
27.01.2020, 19:37

Вы могли тралить через вывод lshw и извлечение детализирует об устройствах в disk или tape класс (и возможно другие - storage класс дает, Вы детализируете на контроллерах запоминающих устройств, scsi, sata, SAS, и т.д.).

например.

lshw -class disk -class tape

-short опция дает хорошую компактную сводку. например, на моем доме zfsonlinux server/workstation/experiment-box (никакие накопители на магнитной ленте, к сожалению):

# lshw -class tape -class disk -class storage -short
H/W path              Device      Class       Description
=========================================================
/0/100/4/0                        storage     JMB362 SATA Controller
/0/100/5/0            scsi10      storage     JMB362 SATA Controller
/0/100/5/0/0.0.0      /dev/sdc    disk        120GB Patriot Wildfire
/0/100/b/0            scsi1       storage     SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0      /dev/sdd    disk        1TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0      /dev/sde    disk        1TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0      /dev/sdf    disk        1TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0      /dev/sdg    disk        1TB ST31000528AS
/0/100/b/0/0.4.0      /dev/sdh    disk        1TB ST31000528AS
/0/100/b/0/0.5.0      /dev/sdi    disk        1TB ST31000528AS
/0/100/b/0/0.6.0      /dev/sdj    disk        1TB ST31000528AS
/0/100/11             scsi2       storage     SB7x0/SB8x0/SB9x0 SATA Controller [AHCI mode]
/0/100/11/0           /dev/sda    disk        128GB Patriot Torqx 2
/0/100/11/1           /dev/sdb    disk        1TB ST31000528AS
/0/1                  scsi11      storage     
/0/1/0.0.0            /dev/sdk    disk        1967MB SCSI Disk
/0/1/0.0.1            /dev/sdl    disk        SCSI Disk
/0/1/0.0.2            /dev/sdm    disk        SCSI Disk
/0/1/0.0.3            /dev/sdn    disk        SCSI Disk
/0/2                  scsi66      storage     
/0/2/0.0.0            /dev/sdo    disk        SCSI Disk
/0/3                  scsi67      storage     
/0/3/0.0.0            /dev/sdp    disk        4057MB SCSI Disk

/0/1 устройства являются на самом деле картридером USB (существует SD-карта на 2 ГБ, включенная к одному из слотов), и/0/2 устройство является моим телефоном на базе Android, включенным для зарядки только. 0/3 устройство является картой флэш-памяти с интерфейсом USB на 4 ГБ.

lshw может произвести простой текст, HTML, xml, и вывод json. Это может также вывести аппаратные детали в sqlite формат базы данных.

Это упаковывается для debian и большинства других дистрибутивов. Домашняя страница и источник по http://ezix.org/project/wiki/HardwareLiSter

13
27.01.2020, 19:37

Можно попробовать следующую команду:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
2
27.01.2020, 19:37
  • 1
    , что это делает и как это выдерживает сравнение со списком блочного устройства и классов накопителя на магнитной ленте с lshw? –  n611x007 10.09.2015, 10:46

Согласно Вашему ответу на derobert, при поиске чего-то, что перечисляет ленточные накопители и принтеры, можно интересоваться lsdev, lsusb и lspci.

3
27.01.2020, 19:37
  • 1
    Конечно, это не найдет сетевое хранилище данных :-( –  derobert 04.10.2012, 18:21
  • 2
    Затем fdisk -l –  colons 05.10.2012, 00:18

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

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

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
5
27.01.2020, 19:37

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

$ df -h
-3
27.01.2020, 19:37

lsblk выведет список всех блочных устройств хранения данных.

fdisk -l выведет список всех разделов на всех устройствах, перечисленных в /proc/partitions

lshw -short даст вам информацию обо всем оборудовании (кроме, возможно, firewire) в системе.

4
27.01.2020, 19:37

Вы можете использовать hwinfo для вывода списка всех дисков ( документация ).

hwinfo --block --short дает обзор:

disk:
  /dev/sdb             WDC WD3200AAKS-7
  /dev/sda             SAMSUNG HD103UJ
partition:
  /dev/sdb1            Partition
  /dev/sdb2            Partition
  /dev/sda1            Partition
cdrom:
  /dev/sr1             TSSTcorp DVD+-RW TS-H653B
  /dev/sr0             HL-DT-ST DVD-ROM GDRH20N

hwinfo --disk дает более подробную информацию для каждого диска.

К вашему сведению: в некоторых дистрибутивах Linux, таких как Ubuntus 14.04 и выше, hwinfo отсутствует в официальном репозитории .

2
27.01.2020, 19:37

Я обнаружил, что fdiskи lsblkнедоступны в виртуальном терминале для установщика Debian. В этом случае я использую blkid, который получает UUID для блочных устройств хранения.

0
27.01.2020, 19:37

Если вы имеете в виду устройства RAID, то вы не сможете получить правильный результат, используя hdparm smartctl и т. д., потому что такие инструменты ищут /dev, который является уровнем ОС, если вы хотите знать об аппаратном уровне, вам нужно иметь такой инструмент, как megacli, который я использовал для отладки с помощью megacli

    [root@ns3539186 ~]# /opt/megaraid/megacli -LDPDInfo -aAll |grep "Virtual Disks\|RAID Level\|State"
Number of Virtual Disks: 2
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Media Type: Solid State Device
Foreign State: None
Media Type: Solid State Device
RAID Level          : Primary-1, Secondary-0, RAID Level Qualifier-0
State               : Optimal
Foreign State: None
Foreign State: None

Получить серийный номер диска

[root@ns3539186 ~]# /opt/megaraid/megacli -PDList -aAll | egrep 'Slot\ Number|Device\ Id|Inquiry\ Data|Raw|Firmware\ state' | sed 's/Slot/\nSlot/g' |grep "Da                    ta\|Slot\|Raw"
Slot Number: 0
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402Z0480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 1
Raw Size: 447.130 GB [0x37e436b0 Sectors]
Inquiry Data: PHYS733402YV480BGN  INTEL SSDSC2KB480G7                     SCV10100
Slot Number: 2
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GJTYMB            HGST HUS726040ALA610                    A5GNT920
Slot Number: 3
Raw Size: 3.638 TB [0x1d1c0beb0 Sectors]
Inquiry Data: K3GHW57B            HGST HUS726040ALA610                    A5GNT920

В приведенном выше выводе данных запроса содержится серийный номер

0
27.01.2020, 19:37

Вот несколько команд, которые я использовал для поиска локального и общего хранилища.

Для локального хранения

lsblk | grep -v '^loop'

Для общего хранилища

findmnt -D | grep -v '^tmpfs' | grep -v '^/'

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'
-1
27.01.2020, 19:37

Теги

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