fsck не буде fsck (не вдається встановити прапори суперблоку)


12

Після нечистого відключення пристрою на базі SD-картки я вивів SD-карту fsckв кореневу файлову систему. Це призвело до змін у наступному:

e2fsck 1.43.1 (08-Jun-2016)
/dev/sdc2: recovering journal
Superblock needs_recovery flag is clear, but journal has data.
Run journal anyway<y>? no
Clear journal<y>? no
e2fsck: unable to set superblock flags on /dev/sdc2

Тут я відповідав "ні" обидва рази, але немає послідовності так / ні, що не одразу призводить до того ж результату.

Файлову систему можна встановити і при випадковому огляді здається нормальним; він також добре працює в пристрої, і це коренева файлова система (насправді це виявилося не зовсім добре, див. коментарі; tldr деякі безповоротно пошкоджені каталоги).

Я ddб розділ (8 Гб) у файл і спробував fsck на цьому. Цікаво:

e2fsck 1.43.1 (08-Jun-2016)
plush.rootfs: recovering journal
Clearing orphaned inode 18290 (uid=0, gid=0, mode=0100644, size=34096)
Clearing orphaned inode 18270 (uid=0, gid=0, mode=0100644, size=38916)
Clearing orphaned inode 18250 (uid=0, gid=0, mode=0100644, size=1128076)
Clearing orphaned inode 11411 (uid=0, gid=0, mode=0100644, size=293108)
Setting free inodes count to 406127 (was 408580)
Setting free blocks count to 1305622 (was 1347486)
plush.rootfs: clean, 60209/466336 files, 604906/1910528 blocks (check after next mount)

Наступне fsckпройшло чисте зображення можна змонтувати, а fsck -fпісля цього пропустити також.

Але файлова система на картці, з якої було створено необроблене зображення блокової копії, все ще має ту саму проблему - за винятком тієї, systemd-fsckяка відбувається під час завантаження, записує файлову систему як "чисту". Згодом, однак, правильне відключення, виймання картки та fsckповторна спроба з іншого вікна представляє ту саму помилку.

Щоразу, коли оригінал встановлено на іншій машині, syslog відзначає:

kernel: EXT4-fs (sdc2): 4 orphan inodes deleted
kernel: EXT4-fs (sdc2): recovery complete

Оскільки у мене все це підкріплено, я відкритий для того, щоб спробувати щось тут. Я міг би просто забути про це і відновити розділ з, мабуть, фіксованого зображення, але це не здається дуже задовільним рішенням, оскільки це означає припускати, що fsck криптовано не вдався вирішити незначну проблему.

Я підозрюю, що це перетвориться на питання "запит на офіційну документацію" стосовно таких питань, як потреби в recovery_flag (або просто на запитання "Що це означає?"), Тому будь-які пропозиції в цьому напрямку оцінюються.


Щось у ядрі записує про помилки пристрою? Це буде не перший раз, коли SD-карта несподівано стала лише для читання.
Марк Плотнік

@MarkPlotnick Ні, і це можна записати. Останнє, що було в журналі, перед проблемою - перезапуск системи (пристрій без голови і після довгого реагування не реагував apt upgrade). Після цього він записує звичайну завантажувальну систему - і systemd-fsck каже "чисто" (я відредагую це в), але спробувати fsck поза цим контекстом все-таки не вдасться.
goldilocks

Ваш fsck на копії очистив 4 індекси, але виправив кількість вільних inode, зменшивши її на 2453 inode! Це величезне. Перевірте, чи пристрій отримує достатню потужність.
meuh

@meuh Я помічаю щоразу, коли він встановлений на великому вікні, система syslog посилається на ці 4 inode (відредаговані вище). Деякі речі на файлі fs виявилися заплутаними (оновлені модулі ядра! \ O /), тому я записав нову карту і завишу на старій, якщо у мене є шанс розібратися в цьому більше. Це не зовсім нове - карта без купюри з торгом класу 10, в (легкому режимі) використовуйте 24/7 протягом декількох років, можливо ... Я не думаю, що існує якийсь спосіб перевірити, що SD-карта остаточно не існує , але я гадаю, що це могло бути так. Потужність має бути нормальною, але може бути іфічною за певних умов.
золотинок

2
Чи не справді це смокче, коли той самий інструмент, який повинен вирішити вашу проблему, не працює через характер проблеми? Висновок: інструмент поганий і його слід виправити.
Марк.2377

Відповіді:


11

Я просто зіткнувся з цією ж проблемою. Після налагодження проблеми з e2fsckтехнічним обслуговувачем ми зрозуміли, що SD-карта зламана. Він приймав записи без помилок, але насправді не записував дані на карту. SD-карта була ефективно лише для читання.

Здається, карта перейшла в якийсь режим безвідмовної безпеки, де дані все ще можна було прочитати, але нічого не записано.

У e2fsckповідомленні unable to set superblock flagsозначає , що він намагався написати суперблоці відзначити журнал , як оброблені, яка сталася без помилок, але коли він пішов , щоб прочитати суперблок знову все ще вказано , що журнал повинен бути переграний. Іншими словами, зміни, записані в суперблок, не були збережені на носії інформації.

Картка, якою я користуюсь, має цю проблему, - це MicroSD Samsung Evo 16GB microSD, який я згадую про всяк випадок, якщо з цими картами це звичайна проблема.

Я зміг перевірити це, використовуючи ddзаписати 4096 байт з /dev/zeroкарти на блок 0, потім я прочитав з карти і замість отримання всіх нулів, як слід, я все-таки отримав оригінальний незмінний суперблок ext4.

Зараз я переношу дані на нову карту, а потім бачу, чи зможу я отримати заміну від Samsung, який, як видається, пропонує 10-річну гарантію на SD-картки.

ОНОВЛЕННЯ: Samsung замінив 16 Гб картку на 32 ГБ в тій же серії Evo, тому здогадуюсь, я не можу надто поскаржитися!


"там, де дані ще можна було прочитати, але нічого не записано" -> Fs було записано .
goldilocks

@goldilocks: Звучить, як ваш суперблок fs, можливо, не можна було записати. Крім того, мій FS виявився доступним для запису завдяки кешуванню, лише після зняття та перепланування я помітив, що будь-які зміни були втрачені.
Malvineous

Це не було ілюзією через кешування.
goldilocks

7

Я знаю, що це стара тема, але, я подумав, я запропоную трохи зрозуміти.

Це, мабуть, є тим, як sd-картки помирають природною смертю. Кількість циклів читання / запису sd-карт, які можуть витримати, значно нижча, ніж у більшості інших носіїв інформації, що вважаються «читання / запис». Коли це вичерпано, карта перейде в режим лише для читання, але не повідомить вас про таке. Багато речей подумають, що вони записують на карту завдяки кешування ОС тощо, але нічого ніколи не прилипає.

Чудовий спосіб вбити SD-карту - це встановити її як swap-розділ або щось, що дуже інтенсивно читає / записує. Ви були б здивовані, як швидко ви можете вбити карту таким чином. Я виявив, що запуск knoppix з SD-накопичувача або USB-накопичувача триватиме лише місяць-два, залежно від якості карти та інтенсивності використання knoppix. (Я з тих пір перейшов на запуск knoppix з USB-накопичувача, який триває пару років).

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.