Необходимо очистить структуру linux

Обновлено: 21.11.2024

Мы используем microZED SOM вместе с несущей картой AVNET FMC в одном из наших промышленных продуктов.

Мы используем систему на базе Linux. В лабораторных условиях установка работает нормально. В промышленной среде мы сталкиваемся с ошибками «Требуется очистка структуры» в библиотеках Linux.

Это заставляет нас постоянно перепрошивать SD-карты. Долго искал источник этой проблемы.

SOM относится к промышленному классу (AES-Z7MB-7Z020-SOM-I-G/REV-H).

Примечания (не уверен, что это может вызвать проблемы) :-

<р>1. Плата использует модуль PMOD CAN для связи.

<р>2. Температура поверхности чипа DDR3 составляет 55 градусов C.

Аналогичная установка хорошо работает в той же среде всего в нескольких футах (другая машина).

Некоторые из подозреваемых, которые мы проверили и устранили (может потребоваться повторное посещение, если кто-то из вас даст совет).

<р>1. Мы заподозрили шум источника питания и провели множество проверок и фильтров для их устранения. Похоже, причина не в шуме блока питания.

<р>2. Мы подозревали ядро/приложение Linux и сделали много регрессий в нашей лабораторной установке. Все потом выяснилось.

<р>3. Мы заподозрили качество SDCard и перешли на промышленную SDCard. Не решил проблему.

<р>4. Предполагаемые тепловые проблемы и значительное снижение температуры на поверхности чипа (использование радиатора RPi на Zynq 7020 и снижение скорости процессора вдвое). Тоже не помогло.

На DDR3 мы не добавляли радиатор, так как во всех наших установках почти всегда 55 градусов C.

<р>5. Мысль, что заземление машины может быть проблемой, и проводное заземление PMOD CAN на землю машины (в дополнение к заземлению монтажных отверстий карты FMC). Не помогло.

Любая мысль о помощи будет очень полезна.

Похоже, что-то происходит в вашей промышленной среде, что приводит к повреждению записи в вашей файловой системе. Пробовали ли вы запускать какие-либо инструменты проверки файловой системы, чтобы убедиться, что это так, и лучше понять природу повреждения?

Если вы не можете воссоздать условия в своей лаборатории, искали ли вы переходные процессы, которые могут вызвать всплеск электромагнитной энергии в целевой среде?

Например, на предыдущей должности инженера-проектировщика у меня возникали проблемы с ложными сбросами платы микроконтроллера. Оказалось, что эти сбросы происходили только тогда, когда контактор 50 А при 240 В переменного тока замыкал и размыкал контакт на расстоянии нескольких футов. Решение, которое я придумал, состояло в том, чтобы защитить ввод питания в моей системе, добавив устройство защиты от переходных процессов (в США мы называем этот RC-компонент демпфером) через устройство переключения контактора, которое вызывало некоторые проблемы со сбросом моей системы.

Существует множество различных поставщиков компонентов такого типа, и я не одобряю ни одного конкретного и не говорю вам, что это решение:

Я не утверждаю, что EMI точно является вашей проблемой, я просто указываю на проблему, которую я обнаружил на своей прошлой работе, просто сидя и наблюдая, когда в моей системе возникали проблемы. Просто осмотрите свою промышленную площадку и проведите там некоторое время (при условии, что это безопасно), чтобы понять, какие источники электромагнитных помех могут находиться вокруг вашей платформы, которые могут вызвать передачу энергии на вашу систему MicroZed.< /p>

Произошло внезапное холодное отключение системы, и теперь папка /tmp, похоже, была повреждена, и это привело к тому, что сетевые интерфейсы на гипервизоре не открывались из-за ошибок обработки файлов в этой папке (/tmp ).

Похоже, что проблема связана с файловой системой Linux, а не с Xenserver, потому что даже когда я захожу в командную оболочку и пробую cd /tmp, я получаю сообщение об ошибке «Структура нуждается в очистке). Даже ls /tmp возвращает та же ошибка, в основном любая команда для этого местоположения возвращает "Структура нуждается в очистке". Как мне очистить структуру и устранить эту проблему?

Популярные темы в Linux в целом

Привет, @pigdog, спасибо за предложение. Действительно, сначала я запускал команды для неправильной папки /tmp, но позже понял, что это правильное место, если вы посмотрите на мой скриншот, вы увидите, что я запускал команды для точки монтирования /media/mint/root-gyhold/tmp, которая была там, где обнаружен проблемный /tmp.

Хорошая новость: после дальнейших поисков я наткнулся на этот пост на Reddit, который привел меня к debugfs

Итак, вот что в итоге получилось, это было сделано при запуске LiveCD

