Có thể dd đĩa hiện tại bạn đã khởi động không?


23

Tôi có một bản FreeNAS chạy trên đĩa USB trực tiếp. Và tôi muốn tạo một bản sao lưu của nó.

Trong khi cố gắng tránh phá vỡ một hệ thống hoạt động hoàn hảo, liệu tôi có thể vào ddđĩa trong khi HĐH đang chạy không?

Hoặc tôi sẽ phải tắt máy và ddtắt máy khác?

Câu trả lời:


16

Bạn có thể chạy ddtrên đĩa đang chạy. Làm như vậy khi có những thay đổi lớn đối với cấu trúc đĩa nên tránh. Ngoài ra, bạn nên fschkđến đích một khi bạn đã hoàn thành. Hệ thống càng yên tĩnh trong quá trình sao lưu càng tốt.

Chạy một bản sao lưu lạnh (hệ thống tệp không được đếm) là tùy chọn tốt nhất nếu bạn muốn sử dụng 'dd'.

Có các tùy chọn tốt hơn để sao lưu một hệ thống đang chạy.

  • tarhoặc cpiosẽ đọc các tệp và giao dịch hợp lý tốt với các tệp đang mở. Bạn có thể sẽ bỏ lỡ một số thay đổi xảy ra trong quá trình sao lưu.
  • rsynchành xử như tarđối với các tệp đang mở và thiếu các thay đổi trong quá trình sao lưu. Nó có thể được sử dụng để thực hiện sao lưu ban đầu và thực hiện sao lưu gia tăng rất tốt. Khi chạy một bản sao lưu gia tăng, nó có thể bỏ qua việc sao chép các phần không thay đổi của tệp.

Nếu bạn đang sao lưu một hệ thống tệp với cơ sở dữ liệu cơ sở dữ liệu điều tra hỗ trợ cho các bản sao lưu nóng.


Điểm tốt về việc sử dụng các công cụ cấp cao hơn - tar, cpiorsynctất cả các công việc trong hệ thống tập tin , vì vậy đây có thể thích hợp. dd, OTOH, hoạt động trực tiếp với các khối đĩa, bỏ qua FS.
Piskvor

16

Về mặt kỹ thuậtcó thể (như trong "tự bắn vào chân"), nhưng rất khó để ý, đặc biệt là nếu bất kỳ phân vùng nào của đĩa đều có thể ghi được.

Hình ảnh kịch bản này:

  • dd bắt đầu đọc đĩa lúc bắt đầu, và vui vẻ đi về phía cuối.
  • Khi đi được nửa đường, HĐH sẽ ghi một tệp vào đĩa. Tuy nhiên, tệp bị phân mảnh - một phần của tệp nằm ở đầu đĩa và phần khác ở cuối đĩa.
  • Không có vấn đề gì đối với HĐH - nó ghi tệp tốt, và đẩy nó ra khỏi bộ đệm ghi; bây giờ nó được ghi chính xác trên đĩa.
  • Vấn đề là với bản sao lưu của bạn: ddđã đi qua và sao chép phần đầu tiên của tệp, vì vậy nó sẽ ghi lại trạng thái không nhất quán khi đến phần thứ hai - mỗi phần sẽ từ một phiên bản khác nhau!

Nếu bạn có khả năng hiển thị lại tất cả các phân vùng trên đĩa USB ở chế độ chỉ đọc, thì vấn đề này không nên xảy ra (nhấn mạnh vào " không nên "); điều này đòi hỏi phải chuẩn bị cài đặt ngoại tuyến / cài đặt ngoại tuyến đáng kể và thiết lập thời gian khởi động cho /phân vùng - Tôi không nghĩ rằng bạn có thể thường xuyên nhắc lại /r / o khi đang di chuyển, sẽ có nhiều thứ bị treo mà cần r / w truy cập.

Vì vậy, chạy bản sao có thể sẽ không phá vỡ hệ thống đang chạy, nhưng sẽ không cung cấp cho bạn bản sao lưu khả thi , hoàn thành nhiệm vụ. Tôi đặc biệt khuyên bạn nên tạo bản sao ngoại tuyến - sẽ yêu cầu tắt máy.


1
Cảm ơn vì một câu trả lời tuyệt vời, tôi đã hy vọng có một lối thoát dễ dàng, nhưng bạn đã đúng, tôi không thể tưởng tượng được một kịch bản hay phát sinh từ những gì bạn đã chỉ ra.
stuartc

