@psiklop

Как записать файл в определенное место hdd?

Есть ли возможность указать отступ в байтах при создании файла ?

Хочу попробовать записать файл прямо на badblock, список выдала команда badblocks в Ubuntu, их немного, но нужная прога вылетает.
  • Вопрос задан
  • 480 просмотров
Решения вопроса 1
Zettabyte
@Zettabyte
Проф. восстановление данных ▪ Вопрос? См. профиль
Под Windows столь необычный трюк можно выполнить своим кодом, используя FSCTL_MOVE_FILE. Т.е. не создавая файл, а перемещая существующий.

Либо накидав на диск кучу файлов, а потом с помощью nfi.exe (NTFS File Sector Information Utility), или DiskView, или fsutil querycluster посмотрев что именно лежит в интересующих вас секторах.

То же самое можно сделать в hex-редакторе, но тут уже требуется некоторое понимание файловых систем.

Под Linux загляните в исходники dd (в качестве потенциального источника идей) и посмотрите на --write-sector в hdparm.

Также можно воспользоваться debugfs:
debugfs:  testb 100500
Block 100500 marked in use
debugfs:  icheck 100500
Block   Inode number
100500  1488
debugfs:  ncheck 1488
Inode   Pathname
1488    /home/psiklop/hentai.mkv

Кроме того, в своё время был DiskExplorer, но RunTime, по-моему, очень давно не обновляли свои инструменты, так что не знаю насколько оно работает сейчас.

нужная прога вылетает

Если же говорить в целом, то сама по себе такая идея - не очень. У вас уже пошли вылеты, а в будущем диск здоровее не станет, только продолжит покрываться бэдами.
Так что запись файлов, создание разделов вокруг, лечение (remap) и прочие ухищрения относительно bad block'ов - это пластырь на умирающую лошадь.

Забэкапьте содержимое всего диска и попробуйте сдать его по гарантии, если она не закончилась. Если закончилась, то используйте как свалку для того, что не жалко потерять.
Ответ написан
Пригласить эксперта
Ответы на вопрос 4
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Есть ли возможность указать отступ в байтах при создании файла ?

Нет.

Хочу попробовать записать файл прямо на badblock, список выдала команда badblocks в Ubuntu, их немного, но нужная прога вылетает.

Это невозможно в силу того, что блок это не часть файловой системы.

Вдобавок вы видимо плохо понимаете как работает современный диск, и что такими методами это уже давно не чинится.
Правда если у вас компьютер 25-летней давности, может быть и можно.
Ответ написан
opium
@opium
Просто люблю качественно работать
Нет конечно
Ответ написан
@rPman
sudo fsck -vck /dev/sda1
где sda1 раздел с файловой системой где нужно провести проверку и маркировать бэд блоки
-c This option causes e2fsck to use badblocks(8) program to do a read-only scan of the device in order to find any bad blocks. If any bad blocks are found, they are added to the bad block inode to prevent them from be‐
ing allocated to a file or directory. If this option is specified twice, then the bad block scan will be done using a non-destructive read-write test.


если у тебя есть список бэд блоков в формате, выдаваемый badblocks то можно отформатировать файловую систему сразу указав нужные сектора:
mke2fs ключ -l

p.s. это про ext3/ext4 файловую систему
как уже сказали тут отвечающие, делать это на современных (10 лет) может быть бессмысленно, количество сбойных секторов будет увеличиваться, так как классический пример их появления - отшелушившаяся часть поверхности диска - эта чешуйка будет летать внутри диска и оставлять все новые и новые бэд блоки.
Ответ написан
@psiklop Автор вопроса
Забыл написать, что это SAS диск.

Бэд-блок не хотел ремапиться, но команда badblocks их обнаруживала всегда в одном месте.

Помогла команда sg_format --format /dev/sdb, все 8 бэдов были заремаплены и команда smartctl -a /dev/sdb это подтвердила.

Запускал впоследствии badblocks и он бэдов не находил, посмотрим сколько проживет диск.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы