云存储运维
一个CTFer的小窝

云存储运维

W1lsp0
2021-11-12 / 1 评论 / 23 阅读 / 正在检测是否收录...

构建内置存储系统

磁盘基本操作命令

fdisk

fdisk 设备 # 须是设备号,不是分区
fdisk /dev/sda
Command (m for help): 在这里按 m ,就会输出帮助;
Command action
a toggle a bootable flag
b edit bsd disklabel
c toggle the dos compatibility flag
d delete a partition 注:这是删除一个分区的动作;
l list known partition types 注:l 是列出分区类型,以供我们设置相应分区的类型;
m print this menu 注:m 是列出帮助信息;
n add a new partition 注:添加一个分区;
o create a new empty DOS partition table
p print the partition table 注:p 列出分区表;
q quit without saving changes 注:不保存退出;
s create a new empty Sun disklabel
t change a partition's system id # 注:t 改变分区类型;
u change display/entry units
v verify the partition table
w write table to disk and exit 注:把分区表写入硬盘并退出;
x extra functionality (experts only) 注:扩展应用,专家功能;

添加一个5G硬盘,并查看分区情况
image-20211111233859088

mkfs

-h查看帮助信息
-t <文件系统类型>指定要创建的文件系统类型
-v (小写)查看使用方法信息
-V (大写)查看版本信息
-f强制格式化,类似于rm -f
-b size=1024指定block大小(1k、2k、4k),默认block大小为4k

实例,格式化/dev/sdb硬盘,再次查看分区情况,刚刚分的区已经没了

image-20211111234227098

磁盘组建RAID

RAID-0: 
    读、写性能提升;
    可用空间:N*min(S1,S2,...)
    无容错能力
    最少磁盘数:2, 2+

RAID-1:
    读性能提升、写性能略有下降;
    可用空间:1*min(S1,S2,...)
    有冗余能力
    最少磁盘数:2, 2+

RAID-5:
    读、写性能提升
    可用空间:(N-1)*min(S1,S2,...)
    有容错能力:1块磁盘
    最少磁盘数:3, 3+

RAID-10:
    读、写性能提升
    可用空间:N*min(S1,S2,...)/2
    有容错能力:每组镜像最多只能坏一块;
    最少磁盘数:4, 4+


组建RAID0

提示:R0一时爽,数据火葬场。

最好是使用不同硬盘,因为使用相同硬盘不同分区组建R0最后是使用的同一个硬盘的IO,速度并没有本质上的提升。
RAID0 是一种简单的、无数据校验的数据条带化技术。实际上不是一种真正的 RAID ,因为它并不提供任何形式的冗余策略。 RAID0 将所在磁盘条带化后组成大容量的存储空间(如图 2 所示),将数据分散存储在所有磁盘中,以独立访问方式实现多块磁盘的并读访问。由于可以并发执行 I/O 操作,总线带宽得到充分利用。再加上不需要进行数据校验,RAID0 的性能在所有 RAID 等级中是最高的。理论上讲,一个由 n 块磁盘组成的 RAID0 ,它的读写性能是单个磁盘性能的 n 倍,但由于总线带宽等多种因素的限制,实际的性能提升低于理论值。

img

默认没有安装mdadmRAID管理工具,使用yum install mdadm安装即可

-C: 创建模式

​ -n{2}: 使用#个块设备来创建此RAID

​ -l{0}:指明要创建的RAID的级别

​ -a {yes|no}:自动创建目标RAID设备的设备文件

​ -c CHUNK_SIZE: 指明块大小,单位k

​ -x : 指明空闲盘的个数

​ -D:显示raid的详细信息

​ mdadm -D /dev/md0

​ 管理模式:

​ -f: 标记指定磁盘为损坏

​ -a: 添加磁盘

​ -r: 移除磁盘

​ -f: 显示过程

​ 观察md的状态:cat /proc/mdstat

​ 增加新的成员

​ mdadm –G /dev/md0 –n4 -a /dev/sdf1

