Linux High Availability Disk on Linux use GlusterFS

vohongnhuy

Internship/Fresher
Mar 11, 2019
21
7
3
27
HCM
High Availability Disk on Linux use GlusterFS

I. Đặt vấn đề
Giả sử một doanh nghiệp có hệ thống các server Linux nhưng không có các giải pháp lưu trữ độc lập (SAN hoặc NAT).

Làm thế nào để tiết kiệm chi phí đầu tư hạ tầng, kết hợp các disk trên từng server tạo thành một hệ thống lưu trữ chung duy nhất (storage pool), với tính sẵn sàng cao, tính mở rộng, tính an toàn dữ liệu tương tự SAN/NAT?

II. Giải pháp
Sử dụng giải pháp phần mềm GlsuterFS trên Linux có thể giúp giải quyết vấn đề đặt ra. GlusterFS có chức năng tương tự công nghệ RAID và Storage Space Direct trên Window.

Tham khảo: https://www.gluster.org/

 glfs()


Gluster là một hệ thống phân tán, có thể mở rộng, tổng hợp các tài nguyên lưu trữ từ nhiều máy chủ khác nhau thành một không gian lưu trữ duy nhất.


Ưu điểm

  • Tiếp cận lên đến vài petabyte

  • Xử lý hàng ngàn client

  • Tương thích POSIX

  • Có thể sử dụng cho bất kỳ hệ thống tập tin ondisk nào hỗ trợ các thuộc tính mở rộng

  • Có thể truy cập bằng các giao thức chuẩn công nghiệp như NFS và SMB

  • Mã nguồn mở

Các doanh nghiệp có thể mở rộng quy mô, hiệu suất và tính sẵn sàng theo yêu cầu, trên cơ sở tại chỗ, đám mây công cộng và môi trường lai.


Mô hình triển khai

Các loại volume

Volume là tập hợp các hệ thống lưu trữ nhỏ lẻ (gọi là brick) và hầu hết các hoạt động của hệ thống tệp xảy ra trên ổ đĩa. Hệ thống tập tin Gluster hỗ trợ các loại volume khác nhau dựa trên các yêu cầu. Một số volume tốt cho việc tăng kích thước lưu trữ, một số để cải thiện hiệu suất và một số cho cả hai.


  • Distributed Glusterfs Volume
 glfs()

Đây là volume glusterfs mặc định, tức là trong khi tạo volume nếu không chỉ định loại volume, tùy chọn mặc định là Distributed Glusterfs Volume. Ở đây, các tập tin được phân phối trên các brick khác nhau trong volume. Vì vậy, File1 chỉ có thể được lưu trữ trong brick1 hoặc brick2 chứ không phải trên cả hai. Do đó không có dư thừa dữ liệu. Mục đích của một volume lưu trữ như vậy là để dễ dàng và tiện lợi hơn volume dung lượnzg lớn. Tuy nhiên, điều này cũng có nghĩa là một brick lỗi sẽ dẫn đến mất dữ liệu hoàn toàn.


  • Replicated Glusterfs Volume
 glfs()

Volume này khắc phục vấn đề mất dữ. Ở đây các bản sao của dữ liệu được duy trì trên tất cả các brick. Số lượng bản sao trong volume có thể được quyết định bởi cấu hình khi tạo volume. Vì vậy, cần phải có ít nhất hai brick để tạo ra một volume với 2 bản sao hoặc ba brick để tạo ra một volume với 3 bản sao. Một lợi thế lớn của volume như vậy là ngay cả khi một brick bị lỗi, dữ liệu vẫn có thể được truy cập từ các brick sao chép của nó. Một volume như vậy được sử dụng cho độ tin cậy cao, tính sẵn sàng cao hơn và dự phòng dữ liệu.


  • Distributed Replicated Glusterfs Volume
 glfs()

Số lượng brick phải là bội số của số lượng bản sao. Ngoài ra thứ tự chỉ định là các brick liền kề trở thành bản sao của nhau. Loại âm lượng này được sử dụng khi có yêu cầu sẵn sàng dữ liệu cao và tỷ lệ lưu trữ là bắt buộc. Vì vậy, nếu có tám brick và bản sao yêu cầu là 2 thì 2 brick đầu tiên trở thành bản sao của nhau, sau đó 2 brick tiếp theo và cứ thế. Volume này được ký hiệu là 4x2. Tương tự, nếu có 8 brick và bản sao yêu cầu là 4 thì 4 brick trở thành bản sao của nhau và chúng được ký hiệu là 2x4.


  • Striped Glusterfs Volume
 glfs()

Xem xét một tệp lớn đang được lưu trữ trong một brick thường được nhiều truy cập cùng một lúc. Điều này sẽ gây ra quá nhiều tải cho một brick và sẽ làm giảm hiệu suất. Trong striped volume, dữ liệu được lưu trữ trong các brick sau khi chia thành các phần khác nhau. Vì vậy, tệp lớn sẽ được chia thành các phần nhỏ hơn (bằng số lượng brick trong volume) và mỗi phần được lưu trữ trong một brick. Tải được phân phối và tệp có thể được tìm nạp nhanh hơn nhưng không có dữ liệu dự phòng.


  • Distributed Striped Glusterfs Volume
 glfs()

Điều này tương tự với striped volume nhưng ta có thể tăng kích thước volume. Số lượng brick phải là bội số của số strips.

III. Thử nghiệm giải pháp
1. Mô hình hệ thống lab thử nghiệm các giải pháp HA Disk với GlusterFS trên VMWare
 glfs()

Lab triển khai theo mô hình GlusterFS Replicated Volume

 glfs()

Chuẩn bị: Hai máy ảo VMWare chạy server Linux Centos 7 Minimal 64bit (mỗi máy 2 card mạng, nên dùng riêng một cho HA&DR (subnet 172.16.1.0/24))

  • Node1: 172.16.1.11 (hostname: node1)

  • Node2: 172.16.1.12 (hostname: node2)
Cài đặt các dich vụ cơ bản sau lên hai server:

  • Vi text editor
Thêm vào mỗi máy ảo một hard disk mới với dung lượng tuỳ chọn, reboot máy ảo.

 glfs()

Thêm 2 dòng sau vào file /etc/hosts trên mỗi máy:

172.16.1.11 node1

172.16.1.12 node2


2. Triển khai GlusterFS Replica Volume
Bước 1: Tạo phân vùng mới cho hard disk thêm vào máy ảo

Các cấu hình sau thực hiện trên node 1, cần thực hiện tương tự trên node2.

Trong từng máy ảo Centos, kiểm tra các hard disk và phân vùng bằng lệnh

#fdisk -l

 glfs()

Ta thấy hard disk mới thêm vào là /dev/sdb có dung lượng 20GB và chưa được phân vùng.

Tạo một phân vùng mới với disk trên:

#fdisk /dev/sdb

 glfs()

Bấm m để hiểu các action

 glfs()

Bấm n để thêm phân vùng mới

 glfs()

Bấm Enter 4 lần (sử dụng các cài đặt mặc định) hoặc nhập các cài đặt thay đổi tuỳ ý

 glfs()

Bấm p để xem kết quả: ta có phân vùng /dev/sdb1

 glfs()

Bấm w để lưu kết quả

 glfs()


Định dạng chuẩn cho /dev/sdb1. Với Linux, ta có các định dạng như ext2, ext3, ext4, XFS, JFS, …

Dùng lệnh tương tự sau để thay đổi, ở đây sử dụng chuẩn ext4:

#mkfs.ext4 /dev/sdb1

 glfs()

Kiểm tra cấu hình đúng

 glfs()


Bước 2: Tạo thư mục liên kết với disk

Ta có disk mới thêm vào

  • Node1: /dev/sdb1

  • Node2: /dev/sdb1
Tạo thư mục

  • Node1: /home/node1disk

  • Node2: /home/node2disk
Mount disk với thư mục

  • Node1:
#mount /dev/sdb1 /home/node1disk

Kiểm tra bằng lệnh

#df -h

 glfs()

Tự động mount ổ mỗi khi khởi động lại hệ điều hành

Thêm dòng sau vào file /etc/fstab:

/dev/sdb1 /home/node1disk ext4 defaults 0 0

#vi /etc/fstab

 glfs()

  • Node2:
#mount /dev/sdb1 /home/node2disk

Kiểm tra bằng lệnh

#df -h

 glfs()

Tự động mount ổ mỗi khi khởi động lại hệ điều hành

Thêm dòng sau vào file /etc/fstab:

/dev/sdb1 /home/node2disk ext4 defaults 0 0

#vi /etc/fstab

 glfs()

Thực hiện tạo 2 thư mục

  • Node1: /home/node1disk/data

  • Node2: /home/node2disk/data

  • Mỗi thư mục trên trong lab này là một brick trong mô hình GlusterFS Replica Volume.

Bước 3: Cài đặt và cấu hình GlusterFS

Cài đặt và start dịch vụ GlusterFS (thực hiện tương tự nhau trên 2 node):

#yum install centos-release-gluster -y

#yum install glusterfs-server -y

#systemctl enable glusterd

#systemctl start glusterd

#systemctl status glusterd

 glfs()

Lưu ý mở tường lửa cho GlusterFS trên cả 2 node

#firewall-cmd --permanent --add-service=glusterfs

#firewall-cmd --reload


Kết nối các node: trên node1

#gluster peer probe node2

 glfs()

Trên node 2 cũng làm tương tự

 glfs()

Xem status của pool

#gluster peer status

 glfs()

Taọ Volume dạng Replicated Glusterfs Volume: dữ liệu sẽ được nhân bản đến những brick còn lại. Khi dữ liệu trên 1 brick bị mất (tức là dữ liệu lưu trên một server) thì dữ liệu vẫn còn trên brick còn lại và tự động đồng bộ lại cho cả 2 server. Đảm bảo dữ liệu luôn đồng bộ và sẵn sàng. (Chỉ thực hiện trên 1 node)

Trên node1

#gluster volume create storagepool replica 2 transport tcp node1:/home/node1disk node2:/home/node2disk

 glfs()

Do lab chỉ có 2 node nên có cảnh báo về trường hợp split-brain, chọn ‘y’ và bấm Enter.

Start volume vừa tạo

#gluster volume start storagepool

 glfs()

Kiểm tra cấu hình

#gluster volume info

 glfs()

Bây giờ, trên mỗi node sẽ có 1 disk là /storagepool. Dữ liệu trên disk này ở một node sẽ được sao chép đi các node khác. Để sử dụng, ta cần mount disk này với một thư mục

  • Node1:
#mkdir /home/glusterdisk1

#mount -t glusterfs node1:/storagepool /home/glusterdisk1

 glfs()

  • Node2:
#mkdir /home/glusterdisk2

#mount -t glusterfs node1:/storagepool /home/glusterdisk2

 glfs()

Thử ghi dữ liệu vào thư mục /home/glusterdisk1

 glfs()

Dữ liệu được tự động sao chép sang /home/glusterdisk2 trên node2

 glfs()

Tự động mount ổ glusterfs với thư mục mỗi khi khởi động lại hệ điều hành

Thêm file /etc/fstab:

#vi /etc/fstab

 glfs()


 glfs()


Tham khảo https://docs.gluster.org/en/latest/ hoặc lệnh #gluster help để tìm hiểu thêm các cấu hình khác.


---HẾT---
 

About us

  • Securityzone.vn là một trang web chuyên về an ninh mạng và công nghệ thông tin. Trang web này cung cấp các bài viết, tin tức, video, diễn đàn và các dịch vụ liên quan đến lĩnh vực này. Securityzone.vn là một trong những cộng đồng IT lớn và uy tín tại Việt Nam, thu hút nhiều người quan tâm và tham gia. Securityzone.vn cũng là nơi để các chuyên gia, nhà nghiên cứu, sinh viên và người yêu thích an ninh mạng có thể trao đổi, học hỏi và chia sẻ kiến thức, kinh nghiệm và giải pháp về các vấn đề bảo mật trong thời đại số.

Quick Navigation

User Menu