2018年6月22日金曜日

バックアップエラーをシミュレーションしたい

大変便利なミラーバックアップ。

しかし、もしコピー元のディスクが部分的に読み取り不能になっていたら…?

コピー先のファイルがすべてなくなってしまう…!? という事件が実際にありました。

という訳で、シミュレーションをしたくなりました。

Windows API はどのようなエラーを返すのか。

実際に遭遇した。ReadFile で
  • ERROR_CRC (23, 0x00000017, Check)
    Data error (cyclic redundancy check).
こちらも:

1117, 0x0000045D, Check
  • ERROR_IO_DEVICE
    The request could not be performed because of an I/O device error.



https://github.com/Microsoft/Windows-driver-samples/tree/master/filesys/fastfat を査読して。

STATUS_FILE_CORRUPT_ERROR
STATUS_DATA_ERROR
STATUS_IN_PAGE_ERROR
STATUS_DISK_CORRUPT_ERROR
STATUS_EA_CORRUPT_ERROR
STATUS_EA_LIST_INCONSISTENT

STATUS_UNMAPPABLE_CHARACTER
STATUS_MEDIA_WRITE_PROTECTED

https://blog.csdn.net/whf727/article/details/2121582

ERROR_CRC
ERROR_FILE_CORRUPT
ERROR_DISK_CORRUPT
ERROR_EA_LIST_INCONSISTENT
ERROR_NO_UNICODE_TRANSLATION
ERROR_WRITE_PROTECT

Linux でそういったデバイスを作成

dd if=/dev/zero of=~/disk bs=60KiB count=1
mkfs.ext2 ~/disk
...
sudo losetup -f ~/disk
losetup -l
sudo dmsetup create bad_disk < form
sudo mount -t ext2 /dev/mapper/bad_disk /mnt/

form:
0 118 linear /dev/loop1 0
118 1 error
119 1 linear /dev/loop1 119

なんか Samba は FindFirstFile FindNext でエラー返してくれないです。