Jak dowiedzieć się, jakie dyski twarde są w systemie?


223

Muszę wiedzieć, jakie dyski twarde są dostępne, w tym te, które nie są zamontowane i prawdopodobnie nie są sformatowane. Nie mogę ich znaleźć w ( dmesglub /var/log/messagesza dużo, aby przewijać). Mam nadzieję, że istnieje sposób na wykorzystanie /devlub /procznalezienie tych informacji, ale nie wiem jak. Używam Linuksa.


Pierwotne pytanie nie określało żadnego konkretnego wariantu unixowego, a zarządzanie sprzętem jest oczywiście w dużym stopniu zależne od wariantu.
Gilles,

@ gilles tak, byłem w pracy, kiedy to napisałem, więc wyjaśniłem po powrocie do domu i pomyślałem o tym.
ksenoterrakid,

1
W zależności od tego, co robisz, udisk .
derobert

2
Znalazłem przydatną stronę opisującą wiele popularnych poleceń sprzętowych podczas wyszukiwania w Google. Do napędów dyskowych należą lshw(Lista sprzętu), hwinfo(Informacje o sprzęcie), lsscsi(Lista urządzeń SCSI), lsusb(Lista magistrali / urządzeń USB), lsblk(Lista urządzeń blokowych) fdisk -li mount. Więcej informacji na stronie binarytides.com/linux-commands-hardware-info .
Edward

Odpowiedzi:


182

Jest to w dużej mierze zależne od platformy. Również różne metody mogą różnie traktować przypadki brzegowe (różnego rodzaju „fałszywe” dyski, woluminy RAID…).

W nowoczesnych instalacjach udev w podkatalogach znajdują się dowiązania symboliczne do nośników pamięci /dev/disk, które umożliwiają wyszukiwanie dysku lub partycji według numeru seryjnego ( /dev/disk/by-id/), UUID ( /dev/disk/by-uuid), etykiety systemu plików ( /dev/disk/by-label/) lub połączenia sprzętowego ( /dev/disk/by-path/).

W Linuksie 2.6 każdy dysk i urządzenie dyskowe ma swój wpis /sys/block. W Linuksie od zarania dziejów dyski i partycje są wymienione w /proc/partitions. Alternatywnie, można użyć lshw : lshw -class disk.

Linux zapewnia również lsblknarzędzie, które wyświetla ładny widok drzewa woluminów pamięci (od wersji 2.19 nieużywanej na urządzeniach wbudowanych z BusyBox).

Jeśli masz narzędzie fdisklub disklabelnarzędzie, może on powiedzieć, na jakich urządzeniach może pracować.

W programie Rosetta Stone for Unix znajdziesz nazwy narzędzi dla wielu wariantów uniksowych , w szczególności wiersze „konfiguracja listy urządzeń” i „odczyt etykiety dysku”.


11
Ooo; że witryna Rosetta Stone jest doskonała
Michael Mrozek

146

lsblkwyświetli listę wszystkich blokowanych urządzeń. Dobrze nadaje się do pisania skryptów:

$ lsblk -io 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

lsblk jest obecny w pakiecie util-linux i jest o wiele bardziej uniwersalny niż proponowane alternatywy.


9
Jeśli potrzebujesz tylko dysków fizycznych, użyj lsblk -d, -doznacza , że na liście nie ma komunikatu o zależności.
coanor

2
Rzeczywiście =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL( util-linuxktórego część jest częścią baseArch) natychmiast podaje żądane informacje i bez konieczności rootowania. Pamiętaj, że zapewnia model urządzenia , a nie rodzinę modeli . smarctl -i /dev/<device>zalecił to Skippy, np. „Rodzina modeli: Seagate Barracuda 7200.12” (brak w lsblk -ido: „dysk 465,8G ST3500418AS”).
tuk0z

68

Co powiesz na

lshw -class disk

3
nieźle ... Sprawdzę to dwukrotnie, kiedy wysiądę, jestem pewien, że działa ... niestety nie jest ( lshw) zainstalowany na serwerze i podejrzewam, że odpowiedzią będzie, że go nie instalujemy.
ksenoterrakid,

Z jakiegoś powodu lshw nie wyświetla dysków twardych.
André van Schoubroeck,

2
Gdy nie jest uruchamiany jako root, nie wyświetla żadnych dysków, ale także nie powoduje błędu.
Volker Siegel

1
bash: lshw: nie znaleziono polecenia
Antoine

26

hwinfo pomaga:

