1. Yêu cầu phần cứng tối thiểu cho Vector Database
Vector Database như Weaviate hay Milvus phụ thuộc nặng nề vào RAM để lưu trữ index và CPU để tính toán khoảng cách (distance calculation). SSD NVMe là bắt buộc để đảm bảo tốc độ I/O khi thực hiện Write-heavy operations.
- CPU: Tối thiểu 8 Cores, ưu tiên các dòng Intel Xeon Scalable hoặc AMD EPYC hỗ trợ tập lệnh AVX2/AVX-512 để tăng tốc vector search.
- RAM: Tối thiểu 32GB. Vector DB thường load toàn bộ index vào RAM, nên RAM càng lớn, search càng nhanh.
- Disk: Tối thiểu 1TB NVMe SSD (Gen3 hoặc Gen4). Không sử dụng HDD hoặc SATA SSD cho production.
- Network: 10GbE hoặc cao hơn nếu deploy cluster distributed.
Trước khi cài đặt, hãy xác minh phần cứng đang chạy trên server.
lscpu | grep -E "Model name|Socket|AVX"
free -h
lsblk -o NAME,SIZE,TYPE,MOUNTPOINT
Kết quả mong đợi: Thấy thông tin CPU có hỗ trợ AVX, RAM trống lớn hơn 32GB, và disk là NVMe (thường là nvme0n1).
2. Tải và kiểm tra checksum ISO Ubuntu 24.04 LTS
Sử dụng bản Server Edition (Netboot hoặc Desktop tùy chọn, nhưng ưu tiên Server để giảm overhead). Việc kiểm tra checksum (SHA256) là bắt buộc để đảm bảo file ISO không bị lỗi hoặc bị tampering.
Tải file ISO từ mirror chính thức của Ubuntu.
curl -O https://releases.ubuntu.com/24.04/ubuntu-24.04-live-server-amd64.iso
Kiểm tra checksum file vừa tải về so với giá trị chính thức từ trang Ubuntu.
sha256sum ubuntu-24.04-live-server-amd64.iso
So sánh kết quả với checksum công bố trên trang https://wiki.ubuntu.com/NobleNumbat/ReleaseNotes. Nếu khớp, file an toàn để dùng để boot.
3. Cấu hình BIOS/UEFI để tối ưu hóa hiệu năng
Vào BIOS/UEFI của server (thường nhấn F2, Del, hoặc F11 khi boot). Cần điều chỉnh các tham số sau để tối ưu ảo hóa và I/O:
- Virtualization Technology (VT-x/AMD-V): Set Enabled. Cần thiết nếu sau này chạy DB trong container hoặc VM.
- SMT / Hyper-Threading: Set Enabled cho workload tổng hợp, nhưng nếu chạy single-threaded vector search nặng, có thể cân nhắc tắt để giảm contention (tùy workload, mặc định để Enabled).
- NVMe Cache / Write-Back: Set Enabled (hoặc Performance Mode) để giảm latency disk.
- Power Management: Set Performance Mode hoặc High Performance. Tắt C-States và P-States để CPU luôn chạy ở xung nhịp cao nhất, tránh latency khi scale-up.
- NUMA: Set Enabled để tận dụng memory controller của mỗi socket CPU.
Sau khi lưu và reboot, verify trạng thái ảo hóa và NUMA trên OS.
lscpu | grep "Virtualization features"
numactl --hardware
Kết quả mong đợi: Dòng Virtualization hiện ra (Virt, VT-x, AMD-V) và numactl hiển thị 2 hoặc nhiều Node (tương ứng với số Socket CPU).
4. Cài đặt Ubuntu 24.04 với phân vùng tối ưu cho database
Boot từ ISO Ubuntu Server. Trong quá trình cài đặt (Installation), bước quan trọng nhất là Storage Configuration. Không chọn "Use entire disk" mặc định vì nó tạo swap file và phân vùng root chung, không tối ưu cho DB.
Chọn Custom storage layout (hoặc Manual partitioning) để tự tay phân vùng.
4.1. Chiến lược phân vùng
Chúng ta cần tách biệt:
1. / (Root): Cho OS và logs.
2. /var/lib/vector-db: Dành riêng cho data directory của DB.
3. Swap: Tách ra thành partition riêng để kiểm soát cache memory tốt hơn.
Giả sử bạn có 1 ổ NVMe dung lượng 1TB (ví dụ: /dev/nvme0n1). Cấu hình như sau:
- EFI System Partition: 1GB, Type EFI System.
- Root (/): 100GB, Type ext4 (hoặc XFS).
- Swap: 32GB (bằng RAM), Type swap.
- Data (/data/db): Dành hết dung lượng còn lại (khoảng 860GB), Type XFS. Lưu ý: XFS thường hiệu năng tốt hơn ext4 cho các file lớn của database.
Khi cài đặt xong, reboot máy. Đăng nhập và kiểm tra lại phân vùng.
lsblk -f
df -hT
Kết quả mong đợi: Thấy partition /data/db (hoặc /var/lib/vector-db) có dung lượng lớn và filesystem là xfs, phân vùng root khoảng 100GB, swap 32GB.
4.2. Tối ưu hóa phân vùng Data cho I/O
Với XFS, ta cần mount với các option phù hợp cho database để giảm latency và tăng throughput.
Chỉnh sửa file fstab để mount phân vùng data với option noatime (không ghi thời gian truy cập, giảm write I/O) và nodiratime.
cat /etc/fstab
Giả sử UUID của partition data là UUID-OF-DATA-PARTITION. Chỉnh sửa file /etc/fstab:
nano /etc/fstab
Thêm hoặc sửa dòng phân vùng data như sau (thay UUID thật của bạn):
UUID-OF-DATA-PARTITION /data/db xfs defaults,noatime,nodiratime,nodiscard 0 2
Áp dụng lại cấu hình mà không cần reboot:
mount -a
Verify lại mount options:
mount | grep /data/db
Kết quả mong đợi: Dòng mount hiển thị các option noatime,nodiratime,nodiscard đã được áp dụng cho /data/db.
4.3. Cài đặt các công cụ hệ thống cần thiết
Cập nhật repository và cài đặt các gói cần thiết cho việc quản lý và tối ưu hóa sau này (build-essential, htop, iotop, numactl).
apt update && apt upgrade -y
apt install -y build-essential htop iotop numactl sysbench linux-tools-$(uname -r)
Kiểm tra xem các công cụ đã sẵn sàng.
htop --version
iotop --version
numactl --version
Kết quả mong đợi: Không có lỗi, hiển thị phiên bản của các công cụ trên.
Điều hướng series:
Mục lục: Series: Tối ưu hóa Database Vector trên Ubuntu 24.04 với Linux Kernel Tuning
Phần 2: Cấu hình Linux Kernel cơ bản cho hiệu năng I/O cao »