Tôi vô tình nén toàn bộ máy chủ của mình


10

Được thôi nếu có ai muốn chơi thần và làm phép lạ tôi sẽ thất vọng.

Vì vậy, tôi được giao nhiệm vụ tạo ra một tập lệnh tìm thấy các tập tin cũ hơn 6 tháng, nén chúng và sau đó xóa chúng. Trên đường thực hiện kịch bản tihs tôi đã chạy nó:

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

Và điều đó đã mang lại cho MỌI NGƯỜI MỘT FILE một phần mở rộng .gz. Bây giờ tôi đã hoàn tác nó ngay khi tôi nhận thấy nhưng đã quá muộn. Sau khi hoàn thành lệnh, không có lệnh bash nào của tôi hoạt động được vì biến $ PATH tự làm trống. Tôi đã thử rất nhiều thứ trước khi nhận ra vấn đề là gì.

Vì vậy, thay đổi tất cả mọi thứ tôi vẫn không thể khởi động. Tôi đã xoay sở để giải cứu nó, sau khi tôi làm theo hướng dẫn trực tuyến về:

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

Sau khi linux của tôi khởi động một phần nhưng cho tôi các lỗi sau:

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.

Tôi đã thử sửa chữa hệ thống tập tin, tôi đã khởi động từ 3 đĩa LiveCD / Cứu khác nhau, tôi đã chạy sửa chữa khởi động từ 2 dicsc khác nhau. Tôi đã buộc fscks ...

Tôi thực sự không có ý tưởng và tôi CẦN phải đưa máy chủ này khởi động ít nhất để tôi có thể khôi phục cơ sở dữ liệu SQL của mình. Tôi mong muốn được giúp đỡ, tôi thậm chí sẽ trả tiền nếu cần.

Tôi đã ẩn các diễn đàn trong 3 ngày liên tục cả ngày để tìm giải pháp khả thi và tôi vẫn ở cùng một điểm ... Xin vui lòng giúp đỡ?


3
nếu chúng là mys mys db, bạn không nhất thiết phải khởi động; trong trường hợp đó, tôi sẽ cố gắn ổ đĩa làm nô lệ và sao chép thư mục / var / lib / mysql
user16081-JoeT

8
Cài đặt sạch trên các thiết bị lưu trữ mới. Gắn ổ đĩa cũ, truyền dữ liệu theo yêu cầu. Tôi cá rằng việc sửa chữa sẽ không đáng để bỏ công sức.
Zoredache

7
Đây là điểm mà bạn khôi phục từ bản sao lưu. Và hãy nhớ đừng chạy xung quanh làm những hành động không có đặc quyền như người dùng root lần sau.
Magellan

1
because of version differences,cài đặt lại với cùng một phiên bản. we have corruption issues,dữ liệu của bạn có thể bị hỏng. Sửa chữa hệ thống để nó có khả năng khởi động, sẽ không giúp bạn nếu dữ liệu đã bị hỏng. Nếu lệnh gzip của bạn nén các tệp cơ sở dữ liệu của bạn trong khi cơ sở dữ liệu đang được sử dụng bị hỏng dường như không thể tránh khỏi.
Zoredache

5
Nếu phần mềm DB của bạn đang chạy trong khi bạn chạy các lệnh đó, bạn có thể không phục hồi được DB. Gzip sẽ vui vẻ nén tệp, sau đó nó hủy liên kết nó. Nhưng phần mềm DB của bạn vẫn mở tệp và nó đã cam kết thay đổi nó. Ngay khi dừng lại, tập tin đã bị xóa.
topplingwagon

Câu trả lời:


8

Điều này phụ thuộc vào việc các hệ thống tập tin có được sửa chữa đủ để bạn có thể gắn kết các phân vùng đó từ LiveCD hay không. Đừng cố gắng khởi động hệ thống. Đầu tiên, gắn kết các phân vùng và giải nén tất cả các tệp .gz. Điều này sẽ cung cấp cho bạn các bản sao làm việc của init và hệ thống nhị phân. Sau đó, bạn có thể sử dụng grub để sửa chữa khu vực khởi động. Sau đó khởi động sang chế độ người dùng duy nhất và fsck lại hệ thống tập tin. Nếu nó hoạt động, bạn sẽ có một hệ thống đang chạy. Bạn cũng sẽ có một loạt các tệp được giải nén (như trang man) thực sự cần được nén, nhưng tốt hơn là có một hệ thống không thể khởi động.

Nếu bạn không thể gắn kết các phân vùng từ LiveCD, thì thật không may, bạn không gặp may. Không có gì sẽ phục hồi hệ thống của bạn tại thời điểm đó.


1
Điều này thực sự hoạt động như một cơ duyên ... tôi không thể cảm ơn bạn đủ cho điều này! MySQL sẽ không khởi động nhưng tôi chưa làm - Force fsck khá lâu, hy vọng nó sẽ sửa nó!
CẢM

1
Tuyệt vời. Vui vì nó đã giúp.
Michael Martinez

9

