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
#1 楼
Linux自动检测SSD,并且从2.6.29内核版本开始,您可以使用以下命令验证sda
:1
用于硬盘,0
用于SSD。 如果磁盘是由硬件模拟的逻辑设备(例如RAID控制器),则可能无法工作。
有关更多信息,请参见此答案...
评论
在Stackoverflow上,有人发现此系统信息无效。
– PythoNic
2014年7月23日在10:55
@totor最好在其他帖子上添加此评论。我不知道他/她的内核版本:)
– PythoNic
2014年9月4日13:21在
@Totor您在“混合”驱动器中是正确的。但是,双驱动器混合驱动器显示为两个单独的驱动器,其中SSHD(固态混合驱动器)显示为单个驱动器。因此,SSHD将显示为1的旋转。
–永恒
16年6月30日在16:18
在虚拟服务器上,您可能需要获取/ sys / block / vda / queue / rotational
–单线程
16年11月8日在21:45
@Ferrybig只有NVME格式的SSD,而不是HDD(除非您从NVME插槽到普通SATA电缆确实有一些奇怪的分线适配器)。但不能确定,即使是通过NVME的SATA SSD在Linux上也可以显示为NVME,也可以显示为普通的sdX。
– Marki555
19/12/3在9:20
#2 楼
使用lsblk
(util-linux
软件包的一部分):lsblk -d -o name,rota
NAME ROTA
sda 0
sdb 0
sdc 1
其中
ROTA
表示rotational device
(如果为true,则为1
;如果为false,则为0
)评论
该实用程序似乎报告的信息与/sys/block/.../rotational中的信息相同。
– dma_k
15年10月20日在10:45
@dma_k毫不奇怪,考虑到似乎使用了那个。自己尝试:strace lsblk -d -o name,rota / dev / sda 2>&1 | grep --context = 3-颜色旋转
–用户
16年5月13日在16:30
实际上,我正在研究各种方法,因为某些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 {队列/旋转} =“ 0”,ATTR {队列/调度器} =“截止日期”
– dma_k
16年6月8日在18:01
lsblk在这里将所有我的旧SATA旋转良好硬盘(ASROCK mobo)报告为“ 0”。 «一些USB控制器不会告诉您驱动器实际上是非旋转的(例如USB闪存)»@dma_k,这是真的-并且比USB有线外部旋转HDD IMHA的其他方法更好。
–tuk0z
16 Sep 14 '20:45
这对我来说效果最好,但其中包括冗余/不需要的循环设备(例如,由于Ubuntu快照)。略有改进是:lsblk -d -e 7 -o名称,ROTA,DISC-MAX,MODEL,其中不包括回路设备+添加了型号名称(制造商)和磁盘容量。
–arielf
20 Jan 28'在16:01
#3 楼
使用smartctl
(通过安装smartmontools
进行安装)来检索供应商信息,sudo smartctl -a /dev/sdb
如果看到这样的行,
Rotation Rate: Solid State Device
那将是SSD驱动器。
#4 楼
我需要在VPS上执行此操作,但没有提供的解决方案对我有用。 / how-do-i-verify-my-hosting-provider-gave-me-sssds / 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
评论
我有一个非SSD,RAID10,我的结果是:真实0m1.351s-用户:0m0.307s-sys:0m0.560s
–the_nuts
16年4月10日在10:48
这是一个很好的答案,并且确实可以全面使用。问题是某些HDD速度非常快,其结果可能类似于SSD。尽管如此,这个答案还是一个很好的指标。
–itoctopus
16-6-10下午4:57
在没有SSD的VPS上,此结果类似于SSD示例。我相信这可能会被“混合”(SSD缓存的HDD)设置愚弄。
–trr
16年8月16日在1:40
对我不起作用。我发现SSD和HDD产生相似的结果。
– qqibrow
18-10-3在20:46
在VPS硬件上进行了虚拟化。您无法真正确定文件是存储在HDD上,被缓存还是存储在SSD上。
–vidarlo
19年2月9日在22:45
#5 楼
其他答案已经告诉您如何以多种方式获取此信息,包括/proc
。但是,如果存在任何虚拟化方式(例如具有多层的混合SAN阵列),或者Linux机器是虚拟机(Linux可能会将磁盘报告为基本SCSI旋转磁盘),则您必须期望所有这些机制都存在,无论硬件到底是什么)评论
这可能是更重要的响应之一……而且在BIOS或EFI / UEFI中,可能需要将SATA控制器模式设置为AHCI,然后还要在BIOS中将每个磁盘标记为SSD。我在家用PC上的Asrock板就是这样,不记得我在工作的服务器板上(超微)是否有类似的东西,但我没有在工作中使用SSD。
–ron
18年8月16日在17:50
@ron-将SATA控制器模式设置为AHCI是什么意思?如果设备是否为SSD,它将如何影响准确报告的能力?
–有动力
18/12/28在5:03
查找AHCI与IDE,第一次Web搜索中的措辞:IDE被认为适合普通计算机用户,并且与其他技术(尤其是较旧的设备)最兼容。但是,它缺乏对新技术的支持... AHCI提供了一个标准系统,设计人员和开发人员可以使用该系统来配置,检测或编程SATA / AHCI适配器。*
–ron
19年1月3日在22:29
这是BIOS中的基本设置,在“存储”下的某个位置,可以选择IDE,AHCI,还可以根据RAID的型号/型号/年份来选择主板。在IDE基本上过时并且标准成为AHCI之后,SSD就问世了。例如,今天在计算机上安装Windows95时,它无法识别任何硬件...处于IDE模式肯定不会帮助与SSD通讯,但准确性不高,而仅仅是能够与基于AHCI协议的SATA控制器进行通信。
–ron
19年1月3日在22:33
#6 楼
检查cat /proc/scsi/scsi
。在那里,您应该看到磁盘的确切型号。然后您只需在模型上搜索以找到有关它的信息。评论
dmesg将包含相同的信息。 dmesg | grep -i -e scsi -e ata
–马特
13年2月21日在9:41
#7 楼
这是旧文章,但我想分享另一种偶然发现的方法:sg_vpd --page=bdc /dev/sda
此命令可获取块设备的重要产品数据特征。对于旋转磁头磁盘,输出将包括:
额定转速:7200 rpm
对于SSD,它将包括:
非旋转介质(例如固态)
评论
+1。很好,但是在我的机器上运行(老化并且很快将要更换),WD Greens说没有报告中等旋转速度。 hdparm和smartmonctl表示相同。我想WD不想说。
–cas
16年8月4日在13:41
sg_vpd -i可能更有用,至少它可以提供驱动器上的供应商信息。不能对团队进行突袭。
–戴尔
19年1月11日在16:30
#8 楼
在您的Linux终端中键入以下内容:cat /proc/scsi/scsi
像我的一样:
$ cat /proc/scsi/scsi
Attached devices:
Host: scsi0 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: ST1000LM024 HN-M Rev: 0004
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi1 Channel: 00 Id: 00 Lun: 00
Vendor: ATA Model: SAMSUNG SSD PM83 Rev: 3D1Q
Type: Direct-Access ANSI SCSI revision: 05
Host: scsi2 Channel: 00 Id: 00 Lun: 00
Vendor: HL-DT-ST Model: DVD+-RW GT80N Rev: A103
Type: CD-ROM ANSI SCSI revision: 05
您可以看到的型号您的硬盘驱动器是SSD还是HHD。
评论
这似乎仅显示ATA / SCSI块设备,而其他诸如NVMe SSD则不显示。
–arielf
20年1月27日在22:36
如果磁盘位于RAID控制器后面,则只会看到RAID控制器,例如Vendor:LSI Model:SMC3108 Rev:4.27
–ron
20年1月28日在22:01
#9 楼
find /sys/block/* -maxdepth 1 -exec echo {} \; -exec grep '0' {}/queue/rotational \; | grep -B1 '^0' | grep '^/' | sed 's/^.*\///g'
这将搜索所有块设备,并检查其是否为旋转式(1);如果不是(0),则为ssd。
仅显示标记为ssd的光盘。
评论
阿久特| grep -v'loop'dans la commande倒入忽略者文件“块设备”,例如:对于$ {sind / sys / block / *中的SsDrive,-maxdepth 1 -exec echo {} \; -exec grep'0'{} /队列/旋转\; | grep -v'loop'| grep -B1'^ 0'| grep'^ /'| sed's /^.*\/// g');确实找到/ dev / -name $ SsDrive [0-9];完成
–user515185
20 Jan 28 '21:50
昨天翻译后,我注意到您以前回滚了尝试的翻译。请注意,本网站上的答案应为英文。谢谢!
– Jeff Schaller♦
20年1月30日在17:56
新增| grep -v在命令行上“循环”以忘记循环(虚拟块设备),例如:对于$ {sind / sys / block / *中的SsDrive -maxdepth 1 -exec echo {} \; -exec grep'0'{ } / queue / rotational \; | grep -v'loop'| grep -B1'^ 0'| grep'^ /'| sed's /^.*\/// g');确实找到/ dev / -name $ SsDrive [0-9];完成
–user515185
20 Jan 30'21:20
评论
如果这确实是SSD,则可能需要重新格式化以将擦除块与分区对齐。SATA(串行ATA)是指驱动器的连接类型,并不表示它是硬盘驱动器(HDD)。 SSD可以同时是SATA,因此建议对标题进行编辑。
如何检查我的Ubuntu是否放置在SSD上?