​ 生成配置文件:mdadm –D –s >> /etc/mdadm.conf

​ 停止设备:mdadm –S /dev/md0

​ 激活设备:mdadm –A –s /dev/md0 激活

​ 强制启动:mdadm –R /dev/md0

​ 删除raid信息:mdadm --zero-superblock /dev/sdb1

  1. 先将磁盘分为了五个大小相同的区
    image-20211111235312370
  2. 使用/dev/sdb[1-2],这两个区作为实验安装。查看RAID情况

    mdadm -Cv /dev/md0 -l0 -n2 /dev/sdb[1-2] #-Cv:创建并显示过程,-l0:级别为RAID0,-n2:使用两块盘区

    image-20211112002258306

  3. 查看系统中存在的RAID
    image-20211112002346970
  4. 停止并删除RAID,查看系统中的RAID情况

    mdadm --stop /dev/md0
    mdadm --misc --zero-superblock /dev/sdb1
    mdadm --misc --zero-superblock /dev/sdb2
    cat /proc/mdstat

    image-20211112002621210

组建RAID1

如果有两块1T的硬盘,那么只能使用1T,因为有一块做备用盘。

RAID1 称为镜像,它将数据完全一致地分别写到工作磁盘和镜像 磁盘,它的磁盘空间利用率为 50% 。 RAID1 在数据写入时,响应时间会有所影响,但是读数据的时候没有影响。 RAID1 提供了最佳的数据保护,一旦工作磁盘发生故障,系统自动从镜像磁盘读取数据,不会影响用户工作。工作原理如图 3 所示。

img

  1. 创建RAID1,并查看信息

    mdadm -Cv /dev/md0 -l1 -n2 /dev/sdb[1-2]
    cat /proc/mdstat

    image-20211112083458385

  2. 查看硬盘信息

    fdisk -l

    image-20211112083606975

  3. 停止RAID1阵列,移除两个硬盘

    mdadm --stop /dev/md0
    mdadm --misc --zero-superblock /dev/sdb1
    mdadm --misc --zero-superblock /dev/sdb2
    cat /proc/mdstat

组建RAID5

  RAID5 应该是目前最常见的 RAID 等级,它的原理与 RAID4 相似,区别在于校验数据分布在阵列中的所有磁盘上,而没有采用专门的校验磁盘。对于数据和校验数据,它们的写操作可以同时发生在完全不同的磁盘上。因此, RAID5 不存在 RAID4 中的并发写操作时的校验盘性能瓶颈问题。另外, RAID5 还具备很好的扩展性。当阵列磁盘 数量增加时,并行操作量的能力也随之增长,可比 RAID4 支持更多的磁盘,从而拥有更高的容量以及更高的性能。

img

  1. 创建RAID5,并查看信息

    mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb[1-3]
    cat /proc/mdstat

    image-20211112084148996

  2. 查看阵列信息

     mdadm -D /dev/md0

    image-20211112084305556

  3. 格式化硬盘分区为ext4格式

    mkfs.ext4 /dev/md0

    image-20211112084416081

  4. 挂载并验证

     mount /dev/md0 /mnt/
     df -h

    image-20211112084710315

  5. 解挂载并删除设备

    umount /mnt/
    mdadm --stop /dev/md0
    mdadm --misc --zero-superblock /dev/sdb1
    mdadm --misc --zero-superblock /dev/sdb2
    mdadm --misc --zero-superblock /dev/sdb3

    image-20211112084903484

  6. RAID5运维操作

    mdadm -Cv /dev/md0 -l5 -n3 /dev/sdb[1-3]
    cat /proc/mdstat

    image-20211112091800343

  7. 模拟硬盘故障

    mdadm -f /dev/md0 /dev/sdb1
  8. 热移除故障盘

     mdadm -r /dev/md0 /dev/sdb1

组建RAID10

