จะรู้ได้อย่างไรว่าดิสก์เป็น 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

1
หากนี่เป็น SSD จริงๆคุณอาจต้องการฟอร์แมตใหม่เพื่อจัดแนวบล็อกการลบกับพาร์ติชัน
symcbean

SATA (Serial ATA) หมายถึงประเภทการเชื่อมต่อของไดรฟ์และไม่ได้หมายความว่าเป็นไดรฟ์ฮาร์ดดิสก์ (HDD) SSD สามารถเป็น SATA ได้ในเวลาเดียวกันดังนั้นฉันขอแนะนำให้แก้ไขชื่อ
SpellingD

คำตอบ:


310

Linux ตรวจพบ SSD โดยอัตโนมัติและเนื่องจากเคอร์เนลเวอร์ชัน 2.6.29 คุณสามารถตรวจสอบsdaด้วย:

cat /sys/block/sda/queue/rotational

คุณควร1หาฮาร์ดดิสก์และ0SSD

มันอาจจะไม่ทำงานหากดิสก์ของคุณเป็นอุปกรณ์ลอจิคัลที่จำลองโดยฮาร์ดแวร์ (เช่นคอนโทรลเลอร์ RAID)

ดูคำตอบนี้สำหรับข้อมูลเพิ่มเติม ...


2
ใน Stackoverflowบางคนพบว่า sys-info นี้ไม่ทำงาน
PythoNic

@ ฉันมีดิสก์สองตัวฉันจะทราบได้อย่างไรว่าดิสก์ตัวใดเป็น ssd
user11498

2
@ user11498 แทนที่sdaด้วยsdbและดูว่า SSD ตัวใดเป็น ...
Totor

3
@Totor คุณถูกต้องในไดรฟ์ "ไฮบริด" อย่างไรก็ตามลูกผสมไดรฟ์แบบคู่แสดงเป็นไดรฟ์สองตัวโดยที่ SSHD (Solid-State Hybrid Drive) แสดงเป็นไดรฟ์เดียว ดังนั้น SSHD จะแสดงการหมุนของ 1
Terrance

6
บนเซิร์ฟเวอร์เสมือนคุณอาจต้องดึงข้อมูล/sys/block/vda/queue/rotational
MonoThreaded

90

ด้วยlsblk(ส่วนหนึ่งของutil-linuxแพ็คเกจ):

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

ที่ROTAหมายถึงrotational device( 1ถ้าจริง0ถ้าเท็จ)


1
/sys/block/.../rotationalยูทิลิตี้ที่ดูเหมือนว่าจะรายงานข้อมูลเช่นเดียวกับใน
dma_k

@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 เป็นเช่นนี้จริง --and วิธีที่ดีกว่านี้กว่าวิธีอื่น ๆ สำหรับสาย USB ภายนอกปั่น HDDs IMHA
tuk0z

50

ใช้smartctl(ติดตั้งโดยการติดตั้งsmartmontools) เพื่อดึงข้อมูลผู้ขาย

sudo smartctl -a /dev/sdb

หากคุณเห็นบรรทัดเช่นนี้

Rotation Rate: Solid State Device

นั่นจะเป็นไดรฟ์ SSD


5
ไม่พบคำสั่งsmartctl
IgorGanapolsky

7
smartctl เป็นส่วนหนึ่งของแพ็คเกจ smartmontools
trr

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

ฉันไม่ใช่แบบ SSD, RAID10 และผลลัพธ์ของฉันคือ: 0m1.351s จริง - ผู้ใช้: 0m0.307s - sys: 0m0.560s
the_nuts

1
นี่เป็นคำตอบที่ดีและใช้ได้ทั่วกระดาน สิ่งนี้เป็น HDD บางตัวที่ค่อนข้างเร็วและผลลัพธ์จะคล้ายกับของ SSD ถึงกระนั้นคำตอบนี้ให้การวัดที่ดี
itoctopus

1
ใน VPS ของฉันที่ไม่มี SSD สิ่งนี้จะให้ผลลัพธ์เหมือนกับตัวอย่าง SSD ของคุณ ฉันเชื่อว่าสิ่งนี้อาจถูกหลอกได้จากการตั้งค่า "ไฮบริด" (SSD แคชแคช)
trr

ไม่ได้ผลสำหรับฉัน ฉันพบว่า SSD และ HDD ให้ผลลัพธ์ที่คล้ายกัน
qqibrow

บนฮาร์ดแวร์เสมือนจริงของ VPS คุณไม่สามารถบอกได้อย่างชัดเจนว่าไฟล์ของคุณถูกเก็บไว้ใน HDD แคชหรือเก็บไว้ใน SSD
vidarlo

12

