title: Centos 7 部署Ceph L版
date: 2018-04-10 22:21:44
tags: CEPH
ceph L版已經(jīng)發(fā)布很久了健爬,官方說默認(rèn)使用BlueStore作為OSD的存儲后端抑党,在Cephalocon APAC 2018上也是討論的焦點(diǎn)之一匙铡。
提到BlueStore,不得不說一說Ceph的STORAGE DEVICES伯顶。
STORAGE DEVICES
Ceph守護(hù)進(jìn)程將數(shù)據(jù)存儲在磁盤上:
Ceph OSDs ( Object Storage Daemons )
Client端的大多數(shù)數(shù)據(jù)寫入Ceph后被存儲的地方囚灼,一般而言,每個(gè)OSD都由單一存儲設(shè)備支持祭衩,如傳統(tǒng)硬盤(HDD)或固態(tài)硬盤(SSD)灶体。
OSD還可以由多種設(shè)備組合,如存儲數(shù)據(jù)的HDD和存儲某些元數(shù)據(jù)的SSD(或SSD的分區(qū))汪厨。
群集中OSD的數(shù)量通常取決于你要存儲的數(shù)據(jù)量赃春,還需要考慮每個(gè)存儲設(shè)備的容量以及冗余級別和存儲類型(replication或erasure coding)。
Ceph Monitor
管理關(guān)鍵群集狀態(tài)劫乱,如cluster membership和authentication信息织中。對于較小的集群,需要幾千兆字節(jié)(幾個(gè)GB)衷戈,然而對于較大的集群狭吼,monitor的數(shù)據(jù)庫可以達(dá)到幾十甚至幾百千兆(幾十個(gè)GB甚至幾百個(gè)GB)。
OSD BACKENDS
OSD可以通過兩種方式管理存儲的數(shù)據(jù)殖妇。從Luminous 12.2.z發(fā)行版開始刁笙,新的默認(rèn)(推薦)后端是 BlueStore。在Luminous之前谦趣,默認(rèn)(也是唯一的選擇)是 FileStore疲吸。
BLUESTORE
BlueStore是專門用于Ceph OSD管理磁盤上的數(shù)據(jù)的專用存儲后端。在過去十年間前鹅,受到了FileStore管理OSD經(jīng)驗(yàn)的啟發(fā).
BlueStore的主要功能包括:
直接管理存儲設(shè)備 ( Direct management of storage devices )
BlueStore使用原始塊設(shè)備或分區(qū)摘悴。這避免了任何可能限制性能或增加復(fù)雜性的抽象層(如像XFS這樣的本地文件系統(tǒng))。
使用RocksDB進(jìn)行元數(shù)據(jù)管理 ( Metadata management with RocksDB )
為了管理內(nèi)部元數(shù)據(jù)舰绘,我們嵌入了RocksDB的key/value數(shù)據(jù)庫蹂喻。例如在磁盤上,從object names到block locations的映射捂寿。
完整的數(shù)據(jù)和元數(shù)據(jù)校驗(yàn) ( Full data and metadata checksumming )
默認(rèn)情況下口四,寫入BlueStore的所有數(shù)據(jù)和元數(shù)據(jù)都受到一個(gè)或多個(gè)校驗(yàn)和的保護(hù)。沒有數(shù)據(jù)或元數(shù)據(jù)在未經(jīng)過驗(yàn)證的情況下秦陋,就從磁盤讀取或返回給用戶蔓彩。
內(nèi)置壓縮 ( Inline compression )
寫入的數(shù)據(jù)在寫入磁盤之前可以選擇壓縮。
多設(shè)備元數(shù)據(jù)分層 ( Multi-device metadata tiering )
BlueStore允許將其內(nèi)部journal(預(yù)寫日志,write-ahead log)寫入單獨(dú)的高速設(shè)備(如SSD赤嚼,NVMe或NVDIMM)以提高性能大磺。
如果有大量更快速的存儲可用,則內(nèi)部元數(shù)據(jù)也可以存儲在更快的設(shè)備上探膊。
高效的寫時(shí)復(fù)制 ( Efficient copy-on-write )
RBD和CephFS快照依賴于copy-on-write clone機(jī)制,也在BlueStore中得到了有效的實(shí)現(xiàn)待榔。這將為常規(guī)快照和erasure coded池提供高效的IO(依靠clone實(shí)現(xiàn)高效的two-phase commits)
http://docs.ceph.com/docs/master/rados/configuration/bluestore-config-ref/
http://docs.ceph.com/docs/master/rados/operations/bluestore-migration/
FILESTORE
FileStore是在Ceph中存儲objects的傳統(tǒng)方法逞壁。它依賴于標(biāo)準(zhǔn)文件系統(tǒng)(通常是XFS)和某個(gè)元數(shù)據(jù)的key/value數(shù)據(jù)庫(傳統(tǒng)上是LevelDB,現(xiàn)在是RocksDB)結(jié)合使用锐锣。
FileStore經(jīng)過良好測試并廣泛用于生產(chǎn)腌闯,但由于其整體設(shè)計(jì)和對傳統(tǒng)文件系統(tǒng)存儲object數(shù)據(jù)的依賴性,因此存在許多性能缺陷雕憔。
盡管FileStore通常能夠在大多數(shù)與POSIX兼容的文件系統(tǒng)(包括btrfs和ext4)上運(yùn)行姿骏,但我們只建議使用XFS。
btrfs和ext4都有已知的bug和缺陷斤彼,使用它們可能會導(dǎo)致數(shù)據(jù)丟失分瘦。默認(rèn)情況下,所有的Ceph提供的工具都將使用XFS琉苇。
http://docs.ceph.com/docs/master/rados/configuration/filestore-config-ref/
在ceph L版代碼結(jié)構(gòu)改動比較大嘲玫,增加了CEPH-MGR向外部監(jiān)測和管理系統(tǒng)提供額外的監(jiān)測接口,今天就用虛擬機(jī)搭建實(shí)驗(yàn)環(huán)境玩一玩并扇。
環(huán)境信息
[root@cephL ~]# yum install -y redhat-lsb
[root@cephL ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
[root@cephL ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 36G 0 lvm /
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
sdc 8:32 0 30G 0 disk
sr0 11:0 1 1024M 0 rom
安裝
安裝pip和ceph-deploy
[root@cephL ~]# curl "https://bootstrap.pypa.io/get-pip.py" -o "get-pip.py"
[root@cephL ~]# python get-pip.py
[root@cephL ~]# python -m pip install -U pip
[root@cephL ~]# pip install --upgrade setuptools
[root@cephL ~]# pip install ceph-deploy
[root@cephL ~]# ceph-deploy --version
2.0.0
安裝ceph軟件包
[root@cephL ~]# mkdir ceph-deploy && cd ceph-deploy
[root@cephL ceph-deploy]# ceph-deploy install cephL --release luminous
開始部署一個(gè)新的集群去团,然后為它寫一個(gè)CLUSTER.conf和keyring
[root@cephL ceph-deploy]# ceph-deploy new --public-network 192.168.56.101/24 --cluster-network 192.168.56.101/24 cephL
部署MON
[root@cephL ceph-deploy]# ceph-deploy mon create-initial
[root@cephL ceph-deploy]# ceph-deploy mon create cephL
ceph 1110 1 0 12:57 ? 00:00:01 /usr/bin/ceph-mon -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
部署OSD
bluestore方法
# 在創(chuàng)建osd時(shí),L版默認(rèn)是bluestore
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdb cephL
ceph 1514 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph
[root@cephL ceph-deploy]# ceph-deploy osd create --data /dev/sdc cephL
ceph 1518 1 0 12:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph
遇到問題
[root@cephL ceph-deploy]# ceph -s
2018-04-10 12:00:19.660298 7fd1fe0ae700 -1 auth: unable to find a keyring on /etc/ceph/ceph.client.admin.keyring,/etc/ceph/ceph.keyring,/etc/ceph/keyring,/etc/ceph/keyring.bin,: (2) No such file or directory
2018-04-10 12:00:19.660310 7fd1fe0ae700 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
2018-04-10 12:00:19.660312 7fd1fe0ae700 0 librados: client.admin initialization error (2) No such file or directory
[errno 2] error connecting to the cluster
[root@cephL ceph-deploy]# chmod +r *
[root@cephL ceph-deploy]# cp ceph.client.admin.keyring /etc/ceph/
[root@cephL ceph-deploy]# ceph -s
cluster:
id: 765752b7-1f77-4d0d-bc18-936b8ad409fd
health: HEALTH_WARN
no active mgr
services:
mon: 1 daemons, quorum cephL
mgr: no daemons active
osd: 2 osds: 2 up, 2 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 bytes
usage: 0 kB used, 0 kB / 0 kB avail
pgs:
filestore方法
# 如果是filestore則需要對data device和journal device先做GPT partition
--data DATA The OSD data logical volume (vg/lv) or absolute path to device
--journal JOURNAL Logical Volume (vg/lv) or path to GPT partition
[root@cephL ceph-deploy]# fdisk /dev/sdb
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
歡迎使用 fdisk (util-linux 2.23.2)穷蛹。
更改將停留在內(nèi)存中土陪,直到您決定將更改寫入磁盤。
使用寫入命令前請三思肴熏。
命令(輸入 m 獲取幫助):g
Building a new GPT disklabel (GUID: 80097CEF-475B-4161-ACC7-7164F6A39DD2)
命令(輸入 m 獲取幫助):n
分區(qū)號 (1-128鬼雀,默認(rèn) 1):
第一個(gè)扇區(qū) (2048-62914526,默認(rèn) 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526扮超,默認(rèn) 62914526):
已創(chuàng)建分區(qū) 1
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤取刃。
[root@cephL ceph-deploy]# fdisk /dev/sdc
WARNING: fdisk GPT support is currently new, and therefore in an experimental phase. Use at your own discretion.
歡迎使用 fdisk (util-linux 2.23.2)。
更改將停留在內(nèi)存中出刷,直到您決定將更改寫入磁盤璧疗。
使用寫入命令前請三思。
命令(輸入 m 獲取幫助):g
Building a new GPT disklabel (GUID: 21DFA98C-5BCF-40E7-A120-3DEDEA6600ED)
命令(輸入 m 獲取幫助):n
分區(qū)號 (1-128馁龟,默認(rèn) 1):
第一個(gè)扇區(qū) (2048-62914526崩侠,默認(rèn) 2048):
Last sector, +sectors or +size{K,M,G,T,P} (2048-62914526,默認(rèn) 62914526):
已創(chuàng)建分區(qū) 1
命令(輸入 m 獲取幫助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盤坷檩。
[root@cephL ceph-deploy]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 40G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 39G 0 part
├─centos-root 253:0 0 36G 0 lvm /
└─centos-swap 253:1 0 3G 0 lvm [SWAP]
sdb 8:16 0 30G 0 disk
└─sdb1 8:17 0 30G 0 part
sdc 8:32 0 30G 0 disk
└─sdc1 8:33 0 30G 0 part
sr0 11:0 1 1024M 0 rom
[root@cephL ceph-deploy]# ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL
[ceph_deploy.conf][DEBUG ] found configuration file at: /root/.cephdeploy.conf
[ceph_deploy.cli][INFO ] Invoked (2.0.0): /usr/bin/ceph-deploy osd create --filestore --fs-type xfs --data /dev/sdb1 --journal /dev/sdc1 cephL
[ceph_deploy.cli][INFO ] ceph-deploy options:
[ceph_deploy.cli][INFO ] verbose : False
[ceph_deploy.cli][INFO ] bluestore : None
[ceph_deploy.cli][INFO ] cd_conf : <ceph_deploy.conf.cephdeploy.Conf instance at 0x22c7320>
[ceph_deploy.cli][INFO ] cluster : ceph
[ceph_deploy.cli][INFO ] fs_type : xfs
[ceph_deploy.cli][INFO ] block_wal : None
[ceph_deploy.cli][INFO ] default_release : False
[ceph_deploy.cli][INFO ] username : None
[ceph_deploy.cli][INFO ] journal : /dev/sdc1
[ceph_deploy.cli][INFO ] subcommand : create
[ceph_deploy.cli][INFO ] host : cephL
[ceph_deploy.cli][INFO ] filestore : True
[ceph_deploy.cli][INFO ] func : <function osd at 0x225ae60>
[ceph_deploy.cli][INFO ] ceph_conf : None
[ceph_deploy.cli][INFO ] zap_disk : False
[ceph_deploy.cli][INFO ] data : /dev/sdb1
[ceph_deploy.cli][INFO ] block_db : None
[ceph_deploy.cli][INFO ] dmcrypt : False
[ceph_deploy.cli][INFO ] overwrite_conf : False
[ceph_deploy.cli][INFO ] dmcrypt_key_dir : /etc/ceph/dmcrypt-keys
[ceph_deploy.cli][INFO ] quiet : False
[ceph_deploy.cli][INFO ] debug : False
[ceph_deploy.osd][DEBUG ] Creating OSD on cluster ceph with data device /dev/sdb1
[cephL][DEBUG ] connected to host: cephL
[cephL][DEBUG ] detect platform information from remote host
[cephL][DEBUG ] detect machine type
[cephL][DEBUG ] find the location of an executable
[ceph_deploy.osd][INFO ] Distro info: CentOS Linux 7.4.1708 Core
[ceph_deploy.osd][DEBUG ] Deploying osd to cephL
[cephL][DEBUG ] write cluster configuration to /etc/ceph/{cluster}.conf
[cephL][DEBUG ] find the location of an executable
[cephL][INFO ] Running command: /usr/sbin/ceph-volume --cluster ceph lvm create --filestore --data /dev/sdb1 --journal /dev/sdc1
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
[cephL][DEBUG ] Running command: /bin/ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring -i - osd new 8b7be4a6-b563-434e-b030-132880a10d31
[cephL][DEBUG ] Running command: vgcreate --force --yes ceph-8e2515c1-6170-4299-b82c-a5a47681f946 /dev/sdb1
[cephL][DEBUG ] stdout: Physical volume "/dev/sdb1" successfully created.
[cephL][DEBUG ] stdout: Volume group "ceph-8e2515c1-6170-4299-b82c-a5a47681f946" successfully created
[cephL][DEBUG ] Running command: lvcreate --yes -l 100%FREE -n osd-data-8b7be4a6-b563-434e-b030-132880a10d31 ceph-8e2515c1-6170-4299-b82c-a5a47681f946
[cephL][DEBUG ] stdout: Logical volume "osd-data-8b7be4a6-b563-434e-b030-132880a10d31" created.
[cephL][DEBUG ] Running command: /bin/ceph-authtool --gen-print-key
[cephL][DEBUG ] Running command: mkfs -t xfs -f -i size=2048 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31
[cephL][DEBUG ] stdout: meta-data=/dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31 isize=2048 agcount=4, agsize=1965824 blks
[cephL][DEBUG ] = sectsz=512 attr=2, projid32bit=1
[cephL][DEBUG ] = crc=1 finobt=0, sparse=0
[cephL][DEBUG ] data = bsize=4096 blocks=7863296, imaxpct=25
[cephL][DEBUG ] = sunit=0 swidth=0 blks
[cephL][DEBUG ] naming =version 2 bsize=4096 ascii-ci=0 ftype=1
[cephL][DEBUG ] log =internal log bsize=4096 blocks=3839, version=2
[cephL][DEBUG ] = sectsz=512 sunit=0 blks, lazy-count=1
[cephL][DEBUG ] realtime =none extsz=4096 blocks=0, rtextents=0
[cephL][DEBUG ] Running command: mount -t xfs -o rw,noatime,inode64 /dev/ceph-8e2515c1-6170-4299-b82c-a5a47681f946/osd-data-8b7be4a6-b563-434e-b030-132880a10d31 /var/lib/ceph/osd/ceph-0
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
[cephL][DEBUG ] Running command: ln -s /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
[cephL][DEBUG ] Running command: ceph --cluster ceph --name client.bootstrap-osd --keyring /var/lib/ceph/bootstrap-osd/ceph.keyring mon getmap -o /var/lib/ceph/osd/ceph-0/activate.monmap
[cephL][DEBUG ] stderr: got monmap epoch 1
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/
[cephL][DEBUG ] Running command: ceph-osd --cluster ceph --osd-objectstore filestore --mkfs -i 0 --monmap /var/lib/ceph/osd/ceph-0/activate.monmap --osd-data /var/lib/ceph/osd/ceph-0/ --osd-journal /var/lib/ceph/osd/ceph-0/journal --osd-uuid 8b7be4a6-b563-434e-b030-132880a10d31 --setuser ceph --setgroup ceph
[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.834993 7f315e466d00 -1 journal check: ondisk fsid 00000000-0000-0000-0000-000000000000 doesn't match expected 8b7be4a6-b563-434e-b030-132880a10d31, invalid (someone else's?) journal
[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.865621 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
[cephL][DEBUG ] 2018-05-07 23:01:34.865667 7f315e466d00 -1 journal do_read_entry(4096): bad header magic
[cephL][DEBUG ] 2018-05-07 23:01:34.865988 7f315e466d00 -1 read_settings error reading settings: (2) No such file or directory
[cephL][DEBUG ] stderr: 2018-05-07 23:01:34.916284 7f315e466d00 -1 created object store /var/lib/ceph/osd/ceph-0/ for osd.0 fsid 39f3b85e-ee3c-4d8d-93c2-7f7c8aa47121
[cephL][DEBUG ] Running command: ceph-authtool /var/lib/ceph/osd/ceph-0/keyring --create-keyring --name osd.0 --add-key AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw==
[cephL][DEBUG ] stdout: creating /var/lib/ceph/osd/ceph-0/keyring
[cephL][DEBUG ] added entity osd.0 auth auth(auid = 18446744073709551615 key=AQBDavBa0IPpIBAAlQxlaWxNrnTX/uaOMdZEQw== with 0 caps)
[cephL][DEBUG ] Running command: chown -R ceph:ceph /var/lib/ceph/osd/ceph-0/keyring
[cephL][DEBUG ] --> ceph-volume lvm prepare successful for: /dev/sdb1
[cephL][DEBUG ] Running command: ln -snf /dev/sdc1 /var/lib/ceph/osd/ceph-0/journal
[cephL][DEBUG ] Running command: chown -R ceph:ceph /dev/sdc1
[cephL][DEBUG ] Running command: systemctl enable ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31
[cephL][DEBUG ] stderr: Created symlink from /etc/systemd/system/multi-user.target.wants/ceph-volume@lvm-0-8b7be4a6-b563-434e-b030-132880a10d31.service to /usr/lib/systemd/system/ceph-volume@.service.
[cephL][DEBUG ] Running command: systemctl start ceph-osd@0
[cephL][DEBUG ] --> ceph-volume lvm activate successful for osd ID: 0
[cephL][DEBUG ] --> ceph-volume lvm create successful for: /dev/sdb1
[cephL][INFO ] checking OSD status...
[cephL][DEBUG ] find the location of an executable
[cephL][INFO ] Running command: /bin/ceph --cluster=ceph osd stat --format=json
[ceph_deploy.osd][DEBUG ] Host cephL is now ready for osd use.
移除OSD
# 使OSD進(jìn)入out狀態(tài)
[root@cephL ceph-deploy]# ceph osd out 0
marked out osd.0.
# 觀察數(shù)據(jù)遷移
[root@cephL ceph-deploy]# ceph -w
# 停止對應(yīng)的OSD進(jìn)程
[root@cephL ceph-deploy]# sudo systemctl stop ceph-osd@0
# 清除數(shù)據(jù)
[root@cephL ceph-deploy]# ceph osd purge 0 --yes-i-really-mean-it
purged osd.0
# 在ceph.conf中移除osd配置
[root@cephL ceph-deploy]# vi /etc/ceph/ceph.conf
部署CEPH-MGR
install netstat tool
[root@cephL ~]# yum -y install net-tools
[root@cephL ceph-deploy]# ceph-deploy mgr create cephL:cephLMGR
ceph 1111 1 0 12:57 ? 00:00:08 /usr/bin/ceph-mgr -f --cluster ceph --id cephLMGR --setuser ceph --setgroup ceph
[root@cephL ceph-deploy]# ceph mgr module enable dashboard
open 7000 port
[root@cephL ceph-deploy]# sudo firewall-cmd --zone=public --add-port=7000/tcp --permanent
[root@cephL ceph-deploy]# sudo firewall-cmd --reload
相關(guān)命令
[root@cephL ceph-deploy]# ceph mgr module ls
[root@cephL ceph-deploy]# ceph mgr services
[root@cephL ceph-deploy]# ceph tell mgr help
部署MDS并創(chuàng)建CEPH FS
[圖片上傳失敗...(image-7d8937-1599396610118)]
[root@cephL ceph-deploy]# ceph-deploy mds create cephL
ceph 2150 1 0 13:00 ? 00:00:00 /usr/bin/ceph-mds -f --cluster ceph --id cephL --setuser ceph --setgroup ceph
Ceph文件系統(tǒng)至少需要兩個(gè)RADOS pool却音,一個(gè)用于存儲數(shù)據(jù)改抡,一個(gè)用于存儲元數(shù)據(jù)。
配置這些pool時(shí)系瓢,可以考慮:
? 對元數(shù)據(jù)pool使用更多的replication數(shù)量阿纤,因?yàn)樵損ool中的任何數(shù)據(jù)丟失都可能導(dǎo)致整個(gè)文件系統(tǒng)無法訪問。
? 為元數(shù)據(jù)pool使用SSD等較低延遲的存儲設(shè)備夷陋,因?yàn)檫@將直接影響客戶端上文件系統(tǒng)操作的延遲欠拾。
ceph osd pool create cephfs_data <pg_num>
ceph osd pool create cephfs_metadata <pg_num>
例如:
[root@cephL ceph-deploy]# ceph osd pool create cephfs_data 32
[root@cephL ceph-deploy]# ceph osd pool create cephfs_metadata 32
更改pool的副本數(shù)
ceph osd pool set {poolname} size {num-replicas}
例如:
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1
[root@cephL ceph-deploy]# ceph osd pool set cephfs_data size 1
一旦創(chuàng)建了pool,就可以使用fs new命令啟用文件系統(tǒng):
ceph fs new <fs_name> <metadata> <data>
例如:
ceph fs new cephFS cephfs_metadata cephfs_data
一旦創(chuàng)建了文件系統(tǒng)骗绕,您的MDS將能夠進(jìn)入active狀態(tài)藐窄。例如,在single MDS system中:
[root@cephL ceph-deploy]# ceph mds stat
cephFS-1/1/1 up {0=cephL=up:active}
一旦創(chuàng)建了文件系統(tǒng)并且MDS處于active狀態(tài)酬土,你就可以掛載文件系統(tǒng)了荆忍。如果您創(chuàng)建了多個(gè)文件系統(tǒng),在掛載文件系統(tǒng)時(shí)撤缴,選擇使用哪一個(gè)刹枉。
如果創(chuàng)建了多個(gè)文件系統(tǒng),并且client在掛載時(shí)沒有指定掛載哪個(gè)文件系統(tǒng)屈呕,你可以使用ceph fs set-default命令來設(shè)置client默認(rèn)看到的文件系統(tǒng)嘶卧。
掛載CEPH FS ( File System ) 有兩種方式:
KERNEL DRIVER
要掛載Ceph文件系統(tǒng),您可以在知道m(xù)onitor主機(jī)IP地址的情況下使用mount命令凉袱,或使用mount.ceph utility將monitor主機(jī)名解析為IP地址芥吟。例如:
sudo mkdir /mnt/mycephfs
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs
例如:
[root@cephL ceph-deploy]# sudo mount -t ceph 192.168.56.101:6789:/ /mnt/mycephfs
mount error 22 = Invalid argument
Ceph 10.x (Jewel)版本開始,如果使用kernel方式(無論是krbd還是cephFS)官方推薦至少使用4.x的kernel专甩。
如果無法升級linux kernel钟鸵,那么映射rbd請使用librbd方式,cephFS請使用fuse方式涤躲。
如果掛載Ceph文件系統(tǒng)時(shí)開啟了cephx authentication棺耍,您必須指定user和secret。
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secret=AQATSKdNGBnwLhAAnNDKnH65FmVKpXZJVasUeQ==
上述用法在Bash history中留下了secret种樱。更安全的方法是從文件中讀取secret蒙袍。 例如:
sudo mount -t ceph 192.168.0.1:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin.secret
如果您有多個(gè)文件系統(tǒng),請使用mds_namespace選項(xiàng)指定要掛載的文件系統(tǒng)嫩挤,例如-o mds_namespace=myfs
要卸載Ceph文件系統(tǒng)害幅,可以使用umount命令。 例如:
sudo umount /mnt/mycephfs
提示:在執(zhí)行此命令之前岂昭,請確保您不在掛載的目錄中以现。
FUSE
在用戶空間(FUSE)中掛載Ceph文件系統(tǒng)之前,請確保客戶端主機(jī)具有Ceph配置文件的副本以及Ceph元數(shù)據(jù)服務(wù)器的CAPS keyring邑遏。
在您的客戶端主機(jī)上佣赖,將Ceph配置文件從monitor主機(jī)復(fù)制到/etc/ceph目錄。
sudo mkdir -p /etc/ceph
sudo scp {user}@{server-machine}:/etc/ceph/ceph.conf /etc/ceph/ceph.conf
在您的客戶端主機(jī)上记盒,將monitor主機(jī)的Ceph keyring復(fù)制到/etc/ceph目錄憎蛤。
sudo scp {user}@{server-machine}:/etc/ceph/ceph.keyring /etc/ceph/ceph.keyring
確保Ceph配置文件和keyring在您的客戶端機(jī)器上設(shè)置了適當(dāng)?shù)臋?quán)限(例如,chmod 644)纪吮。
要將Ceph文件系統(tǒng)掛在為FUSE蹂午,可以使用ceph-fuse命令。 例如:
sudo mkdir /home/usernname/cephfs
sudo ceph-fuse -m 192.168.0.1:6789 /home/username/cephfs
如果您擁有多個(gè)文件系統(tǒng)彬碱,請使用 --client_mds_namespace 命令行參數(shù)指定要掛載哪一個(gè)文件系統(tǒng),或者向ceph.conf中添加client_mds_namespace設(shè)置奥洼。
要自動掛載ceph-fuse巷疼,您可以在system fstab中添加一個(gè)條目。此外還可以使用ceph-fuse@.service和ceph-fuse.target systemd units灵奖。通常這些unit文件為ceph-fuse描述默認(rèn)的dependencies和推薦的execution context嚼沿。例如使用ceph-fuse掛載到/mnt:
sudo systemctl start ceph-fuse@/mnt.service
持久化掛載點(diǎn)可通過以下方式進(jìn)行設(shè)置:
sudo systemctl enable ceph-fuse@/mnt.service
部署RGW
[圖片上傳失敗...(image-ea6ad1-1599396610118)]
Ceph Object Gateway原來叫RADOS Gateway,它是構(gòu)建在librados之上的對象存儲接口瓷患,為應(yīng)用程序提供了一個(gè)RESTful gateway骡尽,用戶可以通過HTTP協(xié)議訪問Ceph存儲集群。
Ceph Object Storage支持兩個(gè)接口:
S3-compatible:與Amazon S3 RESTful API中一些子集兼容的接口擅编,提供對象存儲功能攀细。
Swift-compatible:與OpenStack Swift API中一些子集兼容的接口,提供對象存儲功能爱态。
Ceph Object Storage使用Ceph Object Gateway daemon (radosgw)谭贪,它是一個(gè)HTTP server,用于與Ceph存儲集群進(jìn)行交互锦担。由于它提供了與OpenStack Swift和Amazon S3兼容的接口俭识,因此Ceph Object Gateway具有自己的用戶管理。Ceph Object Gateway可以將數(shù)據(jù)存儲在與Ceph Filesystem和Ceph Block Device相同的Ceph存儲集群中洞渔。但是我相信在生產(chǎn)環(huán)境中不會這么做套媚,如果數(shù)據(jù)量大的話會影響Ceph Filesystem和Ceph Block Device的性能,個(gè)人一般會獨(dú)立出一個(gè)Ceph Object Gateway集群磁椒。S3和Swift API共享一個(gè)通用的namespace堤瘤,因此您可以使用一個(gè)API編寫數(shù)據(jù)并使用另一個(gè)API檢索它。
Note:Ceph Object Storage 不使用 Ceph Metadata Server
# 必須部署MGR浆熔,才能部署RGW
[root@cephL ceph-deploy]# ceph-deploy rgw create cephL:RGW
root 2799 1 0 13:13 ? 00:00:00 /usr/bin/radosgw -f --cluster ceph --name client.rgw.RGW --setuser ceph --setgroup ceph
# 重啟RGW
[root@cephL ~]# systemctl restart ceph-radosgw@rgw.cephL.service
[root@cephL ~]# systemctl restart ceph-radosgw@rgw
問題一宙橱,這難道是ceph-deploy 2.0.0的坑?
[root@cephL ~]# tailf /var/log/ceph/ceph-client.rgw.log
2018-05-11 22:30:31.999421 7f537c31fe00 0 ceph version 12.2.4 (52085d5249a80c5f5121a76d6288429f35e4e77b) luminous (stable), process (unknown), pid 3450
2018-05-11 22:30:32.021546 7f537c31fe00 -1 auth: unable to find a keyring on /var/lib/ceph/radosgw/ceph-rgw/keyring: (2) No such file or directory
2018-05-11 22:30:32.021561 7f537c31fe00 -1 monclient: ERROR: missing keyring, cannot use cephx for authentication
2018-05-11 22:30:32.021563 7f537c31fe00 0 librados: client.rgw initialization error (2) No such file or directory
2018-05-11 22:30:32.022900 7f537c31fe00 -1 Couldn't init storage provider (RADOS)
[root@cephL radosgw]# pwd
/var/lib/ceph/radosgw
[root@cephL radosgw]# ls
ceph-rgw.RGW
[root@cephL radosgw]# mv ceph-rgw.RGW ceph-rgw
配置變動
在L版中,刪除pool的操作做了強(qiáng)制限制师郑。需要在/etc/ceph/ceph.conf中加入相關(guān)參數(shù)才允許刪除pool环葵。
# 允許刪除pool,需要添加
mon allow pool delete = true