1
@stuartc: Nó sẽ cần sự hợp tác lớn từ trình điều khiển FS - thông báo cho quá trình sao chép mọi thay đổi đã xảy ra kể từ khi bản sao bắt đầu và liệu nó có đạt đến trạng thái nhất quán hay không. Nếu đây là một vấn đề lớn, hãy xem xét các hệ thống tập tin hỗ trợ chụp nhanh, chẳng hạn như btrfs.
Piskvor

4

Bạn không bao giờ nên tạo một hình ảnh của một phân vùng được gắn kết. Không có vấn đề nếu bạn khởi động từ nó hay không.

Nhưng bạn sẽ có một thời gian khó khăn để cố gắng ngắt kết nối phân vùng mà bạn đã khởi động từ đó.


4

Đối với điều này, tôi sử dụng dump(8)trên FreeBSD. Ví dụdump -auLf /mnt/some-other-disk/root.dmp /

Các -Ltùy chọn cho phép sao chép của một hệ thống tập tin trực tiếp bằng cách lấy một bản chụp.

Các bãi chứa có thể được khôi phục bằng cách sử dụng restore(8).

Nó chỉ có thể hoạt động với UFS; Tôi không chắc chắn về điều đó.


0

Thật đáng ngạc nhiên khi có nhiều mẹo sao lưu không đề cập đến những điều sau đây:

Hệ thống linux (và hầu hết các hệ điều hành đa luồng) thường cần phải hoạt động trong khi bạn đang sao lưu và khôi phục.

Điều này dễ dàng đạt được nhất bằng cách không chạy HĐH trên nó trong khi bạn đang cố gắng hình ảnh nó.

Để sao lưu và khôi phục, nó có thể được gắn kết, và trên thực tế có lẽ phải như vậy, nhưng không phải bởi hệ điều hành đang chạy như là gốc của nó (/).


Lý do: Trong mọi hệ điều hành đa tác vụ, bao gồm linux, có các luồng mã đồng thời chạy ảnh hưởng đến các tệp khiến cho không thể thực hiện sao lưu hoặc khôi phục tập tin toàn hệ thống chính xác.

Đặc biệt, trong khi bạn đang lấy các tệp, có thể có một số tác vụ khác tạo hoặc xóa các tệp sao cho bản sao lưu của bạn sẽ không thể hiện hình ảnh chính xác và chính xác của hệ thống tệp tại bất kỳ thời điểm nào. Nếu bạn cố gắng khôi phục bản sao lưu này, bạn sẽ bị hỏng dữ liệu dẫn đến sự cố và các bất thường khác.


Tùy chọn: Sao lưu cần được thực hiện bằng phần mềm đặc biệt và / hoặc hệ thống đĩa (như Acronis trên Windows, ví dụ có thể sao lưu HĐH đang chạy) hoặc bởi một HĐH thứ cấp bên ngoài truy cập vào các tệp của HĐH không chạy mà bạn đang cố gắng sao lưu hoặc khôi phục.

!!! Vì vậy, khi bạn thấy các trang web yêu cầu bạn sử dụng Deja-dup chẳng hạn để thực hiện sao lưu, điều này chỉ hoạt động /homevà sau đó CHỈ nếu bạn không chạy bất kỳ chương trình nào ảnh hưởng /hometrong khi bạn đang chạy deja-dup. (Và thậm chí sau đó bạn có thể muốn vượt qua các ngón tay của mình trừ khi bạn thực sự biết những gì có thể chạm vào các tệp của mình thông qua một daemon.)


0

Tôi đã làm điều này với thành công trên môi trường thử nghiệm, với fsck và rsync cuối cùng để cải thiện cơ hội sao chép thiết bị tốt.


1
Bạn có thể giải thích cách bạn sử dụng rsyncđể cải thiện kết xuất toàn bộ đĩa (toàn bộ hệ thống tệp)  ddkhông? (Và, nếu bạn có quyền truy cập rsync, tại sao bạn không sử dụng nó làm công cụ sao lưu chính chứ không phải là công cụ phụ, đồng hành?) chỉnh sửa  câu trả lời của bạn để làm cho nó rõ ràng và đầy đủ hơn.
Scott
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.