Thursday, November 21, 2024

Quản trị OpenStack Swift

-

1. Tổng quan.

Lệnh swift-ring-builder được sử dụng trong OpenStack Swift, một hệ thống object storage phân tán, để tạo và quản lý các “ring”. Một “ring” trong Swift là một cấu trúc dữ liệu được sử dụng để ánh xạ các object storage đến các vị trí vật lý trên các ổ đĩa.

2. Các lệnh thường dùng trong quá trình vận hành Swift.

Rebalance Ring swift ring builder rebalance.

Lệnh swift-ring-builder <builder-file> rebalance trong OpenStack Swift được sử dụng để commit hoặc áp dụng tất cả các thay đổi bạn đã thực hiện trên ring.

Khi bạn thêm hoặc xóa các thiết bị từ ring bằng lệnh swift-ring-builder <builder-file> add hoặc swift-ring-builder <builder-file> remove, các thay đổi này chỉ được đánh dấu trong file builder và chưa được áp dụng thực sự. Điều này cho phép bạn thực hiện nhiều thay đổi mà không ảnh hưởng đến hoạt động của cụm Swift.

Khi bạn chạy lệnh swift-ring-builder <builder-file> rebalance, Swift sẽ tính toán lại cấu trúc của ring dựa trên các thay đổi bạn đã thực hiện. Nó sẽ phân phối lại các phân vùng giữa các thiết bị mới và cũ để đảm bảo rằng dữ liệu được lưu trữ một cách cân đối. Kết quả của quá trình này là một file ring mới, mà bạn có thể phân phối cho tất cả các node trong cụm Swift của bạn.

Vì vậy, lệnh swift-ring-builder <builder-file> rebalance là bước cuối cùng bạn cần thực hiện sau khi thêm hoặc xóa các thiết bị từ ring.

Ví dụ, nếu bạn muốn cân bằng lại ring object storage, bạn sẽ chạy một trong các lệnh dưới, tùy vào bạn đã thay đổi thành phần nào:

swift-ring-builder account.builder rebalance
swift-ring-builder container.builder rebalance
swift-ring-builder object.builder rebalance

Khi bạn chạy lệnh swift-ring-builder <ring file> rebalance để cân bằng lại ring, Tuy nhiên, sau khi bạn cân bằng lại ring, bạn cần phải phân phối ring mới đến tất cả các node trong cụm và khởi động lại các dịch vụ Swift. Quá trình này có thể gây ra một số gián đoạn tạm thời, tùy thuộc vào cách bạn thực hiện nó.

Khởi động Ring swift init proxy start.

Lệnh swift-init proxy start được sử dụng để khởi động dịch vụ proxy của OpenStack Swift.

swift-init proxy start

Bạn sẽ cần chạy lệnh này trong các trường hợp sau:

  • Khi bạn khởi tạo cụm Swift lần đầu tiên sau khi cài đặt.
  • Khi bạn khởi động lại cụm Swift sau khi nó đã bị tắt.
  • Khi bạn thay đổi cấu hình của dịch vụ proxy và cần khởi động lại nó để áp dụng các thay đổi.
  • Khi dịch vụ proxy bị dừng vì một lý do nào đó và bạn cần khởi động lại nó.

Lệnh swift-init proxy start chỉ ảnh hưởng đến node mà nó được chạy trên đó. Nó sẽ khởi động dịch vụ proxy trên node cụ thể đó.

Tuy nhiên, dịch vụ proxy là một phần quan trọng của cụm Swift, vì vậy việc khởi động hoặc dừng dịch vụ proxy có thể ảnh hưởng đến hoạt động của cụm. Ví dụ, nếu dịch vụ proxy bị dừng trên tất cả các node, người dùng sẽ không thể truy cập vào dữ liệu trên cụm.

Tạo Ring với lệnh swift ring builder create.

swift-ring-builder account.builder create 11 2 24
swift-ring-builder container.builder create 11 2 24
swift-ring-builder object.builder create 11 2 24

Xác nhận lại cấu hình ring với swift ring builder.

swift-ring-builder account.builder
swift-ring-builder container.builder
swift-ring-builder object.builder

Ví dụ.

