Znajdowanie wszystkich urządzeń pamięci masowej podłączonych do komputera z systemem Linux

32

Muszę znaleźć wszystkie zapisywalne urządzenia pamięci masowej podłączone do danego komputera, niezależnie od tego, czy są zamontowane.

Niedokładnym sposobem na to byłoby wypróbowanie każdego wpisu, /devktóry odpowiada zapisywalnym urządzeniom (hd * i sd *).

Czy istnieje lepsze rozwiązanie, czy powinienem trzymać się tego?

królikarnia
źródło
ponownie zadając stare pytanie SO
warren
2
Być może chcesz użyć udisk?
derobert
Nie chcę tylko dowiedzieć się, jakie dyski twarde znajdują się w systemie - szukam wszystkich urządzeń pamięci masowej
warren
Myślę, że wszyscy założyliśmy dyski twarde i podobne. Czy naprawdę masz na myśli coś innego? Czy powinien zawierać napędy taśm, drukarki itp.?
derobert
2
@derobert - tak, stąd tytuł „wszystkich urządzeń pamięci” :)
warren

Odpowiedzi:

47

Jeśli interesują się tylko blokowe urządzenia magazynujące, można skorzystać lsblkz szeroko dostępnego pakietu 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

Dobrze nadaje się do tworzenia skryptów z wieloma innymi dostępnymi kolumnami.

K3 --- rnc
źródło
13

Możesz przeglądać dane wyjściowe lshwi wyodrębniać szczegółowe informacje na temat urządzeń w klasie disklub tape(a może innych - storageklasa podaje szczegółowe informacje na temat kontrolerów pamięci, scsi, sata, sas itp.).

na przykład

lshw -class disk -class tape

-shortOpcja daje ładny zwarty podsumowanie. np. na moim domowym serwerze / stacji roboczej / pudełku zfsonlinux (niestety nie ma urządzeń taśmowych):

# lshw -klasa taśma -klasowy dysk -klasowa pamięć-krótka
Ścieżka sprzętowa Opis klasy urządzenia
================================================== =======
/ 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 dysk 120 GB Patriot Wildfire
/ 0/100 / b / 0 scsi1 pamięć masowa SAS2008 PCI-Express Fusion-MPT SAS-2 [Falcon]
/0/100/b/0/0.0.0 / dev / sdd dysk 1 TB WDC WD10EARS-00Y
/0/100/b/0/0.1.0 / dev / sde dysk 1 TB WDC WD10EACS-00Z
/0/100/b/0/0.2.0 / dev / sdf dysk 1 TB WDC WD10EACS-00Z
/0/100/b/0/0.3.0 / dev / sdg dysk 1 TB ST31000528AS
/0/100/b/0/0.4.0 / dev / sdh dysk 1 TB ST31000528AS
/0/100/b/0/0.5.0 / dev / sdi dysk 1 TB ST31000528AS
/0/100/b/0/0.6.0 / dev / sdj dysk 1 TB ST31000528AS
/ 0/100/11 scsi2 pamięć SB7x0 / SB8x0 / SB9x0 Kontroler SATA [tryb AHCI]
/ 0/100/11/0 / dev / sda disk 128GB Patriot Torqx 2
/ 0/100/11/1 / dev / sdb disk 1TB ST31000528AS
/ 0/1 pamięć scsi11     
/0/1/0.0.0 / dev / sdk disk 1967 MB Dysk SCSI
/0/1/0.0.1 / dev / sdl disk Dysk SCSI
/0/1/0.0.2 / dev / sdm disk Dysk SCSI
/0/1/0.0.3 / dev / sdn disk Dysk SCSI
/ 0/2 pamięć scsi66     
/0/2/0.0.0 / dev / sdo disk Dysk SCSI
/ 0/3 pamięć scsi67     
/0/3/0.0.0 / dev / sdp disk 4057 MB Dysk SCSI

Urządzenia / 0/1 są w rzeczywistości czytnikiem kart USB (karta SD 2 GB jest podłączona do jednego z gniazd), a urządzenie / 0/2 to mój telefon z Androidem podłączony tylko do ładowania. Urządzenie 0/3 to pamięć flash USB o pojemności 4 GB.

