Kho lưu trữ chỉ có một hướng tăng nếu không ai dọn. Bài này hướng dẫn biết dữ liệu đang nằm ở đâu, dọn thứ không cần, và đặt quy tắc để khỏi phải dọn tay mãi.
1. Trước khi dọn: biết dữ liệu đang nằm ở đâu
Đừng dọn theo cảm giác. Đo trước.
Tổng dung lượng từng bucket:
mc du cloudzone
Bên trong một bucket, nhánh nào nặng nhất:
mc du --depth 2 cloudzone/abc-sao-luu-web
Tuỳ chọn --depth cho biết nên đào tiếp vào đâu, thay vì liệt kê hàng nghìn tệp.
Những tệp lớn nhất:
mc ls --recursive cloudzone/abc-sao-luu-web | sort -k4 -h -r | head -20
Kinh nghiệm thường thấy: một phần nhỏ số tệp chiếm phần lớn dung lượng. Tìm được nhóm đó là giải quyết được gần hết bài toán.
Những tệp cũ nhất:
mc find cloudzone/abc-sao-luu-web --older-than 180d
2. Bốn nguồn phình dung lượng hay gặp
| Nguồn | Dấu hiệu | Cách xử lý |
|---|---|---|
| Bản sao lưu không ai xoá | Thư mục theo ngày, có đủ ngày từ lúc bắt đầu tới nay | Đặt quy tắc giữ bao nhiêu ngày, xem mục 3 |
| Đẩy lại toàn bộ mỗi đêm | Mỗi ngày một bản đầy đủ, dung lượng tăng đều đặn | Chuyển sang chỉ đẩy phần thay đổi |
| Phần tải lên dở dang | Dung lượng tính tiền cao hơn tổng tệp nhìn thấy | Xem mục 4 |
| Dữ liệu của dự án đã đóng | Bucket không ai đụng tới nhiều tháng | Tải về lưu nơi khác rồi xoá, hoặc xoá hẳn nếu không cần |
Nguồn thứ ba là nguồn khó thấy nhất, vì nó không hiện ra khi liệt kê tệp.
3. Dọn bản sao lưu cũ
Quy tắc đơn giản và chạy được: giữ 30 ngày gần nhất, xoá cũ hơn.
Xem trước sẽ xoá những gì, chưa xoá thật:
mc find cloudzone/abc-sao-luu-web/web --older-than 30d
🔴 Luôn chạy lệnh xem trước và đọc hết danh sách. Xoá trong Object Storage là xoá thật, không có thùng rác.
Xoá thật:
mc rm --recursive --force --older-than 30d cloudzone/abc-sao-luu-web/web
Với rclone:
rclone delete cloudzone:abc-sao-luu-web/web --min-age 30d --dry-run # xem truoc
rclone delete cloudzone:abc-sao-luu-web/web --min-age 30d # xoa that
rclone rmdirs cloudzone:abc-sao-luu-web/web --leave-root # don thu muc rong
Quy tắc giữ nên cân nhắc, không nên lấy 30 ngày làm mặc định cho mọi thứ:
| Loại dữ liệu | Gợi ý giữ |
|---|---|
| Sao lưu hằng ngày của website | 14 tới 30 ngày |
| Sao lưu cơ sở dữ liệu | 30 ngày, kèm giữ riêng bản cuối mỗi tháng |
| Chứng từ, sổ sách | Theo quy định của ngành, thường nhiều năm |
| Tệp tạm, kết xuất trung gian | 7 ngày |
Một cách bố trí gọn: mỗi loại một bucket riêng, rồi mỗi bucket một quy tắc. Dồn chung một bucket thì không đặt quy tắc riêng được.
4. Phần tải lên dở dang: chỗ tốn tiền mà không ai thấy
Khi tải một tệp lớn, công cụ cắt nó thành nhiều phần rồi ghép lại. Nếu lượt tải bị ngắt giữa chừng, những phần đã lên vẫn nằm lại trên kho nhưng không hiện ra khi liệt kê tệp.
Chúng vẫn tính vào dung lượng. Với một hệ thống sao lưu đêm nào cũng chạy và thỉnh thoảng đứt, lượng rác này tích lại đáng kể sau vài tháng.
Xem có bao nhiêu:
mc ls --incomplete --recursive cloudzone/abc-sao-luu-web
Dọn:
mc rm --incomplete --recursive --force cloudzone/abc-sao-luu-web
Nên đưa lệnh xem vào việc kiểm hằng tháng. Đây là chỗ hay giải thích được câu hỏi “vì sao dung lượng tính tiền cao hơn tổng tệp tôi thấy”.
5. Tự động hoá để khỏi phải nhớ
Dọn tay thì tháng đầu ai cũng làm, tháng thứ tư thì quên. Đưa vào lịch chạy tự động:
Tạo tệp /root/don-kho.sh:
#!/bin/bash
set -euo pipefail
BUCKET=cloudzone:abc-sao-luu-web
# Xoa ban sao luu cu hon 30 ngay
rclone delete "$BUCKET/web" --min-age 30d --log-file /var/log/don-kho.log --log-level INFO
rclone rmdirs "$BUCKET/web" --leave-root
# Ghi lai dung luong con lai de theo doi theo thang
echo "$(date +%F) $(rclone size "$BUCKET" --json)" >> /var/log/dung-luong-kho.log
Cấp quyền chạy rồi hẹn giờ mỗi tuần một lần:
chmod +x /root/don-kho.sh
crontab -e
Thêm dòng chạy 3 giờ sáng Chủ nhật:
0 3 * * 0 /root/don-kho.sh
Dòng ghi dung lượng vào nhật ký là phần đáng giá nhất của kịch bản này: sau vài tháng, quý Khách hàng có một bảng số cho biết kho đang tăng bao nhiêu mỗi tháng, và còn bao lâu nữa thì chạm hạn mức.
6. Giảm dung lượng mà không xoá gì
Ba cách, làm được ngay:
Nén trước khi đẩy. Dữ liệu dạng chữ nén rất tốt: kết xuất cơ sở dữ liệu, nhật ký, tệp cấu hình. Ảnh và video thì nén thêm gần như không ăn thua.
mysqldump ten_csdl | gzip > sao-luu.sql.gz
Chỉ đẩy phần thay đổi. Thay vì mỗi đêm đẩy lại toàn bộ thư mục, dùng lệnh so sánh rồi chỉ gửi phần khác. Đây là cách giảm được nhiều nhất, và nó giảm cả băng thông.
Loại thứ không cần sao lưu. Thư mục bộ nhớ đệm, tệp tạm, thư viện tải lại được:
rclone copy /var/www cloudzone:abc-sao-luu-web/web \
--exclude "*.log" --exclude "cache/**" --exclude "node_modules/**" --exclude "vendor/**"
Riêng node_modules và vendor thường chiếm phần lớn dung lượng của một thư mục website, trong khi chúng tải lại được từ tệp khai báo gói. Loại chúng ra thường giảm được rất nhiều.
7. Theo dõi theo tháng
Bốn con số nên ghi lại mỗi tháng:
| Con số | Lấy bằng |
|---|---|
| Dung lượng từng bucket | mc du cloudzone |
| Tăng bao nhiêu so với tháng trước | So với dòng ghi tháng trước |
| Phần tải dở dang | mc ls --incomplete --recursive |
| Băng thông đã dùng | Xem trong Portal Cloudzone |
Biết tốc độ tăng là biết còn bao lâu nữa phải mua thêm. Đó là thứ cho phép chuẩn bị trước thay vì xử lý gấp.
8. Khi cần thêm dung lượng
Mua thêm addon ngay trong Portal Cloudzone, hoặc nâng lên gói lớn hơn. Cả hai cách đều giữ nguyên dữ liệu và khoá truy cập, không phải cấu hình lại công cụ.
Quý Khách hàng muốn tư vấn gói phù hợp với tốc độ tăng dữ liệu của mình, hãy liên hệ đội ngũ kinh doanh Cloudzone hoặc nhắn qua ô chat trên trang chủ.
9. Câu hỏi thường gặp
Xoá nhầm thì lấy lại được không? Không. Xoá là xoá thật. Đây là lý do mọi lệnh xoá trong bài đều có bước xem trước.
Xoá dữ liệu xong dung lượng có giảm ngay không? Có, ngay sau khi lệnh xoá chạy xong. Nếu không giảm, kiểm phần tải dở dang ở mục 4.
Tôi nên để bao nhiêu bucket? Mỗi việc một bucket. Tách sẵn thì mỗi việc đặt được quy tắc giữ riêng, và xoá một việc không đụng tới việc khác.
Dọn bằng tay hay tự động? Tự động, với một ngoại lệ: lần đầu tiên hãy làm tay và đọc kỹ danh sách sẽ xoá. Đặt lịch tự động cho một quy tắc chưa kiểm là cách nhanh nhất để mất dữ liệu đều đặn mỗi tuần.