システム内のハードディスクを確認するにはどうすればよいですか?


223

マウントされておらず、おそらくフォーマットされていないものも含めて、使用可能なハードディスクを知る必要があります。dmesgまたは/var/log/messages(スクロールするには多すぎる)でそれらを見つけることができません。この情報を使用し/devたり/proc見つけたりする方法があればいいのですが、どうすればいいのかわかりません。Linuxを使用しています。


元の質問では特定のUNIXバリアントを指定していなかったため、ハードウェア管理は明らかにバリアントに大きく依存しています。
ジル

@gillesええ、私はそれを書いたときに仕事をしていたので、家に帰ってそれについて考えた後に明確にしました。
xenoterracide

1
何をしているのかに応じて、udisks
デロバート

2
Googleで検索すると、多くの一般的なハードウェアコマンドを説明する便利なページが見つかりました。ディスクドライブにはlshwhwinfo(ハードウェアの一覧表示)、(ハードウェア情報のlsscsi一覧表示)、(scsiデバイスの一覧表示)、lsusb(USBバス/デバイスのlsblk一覧表示)、(ブロックデバイスの一覧表示)、fdisk -lおよびmountbinarytides.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のUnder明期から、ディスクとパーティションはにリストされてい/proc/partitionsます。別の方法としては、使用することができますlshwlshw -class disk

Linux lsblkは、ストレージボリュームの素敵なツリービューを表示するユーティリティも提供します(util-linux 2.19から、BusyBoxを備えた組み込みデバイスには存在しないため)。

fdiskまたはdisklabelユーティリティがある場合、どのデバイスで作業できるかを通知できる場合があります。

Rosetta Stone for Unixには、特に「ハードウェア構成の一覧表示」行と「ディスクラベルの読み取り」行の多くのUNIXバリアントのユーティリティ名があります。


11
おー ロゼッタストーンのサイトが優れていること
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(その一部はArchのutil-linux一部ですbase)要求された情報を即座に提供し、rootになる必要はありません。Model FamilyではなくDeviceモデルを提供することに注意してください。Skippyからのアドバイスにより、たとえば「モデルファミリー:Seagate Barracuda 7200.12」(lsblk -idoから欠落:「disk 465,8G ST3500418AS」)。smarctl -i /dev/<device>
tuk0z

68

どう?

lshw -class disk

3
悪くない...私は降りるときにそれを再確認します、私はそれが動作することを確信しています...残念ながらそれは(lshw)がサーバーにインストールされていません、そして私は答えはそれをインストールしていないだろうと思います。
xenoterracide

何らかの理由で、lshwはハードディスクをリストしません。
アンドレ・ヴァン・シューブロエック

2
ルートとして実行しない場合、ディスクはリストされませんが、エラーも表示されません。
フォルカーシーゲル14

1
bash:lshw:コマンドが見つかりません
アントワーヌ

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 diskcat /proc/scsi/scsiおよびparted --listRAIDコントローラ(スリーウェア9650SE-4LP)を示します。これは実際のディスクを表示しません:

/ dev / sdaボリュームを提供する3ware RAIDコントローラーのみを示します。

# 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

その下にあるディスクを見るために、3wareからtw_cliユーティリティをインストールし、コントローラー自体に尋ねなければなりませんでした。

# 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

両方の「以来、私はHDDは私が?インストールされているものを見ることができますし、」「どのように私は私のストレージデバイスのメイク&モデルを決定するのですか?」この質問の重複としてマークされて、私は驚いて誰が述べられていないhdparmsmartctl。いくつかのマシンを見ると、どちらか(両方ではない場合)が標準(古い)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

通常どおり、他のオプションについてはマンページを確認してください。


smartctlCygwin +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デバイスの持ち込みを避けます。
-laebshade


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

...その後、fdiskなどのLinuxユーティリティを使用して、検出されたディスクに関する情報を表示できます。


3
sfdisk -l  

ハードウェア/物理ディスクがマウントされていなくても、それらに関する詳細情報が表示されます。

このプログラムは、私が使用したすべてのLinuxバリアントにプリインストールされていますが、使用するにはルートである必要があります。


2

これは私のために働いた:

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

1

sudo gparted これはすべてGUIに表示されます。

(ターミナル内で実行する必要があるとは指定しなかったので、なぜこの解決策が見つからなかったのだろうか。)


-1

派手なツールや曖昧な構文やパラメーターなしで、ブロックデバイスを返すには:

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

私の地元のテストケース、47最大の戦争機械1、ラップトップで。


2
これは、私のシステム(Ubuntu 12.04)の1つで500%、別のシステムで200%オフです。
アントン14

-1

私見、lsblkはLinuxの世界で最も広く利用可能なコマンドです(Raspbianのようなポートでも動作します)。私は誰かを怒らせるつもりはありませんが、調べるためにデバイス名を明示的に知る必要があるコマンドがいくつかあります。たとえば、smartctlを実行するには、sdcの存在に注意する必要があります。とは言っても、lsblkは普遍的ではありません-Solarisでは可能ですが、hpuxではありません。ありがとう。


2
lsblkSolarisでも利用可能であることに言及する以外に、これは2つのトップ投票の回答よりも多くの情報を追加しません。これはunix.stackexchange.com/a/94211/22812
Anthony Geoghegan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.