使用node1作為部署主機
[root@node1 ceph-cluster]# ls
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring[root@node1 ceph-cluster]# ceph-deploy install node1 node2 node3
[root@node1 ceph-cluster]# ceph-deploy mon create-initial
創建OSD
創建日志盤(使用vdb做日志盤,分別在node1 node2 node3 主機上執行如下命令 )
parted /dev/vdb mklabel gpt //使用gpt模式分區
parted /dev/vdb mkpart primary 1M 50% //各分一半
parted /dev/vdb mkpart primary 50% 100%
]# chown ceph:ceph /dev/vdb*
]# echo "chown ceph.ceph /dev/vdb*" >> /etc/rc.local
]# chmod +x /etc/rc.d/rc.local
//設置屬主屬組為ceph ,設為開機啟動命令,否則重啟后會失效
在管理主機node1初始化存儲盤 vdc 和 vdd
node1]# cd /root/ceph-cluster/
node1]# ceph-deploy disk zap node1:vdc node1:vdd
node1]# ceph-deploy disk zap node2:vdc node2:vdd
node1]# ceph-deploy disk zap node3:vdc node3:vdd
在管理主機node1上,創建osd設備
node1]#
ceph-deploy osd create node1:vdc:/dev/vdb1 node1:vdd:/dev/vdb2
//創建一個儲存設備,vdc,vdb為集群提供儲存空間,vdb1提供JOURNAL日志,一個存儲設備對應一個日志設備,日志需要SSD硬盤,不需要很大
node1]#
ceph-deploy osd create node2:vdc:/dev/vdb1 node2:vdd:/dev/vdb2
node1]#
ceph-deploy osd create node3:vdc:/dev/vdb1 node3:vdd:/dev/vdb2
3查看集群狀態
[root@node1 ~]# ceph -s
cluster ad2bf018-8b58-4289-97db-406a365a9289
health HEALTH_OK
monmap e1: 3 mons at
{node1=192.168.4.51:6789/0,node2=192.168.4.52:6789/0,node3=192.168.4.53:6789/0}
election epoch 6, quorum 0,1,2 node1,node2,node3
osdmap e33: 6 osds: 6 up, 6 in
flags sortbitwise
pgmap v82: 64 pgs, 1 pools, 0 bytes data, 0 objects
202 MB used, 61171 MB / 61373 MB avail
64 active+clean
[root@node1 ~]#
查看相關服務的狀態信息:
node1]# systemctl status ceph\*.service ceph\*.target
查看工作目錄下的文件列表
[root@node1 ~]# ls /root/ceph-cluster/
ceph.bootstrap-mds.keyring ceph.bootstrap-rgw.keyring ceph.conf
ceph.mon.keyring
ceph.bootstrap-osd.keyring ceph.client.admin.keyring ceph-deploy-ceph.lo
==================================================================
Ceph塊設備也叫做RADOS塊設備---RADOS block device:RDB
RBD驅動已經很好的集成在linux內核中了
RBD提供了企業功能,如快照,COW克隆等
RBD還支持內存緩存,從而能夠大大提高性能
部署ceph塊存儲集群
[root@node1 ~]# ceph osd lspools 查看已有的存儲池,默認存在的
0 rbd,
[root@node1 ~]# rbd list 查看存儲池里的鏡像列表,還沒創建so 為空
創建新鏡像
[root@node1 ~]# rbd create domo-image --image-feature layering --size 10G
//domo-image是鏡像名
[root@node1 ~]# rbd create rbd/image --image-feature layering --size 15G
//也可以鏡像名前面定義資源池名為rbd的池,不加默認為rbd池
[root@node1 ~]# rbd list
domo-image
image
[root@node1 ~]# rbd info domo-image
rbd image 'domo-image':
size 10240 MB in 2560 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.1052238e1f29
format: 2
features: layering
flags:
查看鏡像大小
[root@node1 ~]# rbd info image
rbd image 'image':
size 15360 MB in 3840 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
調整鏡像大小:
把image容量的縮小到1G
[root@node1 ~]# rbd resize --size 1G image --allow-shrink
Resizing image: 100% complete...done.
[root@node1 ~]#
[root@node1 ~]# rbd info image
rbd image 'image':
size 1024 MB in 256 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
//縮小需要加 --allow-shrink
把image容量的擴大到4G
[root@node1 ~]# rbd resize --size 4G image
Resizing image: 100% complete...done.
[root@node1 ~]# rbd info image
rbd image 'image':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10662ae8944a
format: 2
features: layering
flags:
=====================================================
在存儲服務器本機使用鏡像存儲文件的步驟:
[root@node1 ~]# rbd list
domo-image
image
[root@node1 ~]# rbd map domo-image //把鏡像映射到本機
/dev/rbd0
[root@node1 ~]# ls /dev/rbd0 // 會多個rbd0
/dev/rbd0
[root@node1 ~]# mkdir /notedir //創建掛載目錄
[root@node1 ~]# mkfs.ext4 /dev/rbd0 //格式化
[root@node1 ~]# blkid /dev/rbd0 // 查看格式化信息
/dev/rbd0: UUID="c4b13e97-49ac-407c-8045-477a91fe6550" TYPE="ext4"
[root@node1 ~]# mount /dev/rbd0 /notedir/ //掛載
[root@node1 ~]# echo 123 > /notedir/test.txt //存儲一個文件,確認可用
[root@node1 ~]# cat /notedir/test.txt
123
客戶端通過KRBD訪問
配置:在客戶端50主機client, 使用ceph鏡像存儲文件的配置步驟:
1 安裝軟件包
【root@client ~]# yum -y install ceph-common
[root@client ~]# ls /etc/ceph/ //會出現drbdmap文件
rbdmap
2 從管理主機上拷貝集群配置文件
[root@client ~]# scp 192.168.4.51:/etc/ceph/ceph.conf /etc/ceph/
root@192.168.4.51's password:
ceph.conf 100% 235 441.4KB/s 00:00
[root@client ~]# ls /etc/ceph/
ceph.conf rbdmap
3 從管理主機上拷貝連接集群密鑰文件
[root@client ~]# scp 192.168.4.51:/etc/ceph/ceph.client.admin.keyring /etc/ceph/
[root@client ~]# ls /etc/ceph/
ceph.client.admin.keyring ceph.conf rbdmap
[root@client ~]#
[root@client ~]# rbd list //查看ceph集群鏡像列表
domo-image
image
[root@client ~]# rbd map image //把鏡像文件映射到本機
/dev/rbd0
[root@client ~]# ls /dev/rbd0
/dev/rbd0
[root@client ~]#
[root@client ~]# mkdir /studayup //創建文件夾,掛載用
[root@client ~]# mkfs.ext4 /dev/rbd0 //格式化
[root@client ~]# blkid /dev/rbd0
/dev/rbd0: UUID="f4edce49-4dae-4a5e-a63d-fe55a30ac158" TYPE="ext4"
[root@client ~]#
[root@client ~]# mount /dev/rbd0 /studayup/ //掛載
[root@client ~]#
[root@client ~]# echo 123456 > /studayup/test2.txt
[root@client ~]#
[root@client ~]# cat /studayup/test2.txt
123456
====================================================
在管理主機上給被掛載的鏡像創建快照 (COW技術 Copy Online Write)
[root@node1 ~]# rbd list 查看已有的鏡像
domo-image
image
[root@node1 ~]# rbd snap ls image //查看image鏡像是否有快照
給image鏡像創建快照 名稱叫 image-snap1
[root@node1 ~]# rbd snap create image --snap image-snap1
[root@node1 ~]# rbd snap ls image // 再次查看
SNAPID NAME SIZE
4 image-snap1 4096 MB
使用快照恢復 如果誤刪除了文件,可以恢復
[root@client ~]# cat /studayup/test2.txt
123456
[root@client ~]# rm -rf /studayup/test2.txt
[root@client ~]# cat /studayup/test2.txt
cat: /studayup/test2.txt: //內容被刪了
在管理主機上使用快照恢復誤刪除的文件
[root@node1 ~]# rbd snap rollback image --snap image-snap1
Rolling back to snapshot: 100% complete...done.
客戶端卸載當前掛載的image鏡像 后 再次掛載image 就可看到恢復的文件
[root@client ~]# cat /studayup/test2.txt
cat: /studayup/test2.txt:
[root@client ~]# umount /studayup/
[root@client ~]# mount /dev/rbd0 /studayup/
[root@client ~]# ls /studayup/
lost+found test2.txt
[root@client ~]# cat /studayup/test2.txt
123456
======================================================
快照克隆:(在管理主機上操作)
對快照文件寫保護
[root@node1 ~]# rbd snap protect image --snap image-snap1
對image鏡像的快照image-snap1 做克隆 名稱叫image-clone
[root@node1 ~]# rbd clone image --snap image-snap1 image-clone --image-feature layering
[root@node1 ~]# rbd info image-clone1 //查看克隆文件的信息 若沒有報錯
rbd: error opening image image-clone1: (2) No such file or directory
[root@node1 ~]# rbd info image-clone //查看克隆文件的信息
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering
flags:
parent: rbd/image@image-snap1 // 顯示克隆文件對應的鏡像信息
overlap: 4096 MB
[root@node1 ~]# rbd info image-clone // 恢復前查看
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering
flags:
parent: rbd/image@image-snap1
overlap: 4096 MB
[root@node1 ~]# rbd flatten image-clone //使用克隆文件恢復image鏡像
Image flatten: 100% complete...done.
[root@node1 ~]# rbd info image-clone //恢復后查看
rbd image 'image-clone':
size 4096 MB in 1024 objects
order 22 (4096 kB objects)
block_name_prefix: rbd_data.10653d1b58ba
format: 2
features: layering // 查看克隆文件的對應的鏡像信息 信息沒有了
flags:
//否則無法刪除原名的image鏡像文件
=========================================================
配置 客戶端不使用ceph集群的塊設備存儲數據的步驟:
1. 撤銷鏡像映射 (要先卸載掛載的/dev/rbdx 設備)
[root@client ~]# umount /studayup/ //取消掛載點
[root@client ~]# rbd showmapped //查看映射
id pool image snap device
0 rbd image - /dev/rbd0
[root@client ~]# rbd unmap /dev/rbd/rbd/image //取消RBD磁盤映射
[root@client ~]# rbd showmapped //再次查看
===================================================
在管理主機上刪除創建的鏡像(如果鏡像有快照的話要先刪除快照文件)
[root@node1 ~]# rbd snap unprotect image --snap image-snap1 // 取消保護
[root@node1 ~]# rbd snap rm image --snap image-snap1 // 刪除快照
[root@node1 ~]# rbd list
domo-image
image
image-clone
[root@node1 ~]# rbd rm image //刪除image鏡像
Removing image: 100% complete...done.
[root@node1 ~]# rbd list
domo-image
image-clone