測試架構信息:
Ceph-Admin172.17.0.50admin
Ceph-Mon172.17.0.40mon
Ceph-OSD01172.17.0.41osd01
Ceph-OSD02172.17.0.42osd02
CEph-OSD03172.17.0.43osd03
Ceph-OSD04172.17.0.44osd04
Ceph-OSD05172.17.0.45osd05
Ceph-MDS172.17.0.49msd
一、系統初始配置
安裝系統centos 7.3 最小化安裝
yum 源
wget http://mirrors.163.com/.help/CentOS7-Base-163.repo
配置網絡:
echo "DNS1=172.16.1.2" >> /etc/sysconfig/network-scripts/ifcfg-ens192 /etc/init.d/network restart
配置host文件:
echo "172.17.0.50 admin" >> /etc/hosts echo "172.17.0.40 mon" >> /etc/hosts echo "172.17.0.41 osd01" >> /etc/hosts echo "172.17.0.42 osd02" >> /etc/hosts echo "172.17.0.43 osd03" >> /etc/hosts echo "172.17.0.44 osd04" >> /etc/hosts echo "172.17.0.45 osd05" >> /etc/hosts echo "172.17.0.49 msd" >> /etc/hosts echo "172.17.0.60 ceph-client" >> /etc/hosts
更改電腦名,需重啓:
hostnamectl set-hostname servername
配置adminSSH無密碼登陸各節點:
ssh-keygen ssh-copy-id root@mon ssh-copy-id root@osd01 ssh-copy-id root@osd02 ssh-copy-id root@osd03 ssh-copy-id root@osd04 ssh-copy-id root@osd05 ssh-copy-id root@ceph-client
添加deploy源:
vim /etc/yum.repos.d/ceph.repo
[ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-{ceph-release}/{distro}/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=https://download.ceph.com/rpm-kraken/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=https://download.ceph.com/keys/release.asc [ceph-noarch] name=Ceph noarch packages baseurl=http://mirrors.163.com/ceph/rpm-kraken/el7/noarch enabled=1 gpgcheck=1 type=rpm-md gpgkey=http://mirrors.163.com/ceph/keys/release.asc yum update -y yum install ceph-deploy -y
同步時間:
啓用可選軟件庫:
yum -y install epel-release yum install yum-plugin-priorities -y yum install ntp ntpdate ntp-doc -y yum install sysstat -y yum install net-tools -y yum install wget -y
配置防火牆:
-A INPUT -p tcp -m state --state NEW -m tcp --dport 6789:7100 -j ACCEPT
在各 Ceph 節點創建新用戶:
ssh root@mon sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd01 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd02 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd03 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd04 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser ssh root@osd05 sudo useradd -d /home/cephuser -m cephuser sudo passwd cephuser
確保各 Ceph 節點上新創建的用戶都有 sudo 權限。
echo "cephuser ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/cephuser chmod 0440 /etc/sudoers.d/cephuser
允許無密碼 SSH 登錄
ssh-copy-id cephuser@mon ssh-copy-id cephuser@osd01 ssh-copy-id cephuser@osd02 ssh-copy-id cephuser@osd03 ssh-copy-id cephuser@osd04 ssh-copy-id cephuser@osd05 ssh-copy-id cephuser@msd
修改 ceph-deploy 管理節點上的 ~/.ssh/config 文件
vi ~/.ssh/config Host mon Hostname mon User cephuser Host osd01 Hostname osd01 User cephuser Host osd02 Hostname osd02 User cephuser Host osd03 Hostname osd03 User cephuser Host osd04 Hostname osd04 User cephuser Host osd05 Hostname osd05 User cephuser
開放所需端口
firewall-cmd --zone=public --add-port=6789/tcp --permanent firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
不需要控制終端: 註釋Defaults requiretty
Defaults requiretty修改爲 #Defaults requiretty
關閉SELINUX
setenforce 0 vi /etc/selinux/config SELINUX=disabled
二、存儲集羣
創建一個 Ceph 存儲集羣
mkdir my-cluster cd my-cluster ceph-deploy new mon
把 Ceph 配置文件裏的默認副本數從 3 改成 2 ,這樣只有兩個 OSD 也可以達到 active + clean 狀態。把下面這行加入 [global] 段:
vi ./ceph.conf osd pool default size = 2
如果你有多個網卡,可以把 public network 寫入 Ceph 配置文件的 [global] 段下
public network = {ip-address}/{netmask} cluster network = {cluster-network/netmask}
安裝ceph OSD
ceph-deploy install mon osd01 osd02 osd03
配置初始 monitor(s)、並收集所有密鑰:
ceph-deploy mon create-initial
如果在某些地方碰到麻煩,想從頭再來,可以用下列命令清除配置:
ceph-deploy purge osd02 ceph-deploy purgedata {ceph-node} [{ceph-node}] ceph-deploy forgetkeys !!!!!!!!
添加兩個 OSD:
ssh osd01 rm -rf /var/local/osd01 sudo mkdir /var/local/osd01 exit ssh osd02 rm -rf /var/local/osd02 sudo mkdir /var/local/osd02 exit
然後與管理節點執行ceph-deploy 準備OSD
ceph-deploy osd prepare osd01:/dev/sdb osd02:/dev/sdb
激活osd:
ceph-deploy osd activate osd01:/dev/sdb osd02:/dev/sdb
用 ceph-deploy 把配置文件和 admin 密鑰拷貝到管理節點和 Ceph 節點,這樣你每次執行 Ceph 命令行時就無需指定 monitor 地址和 ceph.client.admin.keyring 了。
ceph-deploy admin admin mon osd01 osd02
確保你對 ceph.client.admin.keyring 有正確的操作權限
chmod +r /etc/ceph/ceph.client.admin.keyring ceph health
查看OSD tree
ceph osd tree
設置ceph集羣自啓動
在各節點需要執行如下命令:
systemctl enable ceph-mon.target systemctl enable ceph-osd.target systemctl enable ceph.target
ssh mon "systemctl enable ceph-mon.target;systemctl enable ceph-osd.target;systemctl enable ceph.target"
CEPH操作命令:
ceph health ceph -w 打印ceph信息 ceph df集羣使用情況 ceph status集羣狀態 ceph -s ceph osd tree ceph osd stat ceph osd dump ceph quorum_statusmon的數量狀態 ceph mds stat元數據狀態 ceph mds dump狀態信息 systemctl restart ceph-osd.target 重啓osd 服務
三、擴展集羣
添加OSD
ceph-deploy osd prepare osd03:/dev/sdb ceph-deploy osd activate osd03:/dev/sdb ceph -w
添加元數據服務器
ceph-deploy install mds ceph-deploy mds create mds ceph-deploy admin mds
添加 MONITORS
vi ceph.conf public network = 172.17.0.0/23 ceph-deploy mon add osd01 osd02 osd03 ceph-deploy --overwrite-conf mon add osd03 ceph quorum_status --format json-pretty查看mon法定人數
添加 RGW 例程
ceph-deploy rgw create node1
RGW 例程默認會監聽 7480 端口,可以更改該節點 ceph.conf 內與 RGW 相關的配置,如下:
[client] rgw frontends = civetweb port=80
四、管理、維護
ceph 日誌
/var/log/ceph iostat -x df -h ceph osd stat ceph health 、 ceph -s 、或 ceph -w systemctl restart ceph-osd.target 重啓osd 服務
最大線程數
sysctl -w kernel.pid_max=4194303 配置 kernel.pid_max 寫入配置文件 /etc/sysctl.conf kernel.pid_max = 4194303
命令獲取歸置組列表
ceph pg dump
要根據指定歸置組號查看哪些 OSD 位於 Acting Set 或 Up Set 裏,執行
ceph pg map {pg-num}
其結果會告訴你 osdmap 版本( eNNN )、歸置組號( {pg-num} )、 Up Set 內的 OSD ( up[] )、和 Acting Set 內的 OSD ( acting[] )。
osdmap eNNN pg {pg-num} -> up [0,1,2] acting [0,1,2]
修改單個節點的配置文件ceph.conf等如下
ceph-deploy --overwrite-conf config push mon osd01 osd02 osd03 osd04
添加心跳地址
cluster network = 172.17.0.0/23
五、使用
創建存儲池:
ceph osd pool create {pool-name} pg_num ceph osd pool create poolceph01 128
確定 pg_num 取值是強制性的,因爲不能自動計算。下面是幾個常用的值:
少於 5 個 OSD 時可把 pg_num 設置爲 128
OSD 數量在 5 到 10 個時,可把 pg_num 設置爲 512
OSD 數量在 10 到 50 個時,可把 pg_num 設置爲 4096
OSD 數量大於 50 時,你得理解權衡方法、以及如何自己計算 pg_num 取值
ceph osd lspools列出存儲池 ceph-mds -i mds -d
存入/檢出對象數據
ceph osd map {poolname} {object-name}
在管理節點上,通過 ceph-deploy 把 Ceph 安裝到 ceph-client 節點。
ceph-deploy install ceph-client
在管理節點上,用 ceph-deploy 把 Ceph 配置文件和 ceph.client.admin.keyring 拷貝到 ceph-client 。
ceph-deploy admin ceph-client
創建 CEPH 文件系統
關於存儲池的管理請參考 存儲池 。例如,要用默認設置爲文件系統創建兩個存儲池,你可以用下列命令:
$ ceph osd pool create cephfs_data <pg_num> $ ceph osd pool create cephfs_metadata <pg_num>
創建好存儲池後,你就可以用 fs new 命令創建文件系統了:
$ ceph fs new <fs_name> <metadata> <data> 例如: $ ceph fs new cephfs cephfs_metadata cephfs_data $ ceph fs ls
name: cephfs, metadata pool: cephfs_metadata, data pools: [cephfs_data ]
文件系統創建完畢後, MDS 服務器就能達到 active 狀態了,比如在一個單 MDS 系統中:
$ ceph mds stat e5: 1/1/1 up {0=a=up:active}
用內核驅動掛載 CEPH 文件系統
要掛載 Ceph 文件系統,如果你知道監視器 IP 地址可以用 mount 命令、或者用 mount.ceph 工具來自動解析監視器 IP 地址。例如:
sudo mkdir /mnt/mycephfs sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
要掛載啓用了 cephx 認證的 Ceph 文件系統,你必須指定用戶名、密鑰。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
前述用法會把密碼遺留在 Bash 歷史裏,更安全的方法是從文件讀密碼。例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
關於 cephx 參見認證。
要卸載 Ceph 文件系統,可以用 umount 命令,例如:
sudo umount /mnt/mycephfs
---
要把 Ceph 文件系統掛載爲用戶空間文件系統,可以用 ceph-fuse 命令,例如:
sudo mkdir /home/usernname/cephfs sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
創建塊設備:
ceph-deploy install ceph-client ceph-deploy admin ceph-client
配置塊設備
在 ceph-client 節點上創建一個塊設備 image 。
rbd create foo --size 4096 [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] rbd create foo --size 4096 -m mon -k /etc/ceph/ceph.client.admin.keyring
在 ceph-client 節點上,把 image 映射爲塊設備。
sudo rbd map foo --name client.admin [-m {mon-IP}] [-k /path/to/ceph.client.admin.keyring] rbd map foo --name client.admin -m mon -k /etc/ceph/ceph.client.admin.keyring
在 ceph-client 節點上,創建文件系統後就可以使用塊設備了。
sudo mkfs.ext4 -m0 /dev/rbd/rbd/foo
此命令可能耗時較長。
在 ceph-client 節點上掛載此文件系統。
sudo mkdir /mnt/ceph-block-device sudo mount /dev/rbd/rbd/foo /mnt/ceph-block-device cd /mnt/ceph-block-device
查看塊信息
rbd ls
#新建rbd 塊:
rbd create test001 --size 100G --image-format 2 --image-feature layering rbd ls rbd map test001 mkfs.ext4 -f /dev/rdb0 mount /dev/rbd0 /mnt/data
dd測速:
dd if=/dev/zero of=/mnt/mycephfs/zero bs=8k count=200000 conv=fdatasync
同步配置文件
ceph-deploy --overwrite-conf admin osd01
六、高級應用
緩存設置
冷熱分層
學習中