前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >基于cephfs搭建高可用分布式存储并mount到本地

基于cephfs搭建高可用分布式存储并mount到本地

作者头像
sunsky
发布于 2020-08-20 09:34:10
发布于 2020-08-20 09:34:10
2.9K00
代码可运行
举报
文章被收录于专栏:sunskysunsky
运行总次数:0
代码可运行

原文:https://www.fullstackmemo.com/2018/10/11/cephfs-ha-mount-storage/

服务器硬件配置及环境

项目

说明

CPU

1核

内存

1GB

硬盘

40GB

系统

CentOS 7.5

时间同步服务

chrony

ceph

13.2.2-0

节点部署图

节点功能简介

项目

说明

yum repo

如果部署环境每个节点都可以访问外网, 则无需做任何操作, 部署脚本会自动添加外网环境的yum源. 如果部署无法访问外网, 需要自行部署centos, epel, ceph三个yum源. 每个节点都必须可以访问所提到的所有yum源

时间同步服务器

每个节点都必须可以访问, 如果部署环境无法访问外网需要自行搭建时间同步服务器

client-x

需要挂载存储的设备, 需要同时可以访问每个storage-ha-x和yum源, 时间服务器

storage-deploy-1

用于统一部署ceph集群的工作机, 系统为CentOS 7.5

storage-ha-x

承载ceph各项服务的服务器节点, 系统为CentOS 7.5

mon

Monitors, 节点映射管理, 身份验证管理, 需要达到冗余和高可用至少需要3个节点

osd

object storage daemon, 对象存储服务, 需要达到冗余和高可用至少需要3个节点

mgr

Manager, 用于跟踪运行指标和集群状态, 性能.

mds

Metadata Serve, 提供cephfs的元数据存储

参考:

默认端口

项目

说明

ssh

tcp: 22

mon

tcp: 6789

mds/mgr/osd

tcp: 6800~7300

参考:

默认路径

项目

说明

主配置文件

/etc/ceph/ceph.conf

配置文件夹

/etc/ceph

日志文件夹

/var/log/ceph

各服务认证key文件

/var/lib/ceph/{server name}/{hostname}/keyring

admin认证key文件

ceph.client.admin.keyring

部署脚本说明

  • node-init.sh: storage-ha-x节点初期运行的初始化脚本
  • admin-init.sh: storage-deploy-1节点初期运行的初始化脚本, 必须要在每个storage-ha-x节点都运行完node-init.sh之后才能运行.
  • ceph-deploy.sh: ceph部署脚本, 仅在storage-deploy-1节点上运行即可, 需要在node-init.shadmin-init.sh运行完成且成功后运行.

PS: 脚本中涉及到的ip和其它不同信息请先自行修改后再运行.

脚本运行命令

请将 附录: 脚本内容章节或脚本Git库章节中的各个脚本放到各个对应服务器任意位置并使用以下命令按照顺序运行.

PS: 需严格按照部署脚本说明章节中的持续顺序执行脚本.

PS: 脚本中涉及到不同于当前环境的信息(如: ip, yum源, 密码, 主机名等)请先自行修改后再运行.

  • 初始化ceph节点
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/bin/bash node-init.sh

执行命令结果

  • 初始化部署节点
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/bin/bash admin-init.sh

执行命令结果

  • 开始部署
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/bin/bash ceph-deploy.sh

执行命令结果

可以看到上方的pgs下方有个creating+peering, 这表示OSDs在创建和准备同步中.需要等待

这时可以在任意有admin角色的storage-ha-x节点上执行以下命令看查是否完成准备

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
ceph -s

pgs显示为下图的active+clean代表各个节点同步完成.

如果一直无法达到active+clean状态, 请参考以下操作文章: TROUBLESHOOTING PGS

挂载存储

创建测试用户

以下命令在任意一个storage-ha-x服务器上运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 此命令含义是创建一个名为client.fs-test-1的用户, 对于挂载的根目录'/'只有可读权限, 对于挂载的'/test_1'目录有读写权限.
ceph fs authorize cephfs client.fs-test-1 / r /test_1 rw
# 命令输入完成后会返回类如下信息:
# [client.fs-test-1]
#         key = AQA0Cr9b9afRDBAACJ0M8HxsP41XmLhbSxWkqA==