shell> cd /etc/swift/
shell> swift-ring-builder object.builder
object.builder, build version 10, id 955ae7be4f5c4989b0813d17464c27d7
1024 partitions, 3.000000 replicas, 1 regions, 1 zones, 9 devices, 0.20 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1 (0:00:00 remaining)
The overload factor is 0.00% (0.000000)
Ring file object.ring.gz is up-to-date
Devices:   id region zone  ip address:port replication ip:port  name weight partitions balance flags meta
            0      1    1 10.237.7.84:6200    10.237.7.84:6200   sdd 100.00        342    0.20
            1      1    1 10.237.7.84:6200    10.237.7.84:6200   sde 100.00        341   -0.10
            2      1    1 10.237.7.84:6200    10.237.7.84:6200   sdf 100.00        341   -0.10
            3      1    1 10.237.7.85:6200    10.237.7.85:6200   sdd 100.00        342    0.20
            4      1    1 10.237.7.85:6200    10.237.7.85:6200   sde 100.00        341   -0.10
            5      1    1 10.237.7.85:6200    10.237.7.85:6200   sdf 100.00        341   -0.10
            6      1    1 10.237.7.86:6200    10.237.7.86:6200   sdd 100.00        342    0.20
            7      1    1 10.237.7.86:6200    10.237.7.86:6200   sde 100.00        341   -0.10
            8      1    1 10.237.7.86:6200    10.237.7.86:6200   sdf 100.00        341   -0.10

Thêm một ổ đĩa mới vào ring.

Các lệnh dưới được sử dụng để thêm các ổ đĩa vào ring trong OpenStack Swift.

Mỗi lệnh thêm một ổ đĩa vào một ring khác nhau: account, container và object.

swift-ring-builder account.builder add z1-10.76.0.42:6002/sdd 55
swift-ring-builder container.builder add z1-10.76.0.42:6001/sdd 55
swift-ring-builder object.builder add z1-10.76.0.42:6000/sdd 55

Ví dụ swift-ring-builder account.builder add z1-10.76.0.42:6002/sdd 55 dùng để thêm ổ đĩa sdd trên node 10.76.0.42 vào account ring. z1 là khu vực, 6002 là cổng mà dịch vụ account server đang lắng nghe và 55 là trọng số của ổ đĩa.

Trọng số của ổ đĩa xác định khả năng lưu trữ của nó so với các ổ đĩa khác trong ring. Trong trường hợp này, tất cả các ổ đĩa đều có trọng số là 55, có nghĩa là chúng đều có khả năng lưu trữ như nhau.

Nếu bạn muốn chỉ định vùng cho một ổ đĩa, bạn nên sử dụng cú pháp sau:

swift-ring-builder account.builder add r1z1-10.76.0.42:6002/sdd 55

Trong đó, r1z1 chỉ định rằng ổ đĩa này nằm trong vùng 1, zone 1.

Các lệnh để start các dịch vụ.

Các lệnh swift-init liệt kê dưới đây được sử dụng để khởi động các dịch vụ cụ thể của OpenStack Swift.

swift-init object-server start
swift-init object-replicator start
swift-init object-updater start
swift-init object-auditor start
swift-init container-server start
swift-init container-replicator start
swift-init container-updater start
swift-init container-auditor start
swift-init account-server start
swift-init account-replicator start
swift-init account-auditor start

Dưới đây là mô tả về mỗi dịch vụ:

  • object-server: Dịch vụ này xử lý các yêu cầu HTTP đến các object storage. Nó được khởi động trên mỗi node object storage trong cụm Swift.
  • object-replicator: Dịch vụ này đảm bảo rằng các bản sao của mỗi object storage đúng cách trên cụm. Nó được khởi động trên mỗi node object storage.
  • object-updater: Dịch vụ này cập nhật các container để phản ánh việc thêm hoặc xóa các object. Nó được khởi động trên mỗi node object storage.
  • object-auditor: Dịch vụ này kiểm tra tính toàn vẹn của các object storage. Nó được khởi động trên mỗi node object storage.
  • container-server: Dịch vụ này xử lý các yêu cầu HTTP đến các container. Nó được khởi động trên mỗi node lưu trữ container trong cụm Swift.
  • container-replicatorcontainer-updatercontainer-auditor: Các dịch vụ này tương tự như các dịch vụ tương ứng của object-*, nhưng hoạt động trên các container thay vì các object.
  • account-server: Dịch vụ này xử lý các yêu cầu HTTP đến các tài khoản. Nó được khởi động trên mỗi node lưu trữ tài khoản trong cụm Swift.
  • account-replicatoraccount-auditor: Các dịch vụ này tương tự như các dịch vụ tương ứng của object-* và container-*, nhưng hoạt động trên các tài khoản thay vì các object hoặc container.

Tương tự song song với start sẽ có lệnh restart.

