1、節點角色
| 主機名 | IP地址 | 角色 |
|---|---|---|
| node1 | 192.168.xxx.xx1 | Client |
| node2 | 192.168.xxx.xx2 | MGS MGT MDS MDT |
| node3 | 192.168.xxx.xx3 | OSS OST |
| node4 | 192.168.xxx.xx4 | OSS OST |
2、硬件配置
| 主機名 | 角色 | 磁盤 | 內存 | 備注 |
|---|---|---|---|---|
| node1 | Client | 一塊(20GB) | 2GB | |
| node2 | MGS MGT MDS MDT | 兩塊(25GB+20GB) | 2GB | 兩塊磁盤是系統盤加存儲盤 |
| node3 | OSS OST | 兩塊(25GB+20GB) | 2GB | 同上 |
| node4 | OSS OST | 兩塊(25GB+20GB) | 2GB | 同上 |
[root@node2 lustre]# fdisk -l
磁盤 /dev/sda:26.8 GB, 26843545600 字節,52428800 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤標簽類型:dos
磁盤標識符:0x000c5f94
設備 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 52428799 25164800 8e Linux LVM
磁盤 /dev/sdb:21.5 GB, 21474836480 字節,41943040 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-root:23.6 GB, 23613931520 字節,46120960 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
磁盤 /dev/mapper/centos-swap:2147 MB, 2147483648 字節,4194304 個扇區
Units = 扇區 of 1 * 512 = 512 bytes
扇區大小(邏輯/物理):512 字節 / 512 字節
I/O 大小(最小/最佳):512 字節 / 512 字節
3、軟件版本
| 軟件 | 版本 |
|---|---|
| Lustre | lustre-2.10.1 |
4、安裝軟件包
安裝時注意:
- 先關閉selinux和防火牆
- 設置機器間的免密登錄
- 軟件間的依賴關系、安裝順序
- 軟件版本一致
- 系統內核和lustre版本一致
4.1、安裝 e2fsprogs 相關包
yum -y --nogpgcheck install
....
下載地址:https://downloads.whamcloud.com/public/e2fsprogs/latest/el7/RPMS/x86_64/
4.2、安裝 kernel 相關包
yum -y --nogpgcheck install
kernel-3.10.0-693.2.2.el7_lustre.x86_64.rpm
kernel-devel-3.10.0-693.2.2.el7_lustre.x86_64.rpm
kernel-headers-3.10.0-693.2.2.el7_lustre.x86_64.rpm
kernel-tools-libs-3.10.0-693.2.2.el7_lustre.x86_64.rpm
kernel-tools-3.10.0-693.2.2.el7_lustre.x86_64.rpm
kernel-tools-libs-devel-3.10.0-693.2.2.el7_lustre.x86_64.rpm
修改開機時默認使用的內核
grub2-set-default 'CentOS Linux (kernel-3.10.0-693.2.2.el7_lustre.x86_64) 7 (Core)'
下載地址:https://downloads.whamcloud.com/public/lustre/lustre-2.10.1/el7/server/RPMS/x86_64/
如何修改默認啟動內核:https://blog.csdn.net/sinat_25606165/article/details/106693725
4.3、客戶端安裝
下載地址:https://downloads.whamcloud.com/public/lustre/lustre-2.10.1/el7/client/RPMS/x86_64/
yum -y --nogpgcheck install
lustre-client-2.10.1-1.el7.x86_64.rpm
lustre-client-dkms-2.10.1-1.el7.noarch.rpm
lustre-iokit-2.10.1-1.el7.x86_64.rpm
kmod-lustre-client-2.10.1-1.el7.x86_64.rpm
lustre-osd-ldiskfs-mount-2.10.1-1.el7.x86_64.rpm
lustre-osd-zfs-mount-2.10.1-1.el7.x86_64.rpm
執行 rpm -qa | grep lustre 查看是否安裝成功。
安裝完成后,需要重啟機器。
重啟后,執行如下命令,加載 lustre 模塊。
[root@node1 ~]# cd /opt/lustre/
[root@node1 lustre]# modprobe lustre # 如果安裝成功,則不會報錯。
關閉后,需要在各個節點再次運行 modprobe lustre 命令。
4.4、服務器端安裝
下載地址:https://downloads.whamcloud.com/public/lustre/lustre-2.10.1/el7/server/RPMS/x86_64/
yum -y --nogpgcheck install
libzpool2-0.7.1-1.el7.x86_64.rpm
libuutil1-0.7.1-1.el7.x86_64.rpm
libnvpair1-0.7.1-1.el7.x86_64.rpm
perf-3.10.0-693.2.2.el7_lustre.x86_64.rpm
python-perf-3.10.0-693.2.2.el7_lustre.x86_64.rpm
libzfs2-0.7.1-1.el7.x86_64.rpm
libzfs2-devel-0.7.1-1.el7.x86_64.rpm
spl-dkms-0.7.1-1.el7.noarch.rpm
spl-0.7.1-1.el7.x86_64.rpm
zfs-dkms-0.7.1-1.el7.noarch.rpm
zfs-0.7.1-1.el7.x86_64.rpm
kmod-lustre-2.10.1-1.el7.x86_64.rpm
lustre-osd-ldiskfs-mount-2.10.1-1.el7.x86_64.rpm
lustre-osd-zfs-mount-2.10.1-1.el7.x86_64.rpm
kmod-lustre-osd-ldiskfs-2.10.1-1.el7.x86_64.rpm
lustre-dkms-2.10.1-1.el7.noarch.rpm
lustre-iokit-2.10.1-1.el7.x86_64.rpm
lustre-2.10.1-1.el7.x86_64.rpm
安裝 kmod-lustre-osd-zfs-2.10.1-1.el7.x86_64.rpm 中,會報如下錯誤,暫未解決,但不影響后期配置。

執行 rpm -qa | grep lustre 查看是否安裝成功。
安裝完成后,需要重啟。
重啟后,執行如下命令,加載 lustre 和 ldiskfs 模塊。
[root@node2 lustre]# cd /opt/lustre/
[root@node2 lustre]# modprobe lustre
[root@node2 lustre]# modprobe ldiskfs
# 其他兩個節點執行同樣操作
[root@node3 lustre]# ....
[root@node4 lustre]# ....
4.5、配置
以上均執行完畢,進行配置。
在塊設備上創建 MGS\MDT 組合文件系統。在 MDS 節點上運行:
# 這里的 /dev/sdb 就是新增的 20GB 的磁盤空間。新增磁盤后,執行 `fdisk -l` ,能找到即成功。
# 添加 --reformat 項是因為:
# mkfs.lustre FATAL: Device /dev/sdb was previously formatted for lustre. Use --reformat to reformat it, or tunefs.lustre to modify.
[root@node2 ~]# mkfs.lustre --reformat --fsname=lustrefs --mgs --mdt --index=0 /dev/sdb
Failed to initialize ZFS library: 256
Permanent disk data:
Target: lustrefs:MDT0000
Index: 0
Lustre FS: lustrefs
Mount type: ldiskfs
Flags: 0x65
(MDT MGS first_time update )
Persistent mount opts: user_xattr,errors=remount-ro
Parameters:
device size = 20480MB
formatting backing filesystem ldiskfs on /dev/sdb
target name lustrefs:MDT0000
4k blocks 5242880
options -J size=819 -I 1024 -i 2560 -q -O dirdata,uninit_bg,^extents,dir_nlink,quota,huge_file,flex_bg -E lazy_journal_init -F
mkfs_cmd = mke2fs -j -b 4096 -L lustrefs:MDT0000 -J size=819 -I 1024 -i 2560 -q -O dirdata,uninit_bg,^extents,dir_nlink,quota,huge_file,flex_bg -E lazy_journal_init -F /dev/sdb 5242880
Writing CONFIGS/mountdata
在塊設備上裝入 MGS\MDT 組合文件系統。在 MDS 節點上運行:
[root@node2 mnt]# mount.lustre /dev/sdb /mnt/mdt/
Failed to initialize ZFS library: 256
mount.lustre: increased /sys/block/sdb/queue/max_sectors_kb from 512 to 4096
[root@node2 lustre]# df -h
文件系統 容量 已用 可用 已用% 掛載點
devtmpfs 899M 0 899M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.5M 903M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/mapper/centos-root 22G 8.2G 14G 38% /
/dev/sda1 1014M 197M 818M 20% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb 12G 2.3M 11G 1% /mnt/mdt
本例中,OSTs(ost0和ost1)在不同 OSSs(oss0和oss1)節點上創建。
在 oss0 上創建 ost0:
# 這里是 node2 的 IP 地址
# 為增加調試日志的可讀性,並更方便為多個接口調試配置,建議使用 IP 地址
[root@node3 ~]# mkfs.lustre --reformat --fsname=lustrefs --mgsnode=192.168.xxx.xx2@tcp --ost --index=0 /dev/sdb
Failed to initialize ZFS library: 256
Permanent disk data:
Target: lustrefs:OST0000
Index: 0
Lustre FS: lustrefs
Mount type: ldiskfs
Flags: 0x62
(OST first_time update )
Persistent mount opts: ,errors=remount-ro
Parameters: mgsnode=192.168.xxx.xx2@tcp
device size = 20480MB
formatting backing filesystem ldiskfs on /dev/sdb
target name lustrefs:OST0000
4k blocks 5242880
options -J size=400 -I 512 -i 69905 -q -O extents,uninit_bg,dir_nlink,quota,huge_file,flex_bg -G 256 -E resize="4290772992",lazy_journal_init -F
mkfs_cmd = mke2fs -j -b 4096 -L lustrefs:OST0000 -J size=400 -I 512 -i 69905 -q -O extents,uninit_bg,dir_nlink,quota,huge_file,flex_bg -G 256 -E resize="4290772992",lazy_journal_init -F /dev/sdb 5242880
Writing CONFIGS/mountdata
在 OSS 上,載入 ost0,在 oss0 上運行:
[root@node3 mnt]# mkdir ost0
[root@node3 mnt]# mount.lustre /dev/sdb /mnt/ost0
Failed to initialize ZFS library: 256
mount.lustre: increased /sys/block/sdb/queue/max_sectors_kb from 512 to 4096
[root@node3 lustre]# df -h
文件系統 容量 已用 可用 已用% 掛載點
devtmpfs 899M 0 899M 0% /dev
tmpfs 912M 0 912M 0% /dev/shm
tmpfs 912M 9.5M 903M 2% /run
tmpfs 912M 0 912M 0% /sys/fs/cgroup
/dev/mapper/centos-root 22G 8.2G 14G 38% /
/dev/sda1 1014M 197M 818M 20% /boot
tmpfs 183M 0 183M 0% /run/user/0
/dev/sdb 20G 1.1M 19G 1% /mnt/ost1
在 oss1 上創建 ost1:
[root@node4 mnt]# mkfs.lustre --reformat --fsname=lustrefs --mgsnode=192.168.xxx.xx2@tcp --ost --index=1 /dev/sdb
在 OSS 上,載入 ost1,在 oss1 上運行:
[root@node4 mnt]# mount.lustre /dev/sdb /mnt/ost1
在客戶端上掛載 Lustre 文件系統,在客戶端節點運行:
[root@node1 mnt]# mkdir /mnt/lustre
[root@node1 mnt]# mount.lustre 192.168.xxx.xx2@tcp:/lustrefs /mnt/lustre
5、啟動與關閉
啟動文件系統,各組件按如下順序啟動:
掛載MGT --> 掛載MDT --> 掛載OST(s) --> 掛載Client
按如下順序關閉,文件系統將完全關閉:
Client --> MDS --> MGS --> OST(s)
umount -a -t lustre
其中,`-a -t lustre`不是文件系統名稱,指代的是卸載 `/etc/mtab` 所有條目中的 lustre 類型。
6、測試
確認文件系統已成功啟動,並正常工作。
運行如下命令,創建一個全為字符 0 的文件來驗證寫入功能:
# 執行 `dd --help` 查看 dd 命令用法
[root@node1 mnt]# dd if=/dev/zero of=/mnt/lustre/test.img bs=1M count=4500
記錄了4500+0 的讀入
記錄了4500+0 的寫出
4718592000字節(4.7 GB)已復制,11.3127 秒,417 MB/秒
[root@node2 mnt]# ....
[root@node3 mnt]# ....
[root@node4 mnt]# ....
運行如下命令,查看每個 OST 和 MDT 的空間使用情況:
[root@node1 ~]# lfs df -h
UUID bytes Used Available Use% Mounted on
lustrefs-MDT0000_UUID 11.1G 2.3M 10.1G 0% /mnt/lustre[MDT:0]
lustrefs-OST0000_UUID 19.3G 1.2M 18.3G 0% /mnt/lustre[OST:0]
lustrefs-OST0001_UUID 19.3G 1.2M 18.3G 0% /mnt/lustre[OST:1]
filesystem_summary: 38.5G 2.4M 36.5G 0% /mnt/lustre
測試創建、刪除目錄:
# 執行 `lfs --list-commands` 查看 lfs 命令用法
# 創建一個目錄,由 mdt0 提供服務
[root@node1 ~]# lfs mkdir -i 0 /mnt/lustre/test
[root@node1 ~]# cd /mnt/lustre/
[root@node1 lustre]# ls
test
# 刪除該目錄
[root@node1 ~]# lfs rm_entry /mnt/lustre/test
[root@node1 ~]# ll /mnt/lustre/
總用量 0
使用 lfs setstripe 創建文件,並指定文件布局:
# 文件條帶大小為4MB
[root@node1 ~]# lfs setstripe -S 4M /mnt/lustre/test.txt
[root@node1 ~]# ll /mnt/lustre/
總用量 0
-rw-r--r-- 1 root root 0 4月 8 11:32 test.txt
[root@node1 ~]# lfs getstripe /mnt/lustre/test.txt
/mnt/lustre/test.txt
lmm_stripe_count: 1
lmm_stripe_size: 4194304
lmm_pattern: 1
lmm_layout_gen: 0
lmm_stripe_offset: 0
obdidx objid objid group
0 66 0x42 0
7、問題
問題一:安裝 spl-dkms-0.7.1-1.el7.noarch.rpm,出現要求 dkms 大於 2.2.0.2,如果直接 yum 安裝會出現 沒有可用軟件包。此時需要先執行 yum install -y epel-release,再安裝 dkms。
問題二:安裝 libcom_err-...rpm,出現類似 已安裝該包的較低版本,需要更高版本 的錯誤,如果直接 yum remove,會出現 錯誤:嘗試移除受保護的 "systemd" 這種錯誤。采用 rpm -e --nodeps 包名 的方式刪除,但刪除后,如果直接 yum install 安裝,會出現 libcom_err.so.2: cannot open shared object file: No such file or directory 錯誤,需要 rpm -ivh 包名 這種方式安裝。
問題三:如果客戶端沒有識別 OST,查看 OST 機器上的防火牆有沒有關閉,或者查看有沒有設置免密登錄。
參考:
https://blog.csdn.net/spring_color/article/details/79301167
https://doc.lustre.org/lustre_manual.xhtml#configuringlustre
