6

У меня есть накопитель на 1 ТБ, на котором я хотел бы запустить badblocks, но, как я понимаю, это займет около 3 дней, я хотел бы запустить его порциями (скажем, каждую ночь), чтобы компьютер, на котором он находится, был доступен для использования в течение дня. Возможно ли что-то подобное?

2 ответа2

6

Я нашел этот отличный ответ на вопрос в общем списке рассылки для энтузиастов Linux в Атланте:

Я наконец понял это после долгих размышлений и прочтения справочной страницы примерно 10 раз. Я думал, что поделюсь этим на случай, если кому-то еще понадобится информация. Поиск в Google не сильно помог, так как эти списки обычно цитируют справочную страницу. Когда на странице руководства написано «последний блок - последний блок», он не хочет, чтобы вы вводили эти СЛОВА, он хочет, чтобы вы вводили НОМЕР. В нем упоминается, что оба являются необязательными, но я не могу понять, как пропустить последний блок, если я хочу указать первый блок.

Скажем, вы остановили свой тест первоначально в блоке 33000001. Я бы перезапустил тест на один блок меньше, поэтому 33000000.

Сначала вы должны определить номер последнего блока в разделе. Я нашел два способа сделать это.

  1. Вы можете начать badblocks без номеров блоков. Он сообщит вам диапазон блоков, которые он обрабатывает.

    Пример: sudo badblocks -sv /dev/sda3

    И это говорит что-то вроде:

    Searching for badblocks in read only nondestructive mode from block to 66828373

    Запишите этот конечный номер блока. Завершите тест с помощью CTRL-C, а затем введите команду с нужными номерами блоков.

  2. Вы можете использовать команду fdisk (или, я думаю, также sfdisk), чтобы вывести информацию о разделе. Один из столбцов информации - это количество блоков. Найдите количество блоков в интересующем вас разделе и ПОДРАЗДЕЛЕНИЕ 1, поскольку блоки нумеруются начиная с 0.

    sudo fdisk -l /dev/sda (эта опция - нижний регистр L. В этом случае вы не указываете номер раздела, только обозначение жесткого диска.)

    И это говорит что-то вроде:

    /dev/sda2 ... /dev/sda3 ... 66828374 /dev/sda4 ...

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

    Теперь вы можете ввести команду badblocks следующим образом. Скажем, вы хотите начать тестирование в середине раздела в блоке 33000000. Этот пример предназначен для неразрушающего режима чтения и записи со списком badblocks в текстовый файл. Если вы загрузитесь с живого компакт-диска, вы потеряете этот текстовый файл при перезагрузке.

    sudo badblocks -nsv -o ~/Desktop/badblocks.txt /dev/sda3 66828373 33000000

    Это будет проверять от блока 33000000 до конца раздела. Если вы укажете 66828374 в качестве последнего блока, как сообщается в fdisk , он сообщит, что номер блока плохой, но на самом деле этот номер блока не существует.

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

С уважением,

Рон

6

Есть способ указать, с какого блока должны начинаться badblocks и последний блок (см. man badblocks):

badblocks [ -svwnfBX ] [ -b block-size ] [ -c blocks_at_once ] [ -e max_bad_blocks ] [ -d read_delay_factor ] [ -i input_file ] [ -o output_file ] [ -p num_passes ] [ -t test_pattern ] device [ last-block ] [ first-block ]

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .