Домашняя удалённая система на 4GB флешке, бывает, сбоит:
[Thu Oct 27 12:01:59 2016] sd 10:0:0:0: [sdg] tag#0 FAILED Result: hostbyte=DID_OK driverbyte=DRIVER_SENSE
[Thu Oct 27 12:01:59 2016] sd 10:0:0:0: [sdg] tag#0 Sense Key : Medium Error [current]
[Thu Oct 27 12:01:59 2016] sd 10:0:0:0: [sdg] tag#0 Add. Sense: Unrecovered read error
[Thu Oct 27 12:01:59 2016] sd 10:0:0:0: [sdg] tag#0 CDB: Read(10) 28 00 00 4b 70 58 00 00 08 00
[Thu Oct 27 12:01:59 2016] blk_update_request: critical medium error, dev sdg, sector 4943960
[Thu Oct 27 12:01:59 2016] Buffer I/O error on dev sdg2, logical block 524299, async page read
Иногда после такой ошибки / (/dev/sdg2) переходит в ro
. Как бы его оттуда вытащить без перезагрузки?
Бесконечный цикл:
# mount -o remount,rw /dev/sdg2
mount: cannot remount /dev/sdg2 read-write, is write-protected
# dmesg -T | tail -n1
[Thu Oct 27 12:35:52 2016] EXT4-fs error (device sdg2): ext4_remount:4707: Abort forced by user
# blockdev -v --getro /dev/sdg2
get read-only: 0
# blockdev -v --setrw /dev/sdg2
set read-write succeeded.
# fsck /dev/sdg2
fsck from util-linux 2.28.2
e2fsck 1.43.3 (04-Sep-2016)
debianroothome contains a file system with errors, check forced.
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
Free blocks count wrong (122865, counted=122944).
Fix<y>? yes
Free inodes count wrong (70515, counted=70521).
Fix<y>? yes
debianroothome: ***** FILE SYSTEM WAS MODIFIED *****
debianroothome: ***** REBOOT SYSTEM *****
debianroothome: 150663/221184 files (0.4% non-contiguous), 760768/883712 blocks
# fsck -f /dev/sdg2
fsck from util-linux 2.28.2
e2fsck 1.43.3 (04-Sep-2016)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
debianroothome: 150663/221184 files (0.4% non-contiguous), 760768/883712 blocks
Перезапуск удалённо не имеет смысла: обнаруживается, что ФС с ошибками, которые нужно фиксить вручную, что совсем некстати. Когда потом из initrd запускаю fsck, всё фиксится и грузится дальше. Но в чём разница? В флешке что-то ресетится при перезапуске?
На флешку было записано не так уж много:
# tune2fs -l /dev/sdg2 | grep -e created -e writes
Filesystem created: Fri Aug 5 22:55:45 2016
Lifetime writes: 29 GB
Кстати, на простых флешках есть wear leveling? Иначе его отсутствие могло бы быть объяснением чрезмерно быстрого износа одних и тех же секторов, хотя общее кол-во записанного совсем небольшое.