获取用户授权信息

以下命令在任意一个添加过admin角色的storage-ha-x服务器上运行

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 获取client.admin用户的授权信息
ceph auth get client.admin
# 命令输入后会返回类似如下信息
# [client.admin]
#         key = AQAm4L5b60alLhAARxAgr9jQDLopr9fbXfm87w==
#         caps mds = "allow *"
#         caps mgr = "allow *"
#         caps mon = "allow *"
#         caps osd = "allow *"

# 获取client.fs-test-1用户的授权信息
ceph auth get client.fs-test-1
# 命令输入后会返回类似如下信息
# [client.fs-test-1]
#         key = AQA0Cr9b9afRDBAACJ0M8HxsP41XmLhbSxWkqA==
#         caps mds = "allow r, allow rw path=/test-1"
#         caps mon = "allow r"
#         caps osd = "allow rw tag cephfs data=cephfs"

挂载方式

挂载方式分为两种, 分别是cephfs和fuse. 选择其中一种方式进行挂载即可.

两种挂载方式的区别和优势请参考以下文章: WHICH CLIENT?

cephfs方式

以下命令在任意需要挂载存储的client下执行

PS: 此挂载方式依赖于ceph, 需要先添加ceph和epel的yum源.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# cephfs方式挂载
yum install ceph -y
mkdir -p /etc/ceph
mkdir -p /mnt/mycephfs
# 以下写入的secret请根据'获取用户授权信息'章节中获取到的'key'进行修改
cat > /etc/ceph/admin_secret.key << EOF
AQAm4L5b60alLhAARxAgr9jQDLopr9fbXfm87w==
EOF

# 以下写入的secret请根据'获取用户授权信息'章节中获取到的'key'进行修改
cat > /etc/ceph/test_cephfs_1_secret.key << EOF
AQA0Cr9b9afRDBAACJ0M8HxsP41XmLhbSxWkqA==
EOF

# 使用'admin'用户挂载cephfs的根目录
# ip或主机名请根据实际情况修改
# 这里填写的'name=admin''client.admin'点后面的'admin'.
mount.ceph 192.168.60.111:6789,192.168.60.112:6789,192.168.60.113:6789:/ /mnt/mycephfs -o name=admin,secretfile=/etc/ceph/admin_secret.key

# 使用只读的用户挂载
mkdir -p /mnt/mycephfs/test_1
mkdir -p /mnt/test_cephfs_1
# 使用'fs-test-1'用户挂载cephfs的根目录
# ip或主机名请根据实际情况修改
# 这里填写的'name=fs-test-1''client.fs-test-1'点后面的'fs-test-1'.
mount.ceph 192.168.60.111:6789,192.168.60.112:6789,192.168.60.113:6789:/ /mnt/test_cephfs_1 -o name=fs-test-1,secretfile=/etc/ceph/test_cephfs_1_secret.key

# 开机自动挂载
cat >> /etc/fstab << EOF
192.168.60.111:6789,192.168.60.112:6789,192.168.60.113:6789:/     /mnt/mycephfs    ceph    name=admin,secretfile=/etc/ceph/secret.key,noatime,_netdev    0       2
EOF

fuse方式

以下命令在任意需要挂载存储的client下执行

PS: 此挂载方式依赖于ceph-fuse, 需要先添加ceph和epel的yum源.

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
yum install ceph-fuse -y
mkdir -p /etc/ceph
mkdir -p /mnt/mycephfs

# 获取storage-ha-x任意一个节点上的ceph配置文件
scp storage@storage-ha-1:/etc/ceph/ceph.conf /etc/ceph/ceph.conf

# 以下写入的secret请根据'获取用户授权信息'章节中获取到的'key'进行修改
cat > /etc/ceph/ceph.keyring << EOF
[client.admin]
        key = AQAm4L5b60alLhAARxAgr9jQDLopr9fbXfm87w==
        caps mds = "allow *"
        caps mgr = "allow *"
        caps mon = "allow *"
        caps osd = "allow *"
