Khôi phục mảng Amazon EBS RAID0 từ ảnh chụp nhanh được chụp bằng ảnh chụp nhanh nhất quán ec2


8

Tôi đã cấu hình máy chủ MySQL mới trên Amazon EC2 và quyết định lưu trữ dữ liệu của tôi trên Mảng RAID0 EBS. Cho đến nay rất tốt và tôi đã thử nghiệm chụp ảnh nhanh các thiết bị đó với ảnh chụp nhanh nhất quán ec2, tuyệt vời.

Bây giờ, làm thế nào để bạn xây dựng lại mảng trên một cá thể mới, từ những ảnh chụp nhanh này, một cách nhanh chóng?

Khi bạn sử dụng ảnh chụp nhanh nhất quán ec2 để tạo ảnh chụp nhanh nhiều ổ, bạn không có cách nào để biết âm lượng nào được sử dụng cho mỗi thiết bị trong RAID. Tôi có thể hoàn toàn sai, nhưng vì bạn đang tách dữ liệu trên các ổ đĩa, nên sẽ có lý do là bạn phải đặt từng ổ MỚI ở cùng một vị trí trên RAID với âm lượng mà ảnh chụp nhanh được tạo.

Một ví dụ:

  • Dung lượng 3x200gb trong cấu hình RAID0.
  • vol-1 là / dev / sdh thiết bị 0 trong RAID
  • vol-2 là / dev / sdh1 thiết bị 1 trong RAID
  • vol-3 là / dev / sdh2 thiết bị 2 trong RAID

bạn tạo ảnh chụp nhanh ec2 bằng : ec2-consistent-snapshot <options> vol-1 vol-2 vol-3.

Bây giờ bạn có 3 ảnh chụp nhanh và cách duy nhất để theo dõi lại thiết bị nào là xem id âm lượng nguồn, sau đó xem id của âm lượng nguồn được gắn như trên ví dụ, sau đó kiểm tra chi tiết của RAID cấu hình trên thể hiện của nguồn khối.

Điều này rõ ràng là cực kỳ thủ công ... và không nhanh chóng (điều này rõ ràng khiến bạn khó có thể nhanh chóng đưa ra một cá thể mysql mới nếu một cái khác không thành công. Không đề cập đến, bạn phải ghi lại các vị trí thiết bị trên RAID vào thời điểm đó của ảnh chụp nhanh, vì nếu trường hợp khối lượng nguồn gặp sự cố, bạn không có cách nào để truy cập cấu hình RAID).

Vì vậy, trong kết luận:

  • Tôi có thiếu điều gì với cách chụp nhanh ec2-ổn định và mảng RAID0 phần mềm không?
  • Nếu không, có bất kỳ giải pháp / thực tiễn tốt nhất nào được biết xung quanh vấn đề không biết thiết bị / vị trí nào trong mảng RAID mà một ảnh chụp nhanh thuộc về?

Tôi hy vọng điều này là rõ ràng, và cảm ơn sự giúp đỡ của bạn!

Câu trả lời:


5

do bạn đang phân tách dữ liệu trên các ổ đĩa, nên sẽ có lý do là bạn phải đặt từng ổ MỚI ở cùng một vị trí trên RAID với âm lượng mà ảnh chụp nhanh được tạo.

Tôi đã kiểm tra tiền đề của bạn, và logic như có vẻ, sự quan sát là khác.

Hãy để tôi chi tiết điều này:
Tôi có yêu cầu chính xác như bạn làm. Tuy nhiên, RAID0 mà tôi đang sử dụng chỉ có 2 tập.

Tôi đang sử dụng Ubuntu 10 và có 2 thiết bị EBS tạo thành thiết bị RAID0 được định dạng bằng XFS.

Thiết bị raid0 được tạo bằng lệnh sau:
sudo mdadm --create /dev/md0 --level 0 --metadata=1.1 --raid-devices 2 /dev/sdg /dev/sdh

Tôi đã cài đặt MYSQL và một loạt các phần mềm khác được định cấu hình để sử dụng / dev / md0 để lưu trữ tệp dữ liệu của họ.

Sử dụng cùng một âm lượng : Sau khi hoàn thành, tôi bỏ qua tất cả mọi thứ, dừng Raid và lắp ráp lại như vậy: sudo mdadm --assemble /dev/md0 /dev/sdh /dev/sdg Điều này không liên quan đến thứ tự /dev/sdg /dev/sgh, RAID tự phục hồi chính xác.

Sử dụng ảnh chụp nhanh : Đăng bài này, tôi sử dụng ec2-consistent-snapshotđể tạo ảnh chụp nhanh của 2 đĩa EBS với nhau. Sau đó, tôi tạo các ổ đĩa từ đĩa này, gắn nó vào một phiên bản mới (đã được cấu hình cho phần mềm này), lắp lại RAID (Tôi cũng đã thử thay đổi thứ tự của các ổ EBS), gắn nó và tôi đã sẵn sàng đi.

Nghe có vẻ lạ, nhưng nó hoạt động.


