Quantcast
Channel: Linux.org.ru: Форум
Viewing all articles
Browse latest Browse all 108417

OutOfOrderFS - утилита для экспериментов с реакцией ФС на сбои

$
0
0

https://github.com/vi/outoforderfs

Насколько я понимаю, при внезапном отключении носителя могут потеряться недавно записанные блоки, при чём из-за всяких кэшей потеря может затронуть не самый последний, а более ранний блок (при этом более поздний запишется).

Моя утилита позволяет поэкспериментировать с такими потерями. Запись каждого блока откладывается на случайное количество миллисекунд. При прерывании утилиты не успевшие записаться блоки пропадают (то есть остаются старыми, как до записи).

outoforderfs файл_с_образом_ФС файл_точка_монтирования размер_блока максимальная_задержка_в_миллисекундах максимальное_число_задержанных_блоков
# dd if=/dev/zero bs=4096 count=1000 of=sf.dat
# yes | mkfs.ext4 sf.dat 
# touch mp.dat
# outoforderfs sf.dat mp.dat 4096 20000 10000000 &
[1] 9317
# mkdir -p m
# mount -t ext4 -o loop mp.dat m/
# yes | nl > m/test.txt
^C
# umount m
# kill %%
# 
352 dirty blocks lost

[1]+  Done                    outoforderfs sf.dat mp.dat 4096 20000 10000000
# mount -o loop -t ext4 sf.dat m/
# ls -lh m/test.txt 
-rw-r--r-- 1 root root 2.7M Mar 20 23:53 m/test.txt
# hd m/test.txt | grep -m 2 '00 00 00' -C 2
000013e0  35 36 36 09 79 0a 00 00  00 00 00 00 00 00 0a 20  |566.y.   567.y. |
000013f0  00 00 00 00 00 00 00 0a  00 00 00 00 00 00 00 00  |  568.y.   569.y|
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000000  00 00 00 00 30 09 79 0a  00 00 00 00 00 00 00 00  | 1480.y.  1481.y|
--
000063e0  0a 00 00 00 00 00 00 00  00 0a 20 20 32 38 34 33  |.  2842.y.  2843|
000063f0  09 79 0a 00 00 00 00 00  00 00 00 0a 20 20 32 38  |.y.  2844.y.  28|
00000000  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00000000  00 00 00 0a 00 00 00 00  00 00 00 00 0a 20 20 33  |0.y.  3301.y.  3|

 , ,


Viewing all articles
Browse latest Browse all 108417

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>