[client.fs-test-1]
        key = AQA0Cr9b9afRDBAACJ0M8HxsP41XmLhbSxWkqA==
        caps mds = "allow r, allow rw path=/test-1"
        caps mon = "allow r"
        caps osd = "allow rw tag cephfs data=cephfs"
EOF

# 使用'admin'用户挂载cephfs的根目录
# ip或主机名请根据实际情况修改
ceph-fuse -m 192.168.60.111:6789,192.168.60.112:6789,192.168.60.113:6789 /mnt/mycephfs
# 开机自动挂载
cat >> /etc/fstab << EOF
none    /mnt/ceph  fuse.ceph ceph.id=admin,ceph.conf=/etc/ceph/ceph.conf,_netdev,defaults  0 0
EOF

# 使用只读的用户挂载
mkdir -p /mnt/mycephfs/test_1
mkdir -p /mnt/test_cephfs_1
# 使用'fs-test-1'用户挂载cephfs的根目录
# ip或主机名请根据实际情况修改
# 这里填写的'-n client.fs-test-1'是完整的'client.fs-test-1'.
ceph-fuse -m 192.168.60.111:6789,192.168.60.112:6789,192.168.60.113:6789 -n client.fs-test-1 /mnt/test_cephfs_1

挂载结果

挂载结果可以使用以下命令查看

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
df -h

运维命令

  • 状态查看
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 查看集群整体状态
ceph -s

# 查看集群健康状态
ceph health

# 查看集群健康状态详情
ceph health detail

# 查看cephfs列表
ceph fs ls

# 查看mds状态
ceph mds stat

# 查看 osd节点状态
ceph osd tree

# 查看监视器情况
ceph quorum_status --format json-pretty
  • 简单写性能测试
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 在挂载了存储的client下简单测试写性能
time dd if=/dev/zero of=/mnt/mycephfs/test.dbf bs=8k count=3000 oflag=direct
  • 删除cephfs和pool
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 删除cephfs前需要的操作
# 停止每个mds节点的mds服务
# 每个mds节点上都要执行
systemctl stop ceph-mds.target

# 仅在任意一台'storage-ha-x'上执行
# 删除cephfs
ceph fs rm cephfs --yes-i-really-mean-it

# 删除pool
# 需要删除pool的时候需要写两次pool名外带'--yes-i-really-really-mean-it'参数
ceph osd pool rm cephfs_data cephfs_data --yes-i-really-really-mean-it
ceph osd pool rm cephfs_metadata cephfs_metadata --yes-i-really-really-mean-it

# 停止每个mds节点的mds服务
# 每个mds节点上都要执行
systemctl start ceph-mds.target
  • 同步ceph配置文件
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 同步的配置文件
# 如果节点上有配置文件且和当前要同步的配置文件不通, 需要带'--overwrite-conf'参数
# 此命令会把执行此命令目录下的'ceph.conf'文件同步到各个指定节点上
ceph-deploy --overwrite-conf config push storage-ha-1 storage-ha-2 storage-ha-3

# 重启每个节点的cepf相关服务
# 需要在有对应功能节点的节点上分别运行以下命令
systemctl restart ceph-osd.target
systemctl restart ceph-mds.target
systemctl restart ceph-mon.target
systemctl restart ceph-mgr.target

FAQ

  • Q: health_warn:clock skew detected on mon A: 使用chrony同步每台服务器节点的时间
  • Q: Error ERANGE: pg_num “*“ size “*“ would mean “*“ total pgs, which exceeds max “*“ (mon_max_pg_per_osd 250 num_in_osds “\“) A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000(参数中的数值自己根据实际情况修改)并用同步ceph配置文件方式上传到各个节点, 并重启ceph-mon.target
  • Q: too many PGs per OSD A: ceph.conf配置文件中加入mon_max_pg_per_osd = 1000(参数中的数值自己根据实际情况修改)并用同步ceph配置文件方式上传到各个节点, 并重启ceph-mon.target

参考

ceph cephx认证参考 设置cephfs访问权限 ceph用户管理 ceph-fuse方式挂载 Ceph 运维手册 Red Hat Ceph存储—《深入理解Ceph架构》 Ceph常规操作及常见问题梳理

脚本Git库

https://github.com/x22x22/cephfs-verify-script

