Пошук усіх пристроїв зберігання даних, приєднаних до машини Linux


32

У мене є потреба знайти всі записувані пристрої зберігання даних, приєднані до певної машини, незалежно від того, вони встановлені чи ні.

Дурним способом зробити це було б спробувати кожен запис, /devщо відповідає записуваним пристроям (hd * і sd *).

Чи є краще рішення чи я повинен дотримуватися цього?


переосмислюючи старе питання SO
warren

2
Можливо, ви хочете використовувати удиски?
derobert

Я не просто хочу знайти які жорсткі диски в системі - я шукаю всі пристрої зберігання даних
warren

Я думаю, що всі ми припускали жорсткі диски та подібне. Ти насправді маєш на увазі щось інше? Мовляв, чи слід включати стрічкові накопичувачі, принтери тощо?
derobert

2
@derobert - так, звідси назва "всіх пристроїв зберігання інформації" :)
warren

Відповіді:


47

Якщо вас цікавлять лише блокові пристрої зберігання даних, ви можете використовувати 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

Він добре піддається сценаріям з багатьма іншими наявними колонками.


13

Ви можете прослухати висновки lshwта витягнути деталі про пристрої класу diskабо tapeкласу (а може бути й інший - storageклас дає вам інформацію про контролери пам'яті, scsi, sata, sas тощо).

напр

lshw -class disk -class tape

Цей -shortпараметр дає хороший компактний підсумок. наприклад, на моєму домашньому сервері / робочій станції / експериментальному вікні zfsonlinux (на жаль, немає стрічкових пристроїв):

# lshw -класова стрічка -класовий диск -клас зберігання -короткий
Опис класу пристрою в / ч. Опис
===================================================== =======
/ 0/100/4/0 накопичувач JMB362 контролер SATA
/ 0/100/5/0 scsi10 накопичувач JMB362 контролер SATA
/0/100/5/0/0.0.0 / dev / sdc диск 120 Гб Patriot Wildfire
/ 0/100 / b / 0 сховище scsi1 SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd диск 1 Тб WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde диск 1 ТБ WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf диск 1 ТБ WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg диск 1 ТБ ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh диск 1 ТБ ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi диск 1 ТБ ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj диск 1 ТБ ST31000528AS
/ 0/100/11 scsi2 накопичувач SB7x0 / SB8x0 / SB9x0 контролер SATA [режим AHCI]
/ 0/100/11/0 / dev / sda диск 128 Гб Patriot Torqx 2
/ 0/100/11/1 / dev / sdb диск 1 ТБ ST31000528AS
/ 0/1 зберігання scsi11     
/0/1/0.0.0 / dev / sdk диск 1967 МБ SCSI диск
/0/1/0.0.1 / dev / sdl диск SCSI Disk
/0/1/0.0.2 / dev / sdm диск SCSI Disk
/0/1/0.0.3 / dev / sdn диск SCSI Disk
/ 0/2 сховища scsi66     
/0/2/0.0.0 / dev / sdo диск SCSI Disk
/ 0/3 зберігання scsi67     
/0/3/0.0.0 / dev / sdp диск 4057 Мб SCSI диск

Пристрої / 0/1 - це фактично зчитувач карток USB (до одного із слотів підключена карта пам'яті 2 Гб), а пристрій / 0/2 - це мій андроїд-телефон, підключений лише для зарядки. Пристрій 0/3 - це флеш-пам'ять 4 Гб.

lshwможе створювати звичайний текст, html, xml та json. Він також може скидати деталі апаратних засобів у формат бази даних sqlite.

Він упакований для debian та більшості інших дистрибутивів. Домашня сторінка та джерело - за адресою http://ezix.org/project/wiki/HardwareLiSter


5

Спробуйте скористатися цією командою

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

Він перерахує всі блоки пристроїв у вашій системі


5

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

Потім можна використовувати grepта awkдрукувати назви блокових пристроїв, які не читаються лише:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}

це велике розширення щодо попередньої відповіді
warren

4

lsblk відобразить список усіх блокових пристроїв зберігання даних.

fdisk -l буде перераховано всі розділи на всіх пристроях, перелічених у /proc/partitions

lshw -short дасть вам інформацію про все обладнання (крім, можливо, брандмауера) у системі.


3

Якщо, відповідно з вашим відповіддю на derobert, ви шукаєте що - то , що списки стрічкових накопичувачів і принтерів , ви можете бути зацікавлені в lsdev, lsusbі lspci.


Звичайно, це не вдасться знайти підключене до мережі сховище :-(
derobert

1
Потімfdisk -l
колони

2

Можна спробувати наступну команду:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq

1
що це робить і як це порівнюється з переліком класів блокових та стрічкових пристроїв з lshw?
n611x007

2

За допомогою 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 дає більше деталей для кожного диска.

FYI: на деяких дистрибутивах Linux, таких як Ubuntus 14.04 і новіших версій, hwinfo немає в офіційному сховищі .


0

Я виявив , що fdiskі lsblkне доступні у віртуальному терміналі для програми установки Debian. У цьому випадку я використовую blkid, який отримує UUID для блокових пристроїв зберігання даних.


-1

Якщо ви маєте на увазі пристрої RAID, тоді ви не зможете отримати правильний результат, використовуючи hdparm smartctl тощо, тому що такі інструменти шукають / dev, що є рівнем ОС, якщо ви хочете знати на рівні апаратного забезпечення, тоді вам потрібно мати інструмент, як 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

Наведені вище дані Дані запиту містять порядковий номер


-1

Ось пара команд, яку я використовував для пошуку локальної та спільної пам’яті.

Для місцевого зберігання

lsblk | grep -v '^loop'

Для спільного зберігання

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

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'

Навіщо повторно використовувати ті самі інструменти, які вже запропоновані (і прийняті) ще 6 років тому?
warren

Тому що ОС змінилася і тепер ви отримуєте багато loopі tmpfsрозділів. Тому краще очистити вихід, використовуючи grep, як зазначено вище.
Міан Асбат Ахмад

-3

Тут буде перераховано всі ваші диски та змонтовані диски:

$ df -h

5
Насправді, тут перелічені файлові системи…
HalosGhost
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.