Комментарии

Галерея

Опрос

Из каких стран идет больше всего спама, попыток взлома на ваши серверы?:

Reiserfs. А оно вам надо?

Аватар пользователя isn
     

Сейчас много современных файловых систем и 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

Файлы из второго образа перекочевали в тестовую фс, некоторые превратились в каталоги. Содержимое файлов перепуталось между собой.