Làm cách nào để sao chép tốt nhất một hệ thống đang chạy sang ổ cứng mới bằng rsync?


22

Tôi có một hệ thống đang chạy như một máy chủ bị lỗi ổ cứng. Mặc dù tất cả dữ liệu quan trọng nằm trên RAID và được sao lưu và tất cả những thứ đó, tôi không có hình ảnh của chính hệ thống. Tất nhiên là không có nhu cầu cụ thể vì tôi có thể thực hiện cài đặt, nhưng tôi vẫn muốn thử làm một bản sao nóng trước khi đi xuống đường dẫn khôi phục. Tôi biết có một số nhược điểm của điều này như là một quá trình, nhưng ở đó tôi không nghĩ rằng có nhiều nhược điểm để thử nó như là một khu nghỉ mát đầu tiên.

  • HĐH: Ubuntu 12.04.4 LTS
  • Không đầu
  • Tôi không hy vọng cài đặt quá nhiều phần mềm mới vì đĩa đã bị lỗi :)
  • Hệ thống đang chạy. Tôi sợ dừng nó làm tăng cơ hội đĩa không sao lưu. Điều này có nghĩa là dd có thể được ra ngoài?
  • Đĩa mới không có cùng kích thước (lớn gấp đôi) so với đĩa cũ làm phức tạp thêm vấn đề dd.

Ý tưởng của tôi là

  • cắm ổ đĩa mới trong hệ thống
  • tạo một hệ thống tập tin
  • gắn kết nó trong / mnt / somedir
  • rsync các tập tin
  • một số ma thuật fstab
  • một số phép thuật khởi động

Những câu hỏi tôi vẫn có là:

Điều gì sẽ là một lệnh rsync tốt? Tôi đã lên kế hoạch:

rsync -aAXx  / /mnt/somedir/ 
   --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found}

(Tôi đang bỏ qua một số thư mục khác, ví dụ như cuộc đột kích được gắn kết của tôi, v.v.)

Trường hợp các tùy chọn là:

-a, --archive               archive mode; equals -rlptgoD (no -H,-A,-X)
-A, --acls                  preserve ACLs (implies -p)
-X, --xattrs                preserve extended attributes
-x, --one-file-system       don't cross filesystem boundaries

Tôi đặc biệt bỏ qua -H, -v và - tiến tới để tăng tốc quá trình.
Điều đó có hiệu quả với Ubuntu không? Tôi không chắc nếu Ubuntu sử dụng bất kỳ liên kết cứng nào, nhưng tôi không nghĩ rằng tôi cần tùy chọn này, phải không?

Sau lần chạy này, tôi có thể khởi động lại (có thể bằng ổ USB trực tiếp) và chạy lại rsync nếu đĩa cũ vẫn khởi động. Điều này sẽ khắc phục mọi tệp không thể đọc / thay đổi vì tôi cho rằng hệ thống đang chạy.


Làm thế nào để sửa lỗi khởi động?
Sau đó, kế hoạch của tôi sẽ là thay đổi UUID /trong fstab của tôi (vẫn phải google cách tìm uuid) và thực hiện một số phép thuật để hệ thống thực sự khởi động từ đĩa mới

Tôi đã quên một cái gì đó hoặc tôi đã lên kế hoạch một cái gì đó đặc biệt ngu ngốc?

Câu trả lời:


16

Bạn có thể lấy UUID cho tất cả các thiết bị khối bằng blkidlệnh. (Bạn muốn một người chỉ nói UUID, không phải PHẦN MỀM)

Các tùy chọn rsync tôi sử dụng là -avhPHAXx.

Tôi không nghĩ -v hoặc - tiến hành sẽ tăng tốc bất cứ điều gì trừ khi bạn đang ở trên bàn điều khiển rất chậm / tty.

Sử dụng -x giúp loại bỏ sự cần thiết của tất cả các loại trừ của bạn giả sử rằng tất cả chúng đều nằm trên các hệ thống tệp khác nhau (trên hệ thống của tôi, tất cả ngoại trừ mất + tìm thấy đều được).

Chương trình duy nhất được sử dụng thường xuyên mà tôi biết là sử dụng các liên kết cứng (ít nhất là trên hệ thống của tôi) git, vì vậy đó là lý do tại sao tôi thêm tùy chọn -H. Vấn đề duy nhất tôi nghĩ bạn sẽ gặp phải khi không sử dụng -H là nó sẽ chiếm thêm một ít không gian.

