ceph 16 集群部署测试

初识ceph

ceph功能介绍

     直接进入主题,ceph目前提供对象存储(RADOSGW)、块存储RDB以及 CephFS 文件系统这 3 种功能。对于这3种功能介绍,分别如下:1.对象存储,也就是通常意义的键值存储,其接口就是简单的GET、PUT、DEL 和其他扩展,代表主要有 Swift 、S3 以及 Gluster 等; 2.块存储,这种接口通常以 QEMU Driver 或者 Kernel Module 的方式存在,这种接口需要实现 Linux 的 Block Device 的接口或者 QEMU 提供的 Block Driver 接口,如 Sheepdog,AWS 的 EBS,青云的云硬盘和阿里云的盘古系统,还有 Ceph 的 RBD(RBD是Ceph面向块存储的接口)。在常见的存储中 DAS、SAN 提供的也是块存储;  3.文件存储,通常意义是支持 POSIX 接口,它跟传统的文件系统如 Ext4 是一个类型的,但区别在于分布式存储提供了并行化的能力,如 Ceph 的 CephFS (CephFS是Ceph面向文件存储的接口),但是有时候又会把 GlusterFS ,HDFS 这种非POSIX接口的类文件存储接口归入此类。当然 NFS、NAS也是属于文件系统存储;

ceph组件介绍    

大概简单介绍一下ceph的组件架构:

Monitor,负责监视整个集群的运行状况,信息由维护集群成员的守护程序来提供,各节点之间的状态、集群配置信息。Ceph monitor map主要包括OSD map、PG map、MDS map 和 CRUSH 等,这些 map 被统称为 集群Map。ceph monitor 不存储任何数据。下面分别开始介绍这些map的功能:

Monitor map:包括有关monitor节点端到端的信息,其中包括 Ceph 集群ID,监控主机名和IP以及端口。并且存储当前版本信息以及最新更改信息,通过 "ceph mon dump" 查看 monitor map。

OSD map:包括一些常用的信息,如集群ID、创建OSD map的 版本信息和最后修改信息,以及pool相关信息,主要包括pool 名字、pool的ID、类型,副本数目以及PGP等,还包括数量、状态、权重、最新的清洁间隔和OSD主机信息。通过命令 "ceph osd dump" 查看。

PG map:包括当前PG版本、时间戳、最新的OSD Map的版本信息、空间使用比例,以及接近占满比例信息,同事,也包括每个PG ID、对象数目、状态、OSD 的状态以及深度清理的详细信息。通过命令 "ceph pg dump" 可以查看相关状态。

CRUSH map:CRUSH map包括集群存储设备信息,故障域层次结构和存储数据时定义失败域规则信息。通过 命令 "ceph osd crush map" 查看。

MDS map:MDS Map包括存储当前 MDS map 的版本信息、创建当前的Map的信息、修改时间、数据和元数据POOL ID、集群MDS数目和MDS状态,可通过"ceph mds dump"查看。

OSD,Ceph OSD是由物理磁盘驱动器、在其之上的 Linux 文件系统以及 Ceph OSD 服务组成。Ceph OSD 将数据以对象的形式存储到集群中的每个节点的物理磁盘上,完成存储数据的工作绝大多数是由 OSD daemon 进程实现。在构建 Ceph OSD的时候,建议采用SSD 磁盘以及xfs文件系统来格式化分区。BTRFS 虽然有较好的性能,但是目前不建议使用到生产中,目前建议还是处于围观状态。

Ceph 元数据,MDS。ceph 块设备和RDB并不需要MDS,MDS只为 CephFS服务。

RADOS,Reliable Autonomic Distributed Object Store。RADOS是ceph存储集群的基础。在ceph中,所有数据都以对象的形式存储,并且无论什么数据类型,RADOS对象存储都将负责保存这些对象。RADOS层可以确保数据始终保持一致。

librados,librados库,为应用程度提供访问接口。同时也为块存储、对象存储、文件系统提供原生的接口。

ADOS块设备,它能够自动精简配置并可调整大小,而且将数据分散存储在多个OSD上。RADOSGW,网关接口,提供对象存储服务。它使用librgw和librados来实现允许应用程序与Ceph对象存储建立连接。并且提供S3 和 Swift 兼容的RESTful API接口。CephFS,Ceph文件系统,与POSIX兼容的文件系统,基于librados封装原生接口。