swift-init object-server restart
swift-init object-replicator restart
swift-init object-updater restart
swift-init object-auditor restart
swift-init container-server restart
swift-init container-replicator restart
swift-init container-updater restart
swift-init container-auditor restart
swift-init account-server restart
swift-init account-replicator restart
swift-init account-auditor restart

Bạn sẽ cần khởi động các dịch vụ này khi bạn khởi động hoặc khởi động lại cụm Swift của mình, hoặc khi bạn thêm node mới vào cụm.

Thêm Storage Node.

Các lệnh sau sẽ giúp chúng ta có một quy trình thêm một Storage Node mới vào hệ thống object storage OpenStack Swift và cân bằng lại ring.

Sử dụng vòng lặp shell script chạy lệnh wipefs -a trên một dãy các ổ đĩa từ /dev/sda đến /dev/sdv. Lệnh wipefs -a sẽ xóa tất cả các hệ thống filesystem và bảng phân vùng từ ổ đĩa, chuẩn bị nó để được sử dụng trong Swift.

for x in {a..v}
do 
	wipefs -a /dev/sd${x}
done

Tiếp theo chúng ta thêm một ổ đĩa vào object ring. Ví dụ như dưới, mình có ổ đĩa này nằm trên node có địa chỉ IP 10.10.25.19, lắng nghe trên cổng 6200 và có tên thiết bị là 1I.1.6. Trọng số của ổ đĩa là 3700, xác định khả năng lưu trữ của nó so với các ổ đĩa khác trong ring.

mkdevice /dev/sdb 1I.1.6

Ví dụ dưới chúng ta thêm một ổ đĩa vào object ring. Ổ đĩa này nằm trên node có địa chỉ IP 10.10.25.19, lắng nghe trên cổng 6200 và có tên thiết bị là 1I.1.6. Trọng số của ổ đĩa là 3700, xác định khả năng lưu trữ của nó so với các ổ đĩa khác trong ring.

swift-ring-builder object.builder add --region 1 --zone 19 --ip 10.10.25.19 --port 6200 --device 1I.1.6 --weight 3700

Sau khi thêm các ổ đĩa mới, lệnh này được sử dụng để cân bằng lại ring. Điều này đảm bảo rằng dữ liệu được phân phối đều giữa tất cả các ổ đĩa trong ring.

swift-ring-builder object.builder rebalance 

Đây là quy trình thêm một Storage Node mới vào hệ thống Swift. Bạn chuẩn bị ổ đĩa, thêm chúng vào ring và sau đó cân bằng lại ring để tận dụng tốt hơn khả năng lưu trữ mới.

Xoá ổ đĩa hỏng ra khỏi ring.

Lệnh swift-ring-builder <builder-file> remove <ip_address>/<device_name> được sử dụng để xóa một thiết bị cụ thể từ ring. Trong trường hợp này, <device_name> là tên của thiết bị bạn muốn xóa.

Dưới đây là một ví dụ xóa ổ đĩa sdf ra khỏi Node 10.237.7.85.

shell> swift-ring-builder object.ring.gz remove 10.237.7.85/sdf
Note: using object.builder instead of object.ring.gz as builder file
d5r1z1-10.237.7.85:6200R10.237.7.85:6200/sdf_"" marked for removal and will be removed next rebalance.

Đây là kết quả trước khi tôi xóa sdf ra khỏi Node 10.237.7.85.

shell> swift-ring-builder object.ring.gz
Note: using object.builder instead of object.ring.gz as builder file
object.builder, build version 10, id 955ae7be4f5c4989b0813d17464c27d7
1024 partitions, 3.000000 replicas, 1 regions, 1 zones, 9 devices, 0.20 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1 (0:00:00 remaining)
The overload factor is 0.00% (0.000000)
Ring file object.ring.gz is up-to-date
Devices:   id region zone  ip address:port replication ip:port  name weight partitions balance flags meta
            0      1    1 10.237.7.84:6200    10.237.7.84:6200   sdd 100.00        342    0.20
            1      1    1 10.237.7.84:6200    10.237.7.84:6200   sde 100.00        341   -0.10
            2      1    1 10.237.7.84:6200    10.237.7.84:6200   sdf 100.00        341   -0.10
            3      1    1 10.237.7.85:6200    10.237.7.85:6200   sdd 100.00        342    0.20
            4      1    1 10.237.7.85:6200    10.237.7.85:6200   sde 100.00        341   -0.10
            5      1    1 10.237.7.85:6200    10.237.7.85:6200   sdf 100.00        341   -0.10
            6      1    1 10.237.7.86:6200    10.237.7.86:6200   sdd 100.00        342    0.20
            7      1    1 10.237.7.86:6200    10.237.7.86:6200   sde 100.00        341   -0.10
            8      1    1 10.237.7.86:6200    10.237.7.86:6200   sdf 100.00        341   -0.10

