หมายเลขซีเรียลฮาร์ดดิสก์จากเทอร์มินัล?


65

ฉันมีฮาร์ดดิสหลายตัวที่เชื่อมต่อกับเซิร์ฟเวอร์ของฉันและฉันไม่แน่ใจว่าอันไหนในมุมมองของ sdXY หากฉันเห็นหมายเลขซีเรียลของฮาร์ดดิสของฉันจากเทอร์มินัลฉันสามารถระบุได้อย่างง่ายดาย

มีวิธีใดบ้างที่ฉันเห็นพวกเขาจากเทอร์มินัล

คำตอบ:


57

โซลูชันอื่นที่ไม่ต้องการสิทธิ์พิเศษ:

udevadm info --query=all --name=/dev/sda | grep ID_SERIAL

นี่คือห้องสมุดจริง ๆ ที่lsblkกล่าวถึงโดย don_crissti, leverage แต่รุ่น lsblk ของฉันไม่มีตัวเลือกสำหรับซีเรียล


2
ทางออกที่ดีที่สุดหากฮาร์ดดิสก์ของคุณเสียชีวิตอย่างสมบูรณ์ วิธีอื่นไม่ทำงาน
niieani

1
grep ID_SCSI_SERIALอาจจะเป็นสิ่งที่จริงให้หมายเลขซีเรียลของไดรฟ์เมื่อเทียบกับโลกกว้างชื่อ (WWN) ID_SERIALรายงานภายใต้
ron

@ron ที่น่าสนใจ! คุณมีการอ้างอิงใด ๆ ที่กำหนด wwn?
โยฮันน์

การอ้างอิงเพียงอย่างเดียวคือประสบการณ์มือแรกของฉันกับ WD, Seagate, HGST ฮาร์ดไดรฟ์เปรียบเทียบค่าที่เทอร์มินัลกับสิ่งที่เขียนบนฉลาก ฮาร์ดไดรฟ์เป็นเกรดสำหรับองค์กร / ศูนย์ข้อมูลเป็นหลักเทียบกับเดสก์ทอปสำหรับผู้บริโภค
รอน

1
@ron เพิ่งทดสอบสิ่งนี้อีกครั้ง udevadm รุ่นของฉัน (systemd 229) รายงานฟิลด์ ID_WWN สำหรับไดรฟ์ในระบบของฉันที่มียังไม่เป็นID_SCSI_SERIALหรือสิ่งใด ๆ ที่คล้ายคลึงกัน (ไม่ID_ATA_SERIAL): E: ID_SERIAL=TOSHIBA-TR150_23SC51E8J2BI ... E: ID_SERIAL_SHORT=23SC51E8J2BI ... E: ID_WWN=0x5e83a97200463ff3 ... E: ID_WWN_WITH_EXTENSION=0x5e83a97200463ff3
โยฮันน์

50

ในประเภทอาคาร:

# hdparm -I /dev/sd? | grep 'Serial\ Number'

แก้ไข: คุณสามารถใช้lshwหรือsmartctl

  • lshw

    # lshw -class disk

  • smartctl

    # smartctl -i /dev/sda

หากคุณไม่มีเครื่องมือเหล่านั้นเพียงแค่ติดตั้งแพ็คเกจต่อไปนี้

# apt-get install hdparm
# apt-get install smartmontools
# apt-get install lshw

ขอบคุณสำหรับคำตอบที่ฉันทดสอบ แต่มันไม่ได้ให้ dev / sdXX โปรดลองแก้ไขมัน เว้นแต่จะดี
rʒɑdʒɑ

หากคุณนำส่วน 'grep' ออกคุณจะได้รับข้อมูลแบบเต็มดังในhdparm -I /dev/sd?
Loopo

3
ไม่ทำงานหากฮาร์ดดิสก์ของคุณเสียชีวิตอย่างสมบูรณ์และคุณกำลังค้นหาหมายเลขซีเรียลของยูนิตที่ผิดปกติ ใช้วิธีการของ @ Johann แทน
niieani

ฉันต้องติดตั้งhdparmแพ็คเกจ(apt-ly named) บน ARM (Raspbian บน Raspberry Pi)
EthernetCable

ใช้hdparm -I /dev/sd? | grep --before-context=4 'Serial\ Number'เพื่อเชื่อมโยงหมายเลขซีเรียลกับอุปกรณ์ ดูเหมือนว่าคำขอต้นฉบับจะเป็นผลลัพธ์
s.co.tt

31

ชื่ออุปกรณ์1และหมายเลขซีเรียลที่เกี่ยวข้อง:

lsblk --nodeps -o name,serial

เอาท์พุท:

NAME SERIAL
sda  0000000012400917BA30
sdb  0000000012400917BA96

เพิ่ม-nถ้าคุณไม่ต้องการพิมพ์บรรทัดส่วนหัว:

lsblk --nodeps -no name,serial

เอาท์พุท:

sda  0000000012400917BA30
sdb  0000000012400917BA96

ผ่านdeviceเป็นอาร์กิวเมนต์เพื่อรับเฉพาะหมายเลขซีเรียลของอุปกรณ์เฉพาะ:

lsblk --nodeps -no serial /dev/sda

เอาท์พุท:

0000000012400917BA30

เก็บไว้ในใจlsblk จะแสดงข้อมูลเกี่ยวกับทั้งหมดที่มีอยู่ (หรือที่ระบุ)อุปกรณ์ป้องกัน ตอนนี้สำหรับผู้ที่ไม่ทราบความหมายระยะสุดท้าย:
โดยทั่วไปอุปกรณ์บล็อคคืออุปกรณ์ที่จัดเก็บหรือเก็บข้อมูล ดิสก์ดิสเก็ตต์ฮาร์ดไดรฟ์และไดรฟ์ซีดีรอมล้วนเป็นอุปกรณ์บล็อคทั้งหมด แต่นั่นไม่ใช่ปัญหาเมื่อใช้lsblkในขณะที่คุณสามารถเพิ่มคอลัมน์เพิ่มเติมเช่นtype(ประเภทอุปกรณ์) และ / หรือtran(ประเภทการขนส่งอุปกรณ์):

lsblk --nodeps ไม่มีชื่อ, อนุกรม, ประเภท, ทราน
sda  0000000012400917BA30     disk sata
sdb  0000000012400917BA96     disk sata
sr0  4B583242334C453233353320 rom  usb

10
โปรดทราบว่าสิ่งนี้ดูเหมือนจะต้องการlsblkจาก util-linux เวอร์ชั่น 2.24 หรือสูงกว่า: github.com/karelzak/util-linux/commit/…
โยฮันน์

วิธีการดึงข้อมูลซีเรียลดิสก์เมื่อฉันใช้ VM ubuntu คำสั่งข้างต้นไม่ได้ทำอะไรเลยในสถานการณ์เช่นนี้
เบ็นยามินจาฟารี่

11

โดยการใช้hdparm คุณสามารถดูหมายเลขซีเรียลฮาร์ดดิสของคุณได้จากเทอร์มินัล

เปิดเทอร์มินัลของคุณและพิมพ์เป็น

 hdparm -I /dev/sd?|grep -E "Number|/dev"

ดี แต่คุณจะต้องsuperuserที่จะใช้ตัวเลือกใน-I hdparmฉันไม่ต้องการที่อย่างใดอย่างหนึ่งและต้องการวิธีการอ่าน ser # โดยไม่มีสิทธิ์รูท นี่คือเหตุผลที่ฉัน upvoted โซลูชันของ don_crissti เท่านั้น - syntaxerror 57 วินาทีที่แล้ว
syntaxerror

