Skip to the content.

Tìm hiểu và Sử dụng Glusterfs.

1. NFS

1.1. NFS là gì?

1.2. NFS server.

1.2.1. File cấu hình

Có 3 file cấu hình chính để thiết lập NFS server: /etc/exports, /etc/hosts.allow/etc/hosts.deny

/etc/exports Cú pháp cấu hình trong file /etc/exports:

dir host1(option) host2(option) hostn(option)

Khi thay đổi cấu hình trong /etc/exports thì chạy lệnh exportfs -ra để nfsd đọc lại nội dung file cấu hình.

/etc/hosts.allow/etc/hosts.deny Hai file này định nghĩa quyền truy cập vào các dịch vụ trên hệ thống của bạn. Mỗi dòng trong file chứa 1 dịch vụ và một hay một nhóm các host.

Chú ý

Có hai chế độ mount là sử dụng lệnh mount để mount tạm thời( khi reboot sẽ mất mount) hoặc sử dụng fstab để mount tự động sau mỗi lần reboot.

1.3. Cài đặt và cấu hình NFS trên Centos 7.

Trên server:

Trên Client:

2. Glusterfs

2.1. Giới thiệu.

GlusterFS là một open source, là tập hợp file hệ thống có thể được nhân rộng tới vài peta-byte và có thể xử lý hàng ngàn Client. GlusterFS có thể linh hoạt kết hợp với các thiết bị lưu trữ vật lý, ảo, và tài nguyên điện toán đám mây để cung cấp 1 hệ thống lưu trữ có tính sẵn sàng cao và khả năng performant cao . Chương trình này có thể lưu trữ dữ liệu trên các mô hình, các thiết bị khác nhau, nó kết nối với các node GlusterFS qua TCP và RDMA tạo ra một nguồn tài nguyên lưu trữ dữ liệu duy nhất, mốt khối lưu trữ duy nhất(distributed mode) hoặc có thể tận dụng tối đa không gian lưu trữ trên các node để có thể nhân bản dữ liệu và đặt trên nhiều node( replicated mode).

2.2. Một số khái niêm khi sử dụng GlusterFS

Trusted Storage Pool: Các server được dùng để lưu trữ được gọi là các node, tập hợp những node này khi được kết hợp lại thành một không gian lưu trữ nhờ GlusterFS được gọi là Pool.

Brick: Là bất kì thư mục lưu trữ nào trên một node nào đó mà được chia sẻ trong trusted storage pool.

Volume: Là tập hợp logic của những brick cùng hoặc trên các server khác nhau. Volume được mount và sử dụng bởi client (ví dụ: mount -t glusterfs gl1:/ /my/mnt/point).

Distributed File system: là hệ thống file mà dữ liệu trong đó được chia ra trên các node khác nhau mà người dùng sử dụng file mà không biết thực sự file đó đang ở đâu.

glusterd: là daemon quản lý glusterfs

cluster: mang ý nghĩa tương tự như trusted storage pool.

2.3. Các loại volume trong glusterfs.

Khi sử dụng Glusterfs, có thể tạo nhiều loại volume khác nhau với các chức năng, mục đích khác nhau.

Distributed volume

Replicated volume

Striped Volume

Distributed Replicated Volume

Distributed stripe volume:

Replicated stripe volume

2.4. Thực hiện một số cấu hình cơ bản.

2.4.1. Mô hình

Server:

2.4.2. Cấu hình tạo một replicated volume.

systemctl start glusterd systemctl enable glusterd

Cấu hình firewalld:

firewall-cmd –zone=public –add-port=24007-24008/tcp –permanent firewall-cmd –zone=public –add-port=24009/tcp –permanent firewall-cmd –zone=public –add-service=nfs –add-service=samba –add-service=samba-client –permanent firewall-cmd –zone=public –add-port=111/tcp –add-port=139/tcp –add-port=445/tcp –add-port=965/tcp –add-port=2049/tcp –add-port=38465-38469/tcp –add-port=631/tcp –add-port=111/udp –add-port=963/udp –add-port=49152-49251/tcp –permanent firewall-cmd –reload


Trên server **gl1(10.88.88.10)**:
- Thêm node server2 (10.88.88.20) vào pool trên gl1.

gluster peer probe 10.88.88.20

Kiểm tra với lệnh:
```sh
# gluster peer status
Number of Peers: 1

Hostname: 10.88.88.20
Uuid: e7a88b3f-a338-47f1-9db0-966c5495afd4
State: Peer in Cluster (Connected)

Lưu ý: Khi tạo replicated volume thì cần khai báo đúng số brick với số replicate. Ví dụ nếu cấu hình rep 2 thì chỉ được khai báo 2 brick, nếu khai báo hơn thì sẽ bị lỗi hoặc sẽ tạo ra distributed replicated volume nếu số brick là bộ số của số replicate.

Trên Client(10.88.88.99):

2.4.3. Cấu hình thêm node và brick vào replicated volume vừa tạo.

Trên server gl3 (10.88.88.30 ) tạo thư mục để làm brick:

mkdir /mnt/brick-on-node3

Trên server gl1, thêm server gl3 vào pool và thêm brick trên server gl3 vào volume testvol:

[root@gl1 ~]# gluster peer probe 10.88.88.30
peer probe: success. 
[root@gl1 ~]# gluster peer status 
Number of Peers: 2

Hostname: 10.88.88.20
Uuid: e7a88b3f-a338-47f1-9db0-966c5495afd4
State: Peer in Cluster (Connected)

Hostname: 10.88.88.30
Uuid: d67993e3-515f-4aa1-a9df-fa94d6302593
State: Peer in Cluster (Connected)


[root@gl1 ~]# gluster volume add-brick testvol replica 3 10.88.88.30:/mnt/brick-on-node3 force
volume add-brick: success

[root@gl1 ~]# gluster volume status testvol
Status of volume: testvol
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick 10.88.88.10:/mnt/brick-on-node1       49152     0          Y       1044 
Brick 10.88.88.20:/mnt/brick-on-node2       49152     0          Y       1032 
Brick 10.88.88.30:/mnt/brick-on-node3       49152     0          Y       1407 
Self-heal Daemon on localhost               N/A       N/A        Y       1691 
Self-heal Daemon on 10.88.88.20             N/A       N/A        Y       1552 
Self-heal Daemon on 10.88.88.30             N/A       N/A        Y       1428 
 
Task Status of Volume testvol
------------------------------------------------------------------------------
There are no active volume tasks

Kiểm tra dữ liệu trên brick của server gl3 đã thấy dữ liệu được đồng bộ.

2.4.4. Xóa brick, peer, volume với replicated volume.

Ví dụ: Volume test-vol đang có 3 brick replica với nhau, lệnh sau để gỡ một brick ra khỏi volume:

# gluster volume remove-brick test-vol rep 2 10.88.88.30:/mnt/brick-on-node3 force

Xóa một peer khỏi cluster(cần xóa các brick trên peer này nếu nó nằm trong một volume nào đó trước) :

gluster peer detach 10.88.88.30

Để xóa một volume thì ta cần dừng nó trước khi xóa:

gluster volume stop test-vol
gluster volume delete test-vol

2.4.5. Tạo distributed volume.

Lệnh trên sẽ tạo distributed volume distvol với hai brick trên 2 peer là gl1 và gl2.

gluster volume create distvol gl1:/mnt/brick1 gl2:/mnt/brick

Lệnh trên sẽ tạo distributed volume distvol với hai brick trên 2 peer là gl1 và gl2.