ปัจจุบันฉันต้องสร้างระบบอัตโนมัติเพื่อทดสอบว่าตรวจสอบว่าระบบจัดการกับข้อผิดพลาด LBA ได้อย่างไร มีคำสั่งใด ๆ ผ่านวิธีการใดที่ทำให้ฮาร์ดดิสก์ SSD ส่งคืนข้อผิดพลาดในการอ่าน ตามโปรโตคอล NVMe - 6.15 เขียนคำสั่งที่แก้ไขไม่ได้ควรมีคำสั่งดังกล่าว
ปัจจุบันฉันต้องสร้างระบบอัตโนมัติเพื่อทดสอบว่าตรวจสอบว่าระบบจัดการกับข้อผิดพลาด LBA ได้อย่างไร มีคำสั่งใด ๆ ผ่านวิธีการใดที่ทำให้ฮาร์ดดิสก์ SSD ส่งคืนข้อผิดพลาดในการอ่าน ตามโปรโตคอล NVMe - 6.15 เขียนคำสั่งที่แก้ไขไม่ได้ควรมีคำสั่งดังกล่าว
คำตอบ:
มีnvme-write-uncor
คำสั่งในnvme-cli
nvme-write-uncor - Send an NVMe write uncorrectable command, return results
ตามโปรโตคอล NVMe:
When the specified logical block(s) are read after this operation, a failure
is returned with Unrecovered Read Error status.
ดังนั้นเพื่อให้ได้ข้อผิดพลาดในการอ่านคุณต้องอ่านบล็อกที่เสียหายก่อนหน้านี้
หน้าโครงการ: https://github.com/linux-nvme/nvme-cli
/dev/nvme*
อุปกรณ์อยู่
[...]specifying an inactive namespace ID in a command that uses the namespace ID shall cause the controller to abort the command with status Invalid Field in Command
6.1: ดูเหมือนว่านี่เป็นข้อผิดพลาดของคุณ ลองใช้nvme-list-ns
จะได้รับรายการของรหัส namespace และระบุว่าโดยใช้การ-n
nvme-write-uncor
หรือใช้/dev/nvme0n*
อุปกรณ์เพราะดูเหมือนว่าเป็นอีกวิธีหนึ่งในการเข้าถึงเนมสเปซ
ฉันยังใหม่กับ nvme ดังนั้น nvme-cli เป็นอินเทอร์เฟซที่ผู้ขายฮาร์ดไดรฟ์ควรได้รับการสนับสนุน แต่ในบางโมดูลคำสั่งไม่ทำงาน ดังนั้นอย่ายอมแพ้! ลองฮาร์ดไดรฟ์ตัวอื่น
nvme write-uncor /dev/nvme2n1 -s 0 -c 5 -n 1
อุปกรณ์-sและ-cเป็นที่ชัดเจน (ตรวจสอบความช่วยเหลือ) มวย-n , namespace-ID จะได้รับในชื่ออุปกรณ์, nvme2 n1หมายความว่า-nเป็น1