1- запустил df -h, который подтвердил, что точка монтирования для /dev/sda1 является /media/mint/root-gyhold

<р>2. сделал sudo debugfs -w /dev/sda1

<р>3. в командной строке debugfs: ls (перечислены папки, включая tmp)

<р>4.в командной строке debugfs: clri tmp (сообщение/уведомление не появилось)

<р>5. в командной строке отладки: rm tmp

6.in debugfs prompt:ls (tmp больше не было в списке, в этот момент устроил небольшой праздничный танец)

<р>8. сделал ls /mount/mint/root-gyhold только для того, чтобы убедиться, что папка исчезла, и действительно ее там не было

<р>9. перезагрузил сервер и извлек LiveCD, чтобы я мог нормально загрузиться в гипервизор

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

Какая поездка, большое спасибо, ребята

8 ответов

Похоже, папка повреждена. Скорее всего, из-за того, что выполнялась операция записи или данные кэшировались на RAID-контроллере.

Вы можете загрузить его в безопасном режиме или с USB-накопителя, затем удалить папку и создать ее заново. (если возможно, сначала сделайте резервную копию)

Если это заработает, вам следует выяснить, почему повреждены данные (убедитесь, что у RAID-контроллера есть хорошая батарея, а если батареи нет, добавьте к серверу ИБП)

  • отметить 87 лучших ответов
  • thumb_up – 178 благодарных отзывов

Запустите "df /tmp", чтобы узнать, используется ли в данный момент каталог /tmp в качестве точки подключения.

Если вы видите файловую систему, смонтированную в /tmp, "размонтируйте" ее, тогда вы можете попробовать запустить "fsck" на файловой системе, которая была только что размонтирована.

Похоже, /tmp — это файловая система. Часто это просто подкаталог корня.

Однако ошибка "требуется очистка структуры" звучит как проблема с файловой системой.

"fsck" может решить вашу проблему.

В противном случае вы можете переименовать каталог "tmp" и создать его заново, например:

Сказанное выше должно позволить вам снова использовать /tmp, но это будет не файловая система, а просто подкаталог root. То есть все, что записывается в /tmp, будет записано в корневую файловую систему, а не в файловую систему, которая обычно монтируется в /tmp. В зависимости от ваших приложений вы можете столкнуться с проблемами свободного места в корневой файловой системе.

И при перезагрузке система попытается смонтировать любую файловую систему, которую предполагается смонтировать в /tmp. Если у вас достаточно места в /tmp, вы можете отредактировать /etc/fstab, чтобы предотвратить монтирование этой файловой системы в /tmp. Затем вы можете попытаться решить проблему с файловой системой, но система должна нормально работать с /tmp, являющимся частью корневой файловой системы.

дбито

Возможно, вам потребуется запустить e2Fsck или fsck для тома, чтобы проверить наличие повреждений. Вы сделали это?

Привет! Это не жареные!

Как исправить ошибку «Структура нуждается в очистке»


Я копировал/вставлял файлы с моего ПК с Windows (под управлением Windows 10) на мой серверный ПК (под управлением Ubuntu 16.04 LTS) с помощью проводника Windows.

Появляются три (3) файла с ошибкой «Структура нуждается в очистке». Я знаю, на каком диске он находится (в моем разделе /sdb1)


Любые предложения о том, как я могу удалить эти файлы из системы. Удивительно, но их даже не видно в проводнике Windows. Я даже не могу удалить из терминала Ubuntu.


Вот что получается из этих файлов

Редактировать: -
Могу ли я безопасно использовать следующее (это я нашел где-то в сети): -

Привет! Это не жареные!


Пожалуйста, есть предложения по этому поводу!

Мне предложили запустить команду 'e2fsck', но, немного почитав о ней, я понял, что ее не следует запускать на смонтированном устройстве.

Может ли кто-нибудь посоветовать последовательность шагов, которые я должен выполнить (я очень новичок в системах на базе Linux и не хочу испортить его, пытаясь делать что-то, не зная, что я делаю): -

<р>1. размонтировать этот раздел
2. запустите команду e2fsck
3. затем перезагрузите систему - будет ли это устройство перемонтировано как запись fstab для устройства/раздела

Участник Ubuntu

Ваша последовательность верна, если sdb1 — это просто раздел данных, а не основной системный раздел.

Если sdb1 является вашим основным системным разделом, не размонтируйте его.Вместо этого выключите компьютер и загрузитесь с LiveUSB. Ваши метки sda/sdb могут меняться после каждой загрузки, поэтому внимательно проверяйте характеристики каждого раздела.