附录: 脚本内容

  • node-init.sh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

# 禁用ipv6, 加大pid限制
cat >>/etc/sysctl.conf <<EOF
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
kernel.pid_max = 4194303
EOF

sysctl -p
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

# 简单代替dns服务器写入当前环境中的主机名和ip的对应关系
cat >>/etc/hosts <<EOF

192.168.60.110 storage-deploy-1
192.168.60.111 storage-ha-1
192.168.60.112 storage-ha-2
192.168.60.113 storage-ha-3
EOF

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

# 添加一个storage用户, 用于ceph-deploy工具进行节点的安装和操作
useradd -d /home/storage -m storage
echo 'fullstackmemo***' | passwd --stdin storage
echo "storage ALL = (root) NOPASSWD:ALL" | tee /etc/sudoers.d/storage
chmod 0440 /etc/sudoers.d/storage

# 添加ceph的yum源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/ceph.repo <<'EOF'
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

EOF

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 修改CentOS的yum基础源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/CentOS-Base.repo <<'EOF'
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

yum makecache fast
# 安装CentOS的yum epel源
yum install -y epel-release

# 修改CentOS的yum epel源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/epel.repo <<'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
EOF

yum makecache
yum install yum-plugin-priorities chrony parted xfsprogs -y
mv /etc/chrony.conf /etc/chrony.conf.bk

# 添加时间同步服务器, 如果无法访问外网请自行搭建并修改
# 添加时间同步服务器, 如果无法访问外网请更换成yum.yfb.sunline.cn和nexus.yfb.sunline.cn
cat > /etc/chrony.conf << EOF
server ntp.api.bz iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF

systemctl enable chronyd
systemctl restart chronyd
sleep 10
chronyc activity
chronyc sources -v
hwclock -w

# 这里将/dev/sdb作为ceph的存储池, 所以先格式化/dev/sdb, 请根据自己实际情况修改
parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
partprobe /dev/sdb
mkfs.xfs /dev/sdb -f
  • admin-init.sh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

# 禁用ipv6
cat >>/etc/sysctl.conf <<EOF
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
EOF

sysctl -p
sysctl -w net.ipv6.conf.all.disable_ipv6=1
sysctl -w net.ipv6.conf.default.disable_ipv6=1

# 简单代替dns服务器写入当前环境中的主机名和ip的对应关系
cat >>/etc/hosts <<EOF

192.168.60.110 storage-deploy-1
192.168.60.111 storage-ha-1
192.168.60.112 storage-ha-2
192.168.60.113 storage-ha-3
EOF

systemctl stop firewalld
systemctl disable firewalld
setenforce 0
sed -i 's/SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config

# 添加ceph的yum源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/ceph.repo <<'EOF'
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

[ceph-source]
name=Ceph source packages
baseurl=http://mirror.tuna.tsinghua.edu.cn/ceph/rpm-mimic/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://mirror.tuna.tsinghua.edu.cn/ceph/keys/release.asc
priority=1

EOF

mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup

# 修改CentOS的yum基础源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/CentOS-Base.repo <<'EOF'
# CentOS-Base.repo
#
# The mirror system uses the connecting IP address of the client and the
# update status of each mirror to pick mirrors that are updated to and
# geographically close to the client.  You should use this for CentOS updates
# unless you are manually picking other mirrors.
#
# If the mirrorlist= does not work for you, as a fall back you can try the
# remarked out baseurl= line instead.
#
#

[base]
name=CentOS-$releasever - Base
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/os/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever - Updates
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/updates/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/extras/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

#additional packages that extend functionality of existing packages
[centosplus]
name=CentOS-$releasever - Plus
baseurl=https://mirrors.tuna.tsinghua.edu.cn/centos/$releasever/centosplus/$basearch/
#mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=centosplus
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
EOF

yum makecache fast
# 安装CentOS的yum epel源
yum install -y epel-release

# 修改CentOS的yum epel源, 如果无法访问外网请自行搭建并修改
cat >/etc/yum.repos.d/epel.repo <<'EOF'
[epel]
name=Extra Packages for Enterprise Linux 7 - $basearch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7