lshwmoże generować zwykły tekst, html, xml i json. Może także zrzucić szczegóły sprzętu do formatu bazy danych sqlite.

Jest pakowany dla Debiana i większości innych dystrybucji. Strona główna i źródło znajdują się na stronie http://ezix.org/project/wiki/HardwareLiSter

cas
źródło
5

Spróbuj tego polecenia

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

Spowoduje to wyświetlenie wszystkich blokowanych urządzeń w systemie

Serge
źródło
5

Możesz użyć, lsblkaby wyświetlić listę wszystkich urządzeń blokowych, wraz z tym, czy każde urządzenie jest tylko do odczytu.

Następnie można użyć grepi awkwydrukować nazwy urządzeń blokowych, które nie są tylko do odczytu:

lsblk -d -n -oNAME,RO | grep '0$' | awk {'print $1'}
Jason Hobbs
źródło
jest to świetne rozwinięcie poprzedniej odpowiedzi
warren
4

lsblk wyświetli listę wszystkich blokowych urządzeń magazynujących.

fdisk -l wyświetli listę wszystkich partycji na wszystkich urządzeniach, które są wymienione w /proc/partitions

lshw -short poda informacje o całym sprzęcie (z wyjątkiem być może firewire) w systemie.

Simon Woodside
źródło
3

Jeśli, jak na swoje odpowiedzi na derobert, szukasz czegoś, wykazy Napędy taśmowe i drukarki , może być zainteresowany lsdev, lsusba lspci.

dwukropki
źródło
Oczywiście nie uda się znaleźć pamięci podłączonej do sieci :-(
derobert
1
Następniefdisk -l
dwukropki
2

Możesz spróbować wykonać następujące polecenie:

file /dev/disk/by-id/* | awk -F'/' 'NR>1{print "\047/dev/"$NF}' | sort | uniq
Gilles Quenot
źródło
1
co to robi i jak to porównać z listowaniem klas bloków i urządzeń taśmowych w lshw?
n611x007,
2

Możesz użyć hwinfo, aby wyświetlić listę wszystkich dysków ( dokumentacja ).

hwinfo --block --short daje przegląd:

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 podaje więcej szczegółów dla każdego dysku.

Do Twojej wiadomości: w niektórych dystrybucjach Linuksa, takich jak Ubuntus 14.04 i wyższy, hwinfo nie jest obecny w oficjalnym repozytorium .

Franck Dernoncourt
źródło
0

Znalazłem to fdiski lsblknie jestem dostępny w wirtualnym terminalu dla instalatora Debiana. W tym przypadku używam blkid, który pobiera UUID dla blokowych urządzeń magazynujących.

ryanjdillon
źródło
-1

Jeśli masz na myśli urządzenia RAID, nie będziesz w stanie uzyskać poprawnego wyniku za pomocą hdparm smartctl itp., Ponieważ tego rodzaju narzędzia szukają / dev, który jest poziomem systemu operacyjnego, jeśli chcesz wiedzieć na poziomie sprzętu, musisz mieć narzędzie takie jak megacli debugowałem za pomocą 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

Aby uzyskać numer seryjny dysku

[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

W powyższych wynikach Dane zapytania zawierają numer seryjny

Mansur Ali
źródło
-1

Oto kilka poleceń, których użyłem do znalezienia pamięci lokalnej i współdzielonej.

Do lokalnego przechowywania

lsblk | grep -v '^loop'

Do wspólnego przechowywania

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

OR

df -kh | grep -v '^tmpfs' | grep -v '^/'
Mian Asbat Ahmad
źródło
Po co sugerować te same narzędzia, które zostały już sugerowane (i zaakceptowane) ponad 6 lat temu?
warren
Ponieważ system operacyjny się zmienił, a teraz masz dużo loopi tmpfspartycji. Lepiej więc wyczyścić wyjście używając grep jak wyżej.
Mian Asbat Ahmad
-3

Spowoduje to wyświetlenie listy wszystkich dysków i zamontowanych napędów:

$ df -h
Haider Abbas
źródło
5
Właściwie to zawiera listę systemów plików…
HalosGhost