Điều đầu tiên tôi thử là chạy môi trường LiveCD và chỉ cố gắng giải nén mọi thứ, hy vọng điều đó sẽ đưa hệ thống trở về trạng thái khởi động. Lưu ý: Tôi lo ngại về việc hỏng dữ liệu tiềm năng nếu quá trình gzip ban đầu bị gián đoạn.

Mặt khác, tôi sẽ cố gắng di chuyển DB sang một hệ thống mới như những người khác đã đề xuất nhưng như bạn đã gặp phải, có thể có các vấn đề phụ thuộc và cấu hình cần nhiều lao động sẽ cần được giải quyết riêng lẻ.


Câu hỏi nhanh: Chúng tôi không chắc chắn về máy chủ cơ sở dữ liệu SQL cũ và máy chủ mới hơn đang sử dụng Linux Distro khác. Máy chủ mới hơn đang chạy CentOS với WHM và máy chủ cũ là Debian / Unbfox. Vì vậy, câu hỏi của tôi là, làm thế nào tôi có thể di chuyển hiệu quả cơ sở dữ liệu SQL của mình mà không bị hỏng và không có gì?
Dexirian

6

Sự đồng thuận chung ở đây, rằng bạn chỉ nên gắn đĩa vào hệ thống làm việc và cứu các tệp của mình, không sai. Đó là điều hợp lý để làm. Nhưng cách khác là vui hơn, và rất giáo dục. Tôi đã học được rất nhiều trong khi chiến đấu để thoát khỏi những tình huống lộn xộn, nơi những người khác sẽ bỏ cuộc và cài đặt lại từ đầu. (Không phải trên máy chủ mà người khác phụ thuộc vào ...)

Dù sao, cho đến nay bạn có một initramfs (initrd) chạy. Đó là một khởi đầu tốt. Nhưng nó không thể hoàn thành bàn giao cho init vì bây giờ init.gzcó lẽ? Để đạt được bất kỳ tiến bộ nào, sẽ giúp biết chính xác phân phối Linux của bạn là gì, vì vậy chúng tôi có thể tra cứu những công cụ nào có sẵn trong initramfs của nó để sử dụng khẩn cấp.

Các thông báo lỗi mà bạn trình bày trông giống như chúng có thể đến từ initramfs của Debian. Nếu đó là Debian, thì bạn đã nhận được một (initramfs)dấu nhắc shell trên dòng tiếp theo sau lỗi cuối cùng. Nếu bạn đã làm, bạn nên xem xét những gì đang xảy ra với những lần gắn kết thất bại đó. đang /root/devthiếu? ( /rootlà nơi fs gốc bình thường của bạn nên được gắn kết trong quá trình chạy initramfs)

Nếu bạn không nhận được dấu nhắc shell, thì những gì xuất hiện sau No init found. Try passing init= bootarg.sẽ rất thú vị. Ngay cả khi nó chẳng là gì ngoài một con trỏ nhấp nháy, đó là một manh mối. Nếu nó dường như bị đóng băng hoàn toàn, hãy thử lấy một số thông tin về các quy trình vẫn còn xung quanh bằng cách sử dụng ma thuật sysrq hoặc Ctrl + ScrollLock.

Các initramfs Debian cũng cho phép bạn yêu cầu shell tại một vài mốc đặc biệt bằng cách thêm một break=tham số vào dòng lệnh kernel. Ví dụ, để có được một vỏ trước Running /scripts/init-bottomdòng, sử dụng break=bottom.

Ngoài ra: Tôi không biết làm thế nào findlệnh có thể nén được mọi tệp ... nó có vẻ đúng với mục đích chọn tệp trong khoảng từ 180 đến 400 ngày.


Khi tôi làm một ls dưới / root thì không có gì tìm thấy. Vì vậy, tôi có thể mang nó gắn kết fs không ổn khi khởi động? Tôi có thể thay đổi nó ở đâu?
Dexirian

1
@Dexirian vì vậy bạn đã có được một vỏ prompt (bạn đã phải sử dụng break=bottom?) ... vâng, vào thời điểm nó đang cố gắng để gắn kết /root/dev/root/proc/root/sys, /rootnên hệ thống tập tin gốc thực sự. Phải có một thông báo lỗi trước đó, về việc không gắn kết nó. Bạn đã bao gồm một root=tham số trong dòng lệnh kernel? Bộ nhớ của tôi hơi mờ về điểm này nhưng tôi nghĩ rằng root (hd0,0)chỉ cần cho grub biết nơi tìm các tệp hỗ trợ của nó, và bạn vẫn cần phải nói riêng với kernel ở đâu là root.

Có, tôi đã sử dụng root =, kernel = initrd = và setup =, tôi không phải sử dụng break = bottom. Và tôi đã không phát hiện ra một thông báo gắn kết thất bại trước đó, vì nó cuộn rất nhanh
Dexirian

@Dexirian Có cuộn lại giao diện điều khiển không? Shift + PGUp. Và bạn có thể gắn kết nó từ khi anh ấy (initramfs) nhắc, một cái gì đó như thế mount -r /dev/sda1 /rootnào? cat /proc/partitionsđể xem những gì đĩa có sẵn.

1
Chào mừng đến với thế giới quản trị hệ thống.
Michael Martinez
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.