Vì vậy, về cơ bản, khi bạn xây dựng lại mảng, việc bạn xây dựng nó theo thứ tự nào không thành vấn đề. Tôi đoán điều này là do dữ liệu siêu khối được ghi vào các đĩa, vì vậy bộ điều khiển RAID biết cách đặt nó trở lại với nhau. Cái này thật tuyệt! Cảm ơn câu trả lời của bạn, nó chính xác là những gì tôi cần!
Jim Rubenstein

4

Tôi chạy một cấu hình tương tự ( RAID0 trên 4 khối EBS ) và do đó có cùng mối quan tâm để khôi phục mảng RAID từ các ảnh chụp nhanh được tạo bằng ảnh chụp nhanh nhất quán ec2 .

May mắn thay, mỗi thiết bị trong một mảng đột kích chứa siêu dữ liệu (trong một siêu khối) ghi lại vị trí của nó trong mảng, UUID của mảng và mức độ của mảng (ví dụ RAID0). Để truy vấn siêu khối này trên bất kỳ thiết bị nào, hãy chạy lệnh sau (dòng khớp '^ this' mô tả thiết bị được truy vấn):

$ sudo mdadm --examine /dev/sdb1
/dev/sdb1:
          Magic : a92b4efc
        Version : 00.90.00
           UUID : 2ca96b4a:9a1f1fbd:2f3c176d:b2b9da7c
  Creation Time : Mon Mar 28 23:31:41 2011
     Raid Level : raid0
  Used Dev Size : 0
   Raid Devices : 4
  Total Devices : 4
Preferred Minor : 0

    Update Time : Mon Mar 28 23:31:41 2011
          State : active
 Active Devices : 4
Working Devices : 4
 Failed Devices : 0
  Spare Devices : 0
       Checksum : ed10058a - correct
         Events : 1

     Chunk Size : 256K

      Number   Major   Minor   RaidDevice State
this     0     202       17        0      active sync   /dev/sdb1

   0     0     202       17        0      active sync   /dev/sdb1
   1     1     202       18        1      active sync   /dev/sdb2
   2     2     202       19        2      active sync   /dev/sdb3
   3     3     202       20        3      active sync   /dev/sdb4

Nếu bạn thực hiện cùng một truy vấn trên một thiết bị không phải là một phần của mảng, bạn có được:

$ sudo mdadm --examine /dev/sda1
mdadm: No md superblock detected on /dev/sda1.

Điều đó chứng tỏ rằng lệnh này thực sự dựa vào thông tin được lưu trữ trên chính thiết bị chứ không phải một số tệp cấu hình.

Người ta cũng có thể kiểm tra các thiết bị của một mảng RAID bắt đầu từ thiết bị RAID, lấy thông tin tương tự:

$ sudo mdadm --detail /dev/md0

Tôi sử dụng phần sau cùng với ec2-description-volume để xây dựng danh sách các tập cho ec2-nhất-snaptshot ( -n--debug cho phép kiểm tra lệnh này mà không cần tạo ảnh chụp nhanh). Lệnh sau giả định rằng thư mục / mysql là điểm gắn kết cho âm lượng và vùng AWS là us-west-1 :

$ sudo -E ec2-consistent-snapshot --region us-west-1 --mysql --freeze-filesystem /mysql --mysql-master-status-file /mysql/master-info --description "$(date +'%Y/%m/%d %H:%M:%S') - ASR2 RAID0 (4 volumes) Snapshot" --debug -n $(ec2-describe-volumes --region us-west-1 | grep $(wget http://169.254.169.254/latest/meta-data/instance-id -O - -q) | egrep $(sudo mdadm --detail $(awk '{if($2=="/mysql") print $1}' /etc/fstab) | awk '/ \/dev\//{printf "%s ", $7}' | sed -e 's# /#|/#g') | awk '{printf "%s ", $2}')

0

Tôi biết điều này không trả lời câu hỏi của bạn, nhưng tôi đang làm điều gì đó tương tự nhưng với công cụ chụp nhanh ec2-created-snapshot cơ bản của Amazon và tập lệnh cron. Nó không nhanh như ảnh chụp nhanh nhất quán ec2, nhưng tôi có được quyền kiểm soát bổ sung mà tôi cần: fsync, khóa ghi và quan trọng nhất là đặt tên cho các ảnh chụp nhanh một cách phù hợp để chúng có thể được hoàn nguyên theo đúng thứ tự.


Tôi thực sự đang sử dụng XFS, vì vậy tôi đóng băng hệ thống tập tin trong khi tôi chụp nhanh. Kết hợp với FLUSH và LOCK trong MySQL (ảnh chụp nhanh nhất quán ec2 thực hiện tất cả điều này), tôi nên có một ảnh chụp nhanh nhất quán mỗi lần. Vấn đề là việc đặt tên, mà tôi vừa phát triển một giải pháp tạm thời, bằng cách sửa đổi tập lệnh perl ec2-nhất-snapshot, ngay bây giờ.
Jim Rubenstein
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.