Ceph 開源存儲安裝

測試架構信息:

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





六、高級應用


緩存設置

冷熱分層


學習中





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章