RAID01 兼备了 RAID0 和 RAID1 的优点,它先用两块磁盘建立镜像,然后再在镜像内部做条带化。 RAID01 的数据将同时写入到两个磁盘阵列中,如果其中一个阵列损坏,仍可继续工作,保证数据安全性的同时又提高了性能。 RAID01 和 RAID10 内部都含有 RAID1 模式,因此整体磁盘利用率均仅为 50% 。

img
img

典型的 RAID01 (上)和 RAID10 (下)模型

  1. 构建RAID10并查看信息

    mdadm -Cv /dev/md0 -l10 -n4 /dev/sdb1 /dev/sdb2 /dev/sdb3 /dev/sdb5

    image-20211112092515768

  2. 删除RAID10

    mdadm --stop /dev/md0
    mdadm --misc --zero-superblock /dev/sdb1
    mdadm --misc --zero-superblock /dev/sdb2
    mdadm --misc --zero-superblock /dev/sdb3
    mdadm --misc --zero-superblock /dev/sdb5

管理逻辑卷

删除所有分区并格式化,内核重新读取分区并查看。

fdisk /dev/sdb
partx /dev/sdb

image-20211112093513242

image-20211112093534975

image-20211112093656192

创建物理卷组

  1. 创建物理卷
    pvcreate /dev/sdb1 /dev/sdb2
    image-20211112093824727
  2. 查看创建的物理卷,和查看物理卷的详细信息

    pvs
    pvdisplay

    image-20211112122714010

  3. 扫描物理卷,创建物理卷组

    pvscan
    vgcreate myvg /dev/sdb[1-2]
    vgdisplay # 查看物理卷组的详细信息

    image-20211112122840957

卷组删除

  1. 删除myvg,重新创建并指定PE大小为16m

    vgremove myvg
    vgcreate -s 16m myvg /dev/sdb[1-2]

    image-20211112134616015

  2. 删除PV并转移数据

    pvmove /dev/sdb1
    vgreduce myvg /dev/sdb1
    pvs

    image-20211112134848861

添加物理卷

myvg添加一个物理卷/dev/sdb3,但是这个分区须提前分

vgextend myvg /dev/sdb3

image-20211112135701127

创建逻辑卷

名为mylv,大小5GB

vcreate -L+5G -n mylv myvg
lvs # 查看逻辑卷                               
lvscan # 扫描逻辑卷

image-20211112140248798

操作逻辑卷

格式化并挂载

mkfs.ext4 /dev/mapper/myvg-mylv
mount /dev/mapper/myvg-mylv /mnt/
df -h

image-20211112140500264

卷组扩容

lvextend -L+1G /dev/mapper/myvg-mylv # 对创建的LVM卷扩容
resize2fs /dev/mapper/myvg-mylv # 对文件系统进行扩容

image-20211112140734716

物理卷扩容,并再对逻辑卷扩容

vgextend myvg /dev/sdb1
vgs
lvextend -L+1G /dev/mapper/myvg-mylv
resize2fs /dev/mapper/myvg-mylv
df -h

image-20211112141000695

image-20211112141122223

缩小卷组

umount /mnt/
df -h
lvreduce -L -3G /dev/mapper/myvg-mylv
lvs

image-20211112141311204

此时需要重新格式化并挂载才能重新使用

构建OpenStack云存储系统

构建OpenStack私有云

配置安装环境

