内容简介:本文风哥教程参考Linux官方文档、Red Hat Enterprise Linux官方文档、Ansible Automation Platform官方文档、Docker官方文档、Kubernetes官方文档和Podman官方文档等内容,详细介绍了相关技术的配置和使用方法。
风哥提示:
>本文档介绍企业级存储系统部署综合实战案例。
Part01-Ceph存储集群
1.1 Ceph集群部署
[root@fgedu-ceph1 ~]# yum install -y ceph-deploy ceph ceph-mon ceph-osd ceph-mds
# 创建集群
[root@fgedu-ceph1 ~]# mkdir /etc/ceph && cd /etc/ceph
[root@fgedu-ceph1 ceph]# ceph-deploy new fgedu-ceph1 fgedu-ceph2 fgedu-ceph3
[ceph_deploy.new][DEBUG ] Creating new cluster na学习交流加群风哥微信: itpux-commed ceph
[ceph_deploy.new][DEBUG ] Resolving host fgedu-ceph1
[ceph_deploy.new][DEBUG ] Monitor initial members are [‘fgedu-ceph1’, ‘fgedu-ceph2’, ‘fgedu-ceph3’]
[ceph_deploy.new][DEBUG ] Monitor addrs are [‘192.168.1.10’, ‘192.168.1.11’, ‘192.168.1.12’]
# 配置Ceph
[root@fgedu-ceph1 ceph]# cat >> ceph.conf << 'EOF'
osd_pool_default_size = 3
osd_pool_default_min_size = 2
osd_pool_default_pg_num = 128
osd_pool_default_pgp_num = 128
mon_clock_drift_allowed = 0.5
EOF
# 部署Monitor
[root@fgedu-ceph1 ceph]# ceph-deploy mon create-initial
[ceph_deploy.mon][DEBUG ] deploying monitor(s): fgedu-ceph1 fgedu-ceph2 fgedu-ceph3
[ceph_deploy.mon][DEBUG ] monitor instance fgedu-ceph1 creating /etc/ceph/ceph.mon.keyring
[ceph_deploy.mon][DEBUG ] monitor instance fgedu-ceph1 creating /var/lib/ceph/mon/ceph-fgedu-ceph1/done
# 部署OSD
[root@fgedu-ceph1 ceph]# ceph-deploy osd create --data /dev/sdb fgedu-ceph1
[root@fgedu-ceph1 ceph]# ceph-deploy osd create --data /dev/sdb fgedu-ceph2
[root@fgedu-ceph1 ceph]# ceph-deploy osd create --data /dev/sdb fgedu-ceph3
# 查看集群状态
[root@fgedu-ceph1 ceph]# ceph -s
cluster:
id: abc123-456def-789ghi
health: HEALTH_OK
services:
mon: 3 daemons, quorum fgedu-ceph1,fgedu-ceph2,fgedu-ceph3
mgr: fgedu-ceph1(active), standbys: fgedu-ceph2
osd: 3 osds: 3 up, 3 in
data:
pools: 1 pools, 128 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 297 GiB / 300 GiB avail
pgs: 128 active+clean
Part02-Ceph块存储
2.1 RBD配置使用
[root@fgedu-ceph1 ~]# ceph osd pool create fgedu_pool 128 128
pool ‘fgedu_pool’ created
[root@fgedu-ceph1 ~]# ceph osd pool application enable fgedu_pool rbd
enabled application ‘rbd’ on pool ‘fgedu_pool’
# 初始化RBD
[root@fgedu-ceph1 ~]# rbd pool init fgedu_pool
# 创建RBD镜像
[root@fgedu-ceph1 ~]# rbd create fgedu_pool/fgedu-image –size 100G –image-feature layering
[root@fgedu-ceph1 ~]# rbd ls fgedu_pool
fgedu-image
# 映射RBD镜像
[root@fgedu-ceph1 ~]# rbd map fgedu_pool/fgedu-image
/dev/rbd0
# 格式化并挂载
[root@fgedu-ceph1 ~]# mkfs.xfs /dev/rbd/rbd/fgedu_pool/fgedu-image
meta-data=/dev/rbd/rbd/fgedu_pool/fgedu-image isize=512 agcount=8, agsize=3276800 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=0 inobtcount=0
data = bsize=4096 blocks=26214400, imaxpct=25
= sunit=16 swidth=16 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=12800, version=2
= sectsz=512 sunit=16 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@fgedu-ceph1 ~]# mkdir /mnt/ceph-rbd
[root@fgedu-ceph1 ~]# mount /dev/rbd/rbd/fgedu_pool/fgedu-image /mnt/ceph-rbd
# 配置开机自动挂载
[root@fgedu-ceph1 ~]# cat >> /etc/fstab << 'EOF'
/dev/rbd/rbd/fgedu_pool/fgedu-image /mnt/ceph-rbd xfs defaults,_netdev 0 0
EOF
# 查看RBD信息
[root@fgedu-ceph1 ~]# rbd info fgedu_pool/fgedu-image
rbd image 'fgedu-image':
size 100 GiB in 25600 objects
order 22 (4 MiB objects)
snapshot_count: 0
id: abc123def456
block_name_prefix: rbd_data.abc123def456
format: 2
features: layering
op_features:
flags:
create_timestamp: Sat Apr 4 23:00:00 2026
access_timestamp: Sat Apr 4 23:00:00 2026
modify_timestamp: Sat Apr 4 23:00:00 2026
Part03-Ceph文件系统
3.1 CephFS配置
[root@fgedu-ceph1 ~]# ceph osd pool create cephfs_data 128
pool ‘cephfs_data’ created
[root@fgedu-ceph1 ~]# ceph osd pool create cephfs_metadata 64
pool ‘cephfs_metadata’ created
# 启用CephFS
[root@fgedu-ceph1 ~]# ceph fs new fgedu_fs cephfs_metadata cephfs_data
new fs with metadata pool 3 and data pool 2
# 部署MDS
[root@fgedu-ceph1 ~]# ceph-deploy mds create fgedu-ceph1 fgedu-ceph2
# 查看CephFS状态
[root@fgedu-ceph1 ~]# ceph fs status
fgedu_fs – 0 clients
======
RANK STATE MDS ACTIVITY DNS INOS DIRS CAPS
0 active fgedu-ceph1 Reqs: 0 /s 10 13 12 0
POOL TYPE USED AVAIL
cephfs_metadata metadata 1536k 28.5G
cephfs_data data 0 28.5G
# 挂载CephFS
[root@fgedu-client ~]# mkdir /mnt/cephfs
[root@fgedu-client ~]# mount -t ceph 192.168.1.10:6789:/ /mnt/cephfs -o name=admin,secret=AQABC123==
# 查看挂载
[root@fgedu-client ~]# df -h | grep ceph
192.168.1.10:6789:/ 300G 0 300G 0% /mnt/cephfs
# 配置开机自动挂载
[root@fgedu-client ~]# cat >> /etc/fstab << 'EOF'
192.168.1.10:6789:/ /mnt/cephfs ceph name=admin,secret=AQABC123==,_netdev 0 0
EOF
Part04-Ceph对象存储
4.1 RGW配置
[root@fgedu-ceph1 ~]# ceph-deploy rgw create fgedu-ceph1
[ceph_deploy.rgw][DEBUG ] deploying rgw(s): fgedu-ceph1
[ceph_deploy.rgw][DEBUG ] RGW instance fgedu-ceph1 creating /var/lib/ceph/radosgw/ceph-rgw.fgedu-ceph1
# 查看RGW状态
[root@fgedu-ceph1 ~]# ceph -s | grep rgw
rgw: 1 daemon active (fgedu-ceph1)
# 创建S3用户
[root@fgedu-ceph1 ~]# radosgw-admin user create –uid=fgedu –display-name=”FGEDU User” –email=admin@fgedu.net.cn
{
“user_id”: “fgedu”,
“display_name”: “FGEDU User”,
“email”: “admin@fgedu.net.cn”,
“suspended”: 0,
“max_buckets”: 1000,
“subusers”: [],
“keys”: [
{
“user”: “fgedu”,
“access_key”: “ABC123DEF456GHI789JK”,
“secret_key”: “abc123def456ghi789jkl012mno345pqr678stu”
}
],
“swift_keys”: [],
“caps”: [],
“op_mask”: “read, write, delete”,
“default_placement”: “”,
“placement_tags”: [],
“bucket_quota”: {
“enabled”: false,
“check_on_raw”: false,
“max_size”: -1,
“max_size_kb”: 0,
“max_objects”: -1
},
“user_quota”: {
“enabled”: false,
“check_on_raw”: false,
“max_size”: -1,
“max_size_kb”: 0,
“max_objects”: -1
},
“temp_url_keys”: [],
“type”: “rgw”
}
# 使用S3客户端访问
[root@fgedu-client ~]# pip install boto3
[root@fgedu-client ~]# python3 << 'EOF'
import boto3
s3 = boto3.client(
's3',
endpoint_url='http://192.168.1.10:7480',
aws_access_key_id='ABC123DEF456GHI789JK',
aws_secret_access_key='abc123def456ghi学习交流加群风哥QQ113257174789jkl012mno345pqr678stu'
)
# 创建bucket
s3.create_bucket(Bucket='fgedu-bucket')
# 上传文件
s3.upload_file('/etc/hosts', 'fgedu-bucket', 'hosts')
# 列出文件
response = s3.list_objects_v2(Bucket='fgedu-bucket')
for obj in response.get('Contents', []):
print(obj['Key'])
EOF
hosts
- 规划合理的存储架构
- 配置数据冗余策略
- 实施存储监控
- 定期进行数据备份
- 建立存储运维流程
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