9
$ ls -al /dev/disk/by-id/*sda*

นี่จะแสดงหมายเลขซีเรียลกับชื่อดิสก์ที่คุณคุ้นเคย


นี่เป็นวิธีที่ฉลาด แต่ไม่ได้ทำงานบนกล่องเสมือนของฉัน ดูเหมือนว่าเนื้อหาของby-iddir เป็นเพียงการเชื่อมโยงดังนั้นls -al /dev/disk/by-id/จะแสดงให้คุณเห็นสิ่งที่คุณต้องการอยู่แล้ว
Wildcard

1
นอกจากนี้ยังใช้งานได้กับฉันในระบบ debian live boot ในขณะที่เครื่องมืออื่น ๆ ทั้งหมดไม่สามารถใช้ได้ตั้งแต่เริ่มต้นโดยไม่ต้องตั้งค่าอินเทอร์เน็ตและรับพวกเขา
hoijui

3

วิธีที่ง่ายที่สุดที่ฉันรู้ (ไม่ต้องใช้ราก):

inxi -Dplxx

ผลลัพธ์นั้นดิสก์ทั้งหมด serials ของพวกเขาและข้อมูลเพิ่มเติมใด ๆ -p เพิ่มพาร์ติชัน -l เพิ่มป้ายกำกับ -u เพิ่ม UUID สำหรับพาร์ติชัน

นอกจากนี้ยังง่ายต่อการจดจำมาก

ตัวอย่าง:

inxi -Dxx
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX

โปรดทราบว่าสิ่งนี้จะกรองออปติคัลไดรฟ์ออก วิธีดูข้อมูลออปติคัล:

inxi -Dxxd 
Drives:    HDD Total Size: 810.2GB (42.9% used)
           ID-1: /dev/sdc model: ST3160827AS size: 160.0GB serial: 5MT2HMH6
           ID-2: /dev/sdb model: WDC_WD3200JD size: 320.1GB serial: WD-WCAMR1302926
           ID-3: /dev/sda model: ST380817AS size: 80.0GB serial: 4MR2EWBE
           ID-4: /dev/sdd model: ST3250824AS size: 250.1GB serial: 9ND08GKX
           Optical-1: /dev/sr0 model: LITE-ON DVDRW SOHW-1693S
           rev: KS09 dev-links: dvd,dvdrw
           Features: speed: 48x multisession: yes
           audio: yes dvd: yes rw: cd-r,cd-rw,dvd-r state: running
           Optical-2: /dev/sr1 model: LITE-ON LTR-52327S rev: QS0C dev-links: cdrom,cdrw
           Features: speed: 52x multisession: yes
           audio: yes dvd: no rw: cd-r,cd-rw state: running

โปรดทราบว่าในระบบ Debian ของฉัน lsblk จะไม่แสดงรายการใด ๆ สำหรับสิ่งพิมพ์ไม่ว่าจะเป็นผู้ใช้หรือผู้ใช้ นี่คือเหตุผลที่ inxi ใช้วิธีการที่เชื่อถือได้มากขึ้นในการรับข้อมูล

lsblk --nodeps -o name,serial
NAME SERIAL
fd0  
sda  
sdb  
sdc  
sdd  
sr0  
sr1  

lsblk --version
lsblk from util-linux 2.25.2

อย่างที่คุณเห็น lsblk คิดว่าออปติคัลไดรฟ์และฟลอปปี้ไดรฟ์ก็เป็นดิสก์เช่นกันซึ่งในความเป็นจริงแล้วมันไม่ใช่ดิสก์เพราะมันจะไม่กลายเป็นดิสก์จนกว่าจะใส่ดิสก์ และมันไม่แสดงอะไรเลยสำหรับซีเรียล แต่อย่างใดมันไม่แสดงอะไรเลยสำหรับค่าอื่น ๆ เช่นฉลาก ข้อผิดพลาดอย่างแน่นอนเนื่องจากข้อมูลนี้มีอยู่ในระบบนั่นคือสิ่งที่ inxi รับโดยตรง


2
ส่วนสุดท้ายของการโพสต์ของคุณไม่ถูกต้องlsblkไม่คิดว่าพวกเขากำลังดิสก์มันก็แสดงรายการอุปกรณ์ป้องกัน ดูโพสต์ที่อัปเดตของฉันสำหรับการชี้แจง เพื่อที่จะไม่แสดงข้อมูล - นี่เป็นเพราะคุณกำลังใช้เดเบียนซึ่งเป็นตัวระบุถึงlsblkพฤติกรรมของพวกเขา มันทำงานได้อย่างดีใน ArchLinux ดังนั้นแน่นอนไม่ได้เป็นปัญหา นอกจากนี้ยังinxiเป็นเพียงสคริปต์ทุบตีที่ใช้คำสั่งอื่น ๆ เพื่อรับข้อมูลนั้น มันไม่ได้รับอะไร "โดยตรง"
don_crissti

ถูกต้องทางเทคนิค แต่ในขอบเขตของการพูดปกติดิสก์เป็นวิธีที่เหมาะสมในการสื่อสารแนวคิดนี้ พฤติกรรมที่ล้มเหลวนั้นเป็นข้อบกพร่องแน่นอนมันไม่เกี่ยวข้องกับสิ่งที่เป็นสาเหตุดังนั้นความคิดเห็นของคุณว่า buggy lsblk ไม่ใช่ข้อผิดพลาดโดยทั่วไปไม่มีเหตุผล ไม่ว่าข้อบกพร่องนั้นเดเบียนจะถูกสร้างขึ้นหรือไม่ไม่ได้เปลี่ยนความจริงที่ว่ามันเป็นข้อบกพร่อง หมายถึงโดยตรงโดยไม่ต้องไกล่เกลี่ยนั่นคือจากระบบไฟล์ซึ่งเป็นที่ที่ inxi รับข้อมูลอนุกรม คำตอบควรสะท้อนถึงภูมิทัศน์โดยรวมของ gnu / linux ดังนั้นการพูดเช่น lsblk ทำงานได้ยกเว้นใน debian / buntu ไม่มีค่าเนื่องจากผู้ใช้ส่วนใหญ่จะเห็นว่ามันไม่ทำงาน
Lizardx

คำตอบส่วนนี้ไม่ถูกต้อง: lsblk คิดว่าออปติคัลไดรฟ์และฟลอปปี้ไดรฟ์ก็เป็นดิสก์ด้วยเช่นกัน ในความเป็นจริง lsblk แสดงรายการอุปกรณ์บล็อก (ซึ่งรวมถึงฮาร์ดดิสก์ SSDs ฟลอปปีดิสก์ไดรฟ์ออปติคัลดิสก์ไดรฟ์ไดรฟ์ลอจิคัล LVM ฯลฯ ) และ lsblk ไม่แยกความแตกต่างระหว่างดิสก์และดิสก์ที่ไม่ใช่ดิสก์
pts

FYI บน Debian buster lsblk --nodeps -o name,serialแสดงหมายเลขซีเรียลฉันไม่สามารถทำซ้ำบั๊กได้
pts

lsblk กำลังปรับปรุง แต่ยังมีปัญหาที่ละเอียดอ่อนอยู่ฉันยังคงไม่ใช้มันเป็นแหล่งข้อมูลหลักสำหรับเครื่องมือที่ฉันทำ แต่ตอนนี้ฉันใช้มันเป็นแหล่งข้อมูลรอง แต่เราพบข้อผิดพลาดที่อธิบายไม่ได้แล้ว ใช้มันทำงานกับมันตอนนี้
Lizardx

1

ฉันชอบที่จะใช้ls -l /dev/disk/by-idเพราะมันจะแสดง WWN ของดิสก์ถ้ามี มักจะพิมพ์ WWN บนฉลากของดิสก์ดังนั้นจึงง่ายต่อการระบุ

root@server (16:27:58):~# ls -l /dev/disk/by-id
total 0
lrwxrwxrwx 1 root root  9 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N -> ../../sda
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part1 -> ../../sda1
lrwxrwxrwx 1 root root 10 Dec 20 01:51 ata-Samsung_SSD_850_EVO_250GB_S3PZNF0JB57579N-part2 -> ../../sda2
...
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x50014ee25ffd0a5c -> ../../sdc
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x50014ee2b554c0b4 -> ../../sdb
lrwxrwxrwx 1 root root  9 Dec 20 01:51 wwn-0x5002538d427700f0 -> ../../sda

1
ls -al /dev/disk/by-id/ | grep sdX | grep wwn | awk '{print $9'}

นี่จะแสดงwwn-idสำหรับดิสก์ awkกรองอาจต้องมีการปรับขึ้นอยู่กับการกระจาย OS และรุ่น ฉันต้องการโซลูชันที่ใช้สคริปต์ในการอ่านwwn-idซึ่งจำเป็นสำหรับการฟันดาบ Pacemaker หากจำเป็นต้อง/dev/sdX1สร้างพาร์ติชัน ( เช่น) อีกอันหนึ่งgrepเพื่อกรองผลลัพธ์:

ls -al /dev/disk/by-id/ | grep sdX | grep wwn | grep -v sdX1 | awk '{print $9'}
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.