Как узнать, является ли диск SSD или HDD

193

Я хочу знать, является ли диск твердотельным или жестким диском.

lshwне установлен. Я делаю, yum install lshwи он говорит, что нет пакета с именем lshw. Я не знаю, какая версия http://pkgs.repoforge.org/lshw/ подходит для моего CentOS.

Я ищу в сети, и нет ничего, что объясняет, как узнать, является ли диск SSD или HDD. Должен ли я сначала отформатировать их?

Результат 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
user4951
источник
1
Если это действительно SSD, вы можете отформатировать его, чтобы выровнять блоки стирания с разделами.
symcbean
SATA (Serial ATA) относится к типу подключения накопителя и не подразумевает, что это жесткий диск (HDD). SSD могут быть одновременно SATA, поэтому я предлагаю изменить название.
SpellingD

Ответы:

311

Linux автоматически обнаруживает SSD, и, начиная с версии ядра 2.6.29, вы можете проверить sdaс помощью:

cat /sys/block/sda/queue/rotational

Вы должны получить 1для жестких дисков и 0для SSD.

Вероятно, он не будет работать, если ваш диск представляет собой логическое устройство, эмулируемое аппаратным обеспечением (например, контроллер RAID).

Смотрите этот ответ для получения дополнительной информации ...

Totor
источник
2
В Stackoverflow кто-то обнаружил, что эта sys-информация не работает.
PythoNic
@ У меня два диска, как узнать, какой из них - ssd?
user11498
2
@ user11498 замените sdaна sdbи посмотрите, какой из них SSD ...
Totor
3
@Totor Вы правы в «гибридных» дисках. Однако гибриды с двумя дисками отображаются как два отдельных диска, где SSHD (твердотельный гибридный диск) отображается как один диск. Таким образом, SSHD будет показывать вращение 1.
Terrance
6
На виртуальных серверах может потребоваться /sys/block/vda/queue/rotational
загрузка
90

С lsblk(часть util-linuxпакета):

lsblk -d -o имя, рота
NAME ROTA
sda     0
sdb     0
sdc     1

где ROTAозначает rotational device( 1если true, 0если false)

don_crissti
источник
1
Эта утилита, кажется, сообщает ту же информацию, что и в /sys/block/.../rotational.
dma_k 20.10.15
@ dma_k Неудивительно, если учесть, что он использует это. Попробуйте сами:strace lsblk -d -o name,rota /dev/sda 2>&1 | grep --context=3 --color rotational
CVn
5
На самом деле я искал разные способы, потому что некоторые контроллеры USB не говорят, что диск на самом деле не вращающийся (например, USB-флеш-накопитель), и в Linux нет способа сказать правду. В конце дня я исправил это, создав явное правило в /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
lsblkсообщает "0" для всех моих старых добрых вращающихся жестких дисков SATA здесь (ASROCK mobo). « Некоторые контроллеры USB не говорят , что диск фактически без вращения (например, USB флэш) » @dma_k это настолько верно , --и лучше так , чем другой способ для USB проводной внешний спиннинг винчестеры МАМЗ.
tuk0z
50

Используйте smartctl(установите путем установки smartmontools), чтобы получить информацию о поставщике,

sudo smartctl -a /dev/sdb

Если вы видите такую ​​линию,

Rotation Rate: Solid State Device

Это был бы SSD-накопитель.

маргаритка
источник
5
Команда smartctl не найдена
Игорь Ганапольский
7
smartctl является частью пакета Smartmontools
ТИР
27

Мне нужно было сделать это на VPS, и ни одно из предложенных решений не помогло мне,

этот ответ сделал свое дело

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

Итак, речь идет о считывании случайных данных с накопителя и оценке времени.

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

вот мои результаты для SSD

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

и HDD