hostname controller # 临时修改主机名,
vi /etc/sysconfig/network # 永久修改主机名,修改hostname为controller
mount -o loop CentOS-6.5-x86_64-bin_DVD.iso /mnt/
mkdir /opt/centos
cp -rfv /mnt/* /opt/centos/
umount /mnt/ # 卸载
mount -o loop XianDian-IaaS-v1.4.iso /mnt/
cp -rfv /mnt/ /opt/

配置yum软件源

vi /etc/yum.repos.d/local.repo # 写入以下
----------------------------------------
[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file///opt/iaas-repo
gpgcheck=0
enabled=1
-----------------------------------------
yum clean all # 清除软件源
yum list # 查看软件包

关闭防火墙

 service iptables stop # 关闭返回去
 chkconfig iptables off # 设置防火墙开机不启动

关闭selinux

setenforce 0 # 临时关闭
vi /etc/selinux/config # 永久关闭
# 设置SELINUX=permissive 

安装iaas-xiandian

yum install iaas-xiandian -y

修改全局配置文件openrc.sh

vi /etc/xiandian/openrc.sh
-----------------------------------------------------------------------------------------#
#--------------------system config--------------------#
#Controller Server Manager IP. example:x.x.x.x
HOST_IP=192.168.100.10

#Controller Server hostname. example:controller
HOST_NAME=controller

#Compute Node Manager IP. example:x.x.x.x
HOST_IP_NODE=192.168.100.10

#Compute Node hostname. example:compute
HOST_NAME_NODE=controller

#--------------------MySQL config---------------------##
#Password for MySQL root user . exmaple:000000
DB_PASS=000000

#--------------------Keystone config------------------##
#Password for Keystore admin user. exmaple:000000
ADMIN_PASS=000000

#Password for Mysql keystore user. exmaple:000000
KEYSTONE_DBPASS=000000

#--------------------Glance config--------------------##
#Password for Mysql glance user. exmaple:000000
GLANCE_DBPASS=000000

#Password for Keystore glance user. exmaple:000000
GLANCE_PASS=000000

#--------------------Nova config----------------------##
#Password for Mysql nova user. exmaple:000000
NOVA_DBPASS=000000

#Password for Keystore nova user. exmaple:000000
NOVA_PASS=000000

#--------------------Neturon config-------------------##
#Password for Mysql neutron user. exmaple:000000
NEUTRON_DBPASS=000000

#Password for Keystore neutron user. exmaple:000000
NEUTRON_PASS=000000

#metadata secret for neutron. exmaple:000000
METADATA_SECRET=000000

#External Network Interface. example:eth1
INTERFACE_NAME=eth1

#First Vlan ID in VLAN RANGE for VLAN Network. exmaple:101
minvlan=

#Last Vlan ID in VLAN RANGE for VLAN Network. example:200
maxvlan=

#--------------------Cinder config--------------------##
#Password for Mysql cinder user. exmaple:000000
CINDER_DBPASS=000000

#Password for Keystore cinder user. exmaple:000000
CINDER_PASS=000000

#Cinder Block Disk. example:md126p3
BLOCK_DISK=sdb1

#--------------------Swift config---------------------##
#Password for Keystore swift user. exmaple:000000
SWIFT_PASS=000000

#The NO1. NODE Object Disk for Swift. example:md126p4. The 2nd will be OBJECT_DISK_2
OBJECT_DISK_1=sdc1

#The NO1. NODE IP for Swift Storage Network. example:x.x.x.x. The 2nd will be STORAGE_LOCAL_NET_IP_2
STORAGE_LOCAL_NET_IP_1=192.168.100.10

#The numbers of all the Swift Nodes. example:3
SWIFT_ZONE=1

#The number of this Swift Node. exmaple:1
SWIFT_NODE=1

#--------------------Heat config----------------------##
#Password for Mysql heat user. exmaple:000000
HEAT_DBPASS=000000

#Password for Keystore heat user. exmaple:000000
HEAT_PASS=000000

#--------------------Ceilometer config----------------##
#Password for Mysql ceilometer user. exmaple:000000
CEILOMETER_DBPASS=000000

#Password for Keystore ceilometer user. exmaple:000000
CEILOMETER_PASS=000000

#token for ceilometer. exmaple:000000
CEILOMETER_TOKEN=000000

#--------------------Sahara config--------------------##
#Password for Mysql sahara user. exmaple:000000
SAHARA_DBPASS=000000

#Password for Keystore sahara user. exmaple:000000
SAHARA_PASS=000000
-----------------------------------------------------------------------------------------------

安装Qpid服务

yum install -y qpid-cpp-server
vi /etc/qpidd.conf
# 修改最后一行代码
# auth=no
service qpidd start # 启动服务
chkconfig qpidd on # 开机自启

安装基本服务

# 安装mysql
iaas-install-mysql.sh
# 安装Glance服务
iaas-install-keystone.sh
# 安装Nova计算服务
iaas-install-nova-controller.sh
iaas-install-nova-compute.sh
# 安装Neutron网络服务
iaas-install-neutron-controller.sh
iaas-install-neutron-compute.sh
# 网络可以选择gre模式
iaas-install-neutron-controller-gre.sh
iaas-install-neutron-compute-gre.sh
# 安装Dashboard服务
iaas-install-dashboard.sh

验证安装

在浏览器输入10.10.1.10/dashboard进入即可
点击查看源网页img

配置OpenStack对象存储

安装Swift服务

iaas-install-swift-controller.sh
iaas-install-swift-compute.sh

查看Swift状态

swift stat

img

查看容器

swift list 

创建容器

swift post C1

容器操作

# 上传文件
swift upload C1 /etc/hosts
# 删除文件
swift delete C1 /etc/hosts

img

删除容器

swift delete C1

构建GlusterFS的分布式文件系统

glusterfs文件夹通过winscp上传到/opt目录下

yum install -y createrepo  # 在线安装索引生成工具
createrepo /opt/glusterfs  # 将指定目录生成安装软件包索引

配置YUM 源,在/etc/yum.repos.d 目录下,新建一个local.repo 文件,内容如下:

[glusterfs]
name=glusterfs
baseurl=file///opt/glusterfs
gpgcheck=0
enabled=1

执行yum clean all,刷新软件包库

安装glusterfs服务端和客户端

yum install -y glusterfs-server xfsprogs 
service glusterfs start # 启动服务
chkconfig glusterfs on # 设置开机自启

设置防火墙关闭,开机不自启

service firewalld stop
chkconfig firewalld off

添加节点到GlusterFS服务器集群,并查看集群状态

gluster peer probe 10.10.1.10
gluster peer probe 10.10.1.11
gluster peer status

格式化磁盘并挂载目录

fdisk /dev/sdb # 分一个区即可
mkdir /export/brick1/1

在主节点创建共享副本卷

创建共享副本卷,gv0为卷名称,可以自定义

gluster volume create gv0 replica 2 10.10.1.10:/export/brick1/1 10.10.1.11:/export/brick1/1
gluster volume start gv0 # 启动卷
gluster volume info # 查看卷gv0的状态

挂载副本卷

mount -t glusterfs 172.168.1.105:/gv0 /mnt

在主节点创建分布卷

gluster volume create gv1 10.10.1.10:/export/brick1/2 10.10.1.11:/export/brick1/2
gluster volume start gv1

挂载分布卷

umount /mnt # 解挂载
mount -t glusterfs 10.10.1.10:/gv1 /mnt

运维操作

# 启动/关闭/查看glusterd服务
/etc/init.d/glusterd start
/etc/init.d/glusterd stop
/etc/init.d/glusterd status
# Brick管理
gluster peer probe <SERVER>  # 存储池添加服务器节点
gluster peer detach <SERVER> # 为存储池移除服务器节点
gluster volume add-brick gv1 10.10.1.10:/export/brick1/2 10.10.1.11:/export/brick1/2
# 列出集群中的所有卷:
gluster volume list
# 查看卷信息
gluster volume info  # 查看卷信息
gluster volume status [all] # 查看卷状态
#创建/启动/停止/删除卷
gluster volume start <VOLNAME> # 创建卷
gluster volume stop <VOLNAME> # 停止卷
gluster volume delete <VOLNAME> # 删除卷
# 修复卷
gluster volume heal mamm-volume # 只修复有问题的卷
gluster volume heal mamm-volume full # 修复所有文件
gluster volume heal mamm-volume info # 查看自愈详情
# 数据重新分配
gluster volume rebalance datavolume1 start
gluster volume rebalance datavolume1 status
gluster volume rebalance datavolume1 stop
# 卸载GlusterFS磁盘
gluster peer detach idc1-server4
# 删除GlusterFS磁盘
gluster volume stop datavolume1
gluster volume delete datavolume1
# 扩展卷
gluster volume add-brick <VOLNAME> <NEW-BRICK>

构建Ceph分布式存储系统

基础环境配置

安装pve并安装ceph

pvecm create myclusters
pvecm add (主机1 IP地址) # 主机二上执行
# 修改源
vi /etc/apt/sources.list # 打开后全部删除写入以下内容
-----------------------------------------------------------------------------------------
deb https://mirrors.aliyun.com/debian buster main contrib non-free
deb https://mirrors.aliyun.com/debian buster-updates main contrib non-free
deb https://mirrors.aliyun.com/debian-security buster/updates main contrib non-free
deb https://mirrors.ustc.edu.cn/proxmox/debian/pve buster pve-no-subscription
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ buster main
------------------------------------------------------------------------------------------
vi /etc/apt/sources.list.d/ceph.list # 打开后全部删除写入以下内容
deb https://mirrors.ustc.edu.cn/proxmox/debian/ceph-octopus/ buster main
# 传递给主机2
scp -r /etc/apt/sources.list root@10.10.1.11:/etc/apt/sources.list

安装ceph

全部选择y

image-20211112172419707

image-20211112172427302

image-20211112172459337

修改vi etc/ceph/ceph.conf

vi /etc/ceph/ceph.conf # 修改public_network = 10.10.10.0/24

创建ceph集群存储,两台主机均执行如下命令

pveceph createmon    # 创建Mon监控
pveceph createosd /dev/sdb   # 创建ceph集群存储OSD服务

创建pools

ceph osd pool create myclusters 128 128  # 主机1执行

image-20211112172247576

添加RBD存储

image-20211112172227151

image-20211112172233533

构建超融合架构

基础环境配置

修改所有虚拟机文件

vi /etc/hosts
10.10.1.10 ceph-node1
10.10.1.11 ceph-node2
10.10.1.12 ceph-node3

生成复制`ssh密钥

ssh-keygen
ssh-copy-id root@ceph-node2
ssh-copy-id root@ceph-node3

禁用selinux

setenforce 0
vi /etc/selinux/config sllinux->disablesd

为所有服务器校时

yum install -y ntp ntpdate
ntpdate pool.ntp.org
chkconfig ntpd on

修改yum源,使用本地FTP源

[centos]
name=centos
baseurl=file:///opt/centos
gpgcheck=0
enabled=1
[iaas]
name=iaas
baseurl=file///opt/iaas-repo
gpgcheck=0
enabled=1

安装和配置Ceph

创建ceph集群

yum install ceph-deploy -y
mkdir /etc/ceph
cd /etc/ceph/
ceph-deploy new ceph-node1
ceph-deploy install ceph-node1 ceph-node2 ceph-node3

查看版本信息

ceph -v

创建第一个Ceph monitor,并查看集群状态

ceph-deploy --overwrite mon vreate-initial
ceph -s

img

创建OSD

三个节点创建共享磁盘

mkdir -p /opt/osd1
ssh ceph-node2
mkdir -p /opt/osd2
ssh ceph-node2
mkdir -p /opt/osd3

在node1节点创建OSD节点

ceph-deployosd prepare ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3

在node1激活节点

ceph-deploy osd activate ceph-node1:/opt/osd1 ceph-node2:/opt/osd2 ceph-node3:/opt/osd3

开放权限给其他节点,进行灾备处理

ceph-deploy ceph-node1{1,2,3}

ceph集群运维

ceph status # 查看安装状态
ceph -w # 查看健康状态
ceph quorum_status --format json-petty # 查看Ceph monitor仲裁状态
ceph mon dump # 导出Ceph monitor信息
ceph df # 检查集群使用状态
ceph mon stat # 检查Ceph monitor 状态
ceph osd stat # 检查OSD状态
ceph pg stat # 检查PG配置组状态
0

评论 (1)

取消