Giải thích

NAS chậm: khi nào nên nâng RAM thay vì mua SSD cache?

SSD cache không chữa được mọi nguyên nhân khiến NAS chậm. Phân biệt thiếu RAM, đọc ngẫu nhiên và ghi đồng bộ để chọn đúng nâng cấp, tránh mua SSD rồi vẫn phải chờ.

Tóm tắt nhanh

  • NAS thiếu RAM sẽ phải nhường bộ nhớ giữa ứng dụng và cache; SSD cache không thay thế bộ nhớ chạy ứng dụng.
  • Cache chỉ đọc có ích khi dữ liệu được đọc lại nhiều lần và không còn nằm trong RAM. Chép file lớn hay sao lưu một lượt thường không phải tác vụ phù hợp.
  • Cache đọc/ghi có thể tăng tốc cơ sở dữ liệu chờ ghi đồng bộ, nhưng cần xem cả khả năng chịu lỗi lẫn độ bền SSD.
  • Chọn nâng cấp theo biểu đồ tài nguyên và tác vụ thực tế; giới hạn RAM, khe M.2 và chính sách ổ tương thích khác nhau giữa từng model NAS.

Một NAS mở thư viện ảnh chậm chưa chắc cần ổ SSD. Nếu cùng lúc máy đang lập chỉ mục ảnh, chạy container và sao lưu, nguyên nhân có thể là bộ nhớ chạy ứng dụng đã quá chật. Mua thêm SSD để làm cache trong tình huống ấy là nâng cấp một phần khác với phần đang gây chậm.

Điểm dễ nhầm nằm ở tên gọi: RAM cũng tham gia lưu đệm dữ liệu, nhưng SSD cache không làm mọi việc của RAM. Quyết định đúng cần tách ba câu hỏi: ứng dụng có đủ bộ nhớ hoạt động không, dữ liệu đọc lại có còn trong cache không, và tác vụ có phải chờ ghi xuống thiết bị lưu trữ hay không. Mỗi câu hỏi dẫn đến một cách xử lý khác nhau.

Ứng dụng thiếu RAM thì cache SSD không giải quyết đúng chỗ

Các module RAM được cầm trước thiết bị NAS
RAM dành cho ứng dụng và dữ liệu lưu đệm cần được tính trước khi mua thêm SSD cache. Nguồn ảnh: XDA Developers.

RAM phải đủ cho hệ điều hành và ứng dụng trước khi phần còn lại được dùng hiệu quả để lưu đệm. Container là cách đóng gói ứng dụng, không phải cách khiến ứng dụng ngừng cần bộ nhớ. Chạy thêm dịch vụ ảnh, thư viện phim hoặc cơ sở dữ liệu đều làm tăng lượng bộ nhớ hệ thống phải chia sẻ.

Thanh RAM trước các thiết bị NAS
Nâng RAM phải theo khả năng tương thích của đúng model NAS, không lấy cấu hình máy khác làm chuẩn. Nguồn ảnh: XDA Developers.

Khi áp lực bộ nhớ lớn, một phần dữ liệu của ứng dụng có thể được chuyển sang swap, tức vùng lưu trữ dùng để hỗ trợ bộ nhớ. Đến lúc cần lại phần dữ liệu đó, hệ thống phải đọc nó trở về RAM. Nếu swap nằm trên HDD, độ trễ của ổ cơ sẽ đi vào đường xử lý của ứng dụng. Một cache phục vụ các block trên volume không thể được xem như thanh RAM bổ sung cho tiến trình đang chạy.

Docker Desktop hiển thị trên laptop Lenovo Legion
Các ứng dụng đóng gói thành container vẫn cần RAM để chạy, dù được triển khai trên máy tính hay NAS. Nguồn ảnh: XDA Developers.

Vì vậy, cần nhìn hành vi khi máy chậm, thay vì chỉ nhìn một con số phần trăm sử dụng bộ nhớ. Dung lượng RAM hiển thị là đã dùng có thể bao gồm cache hữu ích, còn swap đã có dữ liệu cũng chưa đủ để kết luận đang xảy ra thiếu bộ nhớ nghiêm trọng. Dấu hiệu đáng quan tâm hơn là hoạt động swap diễn ra cùng lúc ứng dụng phản hồi kém, RAM dành cho ứng dụng tăng và nhiều dịch vụ cùng tranh tài nguyên.

Nâng RAM có hai lợi ích ở đây: bớt phải đẩy dữ liệu ứng dụng ra ổ đĩa, đồng thời để lại nhiều khoảng trống hơn cho cache. Nhưng không nên mua ngay dung lượng tối đa nếu tác vụ hiện tại chưa dùng đến. Cũng không thể áp một mức RAM chung cho mọi NAS: model khác nhau có giới hạn nâng cấp và loại bộ nhớ khác nhau, kể cả yêu cầu ECC để kiểm tra, sửa một số lỗi bộ nhớ.

Cache trong RAM đã phục vụ nhiều lượt đọc trước SSD

Đồ họa TrueNAS về mở rộng ARC bằng L2ARC
L2ARC mở rộng cache đọc khi tập dữ liệu sử dụng vượt RAM, không bổ sung bộ nhớ chạy ứng dụng. Nguồn ảnh: TrueNAS.

Với dữ liệu được truy cập lặp lại, RAM thường là nơi cần mở rộng trước. Trên hệ thống Linux, page cache giữ dữ liệu file đã đọc để tránh phải truy cập thiết bị lưu trữ ở lần sau khi dữ liệu còn trong bộ nhớ. Với ZFS, ARC là cơ chế cache riêng, có chính sách thích nghi theo cách dữ liệu được sử dụng. Hai cơ chế không nên bị gọi gộp thành một tính năng giống hệt nhau.

Điểm chung là dữ liệu còn trong RAM có thể được phục vụ mà không cần chờ ổ đĩa. Khi ứng dụng cần bộ nhớ, hệ thống điều chỉnh phần dành cho cache. RAM trống ít vì đã dùng để lưu đệm không tự động là dấu hiệu xấu; giữ RAM nhàn rỗi trong khi liên tục đọc lại từ ổ chậm cũng không phải mục tiêu tối ưu.

Điều cần ước lượng là tập dữ liệu đang được dùng thường xuyên, không phải tổng dung lượng thư viện. Kho phim rất lớn không có nghĩa cả kho cần nằm trong cache. Ngược lại, cơ sở dữ liệu ảnh, thumbnail và metadata được truy cập nhiều lần có thể nhỏ hơn hẳn tổng dung lượng ảnh gốc. Nếu phần dữ liệu lặp lại vẫn vừa trong RAM, cache SSD có thể chủ yếu giữ thêm một bản sao ở tầng chậm hơn.

SSD đọc vẫn có chỗ dùng khi phần dữ liệu ấy vượt khả năng lưu đệm của RAM, hoặc máy đã chạm giới hạn nâng bộ nhớ. Trên TrueNAS, L2ARC mở rộng tầng cache đọc ra SSD; thiết bị hỏng thì hệ thống quay lại đọc từ pool lưu trữ. Nó không thay thế RAM để chạy ứng dụng, và không phải cache ghi. Mua L2ARC chỉ vì NAS đang chậm khi ghi dữ liệu là chọn sai cơ chế.

Benchmark đọc nhanh hơn chưa chắc làm container mở nhanh hơn

Dockflare trong giao diện quản lý container Synology
Khởi động container có cả đọc và ghi dữ liệu, nên cache chỉ đọc không bảo đảm ứng dụng mở nhanh hơn. Nguồn ảnh: XDA Developers.

Hiệu quả cache phải được đánh giá bằng tác vụ cần cải thiện, không bằng riêng tỷ lệ cache hit. Một phép đọc ngẫu nhiên lần hai có điều kiện rất thuận lợi cho cache đọc: dữ liệu đã được truy cập, các block phù hợp có cơ hội nằm trên SSD. Khởi động ứng dụng hay giải nén file lại có thể bao gồm đọc mới, tạo file và ghi metadata, nên không hưởng lợi theo cùng cách.

XDA công bố phép thử trên Synology DS1621xs+ với hai HDD Seagate Exos 20 TB chạy RAID 1, DSM 7.4.1 và hai module Intel Optane M10 16 GB. Bảng dưới so sánh các chế độ trên cùng hệ thống, không phải so sánh ba NAS khác nhau. Optane có độ trễ thấp, nên không nên lấy kết quả này làm mức tăng tốc chắc chắn của mọi SSD NVMe.

Phép thửDS1621xs+ — HDDDS1621xs+ — cache chỉ đọcDS1621xs+ — cache đọc/ghi
fio đọc ngẫu nhiên 4K, QD32, lượt hai (IOPS; cao hơn tốt hơn)8223.5424.250
fio đọc ngẫu nhiên 4K, QD1, độ trễ trung bình (ms; thấp hơn tốt hơn)5,970,230,18
fio ghi ngẫu nhiên 4K, QD32 (IOPS; cao hơn tốt hơn)*27.64333.91833.879

Số liệu: XDA Developers, phép thử fio 4K. QD là số yêu cầu I/O đang chờ xử lý. *Kết quả ghi chịu ảnh hưởng của cơ chế copy-on-write của Btrfs và bộ đệm RAM trong DSM, không đại diện cho năng lực ghi ngẫu nhiên thuần của hai HDD.

Phép thử ứng dụngDS1621xs+ — HDDDS1621xs+ — cache chỉ đọcDS1621xs+ — cache đọc/ghi
Khởi động lạnh container PostgreSQL (giây; thấp hơn tốt hơn)33,135,17,2
pgbench, 8 client (giao dịch/giây; cao hơn tốt hơn)109110366
Giải nén mã nguồn Linux, 81.703 file (giây; thấp hơn tốt hơn)17,919,019,1
Duyệt thư mục lạnh với các file trên (giây; thấp hơn tốt hơn)2,15,21,2

Số liệu: XDA Developers, pgbench 8 client và các tác vụ file.

Cache chỉ đọc cải thiện rõ phép đọc tổng hợp nhưng gần như không thay đổi thông lượng PostgreSQL, còn khởi động container và giải nén không nhanh hơn. Cache đọc/ghi cải thiện tác vụ cơ sở dữ liệu, trong khi giải nén vẫn không được lợi. Sự khác biệt ấy có giá trị lựa chọn hơn một tuyên bố chung rằng SSD nhanh hơn HDD.

XDA ghi nhận tỷ lệ hit của cache chỉ đọc là 64%; bài phân tích tiếp theo cũng lưu ý các số đo cache được thực hiện khi cache RAM bị tắt có chủ đích. Đây không phải bảng so sánh nâng RAM với nâng SSD. Nó cho thấy cần kiểm tra đường I/O của tác vụ, chứ không chứng minh một mức RAM cụ thể sẽ đạt các số đo nào.

Cache lớn cũng lấy bớt RAM, còn cache ghi thêm yêu cầu an toàn

Vị trí lắp SSD cache trên NAS Synology
SSD cache cần RAM để quản lý block; dung lượng SSD phải được chọn cùng ngân sách bộ nhớ hệ thống. Nguồn ảnh: XDA Developers.

SSD cache cần bộ nhớ để quản lý dữ liệu đã lưu, nên thêm dung lượng cache không miễn phí về tài nguyên hệ thống. Trên một NAS vốn thiếu RAM, phần quản lý này có thể làm lựa chọn mua SSD kém hiệu quả hơn dự tính. Cần tính nó vào ngân sách bộ nhớ ngay khi chọn kích thước cache.

XDA nêu mức khoảng 400 KB RAM cho mỗi GB cache trên DSM 7, với giới hạn phần RAM dành cho quản lý cache là 25% bộ nhớ lắp đặt. Đây là giới hạn về bộ nhớ dùng để quản lý cache, không phải SSD chỉ được có dung lượng bằng một phần tư RAM. Hai đại lượng khác đơn vị và khác vai trò; nhầm chúng sẽ dẫn tới cách tính dung lượng SSD sai.

TrueNAS nêu overhead L2ARC khoảng 96 byte header trong ARC cho mỗi block được cache. Record nhỏ tạo nhiều block hơn trên cùng dung lượng, nên chi phí RAM cao hơn so với record lớn. Tài liệu đưa ví dụ record 16K cho tác vụ ảo hóa và 1M cho media hoặc backup. Không thể áp một tỷ lệ RAM trên GB cố định của DSM sang ZFS rồi cho rằng đã tính xong.

Về an toàn, cache chỉ đọc chứa bản sao của dữ liệu đã nằm trên pool; mất thiết bị cache chủ yếu làm mất lợi ích hiệu năng. Cache đọc/ghi giữ cả dữ liệu mới chưa được ghi hết về HDD, nên yêu cầu chịu lỗi khác hẳn. Mirror giúp chịu lỗi ổ trong giới hạn của cấu hình, nhưng không thay thế bản sao lưu độc lập.

Cơ sở dữ liệu dùng lệnh như fsync để yêu cầu hoàn tất ghi xuống lưu trữ bền vững trước khi tiếp tục. RAM nhiều hơn không tự thay thế bước xác nhận đó mà vẫn giữ nguyên đảm bảo dữ liệu. Vì vậy cache đọc/ghi có thể đáng tiền khi tác vụ chờ ghi đồng bộ; lựa chọn phải đi kèm kiểm tra khả năng tương thích, độ bền SSD và phương án mất điện. Không nên tắt cơ chế bảo vệ dữ liệu chỉ để làm đẹp số đo.

Trên ZFS, L2ARC và SLOG có nhiệm vụ khác nhau: một bên mở rộng cache đọc, bên kia phục vụ đường ghi đồng bộ qua log riêng. Cũng cần phân biệt chúng với special vdev, nơi có thể chứa dữ liệu thiết yếu của pool. Không phải cứ thêm một SSD có chữ cache trong hướng dẫn là mức rủi ro sẽ giống nhau.

NAS gia đình cần kiểm tra mạng và loại dữ liệu trước khi mua thêm ổ

Màn hình TV hiển thị thư viện phim và các ứng dụng phát nội dung
Phát phim và duyệt thư viện có đường truy cập dữ liệu khác nhau; cần xác định tác vụ nào đang chậm. Nguồn ảnh: XDA Developers.

Với thư viện phim và nơi nhận backup, khoản nâng cấp đáng cân nhắc đầu tiên có thể không phải RAM hay SSD. Truyền file lớn phụ thuộc tốc độ ổ, đường mạng và máy nhận; một cache đọc ngẫu nhiên không tự tăng băng thông cổng mạng. RAM cũng không biến HDD thành SSD khi phải đọc liên tục một lượng dữ liệu mới.

Cache đọc hiệu quả khi có sự lặp lại. Một lần sao lưu đọc hoặc ghi chủ yếu dữ liệu mới ít tạo cơ hội tái sử dụng các block đã cache. Tuy nhiên, không nên gọi mọi thao tác trong phần mềm ảnh hay backup là tuần tự: duyệt thumbnail, đọc metadata và cập nhật cơ sở dữ liệu có thể khác với chuyển file ảnh gốc hoặc truyền một file phim lớn. Cần tách tác vụ cụ thể thay vì kết luận theo tên ứng dụng.

Hành vi còn phụ thuộc nền tảng. Cache Synology nhắm vào I/O ngẫu nhiên, còn L2ARC ít hiệu quả với dữ liệu đọc tuần tự không quay lại. Điều đó không đồng nghĩa mọi phiên bản ZFS luôn bỏ qua tuyệt đối mọi luồng tuần tự. Cách diễn đạt chính xác hơn là dữ liệu chỉ đi qua một lần khó đem lại lợi ích đủ lớn cho cache đọc.

