Tối ưu hóa bộ nhớ nút
Kaia v2.1.0 giới thiệu hai tính năng tối ưu hóa lưu trữ bổ sung có thể giảm đáng kể yêu cầu về không gian đĩa:
- Nén cơ sở dữ liệu: Giảm dung lượng lưu trữ bằng cách nén dữ liệu khối lặp lại.
- FlatTrie State Scheme: Tính năng thử nghiệm giúp giảm đáng kể kích thước cơ sở dữ liệu trạng thái của các nút lưu trữ.
Hướng dẫn này giải thích cách áp dụng các tối ưu hóa này cho nút Kaia của bạn.
Nén cơ sở dữ liệu
Nén cơ sở dữ liệu sử dụng thuật toán nén Snappy tích hợp sẵn trong LevelDB để giảm kích thước của tiêu đề khối, nội dung giao dịch và biên lai — những thành phần thường chứa dữ liệu lặp lại như việc thêm số 0 vào các giao dịch được mã hóa theo ABI.
Tiết kiệm dự kiến:
- Nút đầy đủ: Giảm khoảng 2TB (từ khoảng 4,2TB xuống còn khoảng 2TB trên Mainnet)
Điều kiện tiên quyết
- Kaia phiên bản 2.1.0 hoặc cao hơn
- Đối với nén thủ công: Dung lượng đĩa trống đủ và khả năng xử lý I/O đĩa liên tục (xem phần Tác động tài nguyên bên dưới)
Bật nén cho các cài đặt mới
Từ phiên bản v2.1.0 trở đi, tính năng nén được bật theo mặc định. Chỉ cần khởi động nút của bạn:
Cài đặt gói:
# Configure network in kend.confsudo vi /etc/kend/conf/kend.conf# Set: NETWORK=mainnet or NETWORK=kairos# Start node (compression enabled by default in v2.1.0+)kend start# Verifykend statustail -f /var/kend/logs/kend.out
Tất cả dữ liệu mới được ghi sẽ được nén tự động.
Bật nén cho các nút hiện có
Nếu bạn đang nâng cấp từ phiên bản trước v2.1.0:
Bước 1: Kiểm tra phiên bản của bạn
ken version
Bước 2: Đối với phiên bản v2.1.0 và các phiên bản sau đó
Chức năng nén đã được kích hoạt theo mặc định. Dữ liệu mới được nén tự động. Bỏ qua Bước 4 để nén dữ liệu hiện có.
Bước 3: Chỉ áp dụng cho các phiên bản trước v2.1.0
Thêm cờ nén vào cấu hình của bạn:
Cài đặt gói:
sudo vi /etc/kend/conf/kend.conf# Add to ADDITIONAL variable:ADDITIONAL="--db.leveldb.compression 2"
Giá trị của cờ nén là:
0: Không nén1: Nén hóa đơn2: Nén tiêu đề, nội dung và biên lai (được khuyến nghị)3: Nén tất cả các bảng bao g ồm cây trạng thái (không được khuyến nghị)
Tùy chọn 2 được khuyến nghị vì dữ liệu cây trạng thái (state trie) không nén tốt (trông ngẫu nhiên), do đó tùy chọn 3 chỉ mang lại lợi ích bổ sung tối thiểu.
Sau đó khởi động lại:
kend stopkend start
Bước 4: Nén dữ liệu hiện có (tùy chọn nhưng được khuyến nghị)
Kích hoạt quá trình nén cơ sở dữ liệu thông qua RPC. Kết nối với bảng điều khiển nút của bạn:
ken attach --datadir /var/kend/data
Trong giao diện điều khiển, kích hoạt quá trình nén bằng cách sử dụng preset "allbutstate":
> debug.chaindbCompact({ "preset": "allbutstate" })null
Các preset có sẵn:
"default": Nén toàn bộ các thành phần cơ sở dữ liệu"allbutstate": Nén chọn lọc loại trừ cây trạng thái (được khuyến nghị cho nén)"custom": Định nghĩa các khoảng tùy chỉnh cho các bảng cơ sở dữ liệu cụ thể.
Quá trình nén diễn ra ở chế độ nền. Theo dõi tiến trình trong nhật ký nút của bạn:
tail -f /var/kend/logs/kend.out | grep -i Compact
Bạn nên thấy các mục nhật ký như sau:
INFO[07/25,12:50:17 Z] [3] Compacting database started range=0x48-0x49INFO[07/25,12:55:17 Z] [3] Compacting database completed range=0x48-0x49 elapsed=5m0.085s
Nút sẽ tiếp tục xử lý các khối trong quá trình nén.
Thời gian dự kiến: Khoảng 10 giờ cho một nút chính (Mainnet) đầy đủ (trên SSD với khoảng 4TB dữ liệu). Thời gian thực hiện có thể thay đổi tùy thuộc vào phần cứng và kích thước dữ liệu.
Tác động đến tài nguyên:
- Tốc độ I/O đĩa cao (đỉnh >400 MiB/s đọc, >300 MiB/s ghi)
- Tốc độ IOPS cao (thường >2000 thao tác/giây)
- Nút vẫn hoạt động bình thường và tiếp tục đồng bộ hóa các khối.
Trong khi nút vẫn hoạt động trong quá trình nén, hiệu suất truy vấn có thể bị ảnh hưởng trong các khoảng thời gian đỉnh điểm I/O. Đối với các nút RPC sản xuất, hãy lên lịch nén dữ liệu trong các khung thời gian bảo trì hoặc các khoảng thời gian có lưu lượng truy cập thấp.