Đối với bộ tải khởi động, nếu bạn đang sử dụng GRUB2 với MBR, thì lệnh tôi sử dụng là grub-install /dev/sda(thay thế sda bằng ổ đĩa chính xác cho bạn). Điều đó sẽ làm cho ổ đĩa mới có khả năng khởi động. Nếu bạn đang sử dụng bộ tải khởi động hoặc UEFI khác, thì tôi sẽ kiểm tra google để biết cách khởi động ổ đĩa mới đúng cách. Chỉ cần nhớ rằng / boot trên ổ đĩa mới sẽ cần nằm trên cùng một phân vùng như hiện tại (giả sử bạn không sử dụng UUID cho / boot cũng được), nếu không bạn sẽ cần sửa đổi fstab cho phù hợp.


Tôi không tin rằng tôi có chúng trên các hệ thống riêng biệt Tôi sợ, vì vậy loại trừ có vẻ thận trọng. Tôi đang đọc những thứ hỗn hợp về tốc độ của - v, vì vậy tôi không biết phải làm gì ở đó;). Git là một điểm tốt, tôi chắc chắn / nhà có một số điều đó!
Nanne

1
Chà, / Proc, / sys và rất có thể / dev chắc chắn là các hệ thống tập tin / mountpoint khác nhau từ /, vì vậy hoàn toàn không có lý do gì để loại trừ những cái đó khi bạn có -x. Nếu bạn không chắc phần nào trong hệ thống tập tin gốc của mình hay không, chỉ cần chạy mountđể kiểm tra. Bất cứ điều gì trong đó sẽ không cần phải được loại trừ bằng tay.
bparker

Tôi không chắc chắn làm thế nào và tại sao, nhưng loại trừ đã sai. Họ thực sự đang trong thời gian khô hạn tôi đã làm, không biết tại sao. (tốt, tôi đã sao chép định dạng từ một địa điểm bán ngẫu nhiên, vì vậy đó có thể là lý do?). Dù sao, với -x chắc chắn theo lời khuyên của bạn, tôi không lo lắng quá nhiều, chỉ có một điều nữa xảy ra là một số thứ không quan trọng (ví dụ như các bản sao lưu dự phòng cũ) cũng đã được 'lưu'.
Nanne

Điều này đã cứu tôi một $$. Tôi đã sao chép hệ thống 12GB + trên Linode sang nút hoàn toàn mới. Sau hơn 5 năm sau, điều này vẫn hoạt động. Cảm ơn các bạn!
Geeth

Vì vậy, khi phân vùng hệ thống tập tin nhân bản đã sẵn sàng để chấp nhận bản sao, phân vùng gốc của tôi có đặt cờ khởi động trong khi tôi giữ chúng không đồng bộ hay tôi đặt nó ngay trước khi đưa ổ đĩa nhân bản vào sản xuất. Nếu không, tôi sẽ cho rằng ổ đĩa nhân bản là khả năng khởi động mà không thực sự muốn. Trong tình huống của tôi, ổ đĩa nhân bản của tôi là một đĩa trên một máy chủ riêng biệt. Và Rupync được sử dụng để giữ cho nó phù hợp với prod.
New Zealand

11

Tôi chỉ làm điều này thành công (sau một vài trys).

Tôi đã sử dụng

