Как поместить в черный список корректный плохой сектор RAM согласно MemTest86 + ошибочный признак?

Вы не должны использовать df потому что это показывает размер, как сообщается файловой системой (в этом случае, ext4).

Используйте dumpe2fs -h /dev/mapper/ExistingExt4 команда для обнаружения реального размера раздела. -h опция делает dumpe2fs шоу супер информация о блоке без большого количества других ненужных деталей. От вывода Вам нужны количество блока и размер блока.

...  
Block count:              19506168  
Reserved block count:     975308  
Free blocks:              13750966  
Free inodes:              4263842  
First block:              0  
Block size:               4096  
...

Multiplicating эти значения даст размер раздела в байтах. Вышеупомянутые числа, оказывается, идеальное несколько из 1 024:

$ python -c 'print 19506168.0 * 4096 / 1024'
78024672.0

Так как Вы хотите уменьшить раздел на 15 гибибайт (который является временами на 15 мебибайт 1 кибибайт):

$ python -c 'print 19506168.0 * 4096 / 1024  -  15 * 1024 * 1024'
62296032.0

Как resize2fs принимает несколько видов суффиксов, одного из них быть K для "1 024 байтов" команда для уменьшения раздела к 62 296 032 кибибайтам становится:

resize2fs -p /dev/mapper/ExistingExt4 62296032K

Без единицы число будет интерпретироваться как несколько blocksize файловой системы (4096 в этом случае). Посмотрите человека resize2fs (8)

29
17.11.2013, 22:12
3 ответа

memmap

