Bagaimana cara mengetahui hard disk yang ada di sistem?

223

Saya perlu tahu hard disk apa yang tersedia, termasuk yang tidak di-mount dan mungkin tidak diformat. Saya tidak dapat menemukannya di dmesgatau /var/log/messages(terlalu banyak untuk digulirkan). Saya berharap ada cara untuk menggunakan /devatau /procmencari tahu informasi ini, tetapi saya tidak tahu caranya. Saya menggunakan Linux.

xenoterracide
sumber
Pertanyaan aslinya tidak menentukan varian unix tertentu, dan manajemen perangkat keras jelas sangat bergantung pada varian.
Gilles
@ Gilles ya saya sedang bekerja ketika saya menulisnya, jadi saya mengklarifikasi setelah saya sampai di rumah dan memikirkannya.
xenoterracide
1
Tergantung pada apa yang Anda lakukan, udisk .
derobert
2
Saya menemukan halaman yang berguna yang menggambarkan banyak perintah perangkat keras umum dengan pencarian di Google. Yang disk drive termasuk lshw(Daftar Perangkat Keras), hwinfo(Informasi Perangkat Keras), lsscsi(Daftar perangkat scsi), lsusb(Daftar usb bus / perangkat), lsblk(Daftar perangkat blok), fdisk -ldan mount. Informasi lebih lanjut di binarytides.com/linux-commands-hardware-info .
Edward

Jawaban:

182

Ini sangat tergantung pada platform. Metode yang berbeda juga dapat menangani kasus tepi secara berbeda ("palsu" disk dari berbagai jenis, volume RAID, ...).

Pada instalasi udev modern, ada tautan simbolis ke media penyimpanan dalam subdirektori /dev/disk, yang memungkinkan Anda mencari disk atau partisi dengan nomor seri ( /dev/disk/by-id/), oleh UUID ( /dev/disk/by-uuid), oleh label sistem file ( /dev/disk/by-label/) atau oleh konektivitas perangkat keras ( /dev/disk/by-path/).

Di Linux 2.6, setiap disk dan perangkat seperti disk memiliki entri /sys/block. Di Linux sejak awal waktu, disk dan partisi terdaftar di /proc/partitions. Atau, Anda dapat menggunakan lshw : lshw -class disk.

Linux juga menyediakan lsblkutilitas yang menampilkan tampilan hierarki yang bagus dari volume penyimpanan (sejak util-linux 2.19, tidak ada pada perangkat yang disematkan dengan BusyBox).

Jika Anda memiliki fdiskatau disklabelutilitas, mungkin bisa memberi tahu Anda apa perangkat itu dapat bekerja.

Anda akan menemukan nama-nama utilitas untuk banyak varian unix di Batu Rosetta untuk Unix , khususnya baris "daftar konfigurasi perangkat keras" dan "baca label disk".

Gilles
sumber
11
Ooo; bahwa situs Rosetta Stone luar biasa
Michael Mrozek
146

lsblkakan mencantumkan semua perangkat blokir. Itu cocok untuk scripting:

$ 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 hadir dalam paket util-linux dan dengan demikian jauh lebih universal daripada alternatif yang diusulkan.

K3 --- rnc
sumber
10
Jika Anda hanya memerlukan disk fisik, gunakan lsblk -d, -dberarti tidak ada pesan ketergantungan yang terdaftar.
coanor
2
Memang =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(bagian util-linuxyang merupakan bagian dari baseArch) langsung memberikan informasi yang diminta, dan tanpa perlu menjadi root. Perhatikan bahwa ia menyediakan model Perangkat , bukan Keluarga Model . smarctl -i /dev/<device>disarankan oleh Skippy melakukannya, misalnya: "Keluarga Model: Seagate Barracuda 7200.12" (hilang dari lsblk -ido: "disk 465,8G ST3500418AS").
tuk0z
68

Bagaimana tentang

lshw -class disk
nc3b
sumber
3
tidak buruk ... Saya akan mengeceknya ketika saya turun, saya yakin itu berfungsi ... sayangnya itu ( lshw) tidak diinstal pada server, dan saya kira jawabannya adalah kita tidak menginstalnya.
xenoterracide
Untuk beberapa alasan, lshw tidak mencantumkan hard disk.
André van Schoubroeck
2
Ketika tidak dijalankan sebagai root, ia tidak mencantumkan disk, tetapi juga tidak memberikan kesalahan.
Volker Siegel
1
bash: lshw: command not found
Antoine
26

hwinfo membantu:

> 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
Martin Schröder
sumber
19

