Сейчас много современных файловых систем и reiserfs уже не так популярна как ранее, однако есть те кто ей пользуется. Здесь я хочу описать один очень старый баг этой фс. Возможно это поубавит число желающих использовать reiserfs для хранения важных данных.
Если быть кратким, то перестройка b-tree этой фс гарантированно приводит к порче данных если среди файлов имеется образ другой reiserfs. При этом возникают коллизии хэша между перестраиваемой фс и фс файла-образа. Впрочем ошибки хэша имеют место и при эксплуатации этой файловой системы в штатном режиме. Однако вероятность и периодичность их возникновения обусловлена многими факторами. При обычной работе сбои достаточно редки, но вероятны.
Для наглядности проведем тест.
Создадим файловую систему в файле:
dd if=/dev/zero of=fs.img bs=10M count=600 mkfs.reiserfs -f fs.img
После чего монтирум и помещаем в ее корень каталоги с файлами:
Теперь аналогично создаем второй файл-образ reiserfs и помещаем на него файлы. Для простоты я взял текстовые файлы из /etc.
Отмонтируем, а сам образ помещаем на первую reiserfs.
Вот как это выглядит в файловом менеджере:
...и рекурсивно:
% ls -R .: fs2.img music pdf picture program text Новый_каталог ./music: 01-Kyrie_II.mp3 ./pdf: D510MO_TechProdSpec.pdf ./picture: 455cb68c4456.jpg ./program: skype-4.1.0.20-suse.i586.rpm ./text: resolv.conf ./Новый_каталог: картинка.jpg
вычислим md5-хэши для каждого из файлов:
% for x in `find . -name "*"`; do md5sum "$x"; done md5sum: .: Это каталог md5sum: ./pdf: Это каталог f9e4d29e5f1cd6b962a3055c818ae4b3 ./pdf/D510MO_TechProdSpec.pdf md5sum: ./text: Это каталог 5d6784646aa5c5b326ae4d7c9d0f3e4c ./text/resolv.conf md5sum: ./music: Это каталог 1bc22ef617a0254af9f6e0f07d7820ac ./music/01-KyrieII.mp3 md5sum: ./Новый_каталог: Это каталог 322666b459b5e9da8c2af92b0559d31e ./Новый_каталог/картинка.jpg e82f8915ec12479a270be720f68b983f ./fs2.img md5sum: ./picture: Это каталог c7ae22ffc278c22686ae059233e9d479 ./picture/455cb68c4456.jpg md5sum: ./program: Это каталог fb2131869df1d2f566a21daa9ae31ec9 ./program/skype-4.1.0.20-suse.i586.rpm
Отмонтируем тестовую файловую систему и перестроем дерево:
# reiserfsck --rebuild-tree --force ./fs.img
Подключаем обратно и в файловом менеджере наблюдаем результат:
Выглядит как ночной кошмар.
% for x in `find . -name "*"`; do md5sum "$x"; done find: `./lost+found': Отказано в доступе md5sum: .: Это каталог md5sum: ./pdf: Это каталог 5ca498229e94c584f83484f2bc359405 ./pdf/D510MO_TechProdSpec.pdf md5sum: ./text: Это каталог 73c6f70aeba0e8cbcbee904696f75f26 ./text/resolv.conf md5sum: ./music: Это каталог 1fcd6b87ef9c14c23f55295b3374ade8 ./music/01-KyrieII.mp3 5ca498229e94c584f83484f2bc359405 ./zshrc md5sum: ./permissions.paranoid: Это каталог c7ae22ffc278c22686ae059233e9d479 ./permissions.paranoid/455cb68c4456.jpg md5sum: ./Новый_каталог: Это каталог 322666b459b5e9da8c2af92b0559d31e ./Новый_каталог/картинка.jpg 72da94ee8e7abdc04584e40b4113973f ./fs2.img 73c6f70aeba0e8cbcbee904696f75f26 ./asound.conf e2dc91fe3d41afb3e80d4405b680379e ./environment 1fcd6b87ef9c14c23f55295b3374ade8 ./dnsmasq.conf md5sum: ./lost+found: Отказано в доступе md5sum: ./program: Это каталог e2dc91fe3d41afb3e80d4405b680379e ./program/skype-4.1.0.20-suse.i586.rpm
Файлы из второго образа перекочевали в тестовую фс, некоторые превратились в каталоги. Содержимое файлов перепуталось между собой.
Комментарии
10 лет 29 недель назад
10 лет 30 недель назад
10 лет 30 недель назад
10 лет 30 недель назад
10 лет 32 недели назад
10 лет 32 недели назад
10 лет 33 недели назад
10 лет 42 недели назад
10 лет 42 недели назад
10 лет 43 недели назад