Centos 7 部署Ceph L版


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
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末宝冕,一起剝皮案震驚了整個(gè)濱河市张遭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌地梨,老刑警劉巖菊卷,帶你破解...
    沈念sama閱讀 219,366評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異宝剖,居然都是意外死亡洁闰,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,521評論 3 395
  • 文/潘曉璐 我一進(jìn)店門万细,熙熙樓的掌柜王于貴愁眉苦臉地迎上來扑眉,“玉大人,你說我怎么就攤上這事赖钞⊙兀” “怎么了?”我有些...
    開封第一講書人閱讀 165,689評論 0 356
  • 文/不壞的土叔 我叫張陵雪营,是天一觀的道長弓千。 經(jīng)常有香客問我,道長献起,這世上最難降的妖魔是什么洋访? 我笑而不...
    開封第一講書人閱讀 58,925評論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮谴餐,結(jié)果婚禮上捌显,老公的妹妹穿的比我還像新娘。我一直安慰自己总寒,他們只是感情好扶歪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,942評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著摄闸,像睡著了一般善镰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上年枕,一...
    開封第一講書人閱讀 51,727評論 1 305
  • 那天炫欺,我揣著相機(jī)與錄音,去河邊找鬼熏兄。 笑死品洛,一個(gè)胖子當(dāng)著我的面吹牛树姨,可吹牛的內(nèi)容都是我干的抚岗。 我是一名探鬼主播傻寂,決...
    沈念sama閱讀 40,447評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼屋谭!你這毒婦竟也來了辅斟?” 一聲冷哼從身側(cè)響起转晰,我...
    開封第一講書人閱讀 39,349評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎士飒,沒想到半個(gè)月后查邢,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,820評論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡酵幕,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,990評論 3 337
  • 正文 我和宋清朗相戀三年扰藕,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片芳撒。...
    茶點(diǎn)故事閱讀 40,127評論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡邓深,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出番官,到底是詐尸還是另有隱情,我是刑警寧澤钢属,帶...
    沈念sama閱讀 35,812評論 5 346
  • 正文 年R本政府宣布徘熔,位于F島的核電站,受9級特大地震影響淆党,放射性物質(zhì)發(fā)生泄漏酷师。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,471評論 3 331
  • 文/蒙蒙 一染乌、第九天 我趴在偏房一處隱蔽的房頂上張望山孔。 院中可真熱鬧,春花似錦荷憋、人聲如沸台颠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,017評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽串前。三九已至,卻和暖如春实蔽,著一層夾襖步出監(jiān)牢的瞬間荡碾,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,142評論 1 272
  • 我被黑心中介騙來泰國打工局装, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留坛吁,地道東北人劳殖。 一個(gè)月前我還...
    沈念sama閱讀 48,388評論 3 373
  • 正文 我出身青樓,卻偏偏與公主長得像拨脉,于是被迫代替她去往敵國和親哆姻。 傳聞我的和親對象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,066評論 2 355