分布式文件系統Ceph配置方法詳解


分布式文件系統(Distributed File System)是指文件系統管理的物理存儲資源不一定直接連接在本地節點上,而是通過計算機網絡與節點相連。
分布式文件系統的設計基於客戶機/服務器模式
 
常用分布式文件系統
Lustre , Hadoop , FsatDFS , Ceph , GlusterFS
 
Ceph組件
OSDs:存儲設備
Monitors:集群監控組件
MDSs:存放文件系統的元數據(對象存儲和塊存儲不需要該組件)
Client:ceph客戶端
 
環境准備
client客戶端:192.168.4.50
3台存儲虛擬機:192.168.4.51(即是存儲機也是管理機)    192.168.4.52     192.168.4.53
 
修改主機名,並且每台主機名映射都配寫入 /etc/hosts 里面
192.168.4.50   client
192.168.4.51   node1 
192.168.4.51   node2
192.168.4.51   node3
 
生成密鑰,發布密鑰到各個主機
[root@node1~]# ssh-keygen
[root@node1~]#for i in 50 51 52 53
>do
>ssh-copy-id 192.168.4.$i
>done
 
NTP時間同步
客戶端創建NTP服務器
[root@client~]# yum -y install chrony
[root@client~]# cat /etc/chrony.conf
server 0.centos.pool.ntp.org iburst
allow 192.168.4.0/24
local stratum 10
[root@client~]#systemctl restart chronyd    (並設開機自啟動enable)
#其他三台與其同步時間   server 192.168.4.50 iburst
3台做存儲的物理機添加3塊10G磁盤,分別是 vdb vdc vdd
 

 使用node1作為部署主機

[root@node1~]# yum -y install ceph-deploy  
#ceph-deploy --help 可以看幫助
 
1.為部署工具創建目錄,存放密鑰與配置文件
[root@node1~]# mkdir ceph-cluster         //創建共享目錄
[root@node1~]# cd ceph-cluster/             //cd進去不然下一步會報錯
創建ceph集群配置(所有節點都為mon)
[root@node1 ceph-cluster]# ceph-deploy new node1 node2 node3

[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

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM