Quy trình thay DISK JOURNAL
Trong docs có nói thẳng một sự thật quan trọng: journal hỏng không có quy trình thay nóng như data disk. Căn cứ từ trang SSD Journaling:
- Với journal SSD thì node sẽ tạo RAID0 từ các ổ journal — ví dụ cluster lab đang là
md126 : active raid0. RAID0 là striping nên 1 trong 2 ổ journal chết = toàn bộ journal chết = datapath node sập. -
Số lượng SSD journal được định nghĩa lúc deploy cluster; các version Lightbits tương lai mới hỗ trợ thêm/bớt thiết bị sau cài đặt — tức là với hệ thống lab hiện tại verison 3.18.x không có lệnh add/replace journal online.
-
Như vậy quy trình cho journal SSD thực chất là xử lý node failure + tái tạo journal.
Links tham khảo:
| Nội dung | Link |
|---|---|
| SSD Journaling (kiến trúc, RAID0, giới hạn version) | https://documentation.lightbitslabs.com/lightbits-private-cloud/ssd-journaling |
| Nhận diện node failure trong cluster | https://documentation.lightbitslabs.com/lightbits-private-cloud/identifying-a-node-failure-in-a-lightbits-cluster |
| Troubleshooting: Node is Inactive | https://documentation.lightbitslabs.com/lightbits-private-cloud/node-is-inactive |
| Node Instance Restart (best practices) | https://documentation.lightbitslabs.com/lightbits-private-cloud/node-instance-restart |
Bài tập trên oss-nvme-05 (journal của oss-nvme-05 là nvme0n1/S6VANN0L107040 và nvme2n1/S6VANN0L106474)
Bước 1 - Xem lại hiện trạng trước khi phá hỏng nó
[root@oss-nvme-05 ~]# cat /proc/mdstat | grep -A2 "^md"
md126 : active raid0 nvme2n1[1] nvme0n1[0]
30005577728 blocks super 1.2 512k chunks
md127 : active raid1 sda2[0] sdb1[1]
468512768 blocks super 1.2 [2/2] [UU]
bitmap: 3/4 pages [12KB], 65536KB chunk
[root@oss-nvme-05 ~]# PCIADDR=$(basename $(readlink -f /sys/block/nvme2n1/device | sed 's|/nvme/nvme[0-9]*||'))
[root@oss-nvme-05 ~]# echo "PCIADDR=$PCIADDR"
PCIADDR=0000:81:00.0
[root@oss-nvme-05 ~]# cat /sys/block/nvme2n1/device/serial
S6VANN0L106474
Bước 2 - Rút 1 ssd journal
[root@oss-nvme-05 ~]# echo 1 > /sys/bus/pci/devices/$PCIADDR/remove
[root@oss-nvme-05 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 447.1G 0 disk
├─sda1 8:1 0 200M 0 part /boot/efi
└─sda2 8:2 0 446.9G 0 part
└─md127 9:127 0 446.8G 0 raid1 /
sdb 8:16 0 447.1G 0 disk
└─sdb1 8:17 0 446.9G 0 part
└─md127 9:127 0 446.8G 0 raid1 /
nvme0n1 259:0 0 14T 0 disk
└─md126 9:126 0 27.9T 0 raid0
nvme5n1 259:1 0 14T 0 disk
nvme1n1 259:2 0 14T 0 disk
nvme4n1 259:3 0 14T 0 disk
nvme6n1 259:4 0 14T 0 disk
nvme7n1 259:6 0 14T 0 disk
nvme3n1 259:7 0 14T 0 disk
### [ADMIN] — B3. Quan sat suc lan toa (phan dang gia nhat cua bai)
[root@vm-admin-01 ~]# lbcli --endpoint $ENDPOINT -J "$LIGHTOS_JWT" list nodes
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-01-0 e8bc0737-a4af-5538-8952-3cdf63a20f96 Active 10.237.95.101:4420 [oss-nvme-01] 61 TiB 0 B None
oss-nvme-02-0 ef732732-4c12-5e22-8bf4-eb3dddbd0cc7 Active 10.237.95.102:4420 [oss-nvme-02] 61 TiB 0 B None
oss-nvme-03-0 5c5b6d5d-21c0-51e2-9c02-359936ae9c70 Active 10.237.95.103:4420 [oss-nvme-03] 61 TiB 0 B None
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
# Ky vong: oss-nvme-05-0 roi khoi Active (Inactive/Failed) — KHAC bai data (node van Active)
[root@vm-admin-01 ~]# lbcli --endpoint $ENDPOINT -J "$LIGHTOS_JWT" get node --uuid=8861a8fc-b72b-4129-b9e9-1fe77a5a6e82
Name UUID State NVMe endpoint Failure domains Capacity Used Local rebuild progress
oss-nvme-05-0 8861a8fc-b72b-4129-b9e9-1fe77a5a6e82 Active 10.237.95.105:4420 [oss-nvme-05] 61 TiB 0 B None
# de y truong journalDeviceNotFound
[root@vm-admin-01 ~]# lbcli --endpoint $ENDPOINT -J "$LIGHTOS_JWT" list events | head -8
ID Severity Time Name Description Type Component(s)
30 Info 2026-08-02 15:46:54.953 NVMeDeviceAdded NVMeSSD nvme5n1
29 High 2026-08-02 15:39:14.807 NVMeDeviceFailed NVMeSSD nvme5n1
28 Info 2026-08-02 02:58:19.784 ServerDeleted Completed Server oss-nvme-04
27 High 2026-08-02 02:16:06.850 ServerClockDrift ClockDrift Server oss-nvme-01
26 Info 2026-08-02 01:30:37.663 NodeEnteredUnattachedState Node oss-nvme-04-0
25 High 2026-08-02 01:30:22.497 NodeInPermanentFailureState NodeInactive Node oss-nvme-04-0
24 Info 2026-08-02 00:30:28.601 NodeEnteredInactiveState ServerDisabled Node oss-nvme-04-0
### [NEW] — B4. Xem noi tang: md degraded/chet, duroslight phan ung
[root@oss-nvme-05 ~]# cat /proc/mdstat
Personalities : [raid0] [raid1]
md126 : broken raid0 nvme2n1[1] nvme0n1[0]
30005577728 blocks super 1.2 512k chunks
md127 : active raid1 sda2[0] sdb1[1]
468512768 blocks super 1.2 [2/2] [UU]
bitmap: 3/4 pages [12KB], 65536KB chunk
unused devices: <none>
[root@oss-nvme-05 ~]# systemctl status duroslight-0 --no-pager | head -5
● duroslight-0.service - duros service: 0
Loaded: loaded (/usr/lib/systemd/system/duroslight-0.service; disabled; preset: disabled)
Active: active (running) since Sat 2026-08-01 14:08:09 +07; 1 day 9h ago
Main PID: 6795 (duroslight)
Tasks: 119 (limit: 3295145)
[root@oss-nvme-05 ~]# journalctl -u node-manager --since "-5 min" --no-pager | grep -viE "statistics|heartbeat" | tail -10
-- No entries --
Quy trình phục hồi (2 kịch bản)
Kịch bản A — "ổ quay lại" (sửa được cáp/backplane, hoặc lab rescan):
### [NEW]
echo 1 > /sys/bus/pci/rescan # o ve, cung serial, md superblock con nguyen
# Thu duong nhe truoc: de he thong tu phuc hoi / restart node instance
systemctl restart node-manager
# Bam: md journaling co reassemble? duroslight len lai? node ve Active?
Kịch bản B — "thay ổ journal MỚI" (serial khác, hoặc kịch bản A không tự lành): đây là lúc sự thật version lộ ra — không có lệnh gán ổ journal mới vào node đang sống. Đường phục hồi chuẩn trong tay bạn chính là tái sinh node từ trạng thái sạch (bài đã thuộc từ vụ record Failed):
# 1. Tat services tren 05
# 2. [ADMIN] disable server 35b83b77 → cho Unattached (timer!) → delete server
# 3. [NEW] wipe 8 o + rm gftl.db + rm -rf /var/cache/nm_service + xoa unit duroslight cu
# 4. Start lai services dung thu tu B5 (discovery truoc, checkpoint registry, node-manager sau)
# → auto-registration tao lai server cung SUUID, chon journal tu dau voi bo o hien co
Ba cảnh báo trước khi bấm: (1) đây là bài node-down — node 05 sẽ rời Active thật sự, chỉ làm khi cluster còn N-1 node khỏe và 0 volume như hiện tại; (2) tuyệt đối làm trên node lab, không phải node đang giữ dữ liệu; (3) khả năng phải đi trọn Kịch bản B kể cả khi ổ quay lại — journal RAID0 chết giữa chừng có thể để trạng thái không tự lành, và đó chính là bài học đáng tiền: journal không phải "ổ dữ liệu có thể thay", nó là bộ phận sống còn của node — mất journal gần như đồng nghĩa làm lại node. Cũng vì thế production nên coi cảnh báo SMART trên ổ journal là mức ưu tiên cao nhất trong 8 ổ.
Muốn mình đóng cả hai bài (data + journal) thành file 9.9-Disk-Failure-Drills.md cho bộ docs không?