How do I find out what hard disks are in the system?
I need to know what hard disks are available, including ones that aren’t mounted and possibly aren’t formatted. I can’t find them in dmesg or /var/log/messages (too much to scroll through). I’m hoping there’s a way to use /dev or /proc to find out this information, but I don’t know how. I am using Linux.
The original question didn’t specify any particular unix variant, and hardware management is obviously highly variant-dependent.
I found a useful page describing many common hardware commands with a search on Google. The disk drive ones include lshw (List Hardware), hwinfo (Hardware Information), lsscsi (List scsi devices), lsusb (List usb buses/devices), lsblk (List block devices), fdisk -l and mount . More information at binarytides.com/linux-commands-hardware-info.
16 Answers 16
This is highly platform-dependent. Also different methods may treat edge cases differently (“fake” disks of various kinds, RAID volumes, …).
On modern udev installations, there are symbolic links to storage media in subdirectories of /dev/disk , that let you look up a disk or a partition by serial number ( /dev/disk/by-id/ ), by UUID ( /dev/disk/by-uuid ), by filesystem label ( /dev/disk/by-label/ ) or by hardware connectivity ( /dev/disk/by-path/ ).
Under Linux 2.6, each disk and disk-like device has an entry in /sys/block . Under Linux since the dawn of time, disks and partitions are listed in /proc/partitions . Alternatively, you can use lshw: lshw -class disk .
Linux also provides the lsblk utility which displays a nice tree view of the storage volumes (since util-linux 2.19, not present on embedded devices with BusyBox).
If you have an fdisk or disklabel utility, it might be able to tell you what devices it’s able to work on.
You will find utility names for many unix variants on the Rosetta Stone for Unix, in particular the “list hardware configuration” and “read a disk label” lines.
lsblk will list all block devices. It lends itself well to 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 is present in util-linux package and is thus far more universal than proposed alternatives.
Indeed =) $ lsblk -ido KNAME,TYPE,SIZE,MODEL (part of util-linux which is part of base on Arch) instantly gives the information requested, and without the need to be root. Note that it provides the Device model, not Model Family. smarctl -i /dev/ advised by Skippy did it, eg: «Model Family: Seagate Barracuda 7200.12» (missing from lsblk -ido: «disk 465,8G ST3500418AS»).
not bad. I’ll double check it when I get off, I’m sure it works. unfortunately it’s ( lshw ) not installed on the server, and I suspect the answer will be we’re not installing it.
> 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
@Giles says this is highly platform-dependent. Here’s one such example.
I’m running a CentOS 5.5 system. This system has 4 disks and a 3ware RAID controller.
In my case, lshw -class disk , cat /proc/scsi/scsi and parted —list shows the RAID controller (3ware 9650SE-4LP). This doesn’t show the actual disks:
only shows the 3ware RAID controller which provides the /dev/sda volume:
# 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
In order to see the disks which lie underneath, I had to install the tw_cli utility from 3ware, and ask the controller itself.
# 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
Since both «Can I see what HDD I have installed?» and «How do I determine the make & model of my storage devices?» are marked as duplicates of this question, I’m surprised no-one mentioned hdparm and smartctl . Having a look at a few machines, seems that either of them (when it’s not both) is often found already installed in standard (even old) linux distributions.
# 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=, tDMA= 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
As usual, check manpage for more options.
Is there a command to view hard drive specs
I noticed that my Ubuntu is lagging EXTREMELY badly but only the first time I do things after what I did gets loaded into RAM the lag stops totally. I ran some tests and I guess one of my laptop hard drives is borked. Im assuming that I have to replace the drive, is there some command I can issue to see the exact specs on the drive so I can then buy it online? I don’t want to have to open up the laptop, find the specs. Then open it again when the new drive arrives.
Or is there another cool hacky command or way to partition my drive to avoid using the bad spots? A while ago when my drive failed I mounted it useing an alternative superblock and this worked and still does i guess..
I found the hacky solution I wanted. I ran the command «badblocks /dev/sda1» and then noticed they were all near the front of the drive. So I created an unallocated partition at the front of the drive consisting of 50% of the total size. I then tested the second half of the drive! AND WALAAAAAAAA. IT WORKED. Im going to buy a new drive anyway but this process taught me alot 🙂
5 Answers 5
smartctl command from smartmontools package is what you want for that
% sudo smartctl -i /dev/sda smartctl 6.2 2013-07-26 r3841 [i686-linux-3.13.0-24-generic] (local build) Copyright (C) 2002-13, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Model Family: SAMSUNG SpinPoint M7 Device Model: SAMSUNG HM250HI Serial Number: LU WWN Device Id: 5 0024e9 203520f1d Firmware Version: 2AC101C4 User Capacity: 250,059,350,016 bytes [250 GB] Sector Size: 512 bytes logical/physical Device is: In smartctl database [for details use: -P show] ATA Version is: ATA8-ACS T13/1699-D revision 6 SATA Version is: SATA 2.6, 3.0 Gb/s Local Time is: Thu May 15 21:49:09 2014 MYT SMART support is: Available - device has SMART capability. SMART support is: Enabled
lshw -class disk -class storage
Thanks I hope this helps someone but the first answer was PERFECT so im not even bothering with this, do you know if I can somehow use only part of my hard drive? The hole thing still works but super slow. I know nothing of hardware but maybe there is a way to say only use the good part of the hard drive? Maybe when hard drives go bad only certain portions go bad?
% sudo hdparm -I /dev/sda ~ /dev/sda: ATA device, with non-removable media Model Number: WDC WD10JPCX-24UE4T0 Serial Number: WD-WXR1E24A7U0E Firmware Revision: 01.01A01 Transport: Serial, SATA 1.0a, SATA II Extensions, SATA Rev 2.5, SATA Rev 2.6, SATA Rev 3.0 Standards: Supported: 9 8 7 6 5 Likely used: 9 Configuration: Logical max current cylinders 16383 16383 heads 16 16 sectors/track 63 63 -- CHS current addressable sectors: 16514064 LBA user addressable sectors: 268435455 LBA48 user addressable sectors: 1953525168 Logical Sector size: 512 bytes Physical Sector size: 4096 bytes Logical Sector-0 offset: 0 bytes device size with M = 1024*1024: 953869 MBytes device size with M = 1000*1000: 1000204 MBytes (1000 GB) cache/buffer size = 16384 KBytes Nominal Media Rotation Rate: 5400
You can use lsblk, it has a ton of options that you can use e.g.:
which gives this result in my case
MODEL SIZE NAME Samsung SSD 850 232.9G sda Samsung SSD 850 931.5G sdb