How can I simulate a failed disk during testing?

前端 未结 7 1933
情书的邮戳
情书的邮戳 2020-12-08 01:11

In a Linux VM (Vmware workstation or similar), how can I simulate a failure on a previously working disc?

I have a situation happening in production where a disc fai

7条回答
  •  离开以前
    2020-12-08 01:41

    You may use scsi_debug kernel module to simulate a RAM disk and it supports all the SCSI errors with opts and every_nth options.

    Please check this http://sg.danny.cz/sg/sdebug26.html

    Example on medium error on sector 4656:

    [fge@Gris-Laptop ~]$ sudo modprobe scsi_debug opts=2 every_nth=1
    [fge@Gris-Laptop ~]$ sudo dd if=/dev/sdb of=/dev/null
    dd: error reading ‘/dev/sdb’: Input/output error
    4656+0 records in
    4656+0 records out
    2383872 bytes (2.4 MB) copied, 0.021299 s, 112 MB/s
    [fge@Gris-Laptop ~]$ dmesg|tail
    [11201.454332] blk_update_request: critical medium error, dev sdb, sector 4656
    [11201.456292] sd 5:0:0:0: [sdb] FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
    [11201.456299] sd 5:0:0:0: [sdb] Sense Key : Medium Error [current] 
    [11201.456303] sd 5:0:0:0: [sdb] Add. Sense: Unrecovered read error
    [11201.456308] sd 5:0:0:0: [sdb] CDB: Read(10) 28 00 00 00 12 30 00 00 08 00
    [11201.456312] blk_update_request: critical medium error, dev sdb, sector 4656
    

    You could alter the opts and every_nth options in runtime via sysfs:

    echo 2 | sudo tee /sys/bus/pseudo/drivers/scsi_debug/opts
    echo 1 | sudo tee /sys/bus/pseudo/drivers/scsi_debug/opts
    

提交回复
热议问题