Làm cách nào để thay thế một đĩa trong nhóm ZFS không dư thừa?


8

Tôi đã đọc một chút và có vẻ như ZFS không giống như các đĩa bị xóa khỏi các mảng không dư thừa :

Bạn có thể sử dụng zpool detachlệnh để tách thiết bị khỏi nhóm lưu trữ được nhân đôi. Ví dụ:

# zpool detach zeepool c2t1d0

Tuy nhiên, thao tác này bị từ chối nếu không có bản sao hợp lệ khác của dữ liệu. Ví dụ:

# zpool detach newpool c1t2d0
cannot detach c1t2d0: only applicable to mirror and replacing vdevs

Vấn đề cơ bản có thể hiểu được: loại bỏ bản sao duy nhất của một phần dữ liệu (cho dù siêu dữ liệu hoặc dữ liệu tải trọng) khỏi một mảng sẽ khiến dữ liệu đó không có sẵn.

Các ví dụ để thay thế thiết bị trong nhóm lưu trữ ZFS cung cấp mô tả từng bước cơ bản về cách thay thế thiết bị trong nhóm lưu trữ: ngoại tuyến đĩa, xóa đĩa, chèn đĩa thay thế, chạy zpool replaceđể thông báo cho ZFS về thay đổi và trực tuyến đĩa. Điều này rõ ràng đòi hỏi rằng mảng không phụ thuộc vào đĩa được thay thế, do đó mảng phải có dự phòng; nếu nó phụ thuộc vào ổ đĩa trong câu hỏi, phương pháp này trình bày vấn đề tương tự như trên.

Cách thay thế đĩa được đề xuất trong mảng ZFS không dự phòng là gì?

Giả sử rằng đĩa hiện có đang hoạt động đúng và giả sử rằng đĩa thay thế ít nhất có cùng kích thước với đĩa được thay thế. (Nếu đĩa hiện tại bị lỗi, rõ ràng tất cả những gì có thể làm là thêm một đĩa mới và khôi phục tất cả các tệp bị ảnh hưởng bởi lỗi đĩa từ bản sao lưu.)

Câu trả lời:


3

Không biết liệu mọi thứ có khác nhau trong `13 nhưng 'zfs thay thế' hoạt động trên các nhóm không dư thừa. Bạn chỉ cần chạy lệnh 1 thay vì tách ra trước.

d1 là 1G, d2 là 2G, cả hai đều là các tệp trống trong / tmp:

/t/test #> zpool create test /tmp/test/d1
/t/test #> zpool set autoexpand=on test
/t/test #> zpool status
  pool: test
 state: ONLINE
  scan: none requested
config:

    NAME            STATE     READ WRITE CKSUM
    test            ONLINE       0     0     0
      /tmp/test/d1  ONLINE       0     0     0

errors: No known data errors
/t/test #> zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
test   1008M   258K  1008M         -     0%     0%  1.00x  ONLINE  -


/t/test #> zpool replace test /tmp/test/d1 /tmp/test/d2


/t/test #> zpool status
  pool: test
 state: ONLINE
  scan: resilvered 61K in 0h0m with 0 errors on Sun Sep 18 18:55:32 2016
config:

    NAME            STATE     READ WRITE CKSUM
    test            ONLINE       0     0     0
      /tmp/test/d2  ONLINE       0     0     0

errors: No known data errors
/t/test #> zpool list
NAME    SIZE  ALLOC   FREE  EXPANDSZ   FRAG    CAP  DEDUP  HEALTH  ALTROOT
test   1.98G   408K  1.98G         -     0%     0%  1.00x  ONLINE  -

12
zpool attach pool old-disk new-disk

Điều đó sẽ chuyển đổi đĩa cũ thành một bản sao có cả đĩa cũ và đĩa mới và bắt đầu phục hồi sau đó bạn có thể tách đĩa cũ.

zpool detach pool old-disk

Đã thử nghiệm với các thiết bị vòng lặp:

# truncate -s 1G a b
# truncate -s 1200M c
# losetup  /dev/loop0 a
# losetup  /dev/loop1 b
# losetup  /dev/loop2 c
# zpool create test loop{0,1}
# zpool attach test loop1 loop2
# zpool status
      pool: test
 state: ONLINE
  scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:

        NAME        STATE     READ WRITE CKSUM
        test        ONLINE       0     0     0
          loop0     ONLINE       0     0     0
          mirror-1  ONLINE       0     0     0
            loop1   ONLINE       0     0     0
            loop2   ONLINE       0     0     0
# zpool detach test loop1
# zpool status
  pool: test
 state: ONLINE
  scan: resilvered 62K in 0h0m with 0 errors on Wed Jul 31 13:43:19 2013
config:

        NAME        STATE     READ WRITE CKSUM
        test        ONLINE       0     0     0
          loop0     ONLINE       0     0     0
          loop2     ONLINE       0     0     0

Vì vậy, bạn đang nói rằng ZFS không hỗ trợ hoạt động như vậy nguyên bản? Có vẻ kỳ lạ. (Dường như tất cả những gì cần thiết là có cả hai ổ đĩa được kết nối và sau đó thông báo cho ZFS rằng ổ đĩa cũ sắp bị ngoại tuyến, do đó tạo cơ hội để di chuyển dữ liệu trên nó sang các ổ đĩa khác giống như sẽ được thực hiện nếu đó là một khả năng phục hồi trong một mảng dư thừa.)
CVn

@ MichaelKjorling, tôi không nói như vậy. Tôi chỉ nói ở trên nên hoạt động vì tôi không thể thấy bất kỳ lý do tại sao nó không nên.
Stéphane Chazelas

Phải nói rằng, có vẻ như ZFS hỗ trợ nó thực sự. Trả lời cập nhật.
Stéphane Chazelas

Tuyệt quá! Đây là loại câu trả lời tôi đang tìm kiếm và hy vọng nhận được. Sẽ cho bạn +1 khác để dùng thử nếu tôi có thể.
một CVn
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.