Tình huống khủng khiếp - hệ thống tệp được gắn đồng thời bởi nhiều phiên bản HĐH độc lập


14

Làm thế nào để tôi thoát khỏi tình huống này một cách an toàn?

Chi tiết như sau:

Một máy chủ xen đã có các thiết bị khối được phân bổ cho VM. Nhưng những thiết bị này cũng đã được gắn bên trong Xen.

Trong thực tế, 44 thiết bị khối này đã được gắn kết như thế này. Để làm cho vấn đề tồi tệ hơn, mỗi thiết bị vật lý được nhìn thấy trên 4 đường dẫn và mỗi đường dẫn được gắn trên một điểm gắn kết riêng. Nói cách khác, các thiết bị thực sự được gắn 5 lần mỗi cái.

HĐH máy khách VM nhìn thấy đường dẫn qua thiết bị giả PowerPath (được phân bổ dưới dạng thiết bị chặn phy: cho domU)

Một số thiết bị được định dạng là ext2 và reiserfs.

Không cần phải giải thích cho tôi các rủi ro tham nhũng hệ thống tập tin ở đây.

Tôi sợ rằng ngay cả việc ngắt kết nối các hệ thống tệp có thể gây ra tham nhũng và cảm thấy rằng tại thời điểm này, rút ​​điện từ máy chủ, là lựa chọn an toàn nhất .

Lưu ý rằng hầu hết các ứng dụng, cơ sở dữ liệu Oracle, trong tất cả các máy ảo vẫn đang chạy và đang sử dụng.

Tôi phát hiện ra điều này khi điều tra việc sử dụng CPU cao trên dom0. Có một quá trình "tìm" không thành công, với cwd -> / media / đĩa-12 được gắn từ / dev / sdf1, thuộc về / dev / emcpowerr

Trước khi có ai hỏi, có một lần tôi đã thấy các quy trình không thể bị giết và tiếp tục sử dụng CPU và RAM (không giống như quy trình không còn tồn tại / zombie), là khi có các I / O được cam kết nổi bật, ví dụ như đã đồng bộ hóa trở lại nhưng chưa có trên đĩa . Thông thường hơn điều này xảy ra trên băng I / O.

Gợi ý!?

Tái bút: Tôi có dự kiến ​​các thiết bị sẽ được "dành riêng" một khi được gắn, để ngăn chặn điều này không? Hay điều đó là không thể trên Linux?

EDIT: Đầu tiên tôi tin rằng KDE trong hypanneror) là thủ phạm. Có vẻ như KDE đang gắn các thiết bị có thể khi đăng nhập để tạo biểu tượng trên màn hình. Tuy nhiên, điều tương tự không xảy ra trên các máy chủ Xen khác, nhưng tất cả các máy chủ khác đang chạy phiên bản SLES và KDE cũ hơn nhiều ... V4 dường như là một máy vi phạm, với 3,4 hoạt động tốt hơn).

Hơn nữa, hai VM không quan trọng đã bị treo. Sau khi tắt chúng, chúng sẽ không khởi động lại do hỏng hệ thống tệp. VM chính / sản xuất vẫn đang chạy và cơ sở dữ liệu trên nó vẫn hoạt động, nhưng rõ ràng đây là một quả bom hẹn giờ. Khách hàng đang cố gắng xây dựng lại môi trường trên một máy ảo khác trên một máy chủ khác nhưng bị kẹt trong các vấn đề cấu hình một số thành phần, vì vậy chúng tôi đang chờ ...

Trong mọi trường hợp, tôi cảm thấy rằng không có câu trả lời nào cho đến nay là "thực hành tốt nhất luôn luôn tắt một cách duyên dáng" Và tôi hy vọng sẽ có được một cái gì đó cụ thể hơn ... Trong mọi trường hợp, tôi cảm thấy rằng tình huống này có thể được bảo đảm cẩn thận hơn Suy nghĩ. Việc tắt sẽ khiến IO nổi bật, đặc biệt là các cập nhật dữ liệu meta của hệ thống tệp từ trình ảo hóa, sẽ được đồng bộ hóa và gây ra lỗi hệ thống tệp lớn có khả năng?


