Я випадково застібнув весь сервер


10

Добре, якщо хтось хоче грати в Бога і творити чудеса, я вниз.

Отже, мені дали завдання зробити скрипт, який знайшов файли, старші 6 місяців, скопіював їх і потім видалив. На моєму шляху створення сценарію tihs я запустив це:

find / -type f -mtime -400 ! -mtime -180 | xargs gzip blablabla

І це дало КОЖНІЙ ОДИН ФАЙЛ розширення .gz. Тепер я розв’язав це, як тільки помітив, але це було якось пізно. Після завершення команди жодна з моїх команд bash не працюватиме, оскільки змінна $ PATH спорожніла себе. Я спробував багато речей, перш ніж зрозуміти, в чому проблема.

Тож я розпакував усе, що я ще не в змозі завантажувати. Мені вдалося домогтися рятування, після того як я дотримувався онлайн-інструкцій для:

root (hd0,0)
setup (hd0)
kernel (hd0,0)/boot/vml[...]
initrd (hd0,0)/boot/initrd.im[...]

Після чого мій Linux частково завантажується, але дає мені такі помилки:

Begin : Running /scripts/init-bottom ... mount : mounting /dev on /root/dev failed : No such file or directory
mount: mounting /sys/ on /root/sys failed: No such file or directory
mount: mounting /proc on /root/proc failed : No such file or directory
Target filesystem doesn't have requrested /sbin/init.
No init found. Try passing init= bootarg.

Я спробував відновити файлову систему, я завантажився з 3-х різних дисків LiveCD / Rescue, я запустив завантажувальний ремонт із двох різних dicsc. Я зробив силу fscks ...

Мені справді не вдається в ідеї, і мені НЕОБХІДНО отримати цей сервер принаймні для завантаження, щоб я міг відновити свої бази даних SQL. Я відчайдушно шукаю допомоги, навіть заплачу, якщо буде потреба.

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


3
якщо вони mysql db, вам не обов’язково завантажуватись; у такому випадку я б спробував встановити диск як підлеглий та скопіювати каталог / var / lib / mysql
user16081-JoeT

8
Чиста установка на нових пристроях зберігання даних. Встановіть старий диск, перекладіть дані за потребою. Я б сказав, що ремонт не буде вартим зусиль.
Zoredache

7
Це пункт, коли ви відновитесь із резервного копіювання. І не забудьте наступного разу не бігати, виконуючи непривілейовані дії, як користувач root.
Магеллан

1
because of version differences,перевстановити з точно такою ж версією. we have corruption issues,ваші дані можуть бути пошкоджені. Відновлення системи таким чином, щоб вона завантажилася, не допоможе вам, якщо дані були перервані. Якщо ваша команда gzip стискала файли вашої бази даних під час використання бази даних, пошкоджена, здається неминучою.
Зоредаче

5
Якщо ваше програмне забезпечення БД працювало під час виконання цих команд, можливо, ви не зможете відновити БД. Gzip з радістю застебнув файл, а потім від’єднав його. Але у вашому програмному забезпеченні DB все ще був відкритий файл, і він вносив зміни до нього. Як тільки він зупинився, файл був видалений.
toppledwagon

Відповіді:


8

Це залежатиме від того, чи достатньо відремонтовано файлові системи, щоб ви змогли змонтувати ці розділи з LiveCD. Не турбуйтеся ще намагатися завантажувати систему. Спочатку встановіть розділи та розпакуйте всі файли .gz. Це дасть вам робочі копії init та системних бінарних файлів. Тоді ви можете використовувати grub для ремонту завантажувального сектора. Потім перезавантажтесь в єдиному користувальницькому режимі та знову проведіть файлову систему. Якщо це працює, ви матимете працюючу систему. У вас також буде маса нерозпакованих файлів (як-от man pages), які дійсно повинні бути накопичені, але це краще, ніж мати систему, яка не може бути завантажена.

Якщо ви не можете змонтувати розділи з LiveCD, вам, на жаль, не пощастило. У цей момент нічого не відновить вашу систему.


1
Це насправді спрацювало як принадність ... я не можу вам за це достатньо подякувати! MySQL не завантажувався, але я ще не зробив --force fsck, сподіваюсь, це виправить! ПОДЯКА
Dexirian

1
Дивовижно. Радий, що це допомогло.
Майкл Мартінес

9

Перше, що я спробую, це запустити середовище LiveCD і просто спробувати скасувати все, сподіваючись, що він поверне систему до стану завантаження. Примітка. Мені б занепокоєння можливою корупцією даних, якщо початковий процес gzip був перерваний.

В іншому випадку я б спробував перенести БД до нової системи, як запропонували інші, але, як ви вже стикалися, можуть виникнути трудомісткі проблеми з залежністю та конфігурацією, які потрібно вирішити індивідуально.


Швидке запитання: Ми не впевнені в тому, що використовується старий сервер баз даних SQL, а новіший сервер використовує інший Linux Distro. Новіший сервер працює під управлінням CentOS з WHM, а старий - Debian / Unbuntu. Отже, моє запитання полягає в тому, як я можу ефективно мігрувати свої бази даних SQL без пошкодження та чого іншого?
Дексирій

6

Тут не помиляється загальна думка про те, що вам слід просто встановити диск у робочій системі та зберегти свої файли. Це розумно робити. Але інший спосіб - веселіший і дуже виховний. Я багато чого навчився, боручись із виходу з брудних ситуацій, коли інші люди щойно відмовилися б і перевстановились з нуля. (Не на сервері, від якого залежать інші люди, хоча ...)

У будь-якому випадку, поки що у вас є initramfs (initrd), який працює. Це гарний початок. Але він не може завершити передачу init, тому що, init.gzможливо, зараз це init ? Щоб досягти будь-якого прогресу, це допоможе точно знати, який у вас дистрибутив Linux, тому ми можемо знайти, які інструменти доступні в його initramfs для екстреного використання.

Повідомлення про помилки, які ви подали, виглядають так, що вони могли надходити з initramfs Debian. Якщо це Debian, то (initramfs)після останньої помилки ви мали б отримати підказку оболонки в наступному рядку. Якщо ви це зробили, то варто вивчити, що відбувається з тими невдалими кріпленнями. це НЕ /root/devвистачає? ( /rootце місце, де ваш звичайний кореневий fs повинен бути встановлений під час запуску програми initramfs)

Якщо ви не отримали підказки про оболонку, то те, що з’явилося після, No init found. Try passing init= bootarg.буде цікавим. Навіть якщо це було не що інше, як миготливий курсор, це підказка. Якщо це здається повністю замороженим, спробуйте отримати деяку інформацію про процеси, які ще існують, використовуючи магічний sysrq або Ctrl + ScrollLock.

Debian initramfs також дозволяє запитувати оболонку на кількох спеціальних орієнтирах, додаючи break=параметр до командного рядка ядра. Наприклад, щоб отримати оболонку перед Running /scripts/init-bottomлінією, використовуйте break=bottom.

Убік: я не знаю, як findкоманда могла зібрати кожен файл ... мені здається правильним для вибору файлів віком від 180 до 400 днів.


Коли я роблю ls under / root, нічого не знайдено. Так що я можу прийняти це, що монтаж монтажу не підходить під час завантаження? Де я можу це змінити?
Дексирій

1
@Dexirian так ти отримати запрошення оболонки (ви повинні використовувати break=bottom?) ... да, на той час він намагається встановити /root/devі /root/procта /root/sys, /rootповинна бути реальною кореневої файлової системою. Мабуть, раніше було повідомлення про помилку, про те, що не вдалося його встановити. Ви включили root=параметр у командний рядок ядра? Моя пам’ять трохи нечітка в цьому питанні, але я думаю, що root (hd0,0)просто говорить grub, де знайти його файли підтримки, і вам все одно потрібно сказати ядро ​​окремо, де знаходиться корінь.

Так, я використовував root =, kernel = initrd =, і setup =, мені не довелося використовувати break = bottom. І я не
помітив

@Dexirian Чи доступна прокрутка консолі? Shift + PgUp. І чи зможете ви встановити це, як він (initramfs) підкаже, щось подібне mount -r /dev/sda1 /root? cat /proc/partitionsщоб побачити, які диски доступні.

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