Як дізнатися, які жорсткі диски є в системі?


223

Мені потрібно знати, які жорсткі диски доступні, включаючи ті, які не встановлені та, можливо, не відформатовані. Я не можу їх знайти dmesgабо /var/log/messages(занадто багато для прокрутки). Я сподіваюся, що є спосіб використовувати /devабо /procдізнатися цю інформацію, але я не знаю як. Я використовую Linux.


У початковому запитанні не було визначено жодного конкретного варіанту Unix, а управління обладнанням, очевидно, дуже залежить від варіантів.
Жиль

@gilles так, я був на роботі, коли писав це, тому я уточнив, коли повернувся додому і подумав про це.
ксенотеррацид

1
Залежно від того, що ти робиш, удиски .
дероберт

2
Я знайшов корисну сторінку, що описує багато поширених апаратних команд при пошуку в Google. До них відносяться lshw(Список апаратного забезпечення), hwinfo(Інформація про обладнання), lsscsi(Список пристроїв scsi), lsusb(Список шин / пристроїв usb), lsblk(Список блокових пристроїв) fdisk -lта mount. Більше інформації на binarytides.com/linux-commands-hardware-info .
Едвард

Відповіді:


182

Це дуже залежить від платформи. Також різні методи можуть по-різному ставитися до кращих випадків ("підроблені" диски різного типу, обсяги RAID, ...).

У сучасних установах udev є символічні посилання на носії інформації у підкаталогах /dev/disk, що дозволяють шукати диск або розділ за серійним номером ( /dev/disk/by-id/), UUID ( /dev/disk/by-uuid), ярликом файлової системи ( /dev/disk/by-label/) або апаратним підключенням ( /dev/disk/by-path/).

У версії Linux 2.6 кожен диск і подібний до диска пристрій має запис /sys/block. У Linux із зорі часу перераховані диски та розділи /proc/partitions. Крім того, ви можете використовувати lshw : lshw -class disk.

Linux також надає lsblkутиліту, яка відображає прекрасний вид дерев на обсяги зберігання (оскільки util-linux 2.19, немає на вбудованих пристроях з BusyBox).

Якщо у вас є утиліта fdiskабо disklabelпрограма, вона може повідомити вам, на яких пристроях вона може працювати.

Назви Rosetta Stone для Unix ви знайдете утиліти утиліт для багатьох варіантів Unix , зокрема рядки "конфігурація обладнання" та "читання етикетки диска".


11
Ооо; що сайт Rosetta Stone чудовий
Michael Mrozek

146

lsblkвідобразить список усіх блокових пристроїв. Він добре піддається сценаріям:

$ 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 присутній в пакеті util-linux і, таким чином, набагато універсальніший, ніж пропоновані альтернативи.


9
Якщо вам потрібні лише фізичні диски, використовуйте lsblk -d, -dозначає відсутність у списку повідомлень про залежність.
coanor

2
Дійсно =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL(частина util-linuxякої є частиною baseв Arch) миттєво надає запитувану інформацію і не потребує кореня. Зауважте, що вона пропонує модель пристроїв , а не сімейство моделей . smarctl -i /dev/<device>радив Скіппі, зробив це, наприклад: "Сімейство моделей: Seagate Barracuda 7200.12" (відсутнє в lsblk -ido: "диск 465,8G ST3500418AS").
tuk0z

68

Як щодо

lshw -class disk

3
непогано ... Я подвійно перевіряю це, коли вийду, я впевнений, що він працює ... на жаль, він ( lshw) не встановлений на сервері, і я підозрюю, що відповідь буде, ми не встановлюємо його.
ксенотеррацид

Чомусь lshw не перераховує жорсткі диски.
Андре ван Шуброк

2
Якщо не запускається як root, він не містить списку дисків, але також не дає помилок.
Volker Siegel

1
bash: lshw: команда не знайдена
Antoine

26

hwinfo допомагає:

> 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 каже, що це дуже залежить від платформи. Ось один такий приклад.

Я запускаю систему CentOS 5.5. У цій системі є 4 диски та 3ware RAID-контролер.

У моєму випадку lshw -class disk, cat /proc/scsi/scsiі parted --listпоказує контролер RAID (3ware 9650SE-4LP). Тут не відображаються фактичні диски:

показує лише 3ware RAID-контролер, який забезпечує обсяг / 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

Для того, щоб побачити диски, які лежать внизу, мені довелося встановити утиліту tw_cli з 3ware та запитати самого контролера.

# 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

Оскільки обидва " Чи можу я встановити, на який жорсткий диск я встановив? " Та " Як визначити марку та модель своїх пристроїв зберігання даних? " Позначені як дублікати цього питання, я здивований, що ніхто не згадував hdparmі smartctl. Подивившись на кілька машин, здається, що будь-яка з них (коли це не обоє) часто зустрічається вже встановленою в стандартних (навіть старих) дистрибутивах Linux.

# 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

Як завжди, перевірте сторінку, щоб дізнатися більше.


Слід зазначити, що smartctlспосіб навіть працює на Cygwin, +1! Просто переведіть курсор на можливі назви пристроїв і подивіться, чи smartctlповертається він, що диск підтримує SMART.
Адріан Фрюхвірт

12

Я працюю на Fedora 14 і lshwтут недоступний (принаймні, не за замовчуванням). Однак у моєму випадку я використовував fdisk -lкоманду (як користувач root), щоб отримати такий вихід:

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

Використовуйте fdisk -l /dev/sd?або fdisk -l /dev/hd?уникайте підключення пристроїв dm.
в'язниця

5

Я знайшов в іншій відповіді SE , inxiінструмент як дуже зручний:

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

Багато перерахованих команд допоможуть вам знайти диски, які система вже розпізнала під час завантаження. З сучасними накопичувачами ви можете шукати щось, що ви вставили під час роботи машини (я це робив). Мені подобаються поради з http://fredericiana.com/2010/06/15/hot-plugging-a-sata-drive-under-linux/ :

Спробуйте це змінити для хостів SCSI (кожен порт SATA видається як шина SCSI):

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

... Тоді ви можете скористатися вашими утилітами Linux, такими як fdisk, щоб показати вам інформацію про знайдені диски.


3
sfdisk -l  

дасть детальну інформацію про апаратні / фізичні диски, навіть якщо вони не встановлені.

програма заздалегідь встановлена ​​на всіх варіантах Linux, які я використовував, але для її використання ви повинні мати root.



1

sudo gparted покаже все це в графічному інтерфейсі.

(Ви не вказали, що потрібно робити це в терміналі, тому мені цікаво, чому це рішення не було.)


-1

Щоб повернути кількість блокових пристроїв , без фантазійних інструментів, неясних синтаксисів чи параметрів:

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

У моїх місцевих тестових випадках, 47на моїй найбільшій військовій машині та 1на моєму ноутбуці.


2
У одній з моїх систем (Ubuntu 12.04) це вимкнено на 500%, а в іншій - на 200%.
Антон

-1

IMHO, lsblk - це команда, яка найбільш широко доступна у світі Linux (працює навіть на портах типу Raspbian). Я не хочу когось ображати, але є деякі команди, які потребують того, щоб ви чітко знали ім’я пристрою, щоб шукати його. Наприклад, ви повинні знати про існування SDC для запуску smartctl. Однак, lsblk не є універсальним - так, на Solaris, але не на hpux. Дякую.


2
Окрім згадки про те, що lsblkтакож доступне в Solaris, це не додає більше інформації, ніж два відповіді, які голосують на вершині голосів. Це було б краще розміщено як коментар до unix.stackexchange.com/a/94211/22812
Ентоні
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.