Существует это названное учебное руководство: Плохой HowTo Памяти, который обсуждает память отключения через ядро с помощью memmap аргумент ядру. Согласно практическому руководству у Вас есть 2 опции когда дело доходит до memmap:

  • Выключите все после плохой памяти - (mem=###M option)
  • Выключите просто память вокруг плохой памяти - (memmap=#M$###M option)

С первой опцией, если memtest сообщает, что существует плохая память в 600M затем, Вы могли отключить RAM от той точки вплоть до конца RAM с этим:

 mem=595M

Если существует плохая RAM в 802M и 807M, можно отключить 10M раздел RAM, запускающейся в 800M как это:

memmap=10M$800M

Примечание: Это поместит в черный список 10M после 800M базовый адрес. Необходимо работать memtest86+ впоследствии, чтобы подтвердить, что этот аргумент корректен.

BadRAM

Существует патч, доступный для Ubuntu по имени BadRam. Это покрыто очень хорошо здесь в этом названном сообщении: BadRAM на Сайте сообщества Ubuntu.

После применения патча к ядру с помощью деталей от той страницы Вы делаете модификации к своей установке Grub2:

выборка от того сайта для Grub2

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

GRUB_BADRAM = "0x7DDF0000,0xffffc000"

Предложенный путь на каждом веб-сайте, который я мог найти, состоял в том, чтобы установить, это должно было выполнить memtest86 и позволить ему показать Вам настройки BadRAM. memtest86 дал мне страницу материала, который я должен был ввести. Я видел, что все адреса были в одном 16K блоке, таким образом, я просто хотел отобразить это 16K неисправный блок. Вот то, как я генерировал корректную запись.

Первый параметр легок. Это - базовый адрес плохой памяти. В моем случае я видел, что все плохие адреса были больше, чем 0x7DDF0000 и меньше, чем 0x7DDF4000. Так, я занял начало 16K блока как мой начальный адрес.

Второй параметр является маской. Вы помещаете 1 с, где диапазон адресов, который Вы хотите, совместно использует те же значения и 0s, где он будет варьироваться. Это означает, что необходимо выбрать диапазон адресов, таким образом, что только биты низкоуровневые варьируются. Смотря на мой адрес, первая часть маски легка. Вы хотите запуститься с 0xffff. Для следующего откусывания объясню я с битовыми массивами. Я хочу колебаться от 0000 до 0011. Так, маска для badram была бы 1100 или шестнадцатеричным c. Последние 3 откусывания должно быть всем 0s в маске, так как мы хотим весь планировавший диапазон. Так, мы получаем общий результат 0xffffc000.

После установки этой строки в/etc/default/grub я выполнил sudo личинку обновления и перезагрузил, и моя плохая память больше не использовалась. Никакие патчи ядра не необходимы для планирования плохой памяти с помощью этого метода.

Развейте № 1

При просмотре страницы Википедии для memtest86 + это указывает следующим образом:

выборка от страницы Википедии Memtest86

Начиная с Memtest86 2.3 и Memtest86 + 1.60, программа может произвести список плохих регионов RAM в формате, ожидаемом патчем BadRAM для ядра Linux; с помощью этой информации система Linux может надежно использовать модуль RAM, даже если это имеет несколько плохих битов. Grub2 может предоставить эту ту же информацию к неисправленному ядру, инвертируя потребность в патче BadRAM.

Также я столкнулся с этой хинду страницей, которая указала memmap=... использование шестнадцатеричного адреса, таким образом, Вы могли указать его как это:

memmap=5M$0x2f796c48

5M просто предположение, очевидно, Вы могли скорректировать его ниже или выше в зависимости от того, сколько RAM вокруг того региона Вы хотите/нуждаетесь опустить.

Наконец можно указать размер в шестнадцатеричном числе также:

memmap=0x10000$0x2f796c48

Проигнорировал бы 64 КБ, запускающиеся в адресе 0x2f796c48.

Ссылки

26
27.01.2020, 19:38
  • 1
    "800M к 804M", как предполагается, "800M к 810M", я принимаю... –  Hauke Laging 20.05.2013, 18:56
  • 2
    Это может быть всего лишь, что я записал, в порядке также, даже при том, что это выбрасывает больше памяти, чем 4M между 800M к 810M. –  slm♦ 20.05.2013, 19:27
  • 3
    1. Я знаю о memmap опция, но вопрос больше о том, как интерпретировать memtest86 + вывод. Я дал определенный пример memtest86 + вывод и обращаюсь за помощью в конфигурировании memmap соответственно в данном случае. 2. "Необходимо выполнить memtest86 + впоследствии, чтобы подтвердить, что этот аргумент корректен". - memtest86 + выполнения перед ядром ОС, таким образом, я серьезно сомневаюсь memmap Опция ядра Linux может влиять на него. –  Ivan 22.05.2013, 15:31
  • 4
    @Ivan, 1. Я думал, что это было очевидно, учитывая примеры, которые я включал, но необходимо будет сказать что-то как: memmap=5M$759M для Вашего особого случая, данного memtest86 +, перестал работать на уровне 759.5 МБ. 2. Я подразумевал, что необходимо передать memmap=... опция к memtest86 + также. Это было не протестировано/не подтверждено мной, но что-то, что Вы можете делать с memtest86 +. страница –  slm♦ 22.05.2013, 15:45
  • 5
    Хорошо, спасибо. Я не был уверен, что делает "002f796c48 - 759,5 МБ", средних (возможно, это могли быть 759.5 megs после адреса 002f796c48 или чего-то как этот), и я никогда не подозревал, что могу передать параметры ядра Linux MemTest86 + (я думал, что это само не имело отношения к Linux). –  Ivan 23.05.2013, 12:28

Memtest86 + (я использовал 4.20) может произвести badram формат непосредственно.

  1. Нажмите 'c' для достижения диалога конфигурации memtest configuration dialogue

  2. Затем '4' для "режима сообщения об ошибке"

    memtest error report mode dialogue

  3. Затем '3' для "шаблонов BadRAM"

Вывод изменится из списка отдельных отказов при испытании к серии badram = строки, каждый содержащий еще один новый поврежденный сектор. Поскольку строки добавляют и объединяют смежные сегменты, можно просто запустить тест, бездисплейный ночной, и использовать распечатанную строку финала (хотя, если у Вас есть действительно плохой dimm менее - точный, "5 megs вокруг этой точки" формат, вероятно, будут вполне немного короче).

Конечный результат:

Memtest86+ showing badram output

14
27.01.2020, 19:38
  • 1
    Теперь, если я не должен был скопировать это вручную и вместо этого передать его GRUB, не перепечатывая ошибки, которые будут фантастическими. –  Ehtesh Choudhury 14.02.2014, 19:28
  • 2
    То, что я сделал, делают фотографию его (телефон с камерой), загружают его в GIMP, => шкала полутонов => инвертирование =>, контраст/гамма затем вручает его tesseract ${IMG} stdout .. затем проверенный и исправленный строка прежде, чем вставить в/etc/default/grub... Вероятно, взял пока ручной ввод его прямо away^^ –  eMPee584 06.08.2014, 19:26

Очень грязная и очень приятная работа -вокруг :запустите мемтестер пользовательского пространства и подождите, пока он не найдет ошибку. Пусть он, например, по адресу 0xfce2ea31.

Затем снова запустите memtester, но уже по этому физическому адресу, так что:

memtester -p 0xfce20000 64k 128

Безусловно, лучше пожертвовать не только страницей проблемного адреса. Здесь мы пожертвовали 64 КБ вокруг ошибочного адреса.

Если все прошло хорошо, он снова найдет неисправное место в памяти гораздо быстрее.

Затем приостановите процесс memtester, нажав ctrl/z.

Последствие :пока процесс memtester не будет приостановлен, он не отнимет больше ресурсов, но ни один другой процесс не сможет получить доступ к неисправной памяти . Потому что он будет выделен memtester.

Особенно полезно на больших удаленных серверах. Приостановленный процесс может оставаться до тех пор, пока не будет поставлена ​​новая оперативная память. Или, может быть, до следующего Рождества, когда простои не будут такой большой проблемой.

1
16.12.2020, 01:34

Теги

Похожие вопросы