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-replicator
,container-updater
,container-auditor
: Các dịch vụ này tương tự như các dịch vụ tương ứng củaobject-*
, 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-replicator
,account-auditor
: Các dịch vụ này tương tự như các dịch vụ tương ứng củaobject-*
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.).