real    0m14.249s
user    0m0.752s
sys     0m6.284s
DAV
источник
У меня не-ssd, RAID10, и мои результаты: реальные 0m1.351s - пользователь: 0m0.307s - sys: 0m0.560s
the_nuts
1
Это хороший ответ, и он работает по всем направлениям. Дело в том, что некоторые жесткие диски довольно быстрые, и результаты могут быть такими же, как у твердотельных накопителей. Тем не менее, этот ответ обеспечивает хороший показатель.
итопоп
1
На моем VPS без SSD это дает такие же результаты, как на вашем примере с SSD. Я полагаю, что это может быть одурачено «гибридными» (SSD-кэшированными HDD) установками.
ТИР
не работает для меня Я считаю, SSD и HDD дают похожий результат.
qqibrow
На виртуальном оборудовании VPS. Вы не можете точно сказать, хранятся ли ваши файлы на жестком диске, кэшируются или хранятся на SSD.
Видарло
12

Другие ответы уже говорят вам, как получить эту информацию несколькими способами, в том числе /proc. Но вы должны ожидать, что все эти механизмы будут лежать, если на пути есть какая-либо виртуализация, такая как гибридный массив SAN с несколькими уровнями, или если машина Linux является виртуальной машиной (где Linux, вероятно, будет сообщать диск как базовый вращающийся диск SCSI независимо от того, что на самом деле аппаратное обеспечение)

Тим Каттс
источник
это может быть одним из наиболее важных ответов ... а также в BIOS или EFI / UEFI, возможно, потребуется установить режим контроллера SATA на AHCI, а затем также пометить каждый диск как SSD в BIOS. Моя плата Asrock на домашнем ПК похожа на это, не могу вспомнить, была ли похожая вещь на серверных платах (supermicro) у меня на работе, но я не использую SSD на работе.
рон
@ron - Что вы имеете в виду, устанавливая режим контроллера SATA на AHCI? Как это влияет на способность точно сообщать, является ли устройство SSD или нет?
мотивировано
посмотрите AHCI против IDE, формулировка из первого веб-поиска: IDE считается адекватной для среднего пользователя компьютера и наиболее совместима с другими технологиями, особенно с более старыми устройствами. Однако ему не хватает поддержки новых технологий ... AHCI предоставляет стандартную систему, которую дизайнеры и разработчики могут использовать для настройки, обнаружения или программирования адаптеров SATA / AHCI. *
Рон
это базовые настройки в BIOS, где-то под Storage, есть выбор IDE, AHCI, а также в зависимости от модели / модели / года выпуска материнской платы также может быть RAID. SSD появились намного позже того, как IDE в основном устарела, и стандартом стал AHCI. Например, установив Windows95 на компьютер сегодня, он не будет распознавать какое-либо оборудование ... находясь в режиме IDE, безусловно, не поможет связь с твердотельным накопителем не так сильно, а просто возможность связи с контроллером SATA, который основан на протоколах AHCI.
рон
9

проверить cat /proc/scsi/scsi. там вы должны увидеть точную модель вашего диска. тогда вы просто гуглите модель, чтобы найти информацию об этом.

переигровка
источник
1
dmesgбудет содержать ту же информацию. dmesg | grep -i -e scsi -e ata
Мэтт
3

Это старый пост, но я хотел поделиться другим способом сделать это, который я обнаружил случайно:

sg_vpd --page=bdc /dev/sda

Эта команда извлекает жизненно важные данные продукта для характеристик блочного устройства. Для диска с вращающейся головкой выходной сигнал будет включать: Номинальная частота вращения: 7200 об / мин. Для твердотельного накопителя он будет включать в себя: невращающуюся среду (например, твердотельное)

user177312
источник
+1. хорошо, но работает, что на моем (старение и скоро будет заменено) WD Greens говорит Medium rotation rate is not reported. hdparmи smartmonctlсказать то же самое. Я думаю, WD не хочет говорить.
Cas
sg_vpd -i может быть более полезным, по крайней мере, он дает информацию о поставщике с диска. Не работает на рейде, правда.
Дейл