[epel-debuginfo]
name=Extra Packages for Enterprise Linux 7 - $basearch - Debug
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/$basearch/debug
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-debug-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1

[epel-source]
name=Extra Packages for Enterprise Linux 7 - $basearch - Source
baseurl=https://mirrors.tuna.tsinghua.edu.cn/epel/7/SRPMS
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-source-7&arch=$basearch
failovermethod=priority
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
gpgcheck=1
EOF

yum makecache
yum install yum-plugin-priorities chrony sshpass ceph-deploy ceph -y
mv /etc/chrony.conf /etc/chrony.conf.bk

# 添加时间同步服务器, 如果无法访问外网请自行搭建并修改
cat > /etc/chrony.conf << EOF
server ntp.api.bz iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
logdir /var/log/chrony
EOF

systemctl enable chronyd
systemctl restart chronyd
sleep 10
chronyc activity
chronyc sources -v
hwclock -w

rm -f "${HOME}"/.ssh/ceph_id_rsa
ssh-keygen -t rsa -b 4096 -f "${HOME}"/.ssh/ceph_id_rsa -N ''
cat >"${HOME}"/.ssh/config <<EOF
Host storage-ha-1
   Hostname storage-ha-1
   User storage
   IdentityFile ${HOME}/.ssh/ceph_id_rsa
   IdentitiesOnly yes
   StrictHostKeyChecking no
Host storage-ha-2
   Hostname storage-ha-2
   User storage
   IdentityFile ${HOME}/.ssh/ceph_id_rsa
   IdentitiesOnly yes
   StrictHostKeyChecking no
Host storage-ha-3
   Hostname storage-ha-3
   User storage
   IdentityFile ${HOME}/.ssh/ceph_id_rsa
   IdentitiesOnly yes
   StrictHostKeyChecking no
EOF
chmod 0400 "${HOME}"/.ssh/config
sshpass -p "fullstackmemo***" ssh-copy-id -i ~/.ssh/ceph_id_rsa storage@storage-ha-1
sshpass -p "fullstackmemo***" ssh-copy-id -i ~/.ssh/ceph_id_rsa storage@storage-ha-2
sshpass -p "fullstackmemo***" ssh-copy-id -i ~/.ssh/ceph_id_rsa storage@storage-ha-3

mkdir -p "${HOME}"/ceph-cluster
cd "${HOME}"/ceph-cluster || exit
  • ceph-deploy.sh
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#!/bin/bash

mkdir -p "${HOME}"/ceph-cluster
cd "${HOME}"/ceph-cluster || exit
ceph-deploy new storage-ha-1 storage-ha-2 storage-ha-3

cat >>ceph.conf <<EOF
# 'public network':
# 整个集群所存在的网段
# 这里需要根据实际情况修改
public network = 192.168.60.0/24
osd pool default size = 3
osd pool default min size = 2
osd pool default pg num = 100
osd pool default pgp num = 100
# 'mon allow pool delete': 
# 此设置允许删除pool的操作, poc环境为方便操作加上此选项, 生产环境建议注释
mon allow pool delete = true

[osd]
osd_max_backfills = 1
osd_recovery_max_active = 1
osd_recovery_op_priority = 1
EOF

# 在各个节点上安装ceph, 并指定了外网的ceph yum源, 如果无法访问外网请自行搭建并修改
ceph-deploy install storage-ha-1 storage-ha-2 storage-ha-3 --repo-url http://mirrors.ustc.edu.cn/ceph/rpm-mimic/el7 --gpg-url 'http://mirrors.ustc.edu.cn/ceph/keys/release.asc'
# 初始化mon服务和key信息
ceph-deploy mon create-initial
ceph-deploy mon add storage-ha-2
ceph-deploy mon add storage-ha-3
ceph-deploy admin storage-ha-1 storage-ha-2 storage-ha-3
ceph-deploy mgr create storage-ha-1 storage-ha-2 storage-ha-3

# 添加存储服务节点上的裸盘到存储池中
ceph-deploy osd create --data /dev/sdb storage-ha-1
ceph-deploy osd create --data /dev/sdb storage-ha-2
ceph-deploy osd create --data /dev/sdb storage-ha-3

