# 從無到有安裝BeeGFS
## 簡述
本次實驗目標在於從建立KVM Virtual Machine 開始到建立一套簡單的BeeGFS系統,配置如下
| CHAR | hostname | CPU | RAM | IP | Note | VM image | Target DISK |
| ------- | ---------- | --- | --- | ----------- | --------------- | ---------------------- | ----------------------------------- |
| login01 | h2-login01 | 1 | 2G | 10.7.129.52 | | chiao_h2_login01.qcow2 | |
| MGMT | h2-mgmt | 2 | 4G | 10.7.129.60 | | chiao_h2_mgmt.qcow2 | |
| MGS+MDS | h2-mds01 | 4 | 8G | 10.7.129.61 | 20G MDT | chiao_h2_mds01.qcow2 | chiao_h2_mds01_mdt01.qcow2 |
| OSS01 | h2-ss01 | 4 | 8G | 10.7.129.62 | 5*30G OST RAID6 | chiao_h2_ss01.qcow2 | chiao_h2_ss01_ost0{1,2,3,4,5}.qcow2 |
| OSS02 | hs-ss02 | 4 | 8G | 10.7.129.63 | 5*20G OST RAID6 | chiao_h2_ss02.qcow2 | chiao_h2_ss02_ost0{1,2,3,4,5}.qcow2 |
| Netmask | Gateway | DNS |
| ------------- | --------- | ------- |
| 255.255.252.0 | 10.7.28.1 | 8.8.8.8 |
## 建立Virtual Machines
先以ISO檔安裝login01,網路設定可以選擇在安裝時以GUI設定或安裝完以後段更改網路設定部分更改
安裝時選擇最小安裝以熟悉各相容套件
### 更改網路設定
vi /etc/sysconfig/network-scripts/ifcfg-eth0
```
BOOTPROTO=static
ONBOOT=yes
IPADDR=10.7.129.##
NETMASK=255.255.252.0
GATEWAY=10.7.128.1
```
vi /etc/resolv.conf #DNS setting
```
nameserver 8.8.8.8
```
### 重啟網路並確認
```
ifdown eth0
ifup eth0
ip address
nmcli con show eth0
ping -c3 8.8.8.8
```
### 測試網路及yum
```
yum repolist
yum install wget mdadm -y
```
### 改hostname
vi /etc/hostname
``
%new hostname%
``
### 關閉SELINUX 以及 firewalld
vi /etc/syscofig/selinux
```
SELINUX=disabled
```
```
systemctl disable firewalld
systemctl stop firewalld
systemctl status firewalld
```
reboot
### 新增beegfs的repo
這邊要注意os的版本
```
wget -O /etc/yum.repos.d/beegfs_rhel7.repo https://www.beegfs.io/release/latest-stable/dists/beegfs-rhel7.repo
yum repolist
```
到此便完成第一台VM的設置,接著便依序以複製.qcow2方式安裝其他台VM,舉例如下,
```
cd /var/lib/libvirt/images/HPC-2/ #到VM image目錄下
cp chiao_h2_login01.qcow2 chiao_h2_mgmt.qcow2
```
然後再以現有DISK方式建立新的VM。
新的VM開啟後記得要更改hostname以及IP ADDRESS,方法如上面敘述
## MGMT setting
```
getenforce
systemctl status firewalld
yum install beegfs-mgmtd
/opt/beegfs/sbin/beegfs-setup-mgmtd -p /beegfs/mgmtd
systemctl start beegfs-mgmtd
systemctl status beegfs-mgmtd
```
## META setting
```
getenforce
systemctl status firewalld
yum install beegfs-meta
mkfs.ext4 /dev/vdb
mkdir -p /beegfs/mdt_01
mount /dev/vdb /beegfs/mdt_01
/opt/beegfs/sbin/beegfs-setup-meta -p /beegfs/mdt_01 -s 1 -S metadata_01_tgt_001 -m 10.7.129.60
systemctl start beegfs-meta
systemctl status beegfs-meta
```
## Storage01 setting
```
getenforce
systemctl status firewalld
yum install beegfs-storage
lsblk #confirm disk name
mdadm --create --auto=yes /dev/md0 --level=6 --raid-device=5 --spare-device=0 /dev/vd{b,c,d,e,f}
mkfs -t xfs /dev/md0
mkdir -p /beegfs/OST_01
mount /dev/md0 /beegfs/OST_01
/opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/OST_01 -s 100 -S storage_01_tgt_001 -i 101 -m 10.7.129.60
systemctl start beegfs-storage
systemctl status beegfs-storage
lsblk -f #find UUID
```
vi /etc/fstab
```
UUID=066c1049-fd5d-4da5-9c64-72666e2c2806 /beegfs/OST_01 xfs defaults 0 0
```
## Storage02 setting
```
getenforce
systemctl status firewalld
yum install beegfs-storage
lsblk #confirm disk name
mdadm --create --auto=yes /dev/md0 --level=6 --raid-device=5 --spare-device=0 /dev/vd{b,c,d,e,f}
mkfs -t xfs /dev/md0
mkdir -p /beegfs/OST_02
mount /dev/md0 /beegfs/OST_02
/opt/beegfs/sbin/beegfs-setup-storage -p /beegfs/OST_02 -s 200 -S storage_02_tgt_001 -i 201 -m 10.7.129.60
systemctl start beegfs-storage
systemctl status beegfs-storage
lsblk -f #find UUID
```
vi /etc/fstab
```
UUID=066c1049-fd5d-4da5-9c64-72666e2c2806 /beegfs/OST_02 xfs defaults 0 0
```
## Client setting
```
getenforce
systemctl status firewalld
yum install beegfs-client beegfs-helperd beegfs-utils
/opt/beegfs/sbin/beegfs-setup-client -m 10.7.129.60
mkdir /beegfs
vi /etc/beegfs/beegfs-mounts.conf #check or change mount point to /beegfs
yum insall kernel-devel-$(uname -r)
#check the connection of all nodes
beegfs-ctl --listnodes --nodetype=meta --nicdetails
beegfs-ctl --listnodes --nodetype=storage --nicdetails
systemctl start beegfs-client beegfs-helperd
beegfs-net # Displays connections the client is actually using
beegfs-check-servers # Displays possible connectivity of the services
beegfs-df # Displays free space and inodes of storage and metadata targets
```