Khi bạn xóa một ổ đĩa khỏi ring trong OpenStack Swift bằng lệnh swift-ring-builder <builder-file> remove <ip_address>/<device_name>, ổ đĩa đó sẽ được đánh dấu là “DEL” trong file builder. Tuy nhiên, điều này không có nghĩa là ổ đĩa đã được xóa hoàn toàn khỏi ring.

Trạng thái “DEL” chỉ đơn giản là đánh dấu rằng ổ đĩa đó không nên được sử dụng nữa. Swift sẽ không ghi dữ liệu mới vào ổ đĩa đó và nó sẽ dần dần di chuyển dữ liệu hiện có từ ổ đĩa đó sang các ổ đĩa khác trong cụm.

shell> swift-ring-builder object.ring.gz
Note: using object.builder instead of object.ring.gz as builder file
object.builder, build version 11, id 955ae7be4f5c4989b0813d17464c27d7
1024 partitions, 3.000000 replicas, 1 regions, 1 zones, 9 devices, 999.99 balance, 0.00 dispersion
The minimum number of hours before a partition can be reassigned is 1 (0:00:00 remaining)
The overload factor is 0.00% (0.000000)
Ring file object.ring.gz is obsolete
Devices:   id region zone  ip address:port replication ip:port  name weight partitions balance flags meta
            0      1    1 10.237.7.84:6200    10.237.7.84:6200   sdd 100.00        342  -10.94
            1      1    1 10.237.7.84:6200    10.237.7.84:6200   sde 100.00        341  -11.20
            2      1    1 10.237.7.84:6200    10.237.7.84:6200   sdf 100.00        341  -11.20
            3      1    1 10.237.7.85:6200    10.237.7.85:6200   sdd 100.00        342  -10.94
            4      1    1 10.237.7.85:6200    10.237.7.85:6200   sde 100.00        341  -11.20
            5      1    1 10.237.7.85:6200    10.237.7.85:6200   sdf   0.00        341  999.99   DEL
            6      1    1 10.237.7.86:6200    10.237.7.86:6200   sdd 100.00        342  -10.94
            7      1    1 10.237.7.86:6200    10.237.7.86:6200   sde 100.00        341  -11.20
            8      1    1 10.237.7.86:6200    10.237.7.86:6200   sdf 100.00        341  -11.20

Để hoàn toàn xóa một ổ đĩa khỏi ring, bạn cần phải chạy lệnh:

swift-ring-builder <builder-file> rebalance

Lệnh này sẽ tạo ra một file ring mới, trong đó ổ đĩa đã bị xóa sẽ không còn xuất hiện nữa. Tuy nhiên, bạn chỉ nên chạy lệnh này sau khi đã chắc chắn rằng tất cả dữ liệu trên ổ đĩa đã bị xóa đã được di chuyển sang các ổ đĩa khác.

Xoá một Node ra khỏi ring.

Để xoá một node ra khỏi ring, bạn sử dụng lệnh swift-ring-builder <builder-file> remove <ip_address>. Nếu một node có nhiều hơn một thiết bị và bạn muốn xóa tất cả chúng, bạn có thể sử dụng lệnh này thay vì phải xóa từng thiết bị một cách riêng biệt.

Cú pháp.

swift-ring-builder <builder-file> remove <ip_address>

Tìm thiết bị trong ring.

Ví dụ giờ mình dùng lệnh search để list các ổ đĩa có trên 10.237.7.85 và chúng ta có 3 disk như dưới (có 1 disk đã được đánh dấu DEL ở phần trên nhưng khi bạn dùng lệnh search nó lại không hiển thị).

shell> swift-ring-builder object.ring.gz search 10.237.7.85
Note: using object.builder instead of object.ring.gz as builder file
Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
             3       1     1     10.237.7.85  6200     10.237.7.85              6200       sdd 100.00        342  -10.94
             4       1     1     10.237.7.85  6200     10.237.7.85              6200       sde 100.00        341  -11.20
             5       1     1     10.237.7.85  6200     10.237.7.85              6200       sdf   0.00        341  999.99

Mình sẽ chạy lệnh rebalance lại data.

shell> swift-ring-builder object.ring.gz rebalance
Note: using object.builder instead of object.ring.gz as builder file
Reassigned 427 (41.70%) partitions. Balance is now 0.00.  Dispersion is now 9.83
-------------------------------------------------------------------------------
NOTE: Dispersion of 9.830729 indicates some parts are not
      optimally dispersed.

      You may want to adjust some device weights, increase
      the overload or review the dispersion report.
-------------------------------------------------------------------------------

kết quả tìm kiếm thiết bị trên 10.237.7.85 chỉ còn 2 ổ đĩa thay cho 3 ổ như trước.

swift-ring-builder object.ring.gz search 10.237.7.85
Note: using object.builder instead of object.ring.gz as builder file
Devices:    id  region  zone      ip address  port  replication ip  replication port      name weight partitions balance meta
             3       1     1     10.237.7.85  6200     10.237.7.85              6200       sdd 100.00        384    0.00
             4       1     1     10.237.7.85  6200     10.237.7.85              6200       sde 100.00        384    0.00

Gỡ rối trong quá trình xây dựng và cân bằng lại ring.

Khi bạn đã tạo ra các file ring mới bằng lệnh swift-ring-builder, bạn cần phải phân phối chúng đến tất cả các máy chủ trong cụm. Điều này đảm bảo rằng tất cả các máy chủ đều sử dụng cấu trúc ring mới nhất.

swift-ring-builder <builder-file> rebalance --debug

Nếu bạn gọi swift-ring-builder với tên swift-ring-builder-safe, thư mục chứa file builder sẽ được khóa (thông qua một file .lock trong thư mục cha). Điều này ngăn chặn việc nhiều phiên bản của swift-ring-builder cố gắng đọc hoặc ghi vào file builder/ring trong khi các thao tác đang diễn ra.

Nếu swift-ring-builder không tạo ra kết quả cân bằng như bạn mong đợi, bạn có thể sử dụng cờ --debug để xem chi tiết về những gì nó đang làm. Lệnh swift-ring-builder <builder-file> rebalance --debug sẽ in ra thông tin chi tiết về quá trình cân bằng, giúp bạn gỡ rối vấn đề.

shell> swift-ring-builder object.ring.gz rebalance --debug
Note: using object.builder instead of object.ring.gz as builder file
DEBUG: Planning 3.0 on (1,)
DEBUG: Planning 3.0 on (1, 1)
DEBUG: Planning 1 on (1, 1, '10.237.7.84')
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.84', 0)
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.84', 1)
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.84', 2)
DEBUG: Planning 1 on (1, 1, '10.237.7.85')
DEBUG: Planning 0.5 on (1, 1, '10.237.7.85', 3)
DEBUG: Planning 0.5 on (1, 1, '10.237.7.85', 4)
DEBUG: Planning 1 on (1, 1, '10.237.7.86')
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.86', 6)
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.86', 7)
DEBUG: Planning 0.3333333333333333 on (1, 1, '10.237.7.86', 8)
DEBUG: r1z1-10.237.7.84/sdd wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: r1z1-10.237.7.84/sde wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: r1z1-10.237.7.84/sdf wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: r1z1-10.237.7.85/sdd wants 0.5 and is weighted for 0.375 so therefore requires 0.3333333333333333 overload
DEBUG: r1z1-10.237.7.85/sde wants 0.5 and is weighted for 0.375 so therefore requires 0.3333333333333333 overload
DEBUG: r1z1-10.237.7.86/sdd wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: r1z1-10.237.7.86/sde wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: r1z1-10.237.7.86/sdf wants 0.3333333333333333 and is weighted for 0.375 so therefore requires -0.11111111111111116 overload
DEBUG: Using effective overload of 0.000000
DEBUG: 0 new parts and 0 removed parts from replica-count change
DEBUG: Gather start is 124 (Last start was 454)
DEBUG: Unable to finish rebalance plan after 1 attempts
No partitions could be reassigned.
The time between rebalances must be at least min_part_hours: 1 hours (0:57:03 remaining)

Nó sẽ tạo ra rất nhiều thông tin chi tiết. Điều này hữu ích nếu bạn đang cố gắng sửa lỗi trong ring builder hoặc bạn đang báo cáo một lỗi về ring builder.

Trong kết quả xuất ra từ lệnh rebalance, bạn có thể thấy một số được gọi là ‘dispersion’. Số này thể hiện phần trăm các phân vùng trong ring có quá nhiều bản sao trong một lĩnh vực lỗi cụ thể.

