lustre檔案系統環境搭建及測試

dabiao_z發表於2021-04-17

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 中,會報如下錯誤,暫未解決,但不影響後期配置。

env01

執行 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。

參考:

https://blog.csdn.net/spring_color/article/details/79301167

https://doc.lustre.org/lustre_manual.xhtml#configuringlustre

https://blog.csdn.net/tengh/article/details/9567763?utm_medium=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-2.nonecase&dist_request_id=1328760.199.16171701704387499&depth_1-utm_source=distribute.pc_relevant_download.none-task-blog-2defaultBlogCommendFromBaidudefault-2.nonecas

https://mp.weixin.qq.com/s/eJknjD6JCdKkrUeVnDGEjg

相關文章