# 1 准備工作
### 1.1 添加以太網址
添加以太網地址,使得gio017可以訪問到需要安裝的節點。
修改gio017上的/etc/hosts,將需要批量操作的節點名以如下方式添加。
```
[gio017:/etc/hosts]
......
20.0.2.15 gio015
20.0.2.16 gio016
......
```
### 1.2 配置c3
配置c3使得可以在gio017上進行批量操作。
修改gio017上的/etc/c3.conf,將需要批量操作的節點名以如下方式添加。
```
[gio017:/etc/c3.conf]
cluster giotest {
gio017
gio00[1-9]
gio01[0-6]
gmds00[1-2]
}
```
### 1.3 配置信任關系
配置信任關系使得從gio017上訪問需要安裝的節點時,無需輸入密碼。
將gio017:/root/.ssh/ 拷貝到所有節點的/root/.ssh/覆蓋。
```
for i in `seq -w 1 16`;scp /root/.ssh gio0[$i]:/root/;done
scp /root/.ssh/ gmds001:/root
scp /root/.ssh/ gmds002:/root
```
# 2 軟件安裝
### 2.1安裝Lustre核心,查看當前的核心版本
```
uname -r
```
如果使用uname -r 查看核心版本顯示為2.6.32-431.29.2.lustre.el6.x86_64,則不需要繼續安裝。
### 2.2安裝核心
將/home/rpms 拷貝到將配置的節點的/home/rpms覆蓋,並安裝kernel,安裝目錄為/home/rpms/kernel。
確認安裝完成。
安裝完了,即可重啟。
```
cexec giotest: ‘cd /home/rpms/kernel; rpm -ivh *.rpm –force’
```
### 2.3 e2fs安裝
安裝e2fsprogs,安裝目錄為/home/rpms/e2fs。
```
cexec giotest: ‘cd /home/rpms/e2fs; rpm -Uvh *.rpm’
```
### 2.4 安裝IBA
#### 2.4.1 安裝IBA驅動
在gio017上找到IBA的安裝包,安裝包路徑為/root/wup/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz,然后拷貝到需要安裝的節點進行解壓
```
gio017:/root/wup/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz
tar -zxvf MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext.tgz
```
進入到解壓目錄 /root/MLNX_OFED_LINUX-2.4-1.0.4-rhel6.6-ext/, 然后執行以下命令行進行IBA的安裝
```
./mlnxofedinstall --force --hypervisor --enable-sriov
```
安裝后重啟IB服務
```
service openibd restart
```
重啟ib服務查看HCA狀態 並根據此命令是否報錯來確定驅動是否安裝成功,使用ibstat
```
ibstat
```
#### 2.4.2 配IPoIB
首先使用service NetworkManage將NetworkManager服務關掉
```
service NetworkManager stop
```
然后進行IP的配置,配置IP的腳本在gio017的/root/目錄下 名字是ibaddr.sh(配ib0) 和ib1addr.sh(配ib1) 文件,將這兩個腳本拷貝到需要配置IP的節點並執行腳本。
```
[gmds]
scp gio017:/root/ibaddr.sh ./
sh ./ibaddr.sh
[gio]
scp gio017:/root/ibaddr.sh ./
sh ./ibaddr.sh
scp gio017:/root/ib1addr.sh ./
sh ./ib1addr.sh
```
最后再重啟IB服務
```
service openibd restart
```
重啟完IB服務之后,使用ifconfig確定IPoIB地址配置正確
```
ifconfig
```
#3 安裝盤陣
### 3.1 安裝盤陣多路徑軟件rdac ###
盤陣多路徑軟件rdac的壓縮包在gio017的/root/目錄下,壓縮包名稱為rdac-LINUX-09.03.0C00.0662-source.tar.gz,將rdac*.tar.gz拷貝到需要安裝的節點先解壓再安裝。
```
tar -zxvf rdac-LINUX-09.03.0C00.0662-source.tar.gz
```
進入rdac目錄,執行安裝。
```
cexec giotest: 'make clean;make;make install'
```
安裝完成之后將mpp的img覆蓋init的img,之后重啟節點。
```
cexec giotest: 'cp /boot/mpp-2.6.32-431.29.2.lustre.el6.x86_64.img /boot/initramfs-2.6.32-431.29.2.lustre.el6.x86_64.img'
```
確認rdac安裝成功,有/opt/mpp目錄即可。
#3 配置盤陣
參閱wiki上的盤陣配置流程,網站地址為http://20.0.1.4/dokuwiki/doku.php?id=hardware:diskarray_management。
配置完成后,mds可見。
```
[root@gmds001 ~]# /opt/mpp/lsvdev
Array Name Lun sd device
-------------------------------------
gdsk01 0 -> /dev/sdb
gdsk01 1 -> /dev/sdc
[root@gmds002 ~]# /opt/mpp/lsvdev
Array Name Lun sd device
-------------------------------------
gdsk01 0 -> /dev/sdb
gdsk01 1 -> /dev/sdc
```
gio節點上ost可見(以gio001/002為例)。
```
[root@gio001 rpms]# /opt/mpp/lsvdev
Array Name Lun sd device
-------------------------------------
gdsk001 0 -> /dev/sdb
gdsk001 1 -> /dev/sdc
gdsk001 2 -> /dev/sdd
gdsk001 3 -> /dev/sde
gdsk001 4 -> /dev/sdf
gdsk001 5 -> /dev/sdg
[root@gio002 rpms]# /opt/mpp/lsvdev
Array Name Lun sd device
-------------------------------------
gdsk001 0 -> /dev/sdb
gdsk001 1 -> /dev/sdc
gdsk001 2 -> /dev/sdd
gdsk001 3 -> /dev/sde
gdsk001 4 -> /dev/sdf
gdsk001 5 -> /dev/sdg
```
# 4 Lustre文件系統
### 4.1 安裝lustre文件系統
安裝目錄為/home/rpms/lustre_x86_64_g0fb79fb ,注意需要安裝的最新Lustre RPM包都是*lustre_x86_64_g0fb79fb.rpm
```
cd /home/rpms/lustre_x86_64_g0fb79fb
rpm -ivh *.rpm
```
如何確認安裝正確?
### 4.2 格式化分區
### 4.2.1 mds的格式化
執行mkfsgiotest.mds,mkfsgiotest.mds在gio017的/root/目錄下。
ssh gmds001 mkfs.lustre --fsname=giotest --mgs --mdt --index=0 --failnode=17.0.1.2@o2ib --reformat /dev/sdb
ssh gmds001 mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --mdt --index=1 --failnode=17.0.1.1@o2ib --reformat /dev/sdc
### 4.2.2 ost的格式化
將mkfsgiotest.ost拷貝到對應的io節點上,cexec執行,mkfsgiotest.ost在gio017的/root/目錄下,使用vi編輯器查看格式化腳本是否正確,注意格式化ost的時候需要在單節點上執行。
cexec giotest :' sh mkfsgiotest.ost'
<code>
base=`hostname|cut -c 5-6`
basenum=`echo $(($base))`
if [ $basenum -gt 16 ]
then
echo "this is for gio[001-016]\n"
exit 1
fi
((base2=$base+1))
((idx=$base*3-3))
failnode01=17.0.2.$base@o2ib
failnode02=17.0.2.$base2@o2ib
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdb
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdc
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode02 --reformat /dev/sdd
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sde
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sdf
((idx=$idx+1))
mkfs.lustre --fsname=giotest --mgsnode=17.0.1.1@o2ib,17.0.1.2@o2ib --ost --index=$idx --failnode=$failnode01 --reformat /dev/sdg
</code>
###4.2.3 格式化正確性的簡單驗證
格式化完成后,可以簡單檢查,確認底層文件系統(ldiskfs)的正確性,如果可以掛載,說明盤陣格式化成功。
```
[root@gio001 ~]# mkdir -p /mnt/lustre/local/giotest-OST0000
[root@gio001 ~]# mount -t ldiskfs /dev/sdb /mnt/lustre/local/giotest-OST0000
[root@gio001 ~]# umount /mnt/lustre/local/giotest-OST0000
```
###4.3 修改網絡配置
格式化完成之后,需要修改網絡配置,使Lustre默認使用IBA網絡。
使用cpush命令,將gio017上的/etc/modprobe.d/lustre.conf /etc/modprobe.d復制到每個節點上即可。
使用vim 編輯器查看/etc/modprode.d/lustre.conf配置文件的內容,如果沒有請添加網絡配置為options lnet networks=o2ib(ib0)
```
[/etc/modprobe.d/lustre.conf]
options lnet networks=o2ib(ib0)
```
如果不修改,會有以下報錯(因為Lustre默認使用TCP):
```
mount.lustre: mount /dev/sdb at /mnt/lustre/local/giotest-OST0000 failed: No such file or directory
Is the MGS specification correct?
Is the filesystem name correct?
If upgrading, is the copied client log valid? (see upgrade docs)
[/var/log/messages]
Sep 6 15:49:32 gio001 kernel: LNet: Added LNI 20.0.2.1@tcp [8/256/0/180]
Sep 6 15:49:32 gio001 kernel: LNet: Accept secure, port 988
Sep 6 15:49:33 gio001 kernel: LDISKFS-fs (sdb): mounted filesystem with ordered data mode. quota=on. Opts:
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(ldlm_lib.c:433:client_obd_setup()) can't add initial connection
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_config.c:572:class_setup()) setup MGC17.0.1.1@o2ib failed (-2)
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount.c:200:lustre_start_simple()) MGC17.0.1.1@o2ib setup error -2
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:851:lustre_disconnect_lwp()) giotest-MDT0000-lwp-OST0000: Can't end config log giotest-client.
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:1426:server_put_super()) giotest-OST0000: failed to disconnect lwp. (rc=-2)
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:1456:server_put_super()) no obd giotest-OST0000
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount_server.c:135:server_deregister_mount()) giotest-OST0000 not registered
Sep 6 15:49:33 gio001 kernel: Lustre: server umount giotest-OST0000 complete
Sep 6 15:49:33 gio001 kernel: LustreError: 5145:0:(obd_mount.c:1324:lustre_fill_super()) Unable to mount (-2)
Sep 6 15:50:09 gio001 kernel: LNet: Removed LNI 20.0.2.1@tcp
```
# 5 啟動服務 #
###5.1mds啟動###
```
[root@gmds001 ~]# mount -t lustre /dev/sdb /mnt/lustre/local/giotest-MDT0000/
```
確認是否掛載成功
```
[root@gmds001 ~]# mount | grep lustre
/dev/sdb on /mnt/lustre/local/giotest-MDT0000 type lustre (rw)
```
###5.2ost啟動###
手動啟動方式:
[root@gio001 ~]# mount -t lustre /dev/sdb /mnt/lustre/local/giotest-OST0000
mount.lustre: set /sys/block/sdb/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdc /mnt/lustre/local/giotest-OST0001
mount.lustre: set /sys/block/sdc/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdd /mnt/lustre/local/giotest-OST0002
mount.lustre: set /sys/block/sdd/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sde /mnt/lustre/local/giotest-OST0003
mount.lustre: set /sys/block/sdb/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdf /mnt/lustre/local/giotest-OST0004
mount.lustre: set /sys/block/sdc/queue/max_sectors_kb to 32767
[root@gio001 ~]# mount -t lustre /dev/sdg /mnt/lustre/local/giotest-OST0005
mount.lustre: set /sys/block/sdd/queue/max_sectors_kb to 32767
使用ldev.conf配置文件啟動:
首先查看ldev配置文件,在/etc/ldev.conf中添加節點名稱與對應的OST序號,使用blkid可以查看每個節點的OST的序號
例:
.......
gio017 gio018 gswgfs-OST0030
gio017 gio018 gswgfs-OST0031
gio017 gio018 gswgfs-OST0032
gio018 gio017 gswgfs-OST0033
gio018 gio017 gswgfs-OST0034
gio018 gio017 gswgfs-OST0035
gio019 gio020 gswgfs-OST0036
gio019 gio020 gswgfs-OST0037
gio019 gio020 gswgfs-OST0038
gio020 gio019 gswgfs-OST0039
gio020 gio019 gswgfs-OST003a
gio020 gio019 gswgfs-OST003b
.......
使用ldev -l 查看對應節點的OST序號是否正確,然后使用service lustre start啟動服務。
###6 FAQ###
IBA線纜插錯了怎么辦?
如何檢查?
使用ibstat查看狀態,第一塊網卡的SM lid為1,第二塊網卡的SM lid為41985則屬於正常情況,如若相反,機房交換重插。
如何處理?
重啟IBD服務,service openibd restart 卸載模塊lustre_rmmod 再重啟IBD服務, service openibd restart