> hwinfo --disk
21: IDE 00.0: 10600 Disk                                        
[Created at block.245]
Unique ID: 3OOL.8MZXfAWnuH8
Parent ID: w7Y8.1T_0outZkp6
SysFS ID: /class/block/sda
SysFS BusID: 0:0:0:0
SysFS Device Link: /devices/pci0000:00/0000:00:1f.2/host0/target0:0:0/0:0:0:0
Hardware Class: disk
Model: "Hitachi HTS54322"
Vendor: "Hitachi"
Device: "HTS54322"
Revision: "ESBO"
Driver: "ahci", "sd"
Driver Modules: "ahci"
Device File: /dev/sda
Device Files: /dev/sda, /dev/disk/by-id/ata-Hitachi_HTS543225A7A384_E2021342GEPG4J, /dev/disk/by-id/scsi-SATA_Hitachi_HTS5432_E2021342GEPG4J, /dev/disk/by-path/pci-0000:00:1f.2-scsi-0:0:0:0, /dev/disk/by-id/wwn-0x5000cca614c6395e
Device Number: block 8:0-8:15
BIOS id: 0x80
Geometry (BIOS EDD): CHS 484521/16/63
Size (BIOS EDD): 488397168 sectors
Geometry (BIOS Legacy): CHS 1023/255/63
Drive status: no medium
Config Status: cfg=new, avail=yes, need=no, active=unknown
Attached to: #17 (SATA controller)
> hwinfo --block --short
disk:                                                           
  /dev/sda             Hitachi HTS54322
partition:
  /dev/sda1            Partition
  /dev/sda2            Partition
  /dev/sda3            Partition
  /dev/sda4            Partition
  /dev/sda5            Partition

19

@Giles twierdzi, że jest to wysoce zależne od platformy. Oto jeden z takich przykładów.

Korzystam z systemu CentOS 5.5. Ten system ma 4 dyski i 3ware kontroler RAID.

W moim przypadku lshw -class disk, cat /proc/scsi/scsii parted --listpokazuje kontroler RAID (3ware 9650SE-4LP). To nie pokazuje rzeczywistych dysków:

pokazuje tylko kontroler RAID 3ware, który zapewnia wolumin / dev / sda:

# lshw -class disk
  *-disk                  
       description: SCSI Disk
       product: 9650SE-4LP DISK
       vendor: AMCC
       physical id: 0.0.0
       bus info: scsi@0:0.0.0
       logical name: /dev/sda

# cat /proc/scsi/scsi 
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
  Vendor: AMCC     Model: 9650SE-4LP DISK  Rev: 4.06
  Type:   Direct-Access                    ANSI SCSI revision: 05

# parted --list

Model: AMCC 9650SE-4LP DISK (scsi)
Disk /dev/sda: 2000GB

Aby zobaczyć dyski, które znajdują się pod spodem, musiałem zainstalować narzędzie tw_cli z 3ware i zapytać sam kontroler.

# tw_cli info c0
...

VPort Status         Unit Size      Type  Phy Encl-Slot    Model
------------------------------------------------------------------------------
p0    OK             u0   931.51 GB SATA  0   -            WDC WD1002FBYS-02A6 
p1    OK             u0   931.51 GB SATA  1   -            WDC WD1002FBYS-02A6 

13

Ponieważ zarówno „ Czy mogę zobaczyć, co mam zainstalowane HDD? ” I „ Jak określić markę i model moich urządzeń pamięci masowej? ” Są oznaczone jako duplikaty to pytanie, jestem zaskoczony nikt nie wspomniano hdparma smartctl. Patrząc na kilka maszyn, wydaje się, że jedna z nich (jeśli nie jest to jedna i druga) często jest już zainstalowana w standardowych (nawet starych) dystrybucjach linuksa.

# smartctl -i /dev/sda
smartctl 6.1 2013-03-16 r3800 [i686-linux-3.9.9-301.fc19.i686.PAE] (local build)
Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Toshiba 2.5" HDD MK..56GSY
Device Model:     TOSHIBA MK1656GSY
Serial Number:    60PKT43CT
LU WWN Device Id: 5 000039 2919874b6
Firmware Version: LH013D
User Capacity:    160 041 885 696 bytes [160 GB]
Sector Size:      512 bytes logical/physical
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ATA8-ACS (minor revision not indicated)
SATA Version is:  SATA 2.6, 3.0 Gb/s
Local Time is:    Mon Jul 22 11:13:37 2013 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

# hdparm -i /dev/sda