简单说下CRUSH,Controlled Replication Under Scalable Hashing,它表示数据存储的分布式选择算法, ceph 的高性能/高可用就是采用这种算法实现。CRUSH 算法取代了在元数据表中为每个客户端请求进行查找,它通过计算系统中数据应该被写入或读出的位置。CRUSH能够感知基础架构,能够理解基础设施各个部件之间的关系。并且CRUSH保存数据的多个副本,这样即使一个故障域的几个组件都出现故障,数据依然可用。CRUSH 算是使得 ceph 实现了自我管理和自我修复。

RADOS 分布式存储相较于传统分布式存储的优势在于:

 1. 将文件映射到object后,利用Cluster Map 通过CRUSH 计算而不是查找表方式定位文件数据存储到存储设备的具体位置。优化了传统文件到块的映射和Block MAp的管理。

    2. RADOS充分利用OSD的智能特点,将部分任务授权给OSD,最大程度地实现可扩展。

ceph数据读写流程

Pool:存储池、分区,存储池的大小取决于底层的存储空间。

PG(placement group):一个pool内部可以有多个 PG 存在,pool 和 PG 都是抽象的逻辑概 念,一个 pool 中有多少个 PG 可以通过公式计算。

OSD(Object Storage Daemon,对象存储设备):每一块磁盘都是一个 osd,一个主机由一个或 多个 osd 组成.ceph 集群部署好之后,要先创建存储池才能向 ceph 写入数据,文件在向 ceph 保存之前要 先进行一致性 hash 计算,计算后会把文件保存在某个对应的 PG 的,此文件一定属于某个 pool 的一个 PG,在通过 PG 保存在 OSD 上。 数据对象在写到主 OSD 之后再同步对从 OSD 以实现数据的高可用。

 注:存储文件过程:

第一步:计算文件到对象的映射: 计算文件到对象的映射,假如 file 为客户端要读写的文件,得到 oid(object id) = ino + ono ino:inode number (INO),File 的元数据序列号,File 的唯一 id。 ono:object number (ONO),File 切分产生的某个 object 的序号,默认以 4M 切分一个块大 小。

第二步:通过hash算法计算出文件对应的 pool 中的 PG: 通过一致性 HASH 计算 Object 到 PG, Object -> PG 映射 hash(oid) & mask-> pgid

第三步:通过CRUSH把对象映射到 PG 中的 OSD 通过 CRUSH 算法计算 PG 到 OSD,PG -> OSD 映射:[CRUSH(pgid)->(osd1,osd2,osd3)]

第四步:PG中的主 OSD 将对象写入到硬盘

第五步:主OSD将数据同步给备份 OSD,并等待备份 OSD 返回确认

第六步:主 OSD 将写入完成返回给客户端

Ceph集群安装

主机准备

机名Public networkCluster network功能组件硬盘

deploy192.168.0.140192.168.10.140ceph-deploy,mon40G

node1192.168.0.141192.168.10.141mon,osd,mgr40G,20G*3

node2192.168.0.142192.168.10.142mon,osd,mgr,mds40G,20G*3

node3192.168.0.143192.168.10.143rgw,osd40G,20G*3

添加网卡(所有节点)



添加硬盘ceph-node1,ceph-node2,ceph-node3

每台机器添加20G*3

系统设置(所有节点)

sudo vim /etc/ssh/sshd_config

#PermitRootLogin prohibit-password #默认为禁⽌登录

PermitRootLogin yes #改为允许登录

58 PasswordAuthentication yes #打开密码认证,其实默认就是允许通过密码认证登录

UseDNS no(加快ssh连接速度)

sudo su - root 

~# passwd #设置密码

Enter new UNIX password:

Retype new UNIX password:

passwd: password updated successfully

systemctl restart sshd #重启ssh服务并测试root⽤户远程ssh连接

网络设置:

# 1.设置⽹卡

#更改⽹卡名称

sudo vim /etc/default/grub

GRUB_CMDLINE_LINUX=""

#改为:

GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"

#更新开机启动⽂件

sudo grub-mkconfig -o /boot/grub/grub.cfg

#禁⽤ipv6

root@devops:~# cat > /etc/sysctl.conf <<EOF

#禁⽤ipv6

net.ipv6.conf.all.disable_ipv6=1

net.ipv6.conf.default.disable_ipv6=1

net.ipv6.conf.lo.disable_ipv6=1

EOF

root@devops:~# sysctl -p

#设置双⽹卡 deploy

root@deploy:~# cat /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system

# For more information, see netplan(5).

network:

  version: 2

  renderer: networkd

  ethernets:

    eth0:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.0.140/24]

      gateway4: 192.168.0.1

      nameservers:

        addresses: [192.168.0.1]

    eth1:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.10.140/24]

#设置双⽹卡 node1

root@deploy:~# cat /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system

# For more information, see netplan(5).

network:

  version: 2

  renderer: networkd

  ethernets:

    eth0:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.0.141/24]

      gateway4: 192.168.0.1

      nameservers:

        addresses: [192.168.0.1]

    eth1:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.10.141/24]

#设置双⽹卡 node2

root@deploy:~# cat /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system

# For more information, see netplan(5).

network:

  version: 2

  renderer: networkd

  ethernets:

    eth0:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.0.142/24]

      gateway4: 192.168.0.1

      nameservers:

        addresses: [192.168.0.1]

    eth1:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.10.142/24]

#设置双⽹卡 node3

root@deploy:~# cat /etc/netplan/01-netcfg.yaml

# This file describes the network interfaces available on your system

# For more information, see netplan(5).

network:

  version: 2

  renderer: networkd

  ethernets:

    eth0:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.0.143/24]

      gateway4: 192.168.0.1

      nameservers:

        addresses: [192.168.0.1]

    eth1:

      dhcp4: no

      dhcp6: no

      addresses: [192.168.10.143/24]

#取消 ssh 登录指纹验证

sudo sed -i '/ask/{s/#//;s/ask/no/}' /etc/ssh/ssh_config

# sudo netplan apply 重启网络服务

reboot重启

设置源(所有节点)

sudo mv /etc/apt/{sources.list,sources.list.old}

sudo cat > /etc/apt/sources.list <<EOF

#默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse

deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse

EOF

#添加ceph 源

wget -q -O- 'https://mirrors.tuna.tsinghua.edu.cn/ceph/keys/release.asc' | sudo apt-key add -

sudo echo "deb https://mirrors.tuna.tsinghua.edu.cn/ceph/debian-pacific bionic main" >> /etc/apt/sources.list

sudo apt update更新仓库sudo apt upgrade

安装包(所有节点)

 apt  install iproute2  ntpdate  tcpdump telnet traceroute nfs-kernel-server nfs-common  lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute  gcc openssh-server lrzsz tree  openssl libssl-dev libpcre3 libpcre3-dev zlib1g-dev ntpdate tcpdump telnet traceroute iotop unzip zip  -y

apt install net-tools vim wget git build-essential -y

配置主机名:(所有节点)

hostnamectl set-hostname "主机名"

关闭防火墙(所有节点)

ufw disable

配置节点内核(所有节点)

cat >/etc/sysctl.conf <<EOF

# Controls source route verification

net.ipv4.conf.default.rp_filter = 1

net.ipv4.ip_nonlocal_bind = 1

net.ipv4.ip_forward = 1

# Do not accept source routing

net.ipv4.conf.default.accept_source_route = 0

# Controls the System Request debugging functionality of the kernel

kernel.sysrq = 0

# Controls whether core dumps will append the PID to the core filename.

# Useful for debugging multi-threaded

applications. kernel.core_uses_pid = 1

# Controls the use of TCP syncookies

net.ipv4.tcp_syncookies = 1

# Disable netfilter on bridges.

net.bridge.bridge-nf-call-ip6tables = 0

net.bridge.bridge-nf-call-iptables = 0

net.bridge.bridge-nf-call-arptables = 0

# Controls the default maxmimum size of a mesage queue

kernel.msgmnb = 65536

# # Controls the maximum size of a message, in bytes

kernel.msgmax = 65536

# Controls the maximum shared segment size, in bytes

kernel.shmmax = 68719476736

# # Controls the maximum number of shared memory segments, in pages

kernel.shmall = 4294967296

# TCP kernel paramater

net.ipv4.tcp_mem = 786432 1048576 1572864

net.ipv4.tcp_rmem = 4096        87380   4194304

net.ipv4.tcp_wmem = 4096        16384   4194304 n

et.ipv4.tcp_window_scaling = 1

net.ipv4.tcp_sack = 1

# socket buffer

net.core.wmem_default = 8388608

net.core.rmem_default = 8388608

net.core.rmem_max = 16777216

net.core.wmem_max = 16777216

net.core.netdev_max_backlog = 262144

net.core.somaxconn = 20480

net.core.optmem_max = 81920

# TCP conn

net.ipv4.tcp_max_syn_backlog = 262144

net.ipv4.tcp_syn_retries = 3

net.ipv4.tcp_retries1 = 3

net.ipv4.tcp_retries2 = 15

# tcp conn reuse

net.ipv4.tcp_timestamps = 0

net.ipv4.tcp_tw_reuse = 0

net.ipv4.tcp_tw_recycle = 0

net.ipv4.tcp_fin_timeout = 1

net.ipv4.tcp_max_tw_buckets = 20000

net.ipv4.tcp_max_orphans = 3276800

net.ipv4.tcp_synack_retries = 1

net.ipv4.tcp_syncookies = 1

# keepalive conn

net.ipv4.tcp_keepalive_time = 300

net.ipv4.tcp_keepalive_intvl = 30

net.ipv4.tcp_keepalive_probes = 3

net.ipv4.ip_local_port_range = 10001    65000

# swap

vm.overcommit_memory = 0

vm.swappiness = 10

#net.ipv4.conf.eth1.rp_filter = 0

#net.ipv4.conf.lo.arp_ignore = 1

#net.ipv4.conf.lo.arp_announce = 2

#net.ipv4.conf.all.arp_ignore = 1

#net.ipv4.conf.all.arp_announce = 2

EOF

时钟同步(所有节点)dpkg-reconfigure tzdata  #系统时区设置成上海sudo apt install chrony -ysudo vim /etc/chrony/chrony.conf

修改为阿里云时钟同步服务器server ntp.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp1.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp2.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp3.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp4.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp5.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp6.aliyun.com minpoll 4 maxpoll 10 iburstserver ntp7.aliyun.com minpoll 4 maxpoll 10 iburst

重启chrony服务sudo systemctl restart chronysudo systemctl status chronysudo systemctl enable chrony查看是否激活sudo chronyc activity# 查看时钟同步状态sudo timedatectl status写入系统时钟sudo hwclock -w

apt install ntpdate

每5分钟同步一次时间

 echo "*/5 * * * * /usr/sbin/ntpdate time1.aliyun.com &> /dev/null && hwclock -w" >> /var/spool/cron/crontabs/root

编辑hosts文件(所有节点需要操作):

cat >> /etc/hosts<< EOF

# ceph host

192.168.0.140   ceph-deploy            

192.168.0.141   ceph-node1          

192.168.0.142   ceph-node2

192.168.0.143   ceph-node3   

# ceph host

EOF     

节点安装python2(所有节点)

做ceph初始化时,需要python2.7


sudo apt install python2.7 -y

sudo ln -sv /usr/bin/python2.7 /usr/bin/python2

创建ceph用户(所有节点)

groupadd -r -g 2022 ceph && useradd -r -m -s /bin/bash -u 2022 -g 2022 ceph && echo ceph:123456 | chpasswd

echo "ceph ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers

配置互信

su - ceph

ssh-keygen -t rsa   

ssh-copy-id ceph@192.168.0.140

ssh-copy-id ceph@192.168.0.141

ssh-copy-id ceph@192.168.0.142

ssh-copy-id ceph@192.168.0.143

安装ceph-deploy管理工具ceph-deploy节点

ceph用户部署

sudo apt-cache madison ceph-deploy  列出ceph-deploy的版本信息

sudo apt-get install ceph-deploy

初始化Mon节点:

在管理节点初始化mon 节点

前期只先初始化ceph-mon1(ceph-node1)节点,ceph-mon2(deploy)和ceph-mon3(ceph-node2)在集群部署完成后,再手动添加

ceph@deploy:~$ mkdir ceph-cluster

ceph@deploy:~$ cd ceph-cluster/

ceph@deploy:~/ceph-cluster$ ceph-deploy new --cluster-network 192.168.10.0/24 --public-network 192.168.0.0/24 ceph-node1



ceph@deploy:~/ceph-cluster$ cat ceph.conf

安装mon节点

sudo apt install ceph-mon -y (deploy ceph-node1 ceph-node2)

初始化存储节点

ceph@ceph-deploy:~/ceph-cluster$ sudo ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3(中途需要输入各几点密码)

配置mon节点并生成及同步秘钥

安装mon组件

root@ceph-deploy:~# apt install ceph-mon

root@ceph-node1:~# apt install ceph-mon

root@ceph-node2:~# apt install ceph-mon

初始化mon

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy mon create-initial

验证mon节点

分发admin秘钥到node节点

root@ceph-deploy:~# apt install ceph-common

root@ceph-node1:~# apt install ceph-common

root@ceph-node2:~# apt install ceph-common

root@ceph-node3:~# apt install ceph-common

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy admin ceph-deploy ceph-node1 ceph-node2 ceph-node3

验证密钥

在ceph-node节点对密钥授权

root@ceph-node1:~# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-node2:~# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-node3:~# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

root@ceph-deploy:~# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring

部署ceph-mgr节点

在ceph-node1和ceph-node2上安装ceph-mgr软件

root@ceph-node1:~# apt install -y ceph-mgr

root@ceph-node2:~# apt install -y ceph-mgr

在ceph-deploy上初始化ceph-mgr节点

只初始化ceph-node1节点

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy mgr create ceph-node1

验证ceph-mgr节点

在ceph-node1上

ceph-deploy管理ceph集群信息

禁用非安全模式通信

ceph@ceph-deploy:~$ sudo ceph config set mon auth_allow_insecure_global_id_reclaim false

ceph集群个组件版本

OSD设置

准备OSD节点

擦除磁盘之前通过deploy节点对node 节点执行安装ceph 基本运行环境。

在ceph-deploy上操作

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy install --release pacific ceph-node1

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy install --release pacific ceph-node2

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy install --release pacific ceph-node3

列出ceph node节点磁盘

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy disk list ceph-node1


ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy disk list ceph-node2

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy disk list ceph-node3

使用ceph-deploy disk zap擦除各ceph node 的ceph数据磁盘:

#在ceph-deploy上操作

sudo ceph-deploy  disk zap ceph-node1  /dev/sdb

sudo ceph-deploy  disk zap ceph-node1  /dev/sdc

sudo ceph-deploy  disk zap ceph-node1  /dev/sdd

sudo ceph-deploy  disk zap ceph-node2  /dev/sdb

sudo ceph-deploy  disk zap ceph-node2  /dev/sdc

sudo ceph-deploy  disk zap ceph-node2  /dev/sdd

sudo ceph-deploy  disk zap ceph-node3  /dev/sdb

sudo ceph-deploy  disk zap ceph-node3  /dev/sdc

sudo ceph-deploy  disk zap ceph-node3  /dev/sdd

添加OSD:

#在ceph-deploy上操作

sudo ceph-deploy osd create ceph-node1 --data /dev/sdb

sudo ceph-deploy osd create ceph-node1 --data /dev/sdc

sudo ceph-deploy osd create ceph-node1 --data /dev/sdd

sudo ceph-deploy osd create ceph-node2 --data /dev/sdb

sudo ceph-deploy osd create ceph-node2 --data /dev/sdc

sudo ceph-deploy osd create ceph-node2 --data /dev/sdd

sudo ceph-deploy osd create ceph-node3 --data /dev/sdb

sudo ceph-deploy osd create ceph-node3 --data /dev/sdc

sudo ceph-deploy osd create ceph-node3 --data /dev/sdd

验证OSD

设置OSD服务自启动

默认就已经为自启动, node节点添加完成后,开源测试node 服务器重启后,OSD 是否会自动启动。

在ceph-node1上测试,其他node节点操作一样

ps -ef|grep osd

root@ceph-node1:~# systemctl enable ceph-osd@0 ceph-osd@1 ceph-osd@2

root@ceph-node2:~# systemctl enable ceph-osd@3 ceph-osd@4 ceph-osd@5

root@ceph-node3:~# systemctl enable ceph-osd@6 ceph-osd@7 ceph-osd@8  

扩展ceph集群高可用

扩展ceph-mon节点

Ceph-mon是原生具备自选举以实现高可用机制的ceph 服务,节点数量通常是奇数。

#在ceph-deploy节点添加mon节点

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy mon add ceph-deploy

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy mon add ceph-node2

ceph-mon结果验证

ceph-mon的状态

ceph@ceph-deploy:~$ ceph quorum_status --format json-pretty

扩展mgr节点

在ceph-node2节点上安装ceph-mgr

root@ceph-node2:~# apt install -y ceph-mgr

在ceph-deploy上添加ceph-node2

ceph@ceph-deploy:/home/ceph/ceph-cluster$ sudo ceph-deploy mgr create ceph-node2

cephadmin@ceph-deploy:~/ceph-cluster$ ceph -s

测试上传和下载数据:

创建pool:

ceph osd pool create mypool 32 32  # 32PG和32PGP

ceph pg ls-by-pool mypool | awk '{print $1,$2,$15}'    # 验证PG和PGP的组合

ceph osd pool ls或者 rados lspools    #列出所有的pool

上传文件:

rados put msg1 /home/ceph/ceph-cluster/cephtestfile  --pool=mypool

#文件上传mypool并且指定对象id为msg1

列出文件:

rados ls --pool=mypool

文件信息:

ceph osd map mypool msg1 # ceph osd map命令可以获取存储池中数据对象的具体位置信息

下载文件:

rados get msg1 --pool=mypool /tmp/my.txt

删除文件:

rados rm msg1 --pool=mypool

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,383评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,522评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,852评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,621评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,741评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,929评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,076评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,803评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,265评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,582评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,716评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,395评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,039评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,027评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,488评论 2 361
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,612评论 2 350

推荐阅读更多精彩内容