@ Giles mengatakan ini sangat tergantung platform. Inilah salah satu contohnya.

Saya menjalankan sistem CentOS 5.5. Sistem ini memiliki 4 disk dan pengontrol RAID 3ware.

Dalam kasus saya lshw -class disk,, cat /proc/scsi/scsidan parted --listmenunjukkan pengontrol RAID (3ware 9650SE-4LP). Ini tidak menunjukkan disk yang sebenarnya:

hanya menampilkan pengontrol RAID 3ware yang menyediakan volume / 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

Untuk melihat disk yang terletak di bawahnya, saya harus menginstal utilitas tw_cli dari 3ware, dan meminta controller itu sendiri.

# 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 
Stefan Lasiewski
sumber
13

Karena " Dapatkah saya melihat HDD apa yang telah saya instal? " Dan " Bagaimana cara menentukan merek & model perangkat penyimpanan saya? " Ditandai sebagai duplikat dari pertanyaan ini, saya terkejut tidak ada yang disebutkan hdparmdan smartctl. Setelah melihat-lihat beberapa mesin, tampaknya salah satu dari mereka (ketika itu tidak keduanya) sering ditemukan sudah diinstal dalam distribusi linux standar (bahkan lama).

# 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

Seperti biasa, periksa halaman manual untuk lebih banyak opsi.

Skippy le Grand Gourou
sumber
Perlu dicatat bahwa smartctlcara ini bahkan berfungsi pada Cygwin, +1! Ulangi kemungkinan nama perangkat dan lihat apakah smartctldrive itu mendukung SMART.
Adrian Frühwirth
12

Saya menjalankan fedora 14 dan lshwtidak tersedia di sini (setidaknya tidak secara default). Namun dalam kasus saya, saya menggunakan fdisk -lperintah (sebagai pengguna root) untuk mendapatkan output berikut:

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
Eugene S
sumber
Gunakan fdisk -l /dev/sd?atau fdisk -l /dev/hd?untuk menghindari membawa perangkat dm.
laebshade
6

Saya menemukan jawaban SE lain , inxialat yang sangat nyaman:

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
Grzegorz Wierzowiecki
sumber
3

Banyak perintah yang tercantum akan membantu Anda mencari disk yang sudah dikenali oleh sistem saat boot. Dengan drive modern, Anda mungkin menemukan diri Anda mencari sesuatu yang Anda masukkan saat mesin hidup dan berjalan (saya lakukan). Saya menyukai saran dari http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Coba ini untuk memindai ulang host SCSI (setiap port SATA muncul sebagai bus SCSI):

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

... Kemudian Anda dapat menggunakan utilitas Linux seperti fdisk untuk menampilkan informasi tentang disk yang ditemukan.

Mike Schwager
sumber
3
sfdisk -l  

akan memberi Anda informasi terperinci tentang perangkat keras / disk fisik bahkan jika mereka tidak dipasang.

program ini sudah diinstal sebelumnya pada semua varian Linux yang telah saya gunakan, tetapi Anda harus root untuk menggunakannya.

pembuat kode
sumber
2

Ini bekerja untuk saya:

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

sudo gparted akan menampilkan semua ini dalam GUI.

(Anda tidak menentukan Anda perlu melakukannya dalam terminal jadi saya ingin tahu mengapa solusi ini hilang.)

Ondra Žižka
sumber
-1

Untuk mengembalikan jumlah perangkat blok , tanpa alat mewah atau sintaks atau parameter yang tidak jelas:

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

Dalam kasus uji lokal saya, 47pada mesin perang terbesar saya dan 1di laptop saya.

maks
sumber
2
Ini mati 500% di salah satu sistem saya (Ubuntu 12.04) dan 200% di sistem lain.
Anthon
-1

IMHO, lsblk adalah perintah yang paling banyak tersedia di dunia Linux (bekerja bahkan pada port seperti Raspbian). Saya tidak bermaksud menyinggung siapa pun, tetapi ada beberapa perintah yang mengharuskan Anda untuk secara eksplisit mengetahui nama perangkat untuk mencarinya. Misalnya Anda harus menyadari keberadaan sdc untuk menjalankan smartctl. Yang mengatakan, lsblk tidak universal - ya di Solaris, tetapi tidak hpux. Terima kasih.

Melompat Kelinci
sumber
2
Selain menyebutkan bahwa lsblkitu juga tersedia di Solaris, ini tidak menambahkan informasi lebih dari dua jawaban terpilih. Ini akan lebih baik diposting sebagai komentar untuk unix.stackexchange.com/a/94211/22812
Anthony Geoghegan