У меня есть накопитель на 1 ТБ, на котором я хотел бы запустить badblocks, но, как я понимаю, это займет около 3 дней, я хотел бы запустить его порциями (скажем, каждую ночь), чтобы компьютер, на котором он находится, был доступен для использования в течение дня. Возможно ли что-то подобное?
2 ответа
Я нашел этот отличный ответ на вопрос в общем списке рассылки для энтузиастов Linux в Атланте:
Я наконец понял это после долгих размышлений и прочтения справочной страницы примерно 10 раз. Я думал, что поделюсь этим на случай, если кому-то еще понадобится информация. Поиск в Google не сильно помог, так как эти списки обычно цитируют справочную страницу. Когда на странице руководства написано «последний блок - последний блок», он не хочет, чтобы вы вводили эти СЛОВА, он хочет, чтобы вы вводили НОМЕР. В нем упоминается, что оба являются необязательными, но я не могу понять, как пропустить последний блок, если я хочу указать первый блок.
Скажем, вы остановили свой тест первоначально в блоке 33000001. Я бы перезапустил тест на один блок меньше, поэтому 33000000.
Сначала вы должны определить номер последнего блока в разделе. Я нашел два способа сделать это.
Вы можете начать
badblocks
без номеров блоков. Он сообщит вам диапазон блоков, которые он обрабатывает.Пример:
sudo badblocks -sv /dev/sda3
И это говорит что-то вроде:
Searching for badblocks in read only nondestructive mode from block to 66828373
Запишите этот конечный номер блока. Завершите тест с помощью CTRL-C, а затем введите команду с нужными номерами блоков.
Вы можете использовать команду
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
, он сообщит, что номер блока плохой, но на самом деле этот номер блока не существует.Я надеюсь, что другие могут найти это полезным, так как это действительно смутило меня некоторое время.
С уважением,
Рон
Есть способ указать, с какого блока должны начинаться 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 ]