Cara mengetahui apakah disk adalah SSD atau HDD

193

Saya ingin tahu apakah disk adalah solid-state drive atau hard disk.

lshwtidak terpasang. Saya lakukan yum install lshwdan dikatakan tidak ada paket bernama lshw. Saya tidak tahu versi http://pkgs.repoforge.org/lshw/ mana yang cocok untuk CentOS saya.

Saya mencari di internet dan tidak ada yang menjelaskan bagaimana cara mengetahui apakah drive itu SSD atau HDD. Haruskah saya memformatnya terlebih dahulu?

Hasil dari fdisk -l:

Disk /dev/sda: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00074f7d

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          14      103424   83  Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2              14         536     4194304   82  Linux swap / Solaris
Partition 2 does not end on cylinder boundary.
/dev/sda3             536       14594   112921600   83  Linux

Disk /dev/sdc: 120.0 GB, 120034123776 bytes
255 heads, 63 sectors/track, 14593 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdb: 128.0 GB, 128035676160 bytes
255 heads, 63 sectors/track, 15566 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000


Disk /dev/sdd: 480.1 GB, 480103981056 bytes
255 heads, 63 sectors/track, 58369 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
pengguna4951
sumber
1
Jika ini benar-benar SSD, Anda mungkin ingin memformat ulang untuk menyelaraskan blok hapus dengan partisi.
symcbean
SATA (Serial ATA) mengacu pada jenis koneksi drive, dan tidak menyiratkan bahwa itu adalah Hard Disk Drive (HDD). SSD dapat secara bersamaan menjadi SATA, jadi saya menyarankan untuk mengedit judulnya.
SpellingD

Jawaban:

311

Linux secara otomatis mendeteksi SSD, dan karena kernel versi 2.6.29, Anda dapat memverifikasi sdadengan:

cat /sys/block/sda/queue/rotational

Anda harus mendapatkan 1hard disk dan 0SSD.

Mungkin tidak akan berfungsi jika disk Anda adalah perangkat logis yang ditiru oleh perangkat keras (seperti pengontrol RAID).

Lihat jawaban ini untuk informasi lebih lanjut ...

Totor
sumber
2
Pada Stackoverflow seseorang menemukan info-sys ini tidak berfungsi.
PythoNic
@ Motor saya punya dua disk, bagaimana saya bisa mengetahui yang mana ssd?
user11498
2
@ user11498 ganti sdaoleh sdbdan lihat yang mana adalah SSD ...
Totor
3
@ Motor Anda benar di drive "hybrid". Namun, hibrida drive ganda muncul sebagai dua drive individual, di mana SSHD (Solid-State Hybrid Drive) muncul sebagai drive tunggal. Jadi, SSHD akan menunjukkan rotasi 1.
Terrance
6
Di server virtual, Anda mungkin perlu mengambil/sys/block/vda/queue/rotational
MonoThreaded
90

Dengan lsblk(bagian dari util-linuxpaket):

lsblk -d -o nama, rota
NAME ROTA
sda     0
sdb     0
sdc     1

di mana ROTAberarti rotational device( 1jika benar, 0jika salah)

don_crissti
sumber
1
Utilitas itu tampaknya melaporkan informasi yang sama seperti pada /sys/block/.../rotational.
dma_k
@dma_k Tidak heran, mengingat tampaknya menggunakan yang itu. Cobalah sendiri:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
CVn
5
Sebenarnya saya mencari berbagai cara karena beberapa pengontrol USB tidak memberi tahu bahwa drive itu sebenarnya non-rotasional (misalnya, USB flash) dan tidak ada cara di Linux untuk mengatakan yang sebenarnya. Pada akhirnya saya telah memperbaikinya dengan membuat aturan eksplisit di /etc/udev/rules.d/90-non-rotational.rules:ACTION=="add|change", SUBSYSTEMS=="usb", ENV{ID_SERIAL}=="SanDisk_Ultra_Fit_*-0:0", ATTR{queue/rotational}="0", ATTR{queue/scheduler}="deadline"
dma_k
lsblkmelaporkan "0" untuk semua HDD pemintalan SATA lama saya yang baik di sini (ASROCK mobo). « Beberapa pengontrol USB tidak memberi tahu bahwa drive itu sebenarnya non-rotasi (misalnya, USB flash) » @dma_k ini sangat benar - dan lebih baik dengan cara ini daripada cara lain untuk kabel eksternal USB HDD IMHA yang berputar .
tuk0z
50

Gunakan smartctl(instal dengan menginstal smartmontools) untuk mengambil informasi vendor,

sudo smartctl -a /dev/sdb

Jika Anda melihat garis seperti ini,

Rotation Rate: Solid State Device

Itu akan menjadi drive SSD.

bunga aster
sumber
5
perintah smartctl tidak ditemukan
IgorGanapolsky
7
smartctl adalah bagian dari paket smartmontools
trr
27

Saya perlu melakukan ini pada VPS dan tidak ada solusi yang tersedia yang berfungsi untuk saya,

jawaban ini berhasil

https://serverfault.com/questions/551453/how-do-i-verify-that-my-hosting-provider-gave-me-ssds/551495#551495

jadi, ini tentang membaca data acak dari drive dan menilai waktu.

time for i in `seq 1 1000`; do
    dd bs=4k if=/dev/sda count=1 skip=$(( $RANDOM * 128 )) >/dev/null 2>&1;
done

berikut ini adalah hasil saya untuk SSD

real    0m1.375s
user    0m0.285s
sys     0m0.944s

dan HDD

real    0m14.249s
user    0m0.752s
sys     0m6.284s
dav
sumber
Saya memiliki non-ssd, RAID10, dan hasil saya adalah: real 0m1.351s - pengguna: 0m0.307s - sys: 0m0.560s
the_nuts
1
Ini adalah jawaban yang bagus dan berhasil di seluruh papan. Masalahnya adalah beberapa HDD cukup cepat dan hasilnya bisa mirip dengan SSD. Meski begitu, jawaban ini memberikan metrik yang baik.
itoctopus
1
Pada VPS saya tanpa SSD ini memberikan hasil seperti contoh SSD Anda. Saya percaya ini mungkin tertipu oleh pengaturan "hybrid" (SSD cached HDD).
trr
tidak bekerja untuk saya. Saya menemukan SSD dan HDD menghasilkan hasil yang serupa.
qqibrow
Pada perangkat keras VPS tervirtualisasi. Anda tidak dapat memastikan apakah file Anda disimpan di HDD, di-cache, atau disimpan di SSD.
vidarlo
12

Jawaban lain sudah memberi tahu Anda cara mendapatkan informasi ini dalam beberapa cara, termasuk /proc. Tetapi Anda harus mengharapkan semua mekanisme ini berbohong jika ada virtualisasi di jalan, seperti array SAN hibrid dengan beberapa tingkatan, atau jika mesin Linux adalah mesin virtual (di mana Linux mungkin akan melaporkan disk sebagai disk putar SCSI dasar , terlepas dari apa sebenarnya perangkat kerasnya)

Tim Cutts
sumber
ini mungkin salah satu respons yang lebih penting ... dan juga di dalam BIOS, atau EFI / UEFI mungkin perlu mengatur mode pengontrol SATA ke AHCI dan kemudian juga menandai setiap disk sebagai SSD di dalam bios. Papan Asrock saya di PC rumah adalah seperti ini, tidak dapat mengingat apakah ada hal serupa di papan server (supermicro) yang saya miliki di tempat kerja tetapi saya tidak menggunakan SSD di tempat kerja.
ron
@ron - Apa yang Anda maksud dengan mengatur mode pengontrol SATA ke AHCI? Bagaimana pengaruhnya terhadap kemampuan melaporkan secara akurat apakah perangkat itu SSD atau tidak?
Termotivasi
lihat AHCI vs IDE, kata-kata dari pencarian web pertama: IDE dianggap memadai untuk pengguna komputer rata-rata, dan paling kompatibel dengan teknologi lain, terutama perangkat yang lebih tua. Namun, tidak memiliki dukungan untuk teknologi baru ... AHCI menyediakan sistem standar yang dapat digunakan oleh perancang dan pengembang untuk mengonfigurasi, mendeteksi, atau memprogram adaptor SATA / AHCI. *
ron
itu adalah pengaturan dasar di BIOS, di suatu tempat di bawah Storage, pilihannya adalah IDE, AHCI, dan juga tergantung pada merek / model / tahun motherboard yang juga dapat menawarkan RAID. SSD keluar lama setelah IDE pada dasarnya usang dan standar menjadi AHCI, Misalnya menginstal Windows95 pada komputer hari ini tidak akan mengenali perangkat keras ... berada dalam mode IDE tentu tidak akan membantu komunikasi dengan SSD tidak begitu banyak akurasi tetapi hanya dapat berkomunikasi dengan pengontrol SATA yang didasarkan pada protokol AHCI.
Ron
9

periksa cat /proc/scsi/scsi. di sana Anda harus melihat model disk Anda. maka Anda cukup google model untuk mencari info tentang hal itu.

ulangan
sumber
1
dmesgakan berisi info yang sama. dmesg | grep -i -e scsi -e ata
Matt
3

Ini adalah pos lama tetapi saya ingin berbagi cara lain untuk melakukan ini yang saya temukan secara tidak sengaja:

sg_vpd --page=bdc /dev/sda

Perintah ini mengambil Data Produk Vital untuk karakteristik perangkat blok. Untuk disk kepala berputar, output akan mencakup: Laju rotasi nominal: 7200 rpm Untuk SSD, itu akan mencakup: Media non-rotating (misalnya solid state)

pengguna177312
sumber
+1. bagus, tetapi menjalankannya pada saya (penuaan dan akan segera diganti) kata WD Greens Medium rotation rate is not reported. hdparmdan smartmonctlmengatakan hal yang sama. Saya kira WD tidak ingin memberi tahu.
cas
sg_vpd -i mungkin lebih berguna, setidaknya memberikan info vendor dari drive. Tidak berhasil saat razia, tho '.
Dale