Bạn có thể sử dụng lệnh swift-ring-builder <builder-file> dispersion để kiểm tra giá trị dispersion của ring.

swift-ring-builder <builder-file> dispersion

Ví dụ:

shell> swift-ring-builder object.ring.gz dispersion
Note: using object.builder instead of object.ring.gz as builder file
Dispersion is 9.830729, Balance is 0.000000, Overload is 0.00%
Required overload is 33.333333%
Worst tier is 13.107639 (r1z1-10.237.7.84)

Nó sẽ trả về một số phần trăm, đó là giá trị dispersion của ring. Nếu bạn muốn xem chi tiết về dispersion, bạn có thể thêm cờ --verbose vào lệnh. Lệnh swift-ring-builder <builder-file> dispersion --verbose sẽ in ra thông tin chi tiết về dispersion, bao gồm số lượng và phần trăm các phân vùng có quá nhiều bản sao trong cùng một lĩnh vực lỗi. Điều này giúp bạn hiểu rõ hơn về cách dữ liệu được phân phối trong ring.

swift-ring-builder <builder-file> dispersion --verbose

Ví dụ.

shell> swift-ring-builder /etc/swift/object.ring.gz dispersion --verbose
Note: using /etc/swift/object.builder instead of /etc/swift/object.ring.gz as builder file
Dispersion is 0.000000, Balance is 0.195312, Overload is 0.00%
Required overload is 0.000000%
--------------------------------------------------------------------------
Tier                           Parts      %    Max     0     1     2     3
--------------------------------------------------------------------------
r1                              3072   0.00      3     0     0     0  1024
r1z84                           1024   0.00      1     0  1024     0     0
r1z84-10.237.7.84               1024   0.00      1     0  1024     0     0
r1z84-10.237.7.84/sdd            342   0.00      1   682   342     0     0
r1z84-10.237.7.84/sde            341   0.00      1   683   341     0     0
r1z84-10.237.7.84/sdf            341   0.00      1   683   341     0     0
r1z85                           1024   0.00      1     0  1024     0     0
r1z85-10.237.7.85               1024   0.00      1     0  1024     0     0
r1z85-10.237.7.85/sdd            342   0.00      1   682   342     0     0
r1z85-10.237.7.85/sde            341   0.00      1   683   341     0     0
r1z85-10.237.7.85/sdf            341   0.00      1   683   341     0     0
r1z86                           1024   0.00      1     0  1024     0     0
r1z86-10.237.7.86               1024   0.00      1     0  1024     0     0
r1z86-10.237.7.86/sdd            342   0.00      1   682   342     0     0
r1z86-10.237.7.86/sde            341   0.00      1   683   341     0     0
r1z86-10.237.7.86/sdf            341   0.00      1   683   341     0     0

Đầu ra của lệnh swift-ring-builder /etc/swift/object.ring.gz dispersion --verbose cung cấp thông tin chi tiết về dispersion và cách dữ liệu được phân phối trong ring.

“Dispersion is 0.000000, Balance is 0.195312, Overload is 0.00%”: Đây là các chỉ số tổng quan của ring. Dispersion là phần trăm các phân vùng có quá nhiều bản sao trong cùng một lĩnh vực lỗi. Balance là mức độ cân đối giữa số lượng phân vùng trên mỗi thiết bị. Overload là phần trăm phân vùng được phép vượt quá giới hạn tối đa của chúng để đạt được sự cân bằng.

“Tier Parts % Max 0 1 2 3”: Đây là chi tiết về cách phân phối phân vùng. Tier là cấp độ trong hệ thống lưu trữ (ví dụ: region, zone, IP, ổ đĩa). Parts là số lượng phân vùng. Max là số lượng phân vùng tối đa trên mỗi tier. Các cột số (0, 1, 2, 3) là số lượng phân vùng cho mỗi bản sao.

“r1 3072 0.00 3 0 0 0 1024”: Nó cho biết cách phân phối phân vùng trên tier “r1”. Có 3072 phân vùng, mỗi phân vùng có 3 bản sao và 1024 phân vùng cho mỗi bản sao.

Các dòng tiếp theo cho biết cách phân phối phân vùng trên các tier khác nhau, từ region (r1) đến zone (r1z84, r1z85, r1z86) và các ổ đĩa cụ thể (r1z84-10.237.7.84/sdd, r1z84-10.237.7.84/sde, v.v.).

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories