目錄
准備工作
更改時間同步方案:
crontab -l>/tmp/crontab.tmp
sed -i 's/.*ntpdate/# &/g' /tmp/crontab.tmp
cat /tmp/crontab.tmp |crontab
rm -rf /tmp/crontab.tmp
yum -y install chrony
systemctl enable chronyd && systemctl start chronyd
timedatectl status
timedatectl set-local-rtc 0
systemctl restart rsyslog && systemctl restart crond
確保安裝了lvm2
yum -y install lvm2
啟用rbd模塊
modprobe rbd
cat > /etc/rc.sysinit << EOF
#!/bin/bash
for file in /etc/sysconfig/modules/*.modules
do
[ -x \$file ] && \$file
done
EOF
cat > /etc/sysconfig/modules/rbd.modules << EOF
modprobe rbd
EOF
chmod 755 /etc/sysconfig/modules/rbd.modules
lsmod |grep rbd
內核升級
# CephFS需要內核版本在4.17以上
# 使用ml版本來代替原來的lt版本,ml版本是穩定版,lt版本是長期支持版
# 目前ml版本已經到5.5.9
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-4.el7.elrepo.noarch.rpm
yum --enablerepo=elrepo-kernel install -y kernel-ml
#保險起見,先查看內核啟動順序:awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
grub2-set-default 0
reboot
uname -r
手動安裝ceph
安裝ceph軟件包
$ yum install ceph
安裝mds
# 生成uuid
$ uuidgen
c4dce24c-7ee5-4127-a7ab-89883b03b10a
#編輯配置文件
$ [global]
fsid = c4dce24c-7ee5-4127-a7ab-89883b03b10a
public network = 0.0.0.0/0
cluster network = 0.0.0.0/0
mon initial members = nau1,nau2,nau3
mon host = 192.168.15.85,192.168.15.86,192.168.15.87
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
osd pool default size = 2
osd pool default min size = 1
osd pool default pg num = 333
osd pool default pgp num = 333
osd crush chooseleaf type = 1
rbd_default_features = 1
mon_pg_warn_max_per_osd = 3000
[mds]
mds session autoclose = 30
mds session timeout = 20
# 生成ceph.mon.keyring
$ ceph-authtool --create-keyring /tmp/ceph.mon.keyring --gen-key -n mon. --cap mon 'allow *'
# 生成ceph.client.admin.keyring
$ sudo ceph-authtool --create-keyring /etc/ceph/ceph.client.admin.keyring --gen-key -n client.admin --cap mon 'allow *' --cap osd 'allow *' --cap mds 'allow *' --cap mgr 'allow *'
# 生成bootstrap-osd/ceph.keyring
$ sudo ceph-authtool --create-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring --gen-key -n client.bootstrap-osd --cap mon 'profile bootstrap-osd' --cap mgr 'allow r'
# 將ceph.client.admin.keyring和bootstrap-osd/ceph.keyring導入到ceph.mon.keyring
$ sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /etc/ceph/ceph.client.admin.keyring
$ sudo ceph-authtool /tmp/ceph.mon.keyring --import-keyring /var/lib/ceph/bootstrap-osd/ceph.keyring
$ sudo chown ceph:ceph /tmp/ceph.mon.keyring
#用ceph.mon.keyring生成monmap
$ monmaptool --create --add nau1 192.168.15.85 --fsid c4dce24c-7ee5-4127-a7ab-89883b03b10a /tmp/monmap
$ monmaptool --add nau2 192.168.15.86 --fsid c4dce24c-7ee5-4127-a7ab-89883b03b10a /tmp/monmap
$ monmaptool --add nau3 192.168.15.87 --fsid c4dce24c-7ee5-4127-a7ab-89883b03b10a /tmp/monmap
# 在nau1上操作(上面的步驟都是只在nau1上操作)
$ sudo -u ceph mkdir /var/lib/ceph/mon/ceph-nau1
$ sudo -u ceph ceph-mon --mkfs -i nau1 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
$ systemctl start ceph-mon@nau1
# 復制所需文件到其他節點(nau3同理)
# 如果找不到目錄就自己創建一下
$ scp /tmp/monmap root@nau2:/tmp/
$ scp /etc/ceph/ceph.client.admin.keyring root@nau2:/etc/ceph/
$ scp /etc/ceph/ceph.conf root@nau2:/etc/ceph/
$ scp /var/lib/ceph/bootstrap-osd/ceph.keyring root@nau2:/var/lib/ceph/bootstrap-osd/
$ scp /tmp/ceph.mon.keyring root@nau2:/tmp/
# 在nau2上操作(nau3同理)
$ chmod 777 /tmp/ceph.mon.keyring
$ sudo -u ceph mkdir /var/lib/ceph/mon/ceph-nau2
$ sudo -u ceph ceph-mon --mkfs -i nau2 --monmap /tmp/monmap --keyring /tmp/ceph.mon.keyring
$ systemctl start ceph-mon@nau2
# 在任意節點上查看一下狀態
$ ceph -s
cluster:
id: c4dce24c-7ee5-4127-a7ab-89883b03b10a
health: HEALTH_WARN
3 monitors have not enabled msgr2
services:
mon: 3 daemons, quorum nau1,nau2,nau3 (age 50s)
mgr: no daemons active
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
可以看到報警告說沒有msgr2,接下來安裝msgr2
安裝mgr
# 在nau1上操作
$ ceph auth get-or-create mgr.nau1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
[mgr.nau1]
key = AQD9YeBedvUgLhAAxzBUMsUiWcMkQEXA2p3+qA==
# 將這個結果寫入配置文件/var/lib/ceph/mgr/ceph-nau1/keyring
$ sudo mkdir -p /var/lib/ceph/mgr/ceph-nau1
$ cat > /var/lib/ceph/mgr/ceph-nau1/keyring << EOF
[mgr.nau1]
key = AQD9YeBedvUgLhAAxzBUMsUiWcMkQEXA2p3+qA==
EOF
$ chmod 777 /var/lib/ceph/mgr/ceph-nau1/keyring
# 將這一段加入到ceph.conf中
$ vim /etc/ceph/ceph.conf
[global]
fsid = c4dce24c-7ee5-4127-a7ab-89883b03b10a
public network = 0.0.0.0/0
。。。此處省略無關配置等
[mgr.nau1]
key = AQD9YeBedvUgLhAAxzBUMsUiWcMkQEXA2p3+qA==
# 啟動ceph-mgr
$ ceph-mgr -i nau1
$ ceph mon enable-msgr2
#查看狀態
$ ceph -s
cluster:
id: c4dce24c-7ee5-4127-a7ab-89883b03b10a
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 2
3 monitors have not enabled msgr2
services:
mon: 3 daemons, quorum nau1,nau2,nau3 (age 15m)
mgr: nau1(active, since 2m)
osd: 0 osds: 0 up, 0 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs:
可以看到,現在的主要矛盾是沒有osd了
安裝osd
# 官網說可以使用ceph-volume,但是本人使用過程中坑太多,不建議使用。建議所有節點都使用下一節的笨辦法
$ sudo ceph-volume lvm create --data /dev/sdb
$ ceph osd tree
ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF
-1 0.02930 root default
-3 0.02930 host nau1
0 hdd 0.02930 osd.0 up 1.00000 1.00000
# 笨辦法安裝OSD
# 以nau2為例,nau3同理
$ chmod 777 /var/lib/ceph/bootstrap-osd/ceph.keyring
$ cp /var/lib/ceph/bootstrap-osd/ceph.keyring /etc/ceph/ceph.client.bootstrap-osd.keyring
# 下面這一段步驟雖然我給出腳本的形式,但還是建議手動一行一行復制到終端執行
$ vim addosd.sh
sh bash
UUID=$(uuidgen)
OSD_SECRET=$(ceph-authtool --gen-print-key)
echo $OSD_SECRET
ID=$(echo "{\"cephx_secret\": \"$OSD_SECRET\"}" | \
ceph osd new $UUID -i - \
-n client.bootstrap-osd -k /var/lib/ceph/bootstrap-osd/ceph.keyring)
echo $ID
mkdir -p /var/lib/ceph/osd/ceph-$ID
mkfs.xfs -f /dev/sdb1
mount /dev/sdb1 /var/lib/ceph/osd/ceph-$ID
ceph-authtool --create-keyring /var/lib/ceph/osd/ceph-$ID/keyring \
--name osd.$ID --add-key $OSD_SECRET
chmod 777 /var/lib/ceph/osd/ceph-$ID/keyring
ceph-osd -i $ID --mkfs --osd-uuid $UUID
chown -R ceph:ceph /var/lib/ceph/osd/ceph-$ID
$ sh addosd.sh
# 啟動並添加開機啟動(這里面承擔@1,其中1是剛才腳本中的$ID)
$ systemctl enable ceph-osd@1
$ systemctl start ceph-osd@1
安裝ceph-mds
$ mkdir -p /var/lib/ceph/mds/ceph-nau1
$ ceph-authtool --create-keyring /var/lib/ceph/mds/ceph-nau1/keyring --gen-key -n mds.nau1
$ chmod 777 /var/lib/ceph/mds/ceph-nau1/keyring
$ ceph auth add mds.nau1 osd "allow rwx" mds "allow" mon "allow profile mds" -i /var/lib/ceph/mds/ceph-nau1/keyring
$ ceph-mds --cluster ceph -i nau1 -m nau1:6800
# 如果上面那條命令沒報錯,就說明能啟動起來,那就Ctrl+C掉,然后按下面的命令啟動並添加啟動項
$ systemctl start ceph-mds@nau1
$ systemctl enable ceph-mds@nau1
# 創建cephfs
$ ceph osd pool create cephfs_data 256
$ ceph osd pool create cephfs_metadata 256
$ ceph fs new cephfs cephfs_metadata cephfs_data
報錯及解決方法
- "Error ERANGE: pg_num 800 size 2 would mean 2112 total pgs, which exceeds max 750 (mon_max_pg_per_osd 250 * num_in_osds 3)"
在ceph.conf [global]中添加一行配置:
mon_max_pg_per_osd = 2000
- " 3 monitors have not enabled msgr2"
ceph mon enable-msgr2
- osd裝多了如何刪除
ceph osd crush remove osd.1
ceph auth del osd.1
ceph osd rm 1
無關緊要的事
全手動安裝官網參考地址:
https://ceph.readthedocs.io/en/latest/install/manual-deployment/
或https://docs.ceph.com/docs/master/install/manual-deployment/
-
為什么選14.2.9?
之前用rook測試過14.2.9,發現版本符合要求。 -
為什么不用centos8?
答:因為看見阿里雲里沒有Centos8的鏡像。https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/ -
關於yum源?
為了避免每次都走阿里雲我直接把列表復制下來,然后把nautilus14.2.9的所有rpm包全部都下載下來,然后用“createrepo .”配置成yum源,然后編輯ceph.repo,在192.168.0.1上配置了nginx做成yum源,將"gpgcheck"設置成0來做測試的,一旦出錯,直接卸載,重試的速度相對快些。
不過大家沒必要這么做,直接用阿里雲的源就可以ceph.repo。
[Ceph-SRPMS]
name=Ceph SRPMS packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-aarch64]
name=Ceph aarch64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/aarch64/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch/
enabled=1
gpgcheck=0
type=rpm-md
[Ceph-x86_64]
name=Ceph x86_64 packages
baseurl=https://mirrors.aliyun.com/ceph/rpm-nautilus/el7/x86_64/
enabled=1
gpgcheck=0
type=rpm-md
本人自己用的方法本地搭建的源ceph.repo:
[ceph-noarch]
name=Ceph noarch packages
baseurl=http://192.168.0.1/nautilus/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=http://192.168.0.1/nautilus/release.asc
priority=1
[Ceph]
name=Ceph packages for $basearch
baseurl=http://192.168.0.1/nautilus
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=http://192.168.0.1/nautilus/release.asc
priority=1
[ceph-source]
name=Ceph source packages
baseurl=http://192.168.0.1/nautilus/
enabled=1
gpgcheck=0
type=rpm-md
gpgkey=http://192.168.0.1/nautilus/release.asc
priority=1