คำตอบอื่น ๆ แล้วบอกคุณว่าจะได้รับข้อมูลนี้ในหลาย ๆ /procด้านรวมทั้ง แต่คุณต้องคาดหวังว่ากลไกเหล่านี้จะอยู่หากว่ามีการทำเวอร์ช่วลไลเซชั่นในทางใดทางหนึ่งเช่นอาร์เรย์ SAN แบบไฮบริดที่มีหลายระดับหรือหากเครื่อง Linux เป็นเครื่องเสมือน ไม่ว่าฮาร์ดแวร์จริงๆจะเป็นอะไร)


นี่อาจเป็นหนึ่งในการตอบสนองที่สำคัญกว่า ... และภายใน BIOS หรือ EFI / UEFI อาจต้องตั้งค่าโหมดคอนโทรลเลอร์ SATA เป็น AHCI จากนั้นทำเครื่องหมายแต่ละดิสก์เป็น SSD ภายในไบออส บอร์ด Asrock ของฉันที่บ้านพีซีเป็นเช่นนี้จำไม่ได้ว่ามีสิ่งที่คล้ายกันในบอร์ดเซิร์ฟเวอร์ (ซูเปอร์ไมโคร) ฉันมีที่ทำงาน แต่ฉันไม่ได้ใช้ SSD ในที่ทำงาน
รอน

@ron - คุณหมายถึงอะไรโดยการตั้งค่าโหมดคอนโทรลเลอร์ SATA เป็น AHCI? มันจะส่งผลกระทบต่อความสามารถในการรายงานอย่างถูกต้องว่าอุปกรณ์เป็น SSD หรือไม่?
แรงบันดาลใจ

ค้นหา AHCI vs IDE ข้อความจากการค้นหาเว็บครั้งแรก: IDE ถือว่ามีความเพียงพอสำหรับผู้ใช้คอมพิวเตอร์ทั่วไปและสามารถใช้งานร่วมกับเทคโนโลยีอื่น ๆ ได้มากที่สุดโดยเฉพาะอุปกรณ์รุ่นเก่า แต่ก็ขาดการสนับสนุนสำหรับเทคโนโลยีใหม่ ... AHCI ให้ระบบมาตรฐานที่นักออกแบบและนักพัฒนาสามารถใช้ในการกำหนดค่าการตรวจสอบหรืออะแดปเตอร์โปรแกรม SATA / AHCI *.
รอน

นั่นคือการตั้งค่าพื้นฐานใน BIOS บางแห่งภายใต้การจัดเก็บข้อมูลตัวเลือกคือ IDE, AHCI และยังขึ้นอยู่กับยี่ห้อ / รุ่น / ปีของเมนบอร์ดยังสามารถเสนอ RAID SSD ออกมานานหลังจากที่ IDE เริ่มล้าสมัยและมาตรฐานกลายเป็น AHCI ตัวอย่างเช่นการติดตั้ง Windows95 บนคอมพิวเตอร์ในวันนี้มันจะไม่รู้จักฮาร์ดแวร์ใด ๆ ... การที่อยู่ในโหมด IDE แน่นอนว่าจะไม่ช่วยให้การสื่อสารกับ SSD ไม่แม่นยำมากนัก ความสามารถในการสื่อสารกับคอนโทรลเลอร์ SATA ซึ่งใช้โปรโตคอล AHCI
ron

9

cat /proc/scsi/scsiตรวจสอบ ที่นั่นคุณควรเห็นรูปแบบที่แน่นอนของดิสก์ของคุณ จากนั้นคุณเพียง google โมเดลเพื่อค้นหาข้อมูลเกี่ยวกับมัน


1
dmesgจะมีข้อมูลเดียวกัน dmesg | grep -i -e scsi -e ata
Matt

3

นี่เป็นโพสต์เก่า แต่ฉันต้องการแบ่งปันวิธีอื่นในการทำสิ่งนี้ซึ่งฉันค้นพบโดยไม่ได้ตั้งใจ:

sg_vpd --page=bdc /dev/sda

คำสั่งนี้จะดึงข้อมูลผลิตภัณฑ์ที่สำคัญสำหรับคุณสมบัติของอุปกรณ์บล็อก สำหรับดิสก์ที่หมุนได้นั้นเอาต์พุตจะรวมถึง: อัตราการหมุนที่กำหนด: 7200 รอบต่อนาทีสำหรับ SSD จะรวมถึง: สื่อที่ไม่หมุน (เช่นสถานะของแข็ง)


+1 ดี แต่ทำงานว่าในวันที่ฉัน (ริ้วรอยและเร็ว ๆ นี้จะถูกแทนที่) WD Medium rotation rate is not reportedสีเขียวกล่าวว่า hdparmและsmartmonctlพูดเหมือนกัน ฉันเดาว่า WD ไม่ต้องการบอก
cas

sg_vpd -i อาจมีประโยชน์มากกว่าอย่างน้อยก็ให้ข้อมูลผู้ขายจากไดรฟ์ ใช้การไม่ได้กับการโจมตี
Dale
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.