Когда fsck пытается исправить раздел, вы можете потерять некоторые данные. или он может оказаться в каталоге «потерянные и найденные»). Поскольку ваша файловая система уже повреждена, резервное копирование больше не является полезным вариантом, извините.

Привет! Это не жареные!


Спасибо за ответ.

Нужно ли использовать параметр -ccf или просто команду без каких-либо параметров? Я просто ужасно осторожен из-за своих ограниченных знаний в этой области!

Участник Ubuntu

Других вариантов нет.
fsck не имеет параметра -ccf.

Привет! Это не жареные!


Пытался размонтировать раздел с помощью :-

sudo umount /sharedfiles/media (здесь смонтирован диск/раздел /dev/sdb1)

Получил ошибку "Цель занята"

Затем попробовал выполнить команду lsof следующим образом с таким выводом: -

Как мне размонтировать этот раздел, чтобы запустить команду fsck? Что-то явно не так с моей системой - некоторые видеофайлы просто не воспроизводятся, что не так давно воспроизводилось хорошо.


Не уверен, что это хорошая идея

Почетный сотрудник

Дата регистрации: ноябрь 2009 г. Место: Каталония, Испания Beans 14 513 --> Beans 14 513 Distro Ubuntu 18.04 Bionic Beaver

Если раздел, который вы хотите размонтировать, содержит общие ресурсы Samba, вам нужно сначала остановить службу smbd. Для 16.04 команда:

Привет! Это не жареные!


Спасибо за ответ. Я знал, что ты легенда.

У меня есть общие ресурсы Samba в этом разделе. Я остановлю службу Samba и попробую еще раз сегодня вечером. Надеюсь, это решит проблему.

Очевидно, что что-то пошло не так с системой, потому что я заметил, что когда я проигрываю любое видео из раздела (в настоящее время использую медиаплеер WD TV Live) и пытаюсь воспроизвести видео с точки, скажем, через 40 минут от текущей точки, он просто сидит там и не движется вперед. Кажется, это происходит только с видео в этом разделе - я пробовал только несколько видео, но я полагаю, что то же самое будет со всеми из них, поскольку это может быть связано с системной проблемой в этом разделе (в моем случае все физический диск)

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

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

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

Однако команды cat и df выдают другое сообщение:

Источники рекомендуют запустить fsck, но я не могу, потому что моя система не поддерживает эту команду:

Какое рекомендуемое проклятие действия?

2 ответа 2

Я выполнил команду для освобождения места

Это не команда для освобождения места — это команда для уничтожения всех данных в разделе «sda1». Таким образом, хотя технически у вас теперь есть 8 ГБ свободного места, это также означает, что в системе больше ничего не осталось.

но при этом команде по иронии судьбы не хватило места.

Это сообщение ожидается здесь, так как вы записываете источник бесконечной длины (/dev/zero, который постоянно создает данные) в место назначения фиксированного размера (раздел /dev/sda1 размером ровно 8 ГиБ). ).

Вы получаете разные сообщения об ошибках в зависимости от того, какие данные сохранились в кэше ОЗУ, хранящемся в ОС, а какие данные необходимо повторно прочитать с диска. Недавно использовавшиеся команды все еще кэшируются в ОЗУ, и их сбой будет отличаться от тех, которые еще не были кэшированы. Например:

  1. Операционная система даже не может найти файл из-за того, что информация о файловой системе была стерта. Вы получаете сообщение "Файл не найден" (ENOENT).
  2. Операционная система по-прежнему может найти файл на основе кэшированной информации каталога в ОЗУ, но не может прочитать собственные метаданные файла (список экстентов), так как он был стерт. Вы получаете сообщение "Структура нуждается в очистке" (EUCLEAN/EFSCORRUPTED).
  3. ОС может открыть и прочитать начало программы, которая все еще не повреждена в ОЗУ, но остальную часть необходимо загрузить с диска, который либо дает сбой, либо возвращает мусорные данные из-за того, что они были стерты. Вы получаете различные сбои.

Источники рекомендуют запустить fsck, но я не могу, потому что моя система не поддерживает эту команду:

Возможно, так было до тех пор, пока вы все не стерли.

Однако в случае, когда файловая система / действительно повреждена, обычной рекомендацией является запуск fsck из другой системы (т. е. с аварийного liveCD), который обычно содержит все необходимые инструменты для в исходной системе они были или нет. Это также будет иметь большую гибкость при фактическом восстановлении файловой системы, поскольку восстановление часто невозможно выполнить, пока файловая система все еще смонтирована.

Какое рекомендуемое действие проклятия?

Рекомендуемое проклятие [опущено].

Рекомендуемый курс действий — восстановить систему из резервных копий или переустановить ее.

Читайте также: