Sunday, January 19, 2025

Shared Storage Proxmox với NFS

-

1. Tổng quan.

Shared Storage Proxmox với NFS là một phương pháp để chia sẻ kho lưu trữ (storage) giữa các nút Proxmox trong một môi trường ảo hóa. NFS (Network File System) là một giao thức mạng cho phép chia sẻ tập tin và thư mục qua mạng.

Khi sử dụng Shared Storage Proxmox với NFS, bạn có thể chia sẻ một kho lưu trữ (thường là một hệ thống tập tin ZFS hoặc Ceph) giữa các nút Proxmox trong cụm. Một nút có thể ghi dữ liệu vào kho lưu trữ và các nút khác trong cụm có thể đọc và sử dụng dữ liệu đó. Điều này cho phép di chuyển máy ảo (VM) giữa các nút trong cụm mà không cần di chuyển dữ liệu vật lý.

Khi nào sử dụng Shared Storage Proxmox với NFS:

  • Khi bạn muốn chia sẻ kho lưu trữ giữa các nút Proxmox trong cụm để tạo điểm khôi phục dự phòng và khả năng mở rộng.
  • Khi bạn muốn di chuyển VM giữa các nút trong cụm một cách linh hoạt mà không cần sao chép lại dữ liệu.
  • Khi bạn muốn sử dụng các tính năng nâng cao của NFS như khả năng mount kho lưu trữ từ xa, quản lý quyền truy cập và bảo mật trên mạng.

Lưu ý rằng Shared Storage Proxmox với NFS yêu cầu một máy chủ NFS riêng biệt để chia sẻ kho lưu trữ và các nút Proxmox cần có quyền truy cập vào máy chủ NFS đó qua mạng.

2. Tạo máy chủ NFS.

Lưu ý nếu bạn đã có một máy chủ NFS ở ngoài thì bạn khỏi cần làm phần này, bạn chỉ cần có thông tin kết nối NFS là được. Nếu bạn chưa có NFS ngoài thì bạn làm theo các bước này của mình để tạo một NFS Server.

Để chia sẻ ZFS pool thành NFS bạn có thể làm theo các bước sau:

Cài đặt dịch vụ NFS trên máy chủ:

apt-get install nfs-kernel-server -y

Đảm bảo rằng pool ZFS (zfs-pool-mirror) đã được tạo và hoạt động trên hệ thống của bạn. Hãy kiểm tra và xác định tên của ZFS pool bạn muốn chia sẻ:

$ zpool list
NAME              SIZE  ALLOC   FREE  CKPOINT  EXPANDSZ   FRAG    CAP  DEDUP    HEALTH  ALTROOT
zfs-pool-draid   7.27T  38.5G  7.23T        -         -     0%     0%  1.00x    ONLINE  -
zfs-pool-mirror   928G  8.09G   920G        -         -     0%     0%  1.00x    ONLINE  -
zfs-pool-raidz   14.5T  16.2G  14.5T        -         -     0%     0%  1.00x    ONLINE  -

Trong kết quả, tìm tên gốc của pool ZFS bạn muốn chia sẻ (zfs-pool-mirror).

Tiếp theo, bạn cần tìm đường dẫn đến thư mục gốc của pool ZFS đó. Sử dụng lệnh zfs get mountpoint để xem đường dẫn:

$ zfs get mountpoint zfs-pool-mirror
NAME             PROPERTY    VALUE             SOURCE
zfs-pool-mirror  mountpoint  /zfs-pool-mirror  default

Kết quả sẽ hiển thị đường dẫn đến thư mục gốc của pool ZFS (ví dụ: /zfs-pool-mirror).

Tiếp theo, bạn có thể chỉnh sửa tệp cấu hình /etc/exports để chia sẻ thư mục gốc của pool ZFS với NFS. Sử dụng lệnh sau để thêm dòng vào tệp cấu hình:

grep -qxF '/zfs-pool-mirror *(rw,sync,no_subtree_check)' /etc/exports || echo '/zfs-pool-mirror *(rw,sync,no_subtree_check)' >> /etc/exports

Hãy đảm bảo trường “/zfs-pool-mirror” đúng với đường dẫn tương ứng của thư mục gốc pool ZFS.

Nếu bạn muốn tăng bảo mật bằng cách giới hạn máy chủ bạn muốn chia sẻ đến thì bạn làm theo lệnh dưới đây

grep -qxF '/zfs-pool-mirror 192.168.13.229(rw,sync,no_subtree_check)' /etc/exports || echo '/zfs-pool-mirror 192.168.13.229(rw,sync,no_subtree_check)' >> /etc/exports

Nhớ thay thế “192.168.13.229” bằng địa chỉ IP của máy chủ mà bạn muốn chia sẻ đến. Như vậy theo config này thì chỉ có máy chủ mang IP 192.168.13.229 mới có quyền truy cập vào NFS này.

Cuối cùng, hãy khởi động lại dịch vụ NFS để áp dụng các thay đổi:

sudo systemctl restart nfs-kernel-server

Sau khi hoàn tất quy trình trên, pool ZFS của bạn (zfs-pool-mirror) sẽ chỉ được chia sẻ thông qua NFS và chỉ có thư mục gốc của pool được chia sẻ.

$ showmount -e
Export list for pve-node4:
/zfs-pool-mirror 

Bạn sẽ thấy đầu ra hiển thị /zfs-pool-mirror và địa chỉ IP của máy chủ.

Bây giờ, ZFS pool đã được chia sẻ qua NFS trên máy chủ với địa chỉ IP là 192.168.13.224. Bạn có thể truy cập vào pool từ các máy khác trong mạng bằng cách mount NFS share này.

3. Mount NFS Server vào Proxmox.

Đầu tiên bạn vào phần Add NFS Server theo quy trình dưới.

Khai báo thông tin các thuộc tính sau đây của quá trình thêm NFS trong Proxmox:

  • ID: Đây là một số duy nhất được gán cho NFS share. Nó có thể được sử dụng để định danh và quản lý NFS share trong hệ thống.
  • Server: Đây là địa chỉ IP hoặc tên máy chủ của máy chủ NFS mà bạn muốn thêm vào Proxmox. Đây là máy chủ NFS chứa các tệp và thư mục mà bạn muốn chia sẻ.
  • Export: Đây là đường dẫn đến thư mục hoặc tệp bạn muốn chia sẻ từ máy chủ NFS. Đây là nơi các máy khách Proxmox có thể truy cập dữ liệu.
  • Content: Content xác định loại dữ liệu mà NFS share sẽ chứa. Có thể là “ISO Images” cho ảnh ISO, “Container Templates” cho các mẫu container, hoặc “Backup” cho sao lưu dữ liệu.
  • Nodes: Nodes xác định các node Proxmox nào sẽ có quyền truy cập vào NFS share. Bạn có thể chỉ định tất cả các node hoặc chỉ một số node cụ thể.
  • NFS Version: NFS Version xác định phiên bản NFS được sử dụng. Bạn có thể chọn giữa NFSv3 hoặc NFSv4, tùy thuộc vào sự tương thích và yêu cầu của hệ thống của bạn.

Mình giải thích thêm về tác dụng của các trường trong Content:

  • Disk image: Đây là một tệp hình ảnh của toàn bộ đĩa cứng hoặc phân vùng được sao lưu hoặc sao chép. Nó có thể được sử dụng để tạo ra một máy ảo hoặc khôi phục dữ liệu.
  • ISO image: Đây là một tệp hình ảnh của một đĩa quang (CD hoặc DVD). Nó chứa các dữ liệu và tệp tin cần thiết để cài đặt hoặc khởi động hệ điều hành hoặc phần mềm từ một đĩa ảo.
  • Container template: Đây là một bản sao của một container có sẵn, bao gồm các thiết lập và cấu hình. Nó được sử dụng để tạo ra các container mới một cách nhanh chóng và tiện lợi.
  • VZDump backup file: Đây là một tệp sao lưu của một container hoặc máy ảo trong Proxmox. Nó chứa toàn bộ dữ liệu và cấu hình của container hoặc máy ảo, cho phép khôi phục lại chúng trong trường hợp cần thiết.
  • Container: Đây là một môi trường ảo được cô lập trên một hệ điều hành chủ. Container chứa tất cả các thành phần và tệp tin cần thiết để chạy một ứng dụng hoặc dịch vụ cụ thể mà không ảnh hưởng đến hệ thống chủ.
  • Snippets: Snippets là các đoạn mã hoặc cấu hình ngắn được lưu trữ và sử dụng lại trong Proxmox. Chúng giúp tăng tính linh hoạt và hiệu suất khi cấu hình và quản lý các thành phần trong môi trường Proxmox.

Trường Preallocation trong Proxmox là tùy chọn để định cấu hình cách dữ liệu được cấp phát trước cho các tệp ảo hoặc máy ảo. Dưới đây là giải thích ngắn gọn về các tùy chọn:

  • Default: Đây là tùy chọn mặc định và không áp dụng preallocation. Dữ liệu sẽ được cấp phát theo cơ chế mặc định của hệ điều hành.
  • Off: Tùy chọn này không thực hiện preallocation. Dữ liệu sẽ được cấp phát theo cơ chế mặc định của hệ điều hành.
  • Metadata: Tùy chọn này chỉ cấp phát không gian metadata cho tệp ảo hoặc máy ảo. Dữ liệu thực tế sẽ không được cấp phát trước.
  • Full (posix fallocate): Tùy chọn này sử dụng POSIX fallocate để cấp phát toàn bộ không gian dữ liệu và metadata cho tệp ảo hoặc máy ảo. Tuy nhiên, cần lưu ý rằng điều này có thể mất thời gian và yêu cầu nhiều tài nguyên.
  • Full: Tùy chọn này cũng cấp phát toàn bộ không gian dữ liệu và metadata cho tệp ảo hoặc máy ảo. Tuy nhiên, cơ chế cụ thể được sử dụng có thể khác nhau tùy thuộc vào hệ điều hành và hệ thống tệp.

Tùy chọn Preallocation cho phép bạn định rõ cách dữ liệu được cấp phát và quản lý trong môi trường ảo hóa Proxmox. Cần lưu ý rằng việc chọn tùy chọn preallocation phù hợp sẽ phụ thuộc vào yêu cầu và mục đích sử dụng của bạn.

Khi thực hiện việc thêm lưu trữ NFS trong môi trường Proxmox và cấu hình Backup Retention, tác dụng của Backup Retention là quản lý và điều chỉnh việc giữ lại các bản sao lưu trên lưu trữ NFS theo thời gian.

Các tác dụng của Backup Retention trong việc thêm storage NFS bao gồm:

  • Quản lý không gian lưu trữ: Backup Retention cho phép xác định số lượng bản sao lưu được giữ lại trên lưu trữ NFS. Điều này giúp điều chỉnh lượng không gian lưu trữ được sử dụng bởi các bản sao lưu và tránh việc lưu trữ quá nhiều bản sao lưu không cần thiết.
  • Đảm bảo khả năng khôi phục dữ liệu: Backup Retention đảm bảo rằng bạn có sẵn các bản sao lưu gần nhất và đủ để khôi phục dữ liệu khi cần thiết. Bạn có thể xác định thời gian giữ lại bản sao lưu và tự động loại bỏ các bản sao lưu cũ hơn, đảm bảo rằng bạn chỉ giữ lại các bản sao lưu quan trọng nhất và phù hợp với yêu cầu khôi phục dữ liệu của bạn.

Nếu tích vào tùy chọn “Keep all backups” khi cấu hình Backup Retention, Proxmox sẽ giữ lại tất cả các bản sao lưu trên storage NFS mà không xóa bất kỳ bản sao lưu nào. Điều này có nghĩa là không có bản sao lưu nào sẽ bị xóa tự động và bạn phải xóa chúng thủ công khi không cần thiết nữa.

Nếu không tích vào tùy chọn “Keep all backups”, Proxmox sẽ tuân thủ các quy tắc Backup Retention mà bạn đã định cấu hình. Theo đó, các bản sao lưu sẽ được giữ lại trong một khoảng thời gian nhất định và sau đó sẽ bị xóa tự động. Quy tắc Backup Retention có thể xác định số lượng bản sao lưu được giữ lại, tuỳ thuộc vào thời gian hoặc số lượng bản sao lưu mới nhất.

Việc tích hoặc không tích vào “Keep all backups” sẽ ảnh hưởng đến việc quản lý không gian lưu trữ và quyết định xem liệu các bản sao lưu cũ hơn có bị xóa tự động hay không. Tùy thuộc vào yêu cầu và tình hình lưu trữ của bạn, bạn có thể lựa chọn tích hoặc không tích vào tùy chọn này để điều chỉnh việc giữ lại bản sao lưu trên storage NFS.

Tuỳ chọn “Maximum Protected” trong cấu hình Backup Retention cho phép bạn xác định số lượng tối đa các bản sao lưu được bảo vệ. Khi đạt đến giới hạn này, Proxmox sẽ tự động xóa các bản sao lưu cũ hơn để giữ số lượng bản sao lưu trong phạm vi giới hạn đã chỉ định.

Tác dụng của tuỳ chọn này là đảm bảo rằng không có quá nhiều bản sao lưu được lưu trữ, đồng thời vẫn duy trì đủ số lượng bản sao lưu cần thiết để khôi phục dữ liệu trong trường hợp cần. Bằng cách xóa các bản sao lưu cũ hơn, tuỳ chọn “Maximum Protected” giúp giải phóng không gian lưu trữ và đảm bảo quy trình sao lưu được thực hiện một cách hiệu quả và liên tục.

Khi đặt giá trị cho “Maximum Protected”, hãy cân nhắc số lượng bản sao lưu mà bạn muốn giữ lại để đảm bảo sự bảo vệ đủ cho dữ liệu của bạn, đồng thời đảm bảo không gian lưu trữ đủ để chứa các bản sao lưu.

Và đây là thông tin khai báo cuối cùng của mình.

Kết quả khi bạn Add NFS Storage thành công.

Bây giờ nếu bạn tạo VM hay CT trên tất cả các Node thì đều có thể tạo chúng trên NFS Storage vừa thêm này rồi nhé.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

4,956FansLike
256FollowersFollow
223SubscribersSubscribe
spot_img

Related Stories