/dev/sda:

 Model=TOSHIBA MK1656GSY, FwRev=LH013D, SerialNo=60PKT43CT
 Config={ Fixed }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=0
 BuffType=unknown, BuffSize=16384kB, MaxMultSect=16, MultSect=16
 CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=312581808
 IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes:  pio0 pio1 pio2 pio3 pio4
 DMA modes:  sdma0 sdma1 sdma2 mdma0 mdma1 mdma2
 UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5
 AdvancedPM=yes: unknown setting WriteCache=enabled
 Drive conforms to: Unspecified:  ATA/ATAPI-3,4,5,6,7

 * signifies the current active mode

Jak zwykle sprawdź stronę podręcznika, aby uzyskać więcej opcji.


Należy zauważyć, że smartctlsposób działa nawet na Cygwin, +1! Wystarczy, że przejdziesz nad możliwymi nazwami urządzeń i zobaczysz, czy smartctldysk obsługuje SMART.
Adrian Frühwirth

12

Korzystam z Fedory 14 i lshwnie jest dostępny tutaj (przynajmniej domyślnie). Jednak w moim przypadku użyłem fdisk -lpolecenia (jako użytkownik root), aby uzyskać następujące dane wyjściowe:

Disk /dev/sda: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0006a697

Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     1026047      512000   83  Linux
/dev/sda2         1026048    16777215     7875584   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders, total 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/sdb doesn't contain a valid partition table

Disk /dev/dm-0: 6509 MB, 6509559808 bytes
255 heads, 63 sectors/track, 791 cylinders, total 12713984 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-0 doesn't contain a valid partition table

Disk /dev/dm-1: 1543 MB, 1543503872 bytes
255 heads, 63 sectors/track, 187 cylinders, total 3014656 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000

Disk /dev/dm-1 doesn't contain a valid partition table

Użyj fdisk -l /dev/sd?lub, fdisk -l /dev/hd?aby uniknąć wprowadzania urządzeń DM.
laebshade

5

I znaleźć w drugiej odpowiedzi SE , inxinarzędzie jako bardzo wygodne:

inxi -Dxx
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX

3

Wiele z wymienionych poleceń pomoże wyszukać dyski, które zostały już rozpoznane przez system podczas rozruchu. W przypadku nowoczesnych dysków może się okazać, że szukasz czegoś, co wstawisz, gdy maszyna jest uruchomiona (ja zrobiłem). Lubię porady z http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Spróbuj ponownie przeskanować hosty SCSI (każdy port SATA pojawia się jako szyna SCSI):

echo "0 0 0"> / sys / class / scsi_host / host / scan

... Następnie możesz użyć narzędzi Linuksa, takich jak fdisk, aby wyświetlić informacje o znalezionych dyskach.


3
sfdisk -l  

poda szczegółowe informacje o dyskach sprzętowych / fizycznych, nawet jeśli nie są zamontowane.

program jest wstępnie zainstalowany na wszystkich wariantach Linuksa, z których korzystałem, ale aby go używać, musisz mieć uprawnienia administratora.


2

To działało dla mnie:

fdisk -l 2>/dev/null | grep "Disk \/" | grep -v "\/dev\/md" | awk '{print $2}' | sed -e 's/://g'

1

sudo gparted pokaże to wszystko w GUI.

(Nie określiłeś, że musisz to zrobić w terminalu, więc zastanawiam się, dlaczego brakuje tego rozwiązania).


-1

Aby zwrócić liczbę urządzeń blokowych bez wymyślnych narzędzi ani niejasnej składni lub parametrów:

 ls /sys/block/* | grep block | grep sd | wc -l

W moich lokalnych testach, 47na mojej największej machinie wojennej i 1na moim laptopie.


2
Jest to wyłączone o 500% na jednym z moich systemów (Ubuntu 12.04) i o 200% na innym systemie.
Anthon

-1

IMHO, lsblk to polecenie, które jest najszerzej dostępne w świecie Linuksa (działa nawet na portach takich jak Raspbian). Nie chcę nikogo urazić, ale są pewne polecenia, które wymagają jawnej znajomości nazwy urządzenia, aby ją wyszukać. Na przykład powinieneś zdawać sobie sprawę z istnienia sdc do uruchomienia smartctl. To powiedziawszy, lsblk nie jest uniwersalny - tak w Solarisie, ale nie hpux. Dzięki.


2
Oprócz wzmianki o tym, że lsblkjest również dostępne w systemie Solaris, nie dodaje to więcej informacji niż dwie najczęściej głosowane odpowiedzi. Byłoby to lepiej opublikowane jako komentarz do unix.stackexchange.com/a/94211/22812
Anthony Geoghegan
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.