ceph-deploy mds create storage-ha-1 storage-ha-2 storage-ha-3

ssh storage@storage-ha-1 << EOF
# 创建两个pool, 服务于cephfs, cephfs至少需要两个pool, 分别做metadata和data
sudo ceph osd pool create cephfs_data 100
# 使用raid 5方式存储数据即erasure类型, 当单个文件平均大小大于8k时erasure比replicated有优势.
# sudo ceph osd pool create cephfs_data 100 100 erasure
# sudo ceph osd pool set cephfs_data allow_ec_overwrites true
# sudo metadata pool必须使用replicated类型.
sudo ceph osd pool create cephfs_metadata 100
# 如果使用了erasure类型, 此步骤跳过
sudo ceph osd pool set cephfs_data size 3

sudo ceph osd pool set cephfs_metadata size 3
sudo ceph fs new cephfs cephfs_metadata cephfs_data

# 查看集群各项信息
sudo ceph quorum_status --format json-pretty
sudo ceph fs ls
sudo ceph mds stat
sudo ceph health
sudo ceph -s
EOF
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019-10-31 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
NFT数字藏品平台盘点分析来了!
自2021年头以来,我国的数字保藏渠道已逐步发布。此时,Opensea等海外渠道恰逢高速增加期,以CryptoPunk和Bored Ape游艇俱乐部为代表的NFT盛行加密圈。  2021年6月底,支付宝蚂蚁链粉丝上线敦煌数字典藏,敞开了我国数字典藏的出售商场。在这股行情的趋势下,我国各大企业相继布局数字保藏,数字保藏出售渠道也相继发布。  从2021年11月到2022年3月,卖渠道总数大幅增加,从26家增加到一百多家,增加势头依然强劲。百度首先发布了百度超级链钱,阿里也在支付宝上发布了蚂蚁链粉条(后改为鲸探),腾讯依次正式发布了魔芯和TME数集(在QQ音乐)。
vx-longbatuiguang1
2022/06/07
8450
NFT数字藏品平台盘点分析来了!
NFT元宇宙发展能做什么?
NFT,元宇宙,Web 3.0...这些概念最近在互联网上引起了人们的留意。可是,可能仍是有很多人不知道这些概念的详细中心和延伸运用。比方,在未来虚拟经济的开展中,NFT(非同质令牌)能够用来做什么? 在虚拟世界中,NFT能够在树立可行的经济中发挥关键作用: 或许游戏在虚拟实践中的操作; 虚拟空间的房地产、数码产品生意等出资时机; 立异电子商务服务等等; 以及其他与未来元宇宙商场动态相关的可能性。
v-longbatuiguang2
2022/06/25
3710
NFT元宇宙发展能做什么?
NFT数字藏品系统 数字藏品系统开发详解案例 数字藏品现成源码成品说明开发
物以稀为贵。当数字藏品具有了唯一性、可证明的稀缺性、不可分割性等三个属性之后,本身就具备了价值。而这价值,首先体现在数字藏品背后承载的现实实物或虚拟物品本身就具有收藏价值;其次,是源自于数字藏品共识价值的形成,如时间价值、艺术价值、版权价值、稀缺价值等。
DD_MrsFu123
2022/06/26
5890
NFT数字艺术藏品介绍
其间,数字艺术藏品(digital art collection)作为NFT的一种使用方式,选用block lian技能,对应于特定作品或艺术品生成的唯一数字凭据,在保护其数字版权的基础上,完成真实可信的数字发行、购买、藏品和使用。随着nft概念的火热,越来越多的NFT相关使用诞生。其间,最受重视的是NFT数字艺术品买卖渠道。需了解交流可联系作者
v-longbatuiguang2
2022/06/07
6310
NFT数字艺术藏品介绍
NFT数字藏品系统 | 数字藏品系统开发详解案例 | 数字藏品现成源码
物以稀为贵。当数字藏品具有了唯一性、可证明的稀缺性、不可分割性等三个属性之后,本身就具备了价值。而这价值,首先体现在数字藏品背后承载的现实实物或虚拟物品本身就具有收藏价值;其次,是源自于数字藏品共识价值的形成,如时间价值、艺术价值、版权价值、稀缺价值等。
vx-ccy981112
2022/06/27
4490
NFT数字藏品系统 | 数字藏品系统开发详解案例 | 数字藏品现成源码
NFT数字艺术藏品的发展与方案
目前,NFT的项目首要会集在数字艺术藏品、游戏财物和虚拟世界。 其间,数字艺术藏品(digital art collection)作为NFT的一种使用方式,选用block lian技能,对应于特定作品或艺术品生成的唯一数字凭据,在保护其数字版权的基础上,完成真实可信的数字发行、购买、藏品和使用。随着nft概念的火热,越来越多的NFT相关使用诞生。其间,最受重视的是NFT数字艺术品买卖渠道。欢迎探讨交流
v-longbatuiguang2
2022/06/23
7350
NFT数字艺术藏品的发展与方案
NFT盲盒开发机制
现在,NFT是整个加密范畴最抢手的范畴之一。蓝狐笔记还谈到了几天前火热的NFT狂怒。  依据下面的搜索数据,NFT开展很快,甚至比DeFi还快。  虽然NFT自身的价值很难说清楚,但它比DeFi的复杂度越低,就越简单走向普通用户。
vx-longbatuiguang1
2022/06/08
4500
NFT盲盒开发机制
什么是生成艺术NFT,Art Blocks为什么能持续霸榜
9月2日 Opensae 最近交易数据显示,Art Blocks 截至目前的总交易额已突破 233849 Eth 约 8.6 亿美元 ,创下历史新高,交易者数量突破2万。8月27日,Art Blocks 铸造的艺术品 Ringer #879以 568.5 万美元(1.8K ETH)价格成交,是历史上交易额第三高的 NFT 收藏品。
xiangzhihong
2021/12/30
9720
什么是生成艺术NFT,Art Blocks为什么能持续霸榜
NFT元宇宙,以及游戏的关系 金色财经
上个世纪九十年代被提出的元宇宙概念,突然在30年后的今天以另外一种形式“复活”,并且在NFT市场迎来了属于自己的高光时刻。元宇宙概念的渐热标志着NFT从最早的数字收藏拍卖场景向更加复杂和庞大的体系发展,在这个过程中游戏成为了元宇宙+NFT设计的重要载体,这三者各自的角色定位以及配合关系很容易混淆,本文将对三者的关系和协同配合做一个简单的梳理。
vx_Dapp9521
2021/11/03
9800
NFT元宇宙,以及游戏的关系 金色财经
腾讯、阿里分别发布元宇宙-NFT产品
问题导读 1.什么是NFT? 2.腾讯、阿里分别发布了什么元宇宙产品? 3.什么是友盟链,公链? 国内元宇宙,大厂都在默默的发布元宇宙产品。 我们可能知道百度的“希壤”,然而腾讯和阿里,悄悄的上线了自己的元宇宙NFT产品。 这里可能大家对NFT比较陌生。我们这里诠释下: NFT:全称为Non-Fungible Token,指非同质化代币,是用于表示数字资产(包括jpg和视频剪辑形式)的唯一加密货币令牌,可以买卖。NFT对应的应用,有”元视觉“,还有“鲸探”和“幻核”。说的更直白一些,NFT最大的应用是数字收藏品,至于数字收藏品是什么下面也会有详细的解释。比如NFT头像可以在微信或者元宇宙,或者任何地方,都可以使用。但是这个头像专属于你。 鲸探、幻核发布后,数字收藏品一扫而空,不过希望大家要理智、根据的情况不要跟风。数字收藏品, 下面是对“鲸探”“幻核”的介绍。 阿里发布了“鲸探”,腾讯发布了“幻核” 鲸探介绍
用户1410343
2022/01/26
1K0
腾讯、阿里分别发布元宇宙-NFT产品
国内数字藏品平台激增,海外NFT缩水万倍!都在发行什么?
2022年,在“5·18国际博物馆日”,各地文博单位纷纷发布以文物为主题的数字藏品。随后,在“5·19中国旅游日”,各地景区也发布了以古建筑为主题的数字藏品。到了5月20日,以爱情为主题发行的“520”数字藏品更是覆盖各行业领域。
科技旋涡
2022/08/30
6010
国内数字藏品平台激增,海外NFT缩水万倍!都在发行什么?
数字藏品系统开发怎么制作?NFT数字藏品系统开发说明功能
什么是所谓的数字藏品,其实就是指使用区块链技术,将一些作品、艺术品生成相对应的数字凭证,不仅可以保护版权,还能实现数字化发行、购买、收藏和使用,具有可追溯、难以篡改、唯一性等特点。
DD_MrsFu123
2022/06/26
8470
数字藏品(NFT)项目的上线流程
数字藏品(NFT)项目的上线流程是一个涉及多个环节的复杂过程,需要精心策划和执行。以下是一个详细的步骤指南,涵盖了从准备阶段到上线后的维护。
数字孪生开发者
2025/03/28
1280
数字藏品(NFT)项目的上线流程
NFT考古行动:一文盘点史前NFT 项目
如果说 2020 年的夏天属于 DeFi,那么今年夏天,NFT 一定是当仁不让的主角。从腾讯、阿里等传统互联网巨头入局,再到路易威登、巴宝莉、保时捷等顶级品牌进行了联动,NFT 正在实现加密行业的又一次「破圈」。从虚拟土地的热炒,到 GameFi 游戏的爆红,再到头像 NFT 的风靡,NFT 的市场规模以惊人的速度扩张,且丝毫没有平息的迹象。
用户7358413
2021/09/02
1.2K0
为什么说NFT技术是元宇宙发展的基础?
纽约时报专栏作家Ezra Klein曾提出这样一个观点:目前的互联网尤其缺少的是验证“身份”、“所有权”和“真实性” 。
小将
2022/03/26
5200
为什么说NFT技术是元宇宙发展的基础?
数字藏品NFT的开发框架
数字藏品NFT(非同质化代币)的开发框架涉及区块链技术、智能合约、存储解决方案、用户交互等多个方面。以下是一个完整的数字藏品NFT开发框架,涵盖从技术选型到部署上线的关键步骤。
数字孪生开发者
2025/01/26
2380
数字藏品NFT的开发框架
NFT链游开发:NFT与元宇宙的联系
NFT全称(不行替代令牌),中文名非同质通行证,也译为不行替代通行证。这是一种独特的数字财物。  比特币等财物是能够交换的,也便是说所有的比特币都是一样的,能够交换。  可是,每个非齐次经过是不同的。非同质通行证的比如能够是艺术品或游戏,NFT的每个实例都是绝无仅有的。
LIULIANG
2022/06/10
4110
NFT链游开发:NFT与元宇宙的联系
艺术品NFT的开发框架
艺术品NFT的开发框架通常指的是构建整个NFT系统所需的技术栈和工具集合。它包括了从最底层的数据存储到用户交互界面的各个层面。以下是一个典型的艺术品NFT开发框架的组成部分。
数字孪生开发者
2025/06/03
830
艺术品NFT的开发框架
数字藏品与数字艺术品的区别
数字藏品可以理解为中国特色,是使用区块链技术进行唯一标识的经数字化的特定作品、艺术品和商品,比如数字画作、图片、音乐、视频、3D模型等。每个数字藏品都映射着特定区块链上的唯一序列,不可篡改、不可分割,也不能互相替代。
v-longbatuiguang2
2022/06/01
1.8K0
数字藏品与数字艺术品的区别
NFT数字藏品系统开发的显著特点
NFT,这种非同质的标志,其特征是其共同和共同的标志,其不行分割性,以及其无法相等交换。是根据区块链的记账技能,用于开展数字经济和价值网络。
vx-longbatuiguang1
2022/05/21
4070
NFT数字藏品系统开发的显著特点
推荐阅读
相关推荐
NFT数字藏品平台盘点分析来了!
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 服务器硬件配置及环境
  • 节点部署图
  • 节点功能简介
  • 默认端口
    • 默认路径
  • 部署脚本说明
  • 脚本运行命令
  • 挂载存储
    • 创建测试用户
    • 获取用户授权信息
    • 挂载方式
    • cephfs方式
    • fuse方式
    • 挂载结果
  • 运维命令
  • FAQ
  • 参考
  • 脚本Git库
    • 附录: 脚本内容
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档