Ở Việt Nam, LagiHitech đang niêm yết Synology DS224+ ở mức 8.750.000 đồng, đã gồm VAT. Trang bán hàng ghi cấu hình bộ nhớ và kết nối như bảng dưới. Đây là ví dụ cho thấy cần xem giới hạn của đúng model trước khi áp lời khuyên nâng cấp từ một NAS cao cấp hơn.

Thông số hoặc giáSynology DS224+
Giá niêm yết tại LagiHitech8.750.000 đồng
Khay ổ đĩa2 khay
RAM mặc định2 GB DDR4
RAM tối đa theo trang bán hàng6 GB
Kết nối mạng2 cổng RJ-45 1 GbE
Bảo hành theo trang bán hàng24 tháng

Số liệu và giá: LagiHitech. Giá tại thời điểm đối chiếu có thể thay đổi; cần xác nhận cấu hình ổ đi kèm khi đặt mua.

Giới hạn bộ nhớ của DS224+ trong bảng không giống DS1621xs+ dùng trong phép thử. Đừng đặt mua bộ RAM theo cấu hình benchmark rồi mới kiểm tra máy của mình có nhận hay không. Với người mua NAS mới, nên so chi phí cả hệ thống: enclosure, ổ lưu trữ, phần nâng cấp thật sự cần và bản sao lưu. Khe M.2 trống không phải lý do đủ để cộng ngay một cặp SSD vào giỏ hàng.

Chọn nâng cấp theo tác vụ chậm, không theo khe cắm còn trống

NAS Synology màu trắng đặt trên mặt gỗ
NAS gia đình nên được nâng cấp theo công việc cần cải thiện, không chỉ theo số khe mở rộng còn trống. Nguồn ảnh: XDA Developers.

Quyết định nâng cấp nên bắt đầu ở thời điểm NAS phản hồi chậm. Mở công cụ theo dõi tài nguyên, chạy lại đúng tác vụ đó và xem bộ nhớ ứng dụng, hoạt động swap, mức bận của ổ cũng như đường mạng. Nếu nhiều dịch vụ chỉ chậm khi chạy đồng thời, thử giảm tải trước để kiểm tra có phải chúng đang tranh RAM hay không.

Nếu thiếu bộ nhớ hoạt động, ưu tiên RAM tương thích trong giới hạn model. Nếu bộ nhớ vẫn đủ mà cơ sở dữ liệu phải chờ ghi nhỏ liên tục, xem lại đường ghi và lựa chọn cache đọc/ghi hoặc volume SSD riêng nếu nền tảng hỗ trợ. Volume riêng giúp đặt dữ liệu ứng dụng trực tiếp trên SSD, nhưng dữ liệu ở đó vẫn cần chịu lỗi và backup; không phải cứ tách khỏi HDD là đã an toàn.

Cache chỉ đọc đáng cân nhắc sau khi xác định dữ liệu được đọc lại nhiều lần, không vừa trong RAM và đang phải quay về ổ chậm. Sau khi thêm cache, so thời gian hoàn thành tác vụ với trước đó; trên TrueNAS có thể xem thêm ARC và L2ARC hit/miss cùng overhead metadata. Nếu con số cache đẹp mà công việc không nhanh hơn, không có lý do tiếp tục tăng dung lượng chỉ để nâng tỷ lệ hit.

Với NAS chủ yếu giữ phim và nhận backup, chưa chứng minh được nút thắt thì nên giữ nguyên cấu hình. Khoản tiền nâng cấp có thể hữu ích hơn cho một bản sao lưu tách biệt. Khi đã xác định thiếu RAM hoặc chờ ghi đồng bộ, hãy mua đúng phần giải quyết vấn đề ấy; SSD nhanh không bù được một quyết định nâng cấp sai mục tiêu.

Nguồn tham khảo: XDA Developers — RAM và SSD cache, XDA Developers — phép thử Optane trên DS1621xs+, TrueNAS — ARC và L2ARC, Synology — DS1621xs+, LagiHitech — DS224+

Bài viết mới nhất