1
Và ngay bây giờ mọi sao lưu được thực hiện trước khi "tắt" có thể chỉ đơn giản là sao lưu dữ liệu bị hỏng, mặc dù trong tình huống này, nhiều khả năng dữ liệu meta của hệ thống tệp bị hỏng, thay vì nội dung tệp.
Johan

Tôi sợ bạn sẽ mất ít nhất một số dữ liệu trong mọi trường hợp. Tắt máy chủ về mặt vật lý hoặc chấm dứt mạnh mẽ các máy ảo có thể gây ra hậu quả không mong muốn là làm rối tung mọi thứ (tức là ngay cả những hệ thống tệp chỉ được gắn một lần). Tôi có lẽ sẽ cố gắng chấm dứt mọi thứ sạch sẽ nhất có thể để giảm thiểu tổn thất. Và tất nhiên, đảm bảo nó sẽ không xảy ra lần nữa.
peterph

Để ngăn chặn điều đó, IIUC bạn có thể cố gắng đặt quyền trên thiết bị trong dom0 một khi nó được mở bởi khách, nhưng vì quyền fs (trên tệp thiết bị) có thể bị vượt qua bởi root (trừ khi bạn có kernel đã vá) không cần giúp đỡ
peterph

1
Về tập lệnh bài viết của bạn: nếu các thiết bị được hiển thị qua nhiều đường dẫn thì hạt nhân có thể thậm chí không biết rằng chúng đều là cùng một thiết bị, vậy làm thế nào nó có thể "dự trữ" nó? Đối với việc xuất một thiết bị từ dom0 sang nhiều domUs, nó cho phép bạn làm điều đó bởi vì bạn thực sự có thể muốn thực hiện nó một cách có chủ đích (ví dụ: với một hệ thống tệp hỗ trợ nó hoặc gắn chỉ đọc ở mọi nơi).
Celada

@Celada Tôi nghĩ hủy bỏ điều đó, nhưng có nhiều cách để "khóa" thiết bị: PowerPath nên (trong trường hợp của Solaris) dự trữ tất cả các đường dẫn cha mẹ của thiết bị (Tại thời điểm thiết bị khởi động). Ngoài ra, các lệnh "dự trữ" SCSI được quản lý bởi thiết bị đích, vì vậy một khi mục tiêu được bảo lưu, nó sẽ từ chối cho phép dự trữ đối với bất kỳ đường dẫn nào cho thiết bị đó. Ít nhất đó là sự hiểu biết hạn chế của tôi.
Johan

Câu trả lời:


2

Nếu các đĩa đang được ghi từ một điểm gắn kết duy nhất thì không có tác hại nào được thực hiện. Thực hiện tắt máy sạch, (sao lưu nó từ trạng thái treo nếu bạn sẽ) sửa chữa các gắn kết. Không chạy bất cứ thứ gì ngoại trừ các ứng dụng cần thiết trên Dom0. Nếu, OTOH, các phân vùng đang được viết từ nhiều đường dẫn, đó là BAD và trở nên tồi tệ hơn bởi lần thứ hai. Rút phích cắm.


0

Tôi không có lý do cụ thể nhưng cảm giác ruột thịt của tôi nói với tôi rằng sau đây có thể là cách tiếp cận tốt nhất:

  1. Tắt các ứng dụng.
  2. Sao chép tất cả dữ liệu từ VM qua mạng vào vị trí sao lưu.
  3. Hủy gắn kết các hệ thống tệp từ bên trong VM.
  4. Tắt máy ảo. (Hiện tại chỉ có một VM chạy trên máy chủ này).
  5. Đảm bảo không có domUs nào được thiết lập để bắt đầu tự động.
  6. Rút nguồn trên máy chủ để ngăn không cho trình ảo hóa thực hiện bất kỳ hành động "đóng" nào, đồng bộ hóa I / O nổi bật, v.v.
  7. Khởi động máy ảo, hy vọng rằng chính trình ảo hóa đã sống sót sau khi bị mất điện.
  8. Nếu thất bại, xây dựng lại môi trường. (Các đĩa khởi động VM được dựa trên tệp, nhưng các điểm gắn dữ liệu nằm trên đĩa bên ngoài được phân bổ dưới dạng thiết bị khối)
  9. Kiểm tra xem trình ảo hóa có đang gắn bất kỳ hệ thống tệp nào thuộc về domUs không. Hủy gắn kết những cái này trước khi bất kỳ domUs nào được bắt đầu)
  10. Tắt tự động gắn KDE.
  11. Khởi động VM và buộc kiểm tra FS đầy đủ.