sudo rsync -ahPHAXx --delete --exclude={/dev/*,/proc/*,/sys/*,/tmp/*,/run/*,/mnt/*,/media/*,/lost+found} / /mnt

Sau đó, tôi đặt lại /mnt/etc/fstabtệp của mình cho phân vùng khởi động không gian trao đổi của tôi.

Sau đó, tôi cần thiết lập lại GRUB

for i in /dev /dev/pts /proc /sys /run; do sudo mount -B $i /mnt$i; done
sudo chroot /mnt
sudo grub-install --recheck /dev/sdX
sudo update-grub

Lưu ý rằng điều này chỉ dành cho các đĩa được định dạng MBR.
Teque5

2

Đừng cố sửa lỗi khởi động với ổ đĩa này; đề nghị của tôi:

  1. Cắm một ổ đĩa trên một máy khác thay vì mạo hiểm với một hotswap trên máy bị lỗi.
  2. rsync các tập tin phi hệ thống của bạn trên đĩa mới.
  3. Trên một đĩa cứng riêng biệt, tạo một khởi động, một root tối thiểu và trao đổi. Cài đặt cùng một hệ điều hành mà bạn muốn sao chép từ đĩa cứng ốm yếu.
  4. Khởi động từ đĩa mới này (lý tưởng trên một máy riêng biệt, nếu bạn không thể gặp rủi ro thời gian chết trên máy chủ đích, nếu không bạn có thể khởi động máy chủ đích bằng đĩa này).
  5. Thêm đĩa từ bước # 2 vào hệ thống mới này, với các điểm gắn chính xác. Bây giờ bạn có một bản sao của ổ đĩa hệ thống. Bạn có thể (tùy chọn) sao chép các phân vùng sang đĩa mới này, nhưng khuyến nghị của tôi là giữ đĩa như một yêu cầu tối thiểu để khởi động HĐH của bạn. Như bạn đã nhận ra, có quá nhiều thứ trên phân vùng chính khiến việc phục hồi trở nên khó khăn. Hãy chắc chắn rằng bạn sao chép chính xác cấu hình mạng vì máy chủ của bạn không đầu.
  6. Chỉ cần thay thế ổ đĩa trên hệ thống ốm yếu bằng cặp đĩa mới này (nếu bạn chọn không khởi động mục tiêu ban đầu ở bước # 4).
  7. Khởi động lại.

Tôi có thể gặp rủi ro thời gian chết, đó là một máy chủ không thiết yếu. Tôi đã định dùng hotswap (hot-add về cơ bản) vì bản sao đó sẽ nhanh hơn nhiều. Tôi nghĩ không nên có quá nhiều rủi ro, vì chúng ta đang nói về SATA (ít nhất là II). Ngoài ra, lý do để đề xuất một đĩa khởi động thêm là gì? Điều đó có làm phức tạp vấn đề đối với một số phần mềm đã cài đặt sẵn, homedirs không? Nghe có vẻ như nhiều công việc hơn mà tôi đang cố gắng tránh: D
Nanne

Đó là những gì tôi sử dụng trong sản xuất; Tôi gắn kết / home, / etc, / var, / usr và / opt trên các đĩa ngoài (thực tế là trên LVM) và / và / boot trên một đĩa riêng. Bằng cách này, tôi không phải lo lắng khi đĩa chính bị hỏng Tôi chỉ trao đổi nó mà không ảnh hưởng đến các dịch vụ của mình :) Đó là một chút công việc ban đầu nhưng giúp bạn tiết kiệm trong thời gian dài. Đặc biệt là khi bạn hết dung lượng trên một phân vùng và cần thêm vào một âm lượng mà không có thời gian chết.
Burhan Khalid

Trong khi bạn đưa ra một quan điểm tốt, đó không phải là một yêu cầu tôi hiện đang có, cũng không cần :). Có một số đĩa khác trong hệ thống (khoảng 7) và tôi phải vẽ đường thẳng ở đâu đó; D. Vì vậy, hệ điều hành không cần phải chia tách tại thời điểm này. Ý tôi là: Tôi đồng ý hệ thống này tốt, chỉ là thứ tôi không tìm kiếm bây giờ; D. Vì vậy, nếu tôi để tất cả trên 1 đĩa, việc tôi sao chép bên ngoài sẽ khiến nó chậm đi nghiêm trọng phải không?
Nanne

Phụ thuộc vào giao diện của bạn với bên ngoài, qua ethernet, nó phải nhanh, qua USB 2 nhanh hơn, trên USB 3 thậm chí nhanh hơn. Nó sẽ không làm cho nó rất chậm - tất nhiên không sao chép các thư mục đang được ghi vào (như nói, / tmp, dù sao bạn không cần) hoặc bất cứ nơi nào đường ống được ghi vào.
Burhan Khalid

0

Tôi đã dành nhiều thời gian cho bản phân phối Centos Freepbx để rsync và có một đĩa mới có khả năng khởi động và cuối cùng sau khi sửa lỗi fstab và grub UUID, nó không hoạt động.

Bước cuối cùng để làm cho nó hoạt động là

dd if=/dev/sda of=/tmp/mbrsda.bak bs=512 count=1
dd if=/tmp/mbrsda.bak of=/dev/sdb bs=446 count=1
grub

Khi bạn ở trong Grub CLI (tức là tại grub>dấu nhắc):

device (hd0) /dev/sda
device (hd1) /dev/sdb
root (hd0,0) 
setup (hd0) 
root (hd1,0)
setup (hd1)
quit

Nhấn entervà bây giờ bạn có thể tắt máy, xóa đĩa cũ và khởi động với cái mới.

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.