LINUX.ORG.RU
ФорумAdmin

как сделать сектора - битыми?


1

2

Как на винчестере сделать сектора - битыми? Может есть для этого какая-нибудь утилита?

Нужно, чтобы потестить чекинг файловой системы и работу своих прог в условиях побитого винчестера.

Потому, что сегодня случилось ужастное - имена файлов и каталогов после чекинга превратились в числа и нарушилась структора вложенности. То ли руки у меня кривые, то ли софт. Пришлось все по новой ставить-настраивать, что привело к чудовищному даунтайму.

Через dmsetup можно создавать устройство с неработающими блоками: http://mbroz.fedorapeople.org/talks/DeviceMapperBasics/dm.pdf :

dmsetup create bad_disk << EOF
  0 8       linear /dev/sdb1 0
  8 1       error
  9 204791 linear /dev/sdb1 9
EOF
но это будет не настоящий битый сектор. В вичестерах битый сектор только на чтение, а при записи происходит realloc.

И файловые системы не особо расчитаны на битые сектора, если сектор окажется в суперблоке или журнале, то всё плохо.

Пришлось все по новой ставить-настраивать, что привело к чудовищному даунтайму.

RAID-1 вам в зубы и резервное копирование хотя бы каталога с настройками, если простой критичен.

mky ★★★★★
()
Ответ на: комментарий от mky

если сектор окажется в суперблоке

Есть резервные суперблоки.

или журнале

Можно отключить журнал.

Меня больше расстраивает, что ФС не переносят данные на лету. Т.е., например, если блок не читается, то не тупим как сейчас, а переаллоцируем его на живом блоке.

no-such-file ★★★★★
()
Последнее исправление: no-such-file (всего исправлений: 1)

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

ilovewindows ★★★★★
()

Потому, что сегодня случилось ужастное

Пришлось все по новой ставить-настраивать, что привело к чудовищному даунтайму.

Админы делятся на тех, кто ещё не делает резервные копии и тех кто уже делает.

sin_a ★★★★★
()
Ответ на: комментарий от GNU-Ubuntu1204LTS

Человек хочет угробить винт — пусть гробит. А на "попробовать" всякие алгоритмы и т.п. можно взять старый дохлый винт. Думаю, таких у многих стопочка уже хранится! У меня самого парочка валяется + один до сих пор в домашнем компьютере крутится (точнее, как только закончится фоновый badblocks, который у меня уже 3 месяца крутится, я переформатирую винт и буду продолжать туда всякий мусор складывать).

Eddy_Em ☆☆☆☆☆
()

Муляж сбойного винта проще всего сделать через nbd.

Реализовать логику «в случайный момент времени перестает читаться и записываться какой-то сектор» не так сложно.

А Eddy_Em не прав! Чтобы сектора были битыми, их надо бить, а не царапать :)

vel ★★★★★
()

google://raid google://backup

anonymous
()

А рейд не всегда выход по той причине, что его надо админить - смотреть кто битый и вовремя предпринимать меры. Там же, где этот комп стоит, нет людей, которые это могут.

Рейд1, по крайней мере софтварный, работает так: если на винте оказался битый сектор, то винт помечается как сбоящий.

А мне, получается, надо так — если на винте А оказался битый сектор 10, а на винте Б оказался битым сектор 15, то сектора 10 и 15 читаются, при этом они переаллоцируются в другие, и когда втыкаешь новый винт, то сливаются на него.

Насколько понимаю, такой фичи нету у рейда. С обычным же рейдом произойдет вот что: сначала умрет винт А, про это никто знать не будет, потом умрет винт Б.

например, если блок не читается, то не тупим как сейчас, а переаллоцируем его на живом блоке.

а его чтоб переаллоцировать надо прочитать, а он не читается :) так что подобное можно сделать только когда пишешь данные — проверить их, и если записались плохо, то писать вдругое место. А если так делать, то упадет производительность. Поэтому, так мог бы делать движок innodb в maridb, потому что закрывая транзакции он все равно делает чтение. Но по факту Mysql просто в ответ на инсерт говорит как-то так : 1030 Got error 5 from storage engine.

Админы делятся на тех, кто ещё не делает резервные копии и тех кто уже делает.

...и тех, кто теперь проверяет, что резрвные копии нормально разворачиваются.

chabapok
() автор топика
Ответ на: комментарий от chabapok

А мне, получается, надо так — если на винте А оказался битый сектор 10, а на винте Б оказался битым сектор 15, то сектора 10 и 15 читаются, при этом они переаллоцируются в другие, и когда втыкаешь новый винт, то сливаются на него.

RAID работает именно так

Насколько понимаю, такой фичи нету у рейда. С обычным же рейдом произойдет вот что: сначала умрет винт А, про это никто знать не будет, потом умрет винт Б.

Нет, просто ты нарвался именно на тот случай, под который и создавали zfs.

Lordwind ★★★★★
()
Ответ на: комментарий от chabapok

Рейд1, по крайней мере софтварный, работает так: если на винте оказался битый сектор, то винт помечается как сбоящий.

Нет

про это никто знать не будет

об этом не будет знать только жалкая школота, у нормальных людей состояние дисков мониторится.

а его чтоб переаллоцировать надо прочитать, а он не читается

Ад и содомия.

Так от некомпетентности рождаются странные запросы.

anonymous
()

Программы victoria и mhdd умеют делать пометку «битый» на секторах.

DiMoN ★★★
()
Ответ на: комментарий от Eddy_Em

Вскрой винт и иголочкой поцарапай блин.

Достаточно просто вскрыть.

qbe
()
Ответ на: комментарий от Eddy_Em

Достаточно вскрыть в пыльной комнате.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.