1. Tổng quan.
Các OSD (Object Storage Daemons) là một phần quan trọng của hệ thống lưu trữ Ceph, chịu trách nhiệm cho việc lưu trữ và truy xuất dữ liệu. Bảo dưỡng các OSDs là một bước quan trọng để đảm bảo hoạt động ổn định và hiệu suất tối ưu của hệ thống Ceph.
Dưới đây là một số lý do chính tại sao chúng ta cần bảo dưỡng các OSDs:
- Đảm bảo hiệu suất: Các OSDs cần được bảo dưỡng để đảm bảo rằng chúng đang hoạt động ở hiệu suất tối đa. Điều này có thể bao gồm việc kiểm tra tình trạng của ổ đĩa, tối ưu hóa cấu hình, hoặc nâng cấp phần mềm.
- Phát hiện và khắc phục sự cố: Bảo dưỡng có thể giúp phát hiện các vấn đề tiềm ẩn, như ổ đĩa bị hỏng hoặc lỗi mạng, trước khi chúng gây ra sự cố lớn. Khi một vấn đề được phát hiện, nó có thể được khắc phục ngay lập tức để tránh mất dữ liệu hoặc gián đoạn dịch vụ.
- Đảm bảo sự an toàn: Bảo dưỡng cũng bao gồm việc kiểm tra và cập nhật các cài đặt bảo mật, để đảm bảo rằng dữ liệu được lưu trữ an toàn và không bị tiếp xúc với các mối đe dọa bảo mật.
- Duy trì sự ổn định: Các OSDs cần được kiểm tra và bảo dưỡng định kỳ để đảm bảo rằng chúng đang hoạt động ổn định và không gây ra sự cố hoặc gián đoạn cho hệ thống Ceph.
2. Thêm Node và các OSDs mới.
Sơ đồ sau khi thêm Node 4 sẽ như sau:
|
+-------------------------+ | +-------------------------+
|[ceph-client.hoanghd.com]|192.168.13.234 | 192.168.13.235| [radosgw.hoanghd.com] |
| Ceph Client +-------------------+-------------------| RADOSGW |
| | | | |
+-------------------------+ | +-------------------------+
|
+----------------------------------+-----------------------------------+
|public: 192.168.13.231 |public: 192.168.13.232 |public: 192.168.13.233
|cluster: 172.16.13.231 |cluster: 1172.16.13.232 |cluster: 172.16.13.233
+--------------+--------------+ +--------------+--------------+ +--------------+--------------+
| [ceph-node1.hoanghd.com] | | [ceph-node2.hoanghd.com] | | [ceph-node3.hoanghd.com] |
| Object Storage +----| Object Storage +-----| Object Storage |
| Monitor Daemon | | | | |
| Manager Daemon | | | | |
| Ceph Dashboard | | | | |
+-----------------------------+ +-----------------------------+ +-----------------------------+
|
| public: 192.168.13.236
| cluster: 172.16.13.236
+--------------+--------------+
| [ceph-node4.hoanghd.com] |
| Object Storage +
| |
| |
| |
+-----------------------------+
Bước 1 – Thêm thông tin về cách kết nối đến các node trong cụm Ceph.
Tiếp theo, tạo một file cấu hình SSH mới trong ~/.ssh/config
với thông tin về cách kết nối đến các node trong cụm Ceph.
cat >> ~/.ssh/config << 'OEF'
Host ceph-node4
Hostname ceph-node4.hoanghd.com
User root
OEF
Đặt quyền truy cập cho file cấu hình SSH để chỉ có người dùng hiện tại mới có thể đọc và ghi vào file.
chmod 600 ~/.ssh/config
Xác minh thông tin sau khi thêm.
shell> cat ~/.ssh/config
Host ceph-node1
Hostname ceph-node1.hoanghd.com
User root
Host ceph-node2
Hostname ceph-node2.hoanghd.com
User root
Host ceph-node3
Hostname ceph-node3.hoanghd.com
User root
Host ceph-client
Hostname ceph-client.hoanghd.com
User root
Host ceph-radosgw
Hostname radosgw.hoanghd.com
User root
Host ceph-node4
Hostname ceph-node4.hoanghd.com
User root
Bước 2: Trỏ file hosts.
Tại Admin Node thêm thông tin file hosts của Node 4.
cat >> /etc/hosts << 'OEF'
172.16.13.236 ceph-node4.hoanghd.com ceph-node4
OEF
Xác nhận kết nối đến các Node bằng domain thành công. Ví dụ kết quả từ ceph-node1.hoanghd.com
sang ceph-node4.hoanghd.com
.
shell> ping -c 4 ceph-node4.hoanghd.com
PING ceph-node4.hoanghd.com (172.16.13.236) 56(84) bytes of data.
64 bytes from ceph-node4.hoanghd.com (172.16.13.236): icmp_seq=1 ttl=64 time=0.485 ms
64 bytes from ceph-node4.hoanghd.com (172.16.13.236): icmp_seq=2 ttl=64 time=0.543 ms
64 bytes from ceph-node4.hoanghd.com (172.16.13.236): icmp_seq=3 ttl=64 time=0.441 ms
64 bytes from ceph-node4.hoanghd.com (172.16.13.236): icmp_seq=4 ttl=64 time=0.331 ms
--- ceph-node4.hoanghd.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3072ms
rtt min/avg/max/mdev = 0.331/0.450/0.543/0.077 ms
Bước 3 – Sao chép khóa công khai SSH đến Node 4.
Sử dụng lệnhssh-copy-id
sao chép khóa công khai SSH đến Node 4.
ssh-copy-id -o StrictHostKeychecking=no ceph-node4
Tùy chọn -o StrictHostKeychecking=no
ngăn chặn việc kiểm tra dấu vân tay của máy chủ, cho phép kết nối tự động.
Dưới đây là ví dụ có kèm đầu ra cho bạn tham khảo.
shell> ssh-copy-id -o StrictHostKeychecking=no ceph-node4
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub"
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
root@ceph-node4.hoanghd.com's password:
Number of key(s) added: 1
Now try logging into the machine, with: "ssh -o 'StrictHostKeychecking=no' 'ceph-node4'"
and check to make sure that only the key(s) you wanted were added.
Bước 4 – Cài đặt Ceph cho Node 4.
ssh ceph-node4 "apt update; apt -y install ceph"
Bước 5 – Sao chép các file key cần thiết từ Ceph Admin sang Node 4.
scp /etc/ceph/ceph.conf ceph-node4:/etc/ceph/ceph.conf
scp /etc/ceph/ceph.client.admin.keyring ceph-node4:/etc/ceph
scp /var/lib/ceph/bootstrap-osd/ceph.keyring ceph-node4:/var/lib/ceph/bootstrap-osd
3. Thêm OSD.
Đầu tiên mình cũng muốn cho các bạn xem danh sách các ổ đĩa đang có sẵn trên Node 4. Hiện tại Node 4 có 3 ổ đĩa mình sẽ sử dụng làm OSD [/dev/sda, /dev/sdb, /dev/sdd].
shell> lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.5M 1 loop /snap/core20/2015
loop1 7:1 0 91.9M 1 loop /snap/lxd/24061
loop2 7:2 0 40.9M 1 loop /snap/snapd/20290
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 9.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
sdb 8:16 0 100G 0 disk
sdc 8:32 0 100G 0 disk
sdd 8:48 0 100G 0 disk
sr0 11:0 1 4M 0 rom
Chạy đoạn shell này để thực hiện gửi lệnh từ Ceph Admin đến node cần thực hiện thêm OSD, cụ thể là ceph-node4
.
ssh ceph-node4 \
"chown ceph. /etc/ceph/ceph.* /var/lib/ceph/bootstrap-osd/*; \
parted --script /dev/sdb 'mklabel gpt'; \
parted --script /dev/sdb "mkpart primary 0% 100%"; \
ceph-volume lvm create --data /dev/sdb1"
Dưới đây là giải thích chi tiết cho từng phần:
ssh ceph-node4
: Đây là lệnh SSH, được sử dụng để đăng nhập vào máy chủceph-node4
từ xa."chown ceph. /etc/ceph/ceph.* /var/lib/ceph/bootstrap-osd/*;
: Lệnhchown
thay đổi quyền sở hữu của các tệp. Trong trường hợp này, nó đặt người dùng và nhómceph
làm chủ sở hữu cho tất cả các tệp bắt đầu bằngceph.
trong thư mục/etc/ceph/
và tất cả các tệp trong thư mục/var/lib/ceph/bootstrap-osd/
.parted --script /dev/sdb 'mklabel gpt';
: Lệnhparted
được sử dụng để quản lý các phân vùng đĩa. Ở đây, nó tạo một bảng phân vùng mới trên đĩa/dev/sdb
với loạigpt
.parted --script /dev/sdb "mkpart primary 0% 100%";
: Lệnh này tạo một phân vùngprimary
mới trên đĩa/dev/sdb
, bao gồm toàn bộ không gian đĩa (từ 0% đến 100%).ceph-volume lvm create --data /dev/sdb1
: Lệnhceph-volume
được sử dụng để chuẩn bị và kích hoạt các đĩa cho Ceph OSDs. Trong trường hợp này, nó tạo một logical volume mới cho dữ liệu OSD trên phân vùng/dev/sdb1
vừa được tạo.
Giờ đây bạn đã có một OSD mới nâng tổng số lượng số OSD từ 9 sang 10 OSD.
shell> ceph -s
cluster:
id: 0aed20ae-5941-4578-aedb-c78fdfd75bdf
health: HEALTH_WARN
mon is allowing insecure global_id reclaim
services:
mon: 1 daemons, quorum ceph-node1 (age 7h)
mgr: ceph-node1(active, since 5h)
mds: cephfs:1 {0=ceph-node1=up:active}
osd: 10 osds: 10 up (since 53s), 10 in (since 53s)
rgw: 1 daemon active (www)
task status:
data:
pools: 8 pools, 193 pgs
objects: 213 objects, 9.7 KiB
usage: 11 GiB used, 989 GiB / 1000 GiB avail
pgs: 193 active+clean
io:
recovery: 3 B/s, 1 keys/s, 0 objects/s
Kết quả khi dùng lệnh lsblk
trên Node 4, chúng ta thấy ổ đĩa /dev/sdb đã tham gia vào OSD của Ceph.
shell> ssh ceph-node4 "lsblk"
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.5M 1 loop /snap/core20/2015
loop1 7:1 0 91.9M 1 loop /snap/lxd/24061
loop2 7:2 0 40.9M 1 loop /snap/snapd/20290
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 9.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
└─ceph--773cfbbc--b9fc--4554--8e1d--12329ea9e238-osd--block--32650d6d--c58b--46b9--b559--2703a4e3cbb4 253:0 0 100G 0 lvm
sdc 8:32 0 100G 0 disk
sdd 8:48 0 100G 0 disk
sr0 11:0 1 4M 0 rom
Làm tương tự cho ổ đĩa [/dev/sdb, /dev/sdd].
Trường hợp [/dev/sdc].
ssh ceph-node4 \
"chown ceph. /etc/ceph/ceph.* /var/lib/ceph/bootstrap-osd/*; \
parted --script /dev/sdc 'mklabel gpt'; \
parted --script /dev/sdc "mkpart primary 0% 100%"; \
ceph-volume lvm create --data /dev/sdc1"
Trường hợp [/dev/sdd].
ssh ceph-node4 \
"chown ceph. /etc/ceph/ceph.* /var/lib/ceph/bootstrap-osd/*; \
parted --script /dev/sdd 'mklabel gpt'; \
parted --script /dev/sdd "mkpart primary 0% 100%"; \
ceph-volume lvm create --data /dev/sdd1"
Sau khi hoàn thành hết 3 ổ đĩa, bạn sẽ có kết quả như sau:
Giờ đây bạn đã có một OSD mới nâng tổng số lượng số OSD từ 10 sang 12 OSD.
shell> ceph -s
cluster:
id: 0aed20ae-5941-4578-aedb-c78fdfd75bdf
health: HEALTH_WARN
mon is allowing insecure global_id reclaim
services:
mon: 1 daemons, quorum ceph-node1 (age 7h)
mgr: ceph-node1(active, since 5h)
mds: cephfs:1 {0=ceph-node1=up:active}
osd: 12 osds: 12 up (since 34s), 12 in (since 34s)
rgw: 1 daemon active (www)
task status:
data:
pools: 8 pools, 193 pgs
objects: 213 objects, 9.7 KiB
usage: 13 GiB used, 1.2 TiB / 1.2 TiB avail
pgs: 193 active+clean
Cả 3 ổ đĩa trên Node 4 đã tham gia vào OSD của Ceph Cluster.
shell> ssh ceph-node4 "lsblk"
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
loop0 7:0 0 63.5M 1 loop /snap/core20/2015
loop1 7:1 0 91.9M 1 loop /snap/lxd/24061
loop2 7:2 0 40.9M 1 loop /snap/snapd/20290
sda 8:0 0 10G 0 disk
├─sda1 8:1 0 9.9G 0 part /
├─sda14 8:14 0 4M 0 part
└─sda15 8:15 0 106M 0 part /boot/efi
sdb 8:16 0 100G 0 disk
└─sdb1 8:17 0 100G 0 part
└─ceph--773cfbbc--b9fc--4554--8e1d--12329ea9e238-osd--block--32650d6d--c58b--46b9--b559--2703a4e3cbb4 253:0 0 100G 0 lvm
sdc 8:32 0 100G 0 disk
└─sdc1 8:33 0 100G 0 part
└─ceph--a536f192--7be0--4ec4--bf68--386bffbcb63e-osd--block--7ad19828--0667--4fd0--9ea0--e4d19bb44471 253:1 0 100G 0 lvm
sdd 8:48 0 100G 0 disk
└─sdd1 8:49 0 100G 0 part
└─ceph--9711624f--875b--4776--aa17--f655f64e220f-osd--block--29a3a68c--33b3--4cb7--abfb--e97b419535e3 253:2 0 100G 0 lvm
sr0 11:0 1 4M 0 rom
4. Xóa OSD ra khỏi Cụm.
Quy trình xóa một OSD ra khỏi cụm như sau.
Bước 1 – Bạn hãy list các osd hiện có và lựa chọn OSD cần xóa.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 1.17224 root default
-3 0.29306 host ceph-node1-13-231
0 hdd 0.09769 osd.0 up 1.00000 1.00000
5 hdd 0.09769 osd.5 up 1.00000 1.00000
8 hdd 0.09769 osd.8 up 1.00000 1.00000
-5 0.29306 host ceph-node2-13-232
1 hdd 0.09769 osd.1 up 1.00000 1.00000
6 hdd 0.09769 osd.6 up 1.00000 1.00000
7 hdd 0.09769 osd.7 up 1.00000 1.00000
-7 0.29306 host ceph-node3-13-233
2 hdd 0.09769 osd.2 up 1.00000 1.00000
3 hdd 0.09769 osd.3 up 1.00000 1.00000
4 hdd 0.09769 osd.4 up 1.00000 1.00000
-11 0.19537 host ceph-node4
10 hdd 0.09769 osd.10 up 1.00000 1.00000
11 hdd 0.09769 osd.11 up 1.00000 1.00000
9 hdd 0.09769 osd.9 up 1.00000 1.00000
Bước 2 – Đánh dấu OSD sẽ loại bỏ.
Mình lựa chọn OSD có ID là 9 và tiến hành chạy lệnh ceph osd out <osd_id>
.
Trong trường hợp này, OSD có ID là 9 đang được loại bỏ.
Đánh dấu OSD 9 là “out”, nghĩa là nó không nên nhận thêm dữ liệu nào nữa. Ceph sẽ bắt đầu quá trình “backfill” để sao chép dữ liệu từ OSD 9 sang các OSD khác trong cluster.
shell> ceph osd out 9
marked out osd.9.
Kết quả bạn sẽ thấy kết quả cụm sẽ phân tán lại data khi dùng lệnh ceph -w.
Lệnh ceph -w
được sử dụng để theo dõi trạng thái của cluster Ceph trong thời gian thực.
shell> ceph -w
cluster:
id: 0aed20ae-5941-4578-aedb-c78fdfd75bdf
health: HEALTH_WARN
mon is allowing insecure global_id reclaim
Degraded data redundancy: 37/639 objects degraded (5.790%), 6 pgs degraded
services:
mon: 1 daemons, quorum ceph-node1 (age 7h)
mgr: ceph-node1(active, since 5h)
mds: cephfs:1 {0=ceph-node1=up:active}
osd: 12 osds: 12 up (since 7m), 11 in (since 6s); 10 remapped pgs
rgw: 1 daemon active (www)
task status:
data:
pools: 8 pools, 193 pgs
objects: 213 objects, 9.7 KiB
usage: 12 GiB used, 1.1 TiB / 1.1 TiB avail
pgs: 0.518% pgs not active
37/639 objects degraded (5.790%)
8/639 objects misplaced (1.252%)
181 active+clean
5 active+remapped+backfill_wait
5 active+recovery_wait+undersized+degraded+remapped
1 active+recovering+undersized+remapped
1 activating+undersized+degraded+remapped
io:
recovery: 36 B/s, 0 objects/s
progress:
Rebalancing after osd.11 marked in (0s)
[............................]
2024-01-24T21:01:12.522624+0000 mon.ceph-node1 [WRN] Health check failed: Degraded data redundancy: 37/639 objects degraded (5.790%), 6 pgs degraded (PG_DEGRADED)
2024-01-24T21:01:18.656167+0000 mon.ceph-node1 [WRN] Health check update: Degraded data redundancy: 10/639 objects degraded (1.565%), 2 pgs degraded (PG_DEGRADED)
2024-01-24T21:01:22.706456+0000 mon.ceph-node1 [INF] Health check cleared: PG_DEGRADED (was: Degraded data redundancy: 10/639 objects degraded (1.565%), 2 pgs degraded)
Dưới đây là một số thông tin quan trọng trong kết quả của lệnh:
health: HEALTH_WARN
: Trạng thái sức khỏe của cluster hiện tại làHEALTH_WARN
, có nghĩa là có một số vấn đề cần được chú ý. Cụ thể, có hai cảnh báo:mon is allowing insecure global_id reclaim
vàDegraded data redundancy: 37/639 objects degraded (5.790%), 6 pgs degraded
.osd: 12 osds: 12 up (since 7m), 11 in (since 6s); 10 remapped pgs
: Có 12 OSDs trong cluster, tất cả đều đang hoạt động (up
), nhưng chỉ có 11 OSDs đang tham gia vào cluster (in
). Có 10 placement groups (pgs) đã được remapped, có nghĩa là dữ liệu trên chúng đã được di chuyển đến các OSD khác.data: ... 37/639 objects degraded (5.790%) ... 8/639 objects misplaced (1.252%)
: Có một số dữ liệu trong cluster đang bị degraded (có ít bản sao hơn so với mức độ độc lập dữ liệu mong muốn) và misplaced (chưa được lưu trữ ở đúng vị trí).Rebalancing after osd.11 marked in (0s)
: Cluster đang cố gắng cân bằng lại dữ liệu sau khi OSD 11 được đánh dấu làin
.- Các dòng cuối cùng là các thông báo từ quá trình theo dõi, cho thấy sự thay đổi trong trạng thái sức khỏe của cluster. Trong trường hợp này, bạn có thể thấy rằng số lượng objects degraded đã giảm từ 37 xuống còn 10, và sau đó cảnh báo
PG_DEGRADED
đã được xóa, cho thấy rằng vấn đề về sự độc lập dữ liệu đã được giải quyết.
Bước 3 – Ngăn OSD khởi động lại khi hệ thống khởi động.
Đăng nhập vào máy chủ ceph-node4
qua SSH và dừng dịch vụ ceph-osd@9.service
ngay lập tức, sau đó vô hiệu hóa nó để ngăn nó khởi động lại khi hệ thống khởi động.
ssh ceph-node4 "systemctl disable --now ceph-osd@9.service"
Bước 4 – Xóa OSD khỏi cluster Ceph.
Lệnh này xóa OSD 9 khỏi cluster Ceph và xóa tất cả dữ liệu của nó. Tùy chọn --yes-i-really-mean-it
được sử dụng để xác nhận rằng bạn thực sự muốn thực hiện hành động này, vì nó không thể hoàn tác và sẽ dẫn đến mất dữ liệu.
ceph osd purge 9 --yes-i-really-mean-it
Dưới đây là ví dụ kèm kết quả đầu ra của lệnh.
shell> ceph osd purge 9 --yes-i-really-mean-it
purged osd.9
Giờ đây bạn chỉ còn 11 OSD trong cụm Ceph.
shell> ceph -s
cluster:
id: 0aed20ae-5941-4578-aedb-c78fdfd75bdf
health: HEALTH_WARN
mon is allowing insecure global_id reclaim
services:
mon: 1 daemons, quorum ceph-node1 (age 7h)
mgr: ceph-node1(active, since 5h)
mds: cephfs:1 {0=ceph-node1=up:active}
osd: 11 osds: 11 up (since 59s), 11 in (since 2m)
rgw: 1 daemon active (www)
task status:
data:
pools: 8 pools, 193 pgs
objects: 213 objects, 9.7 KiB
usage: 12 GiB used, 1.1 TiB / 1.1 TiB avail
pgs: 193 active+clean
io:
recovery: 9 B/s, 0 objects/s
Kết quả tương tự với lệnh ceph osd tree.
shell> ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 1.07455 root default
-3 0.29306 host ceph-node1-13-231
0 hdd 0.09769 osd.0 up 1.00000 1.00000
5 hdd 0.09769 osd.5 up 1.00000 1.00000
8 hdd 0.09769 osd.8 up 1.00000 1.00000
-5 0.29306 host ceph-node2-13-232
1 hdd 0.09769 osd.1 up 1.00000 1.00000
6 hdd 0.09769 osd.6 up 1.00000 1.00000
7 hdd 0.09769 osd.7 up 1.00000 1.00000
-7 0.29306 host ceph-node3-13-233
2 hdd 0.09769 osd.2 up 1.00000 1.00000
3 hdd 0.09769 osd.3 up 1.00000 1.00000
4 hdd 0.09769 osd.4 up 1.00000 1.00000
-11 0.19537 host ceph-node4
10 hdd 0.09769 osd.10 up 1.00000 1.00000
11 hdd 0.09769 osd.11 up 1.00000 1.00000