Thay thế cho 11: Khởi động VM và gắn kết các hệ thống tệp mà không có fsck đầy đủ.

Lý do là tôi không muốn Xen hypanneror có thêm cơ hội hoàn toàn cần thiết để gây ra tham nhũng trên các hệ thống tệp domU.


0

Tôi không phải là chuyên gia Xen và chưa có kinh nghiệm với nó. Nhưng cách tiếp cận của tôi nếu tôi ở vị trí của bạn sẽ là: đầu tiên tôi biết tôi có thể mất dữ liệu (thậm chí có thể là tất cả); thứ hai tôi sẽ cố gắng tạo ảnh chụp nhanh và sau đó tạm dừng các máy ảo, khôi phục chúng trong môi trường khác nhau an toàn.
Tôi không muốn cho bạn hy vọng sai lầm, nhưng tôi nghĩ bạn sẽ may mắn nếu bạn có thể phục hồi bất cứ điều gì.

Cảnh báo : làm theo những lời khuyên này có thể khiến bạn mất tất cả dữ liệu. Điều này tùy thuộc vào bạn để xem nó có đáng để mạo hiểm hay không.

Với rất nhiều may mắn, các ứng dụng của bạn vẫn hoạt động vì dữ liệu họ đang sử dụng hoàn toàn nằm trong bộ nhớ biến động. Bạn nên cố gắng tận dụng tình huống này (cố gắng đánh giá xem đó có phải là trường hợp trên cơ sở từng ứng dụng không) và xuất dữ liệu trực tiếp sang chia sẻ mạng nếu ứng dụng cung cấp tính năng như vậy. Nếu có bất kỳ dữ liệu nào trên đĩa, chức năng xuất này có thể bị "khóa" giống như findcâu lệnh của bạn hoặc sự cố (và làm hỏng ứng dụng hoặc HĐH) do dữ liệu đĩa bị thay đổi / bị hỏng.

Sau đó, bạn có thể thử thực hiện một ảnh chụp nhanh trực tiếp, hướng dẫn trong bài viết sau: Tạo ảnh chụp nhanh trong Xen . Tôi sẽ chụp ảnh nhanh theo từng byte, mặc dù nó có thể bị kẹt giống như findlệnh của bạn ... Tuy nhiên, tôi sẽ không hy vọng nhiều như vậy.

Trước khi thực hiện lệnh trước đó, bạn phải đọc tài liệu này từ Citrix để giúp hiểu các ảnh chụp nhanh trong Xen (PDF) .

Tôi chúc bạn may mắn.


Cảm ơn bạn. Các khách hàng có xuất khẩu cơ sở dữ liệu. Tôi nghĩ rằng họ chỉ sử dụng FTP để loại bỏ VM, nhưng có thể gắn kết chia sẻ mạng và xuất trực tiếp vào đó.
Johan

Tôi đã nảy ra ý tưởng đình chỉ VM và sau đó lấy một bản sao đầy đủ cho một máy chủ khác và sau đó thử a) Tiếp tục lại từ chế độ ngủ, hoặc b) khởi động nó, tiếp theo là khởi động lại và fsck. Ý tưởng là vì tôi vẫn còn máy ảo bị treo trên máy chủ gốc, tôi có thể tiếp tục máy ảo đó nếu bản sao không hoạt động trên máy chủ khác.
Johan

Ngoài ra FWIW vấn đề với việc quay trở lại một bản sao lưu là người ta sợ rằng tất cả các bản sao lưu được thực hiện trong vài tháng qua đều bị hỏng.
Johan

@Johan điều này có lẽ đúng hơn, hầu hết nếu không phải tất cả các bản sao lưu (kể từ khi sự cố xảy ra) có thể bị hỏng. Điều này cũng đúng với việc xuất cơ sở dữ liệu. Chúc may mắn một lần nữa, bạn sẽ cần nó!
Huygens
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.