Как обновить магнитное состояние дисков с помощью резервных копий?

8

У меня есть пара больших дисков с материалами для резервного копирования / архивирования. Они ext4 . Что касается тех из них, которые будут храниться в течение нескольких лет без повторного чтения всего диска, я подумал о том, как обновить магнитное состояние дисков. Срок годности накопителей, кажется, является предметом споров везде, где я искал ответ, но кажется, что через пару лет (скажем, 5 или около того) хранилища было бы разумно каким-то образом обновить данные (? )

Я видел это предложил:

dd if=/dev/sda of=/dev/sda

Это безопасно? Это полезно?

То, что я собираюсь сделать, это нечто иное, чем «а» fsckили «а» dd if=/dev/sda of=/dev/null, оба из которых, вероятно, обнаружат существующие магнитные выпадения на диске.

Я хочу обновить магнитные данные до того, как магнитные заряды на диске опустятся ниже читаемого уровня. Как я могу это сделать?

PetaspeedBeaver
источник

Ответы:

8

Как правило, вы не можете обновить весь диск без чтения / записи всего этого. fsckвряд ли предоставит то, что вам нужно - он работает с файловой системой, а не с основным устройством, следовательно, он в основном просто сканирует метаданные файловой системы (inode и другие структуры файловой системы).

badblocks -nможет быть вариант dd if=X of=X. В любом случае вы, вероятно, захотите использовать большие блоки для ускорения ( ddнапример bs=16M, для badblocksчтения -b 16777216или -b $((1<<24))в разумных оболочках). Возможно, вы также захотите использовать conv=fsyncс dd.

Что касается безопасности ddс одним и тем же устройством ввода и вывода - он считывает блок с ввода и записывает его на выход, поэтому он должен быть безопасным (я несколько раз повторно шифровал зашифрованный раздел, как этот, создавая петлевые устройства с одно и то же базовое устройство и разные пароли, а затем ddпереходят с одного на другой) - по крайней мере, для некоторых типов физических носителей: например, с гальваническими дисками для меня определенно не очевидно, что он на 100% надежен.

peterph
источник
Спасибо за Ваш ответ! Так что же conv=fsyncозначает «физически записывать данные выходного файла и метаданные до окончания», что это значит? Это безопаснее или зачем мне его использовать?
PetaspeedBeaver
1
Я ожидал бы, что он убедится, что все кэши ядра сброшены на носитель перед выходом. Поскольку вы просто переписываете одни и те же данные, на самом деле это не должно иметь большого значения. Это просто гарантирует, что когда ddвы закончите, вы можете отключить питание (возможно, на жестком диске может быть кеш, но это не в юрисдикции программного обеспечения).
Петер
Таким образом, в целом, полная ddкоманда должна быть что-то вроде dd if=/dev/sda of=/dev/sda bs=16M conv=fsyncплюс, может быть, также status=progressпоказать прогресс. Это займет некоторое время, в зависимости от размера и скорости привода. Я предполагаю, что отмена этого промежуточного процесса, например, Ctrl + C, безопасна?
Мартин Спейсек
1
Да, прерывание всего процесса в теории должно быть безопасным. По крайней мере, для не вращающегося магнитного привода - это та область, где точный физический принцип и используемые технологии имеют значение.
Петер
1

Я не знаю, как это сделать с помощью каких-либо собственных инструментов из * nix, но что-то, что я делал в течение нескольких лет, - это запуск продукта под названием Spinrite с GRC.com .

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

Я запускаю его несколько раз в год на своих дисках, и я не хочу сказать это вслух, но я чувствую, что у меня очень мало проблем с моими жесткими дисками, и их немало.

Это стоит около $ 80-90 IIRC, но все эти затраты являются относительными, в зависимости от того, что, по вашему мнению, стоит для вас.

Lenny_Nero
источник