Linux磁盘挂载说明
1 增设多块数据盘背景说明
1.1 磁盘要求说明
关于服务器磁盘本身,本地存储的性能未经过系统评估,因此无法预知此种部署模式的性能指标,使用SSD 高速磁盘/HDD高转速/高性能云盘/OSS S3对象存储 详情与最终实施部署方案沟通为准,在部分用户磁盘场景,对于提供的磁盘块本身有进行Raid阵列、逻辑分布式条带存储、共享存储 再投产前,需提前说明确认 以免影响IO磁盘 多副本写入
注意:服务器非通过同一宿主机服务器分配的虚拟机资源 以免造成当该宿主机宕机, 分配的虚拟机资源或高可用本身不攻自破。
1.2 单点故障
对于单节点部署场景,使用本地存储时,本地存储缺乏数据副本,存储路径只能挂载其中一个服务器节点的本地磁盘下,因此存在单点故障的风险。如服务器出现故障,如数据磁盘造成损坏 造成业务不可用,通常在部署最佳实践中,在单节点中配置 数据备份服务,对于数据备份服务:通常数据备份数据再有限的环境中选择落盘到本地磁盘中 因此增加额外一块数据盘存储备份数据,以免再应用数据盘硬件等因素发生磁盘损坏(对于存储硬件发生问题引发的风险,我司作为应用软件提供商无法提供维护手段,提供有限协助支持),通过备份数据盘中的数据,完成业务恢复。
1.3 性能瓶颈
若 /data 目录所在的文件系统底层均来自同一硬盘设备(或同一硬盘不同分区构建的设备),则使用 /data 目录所在文件 系统的 Pods 将存在 IO 竞争,进而影响 ONES组件的稳定性以及 QoS。
对于单节点部署场景,使用两块以上数据盘,随着用户量使用规模较高,在服务承载一定并发量时,消耗除了内存以外对服务服务器磁盘IO读写的效率依赖也很大,且IO的读写均受限于本地磁盘的性能,若IO读写效率降低,中间件及其它服务(MySQL、ETCD、Kafka、索引中间件、服务运行)的处理效率都会遇到影响,会导致服务处理过程变长,甚至服务宕掉不可用。
1.4 存储说明
-
1、本地物理磁盘,需要完全独立隔离(每台负载节点上的磁盘非来自共享磁盘阵列,而是独立的磁盘独立的IO) 再有条件环境下增设多块数据盘,对于有状态业务服务进行IO隔离,提升业务性能
使用高性能存储,如
SATA SSD、PCIe SSD通过RAID或LVM提高 IO 性能、带宽 (默认) -
2、对象存储
OSS/S3数据流吞吐性能几乎可以随集群规模线性增长,具有非常高的上限,ONES已成功对接各大云厂商, 支持标准S3协议接入,可提供接入测试(推荐) -
3、
NAS存储 在大量操作请求并发情况下,缓存/网络协议处理易形成阻塞,导致服务不可用,仅存储静态附件类资源,需进行用量评估 (不推荐)
1.5 单节点 多块数据盘 IO隔离简示图

最佳实践如图所示:
1、防止
K3SServer Agent 和工作负载干扰集群数据存储,将关键存储进行IO分离,以免抢占IO,影响control plane响应延时,造成无法维持系统状态。(优化IO/防止系统盘剩余空间不足) 2、为避免中间件及业务组件,避免 IO 竞争读写负载较高导致处理效率较慢,业务并发降低,严重将导致业务不可用,将对高IO中间件 业务单独设立数据盘 N+1磁盘。
3、为避免单点服务器磁盘硬件故障,导致数据盘数据丢失,默认缺省服务器数据备份服务数据落盘再数据盘之中,增设数据备份盘,提高容错能力
最佳实践:将数据备份上传
OSS/S3外部对象存储中,或独立备份服务器部署对象存储服务。
2 单机单数据盘磁盘初始化挂载配置
单数据盘分区挂载 例:一块数据盘:
vdb默认ONES数据目录挂载点:/data/ones请根据实际情况作调整。
# 一、磁盘分区
####查询已经挂载分区,检查磁盘挂载是否成功
[root@ones ~]# df -h
Filesystem Size Used Avail Use% Mounted on
devtmpfs 16G 0 16G 0% /dev
tmpfs 16G 320K 16G 1% /dev/shm
tmpfs 16G 725M 15G 5% /run
tmpfs 16G 0 16G 0% /sys/fs/cgroup
/dev/mapper/centos-root 99G 39G 61G 40% /
/dev/vda1 1014M 150M 865M 15% /boot
/dev/vdb1 1024G 150M 1023G 1% /data/ones # 例
####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 1TB # 磁盘1T
# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
####创建挂载点
[root@ones ~]#mkdir -p /data/ones
####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3h8py9 /data/ones xfs defaults 0 0 # 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd
3 单机多块数据磁盘IO分离配置
适用于单节点:
K3S Deploy例:两块数据盘:vdbvdc默认ONES数据目录挂载点:/data/ones请根据实际情况作调整。
# 一、磁盘分区
####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb
####针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb
# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1
####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
####创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql
####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通 过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd
4 多节点多块数据磁盘IO分离配置
适用于多节点:
K3S/K8S DeployOpenEBS分布式存储方案+localStorage存储以每台Node节点 三块数据存储盘为例:vdbvdcvdd
# 针对每个Node节点操作处理磁盘如下:(需要保留一块裸盘提供OpenEBS使用)
# 一、磁盘分区
####针对新数据盘 vdb进行分区
[root@ones ~]# parted /dev/vdb mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdb mkpart 1 xfs 2048 500G # 磁盘1 500Gb
####针对新数据盘 vdc进行分区
[root@ones ~]# parted /dev/vdc mklabel gpt # 使用gpt格式
[root@ones ~]# parted /dev/vdc mkpart 1 xfs 2048 500G # 磁盘2 500Gb
####数据盘 vdd 无需处理,提供裸盘 openEBS方案(注意)
# 一块未被使用的磁盘,提供给OpenEBS管理和使用,最终数据将以zfs文件系统格式进行存储。OpenEBS为业务提供 非结构化数据的存储,比如: 附件、wiki页面数据等
# 二、磁盘格式化并挂载
####若使用xfs,需要携带ftype=1格式进行格式化,或使用ext4文件系统
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdb1
[root@ones ~]# mkfs.xfs -n ftype=1 /dev/vdc1
####通过以下查看blkid 磁盘分区UUID
[root@ones ~]# blkid
####创建挂载点
[root@ones ~]#mkdir -p /data/ones/ones-local-storage/mysql
####检查磁盘⾃动挂载
[root@ones ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Fri Dec 22 15:25:13 2023
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/centos-root / xfs defaults 0 0
UUID=154ce567-1c9a-4279-8147-34a849ce9a57 /boot xfs defaults 0 0
UUID=2145583b-79b6-4934-9d05-f5cd1bee752a / xfs defaults 0 0
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3sad9 /data/ones xfs defaults 0 0 # vdb1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
UUID=OJayrk-nXIr-RYzx-FnL0-cpa4-8bfD-3xxxx /data/ones/ones-local-storage/mysql xfs defaults 0 0 # vdc1 通过持久化挂载配置,开机自动挂载,通过UUID避免各别虚拟机厂商不稳定盘符偏移问题
####挂载分区,检查磁盘挂载是否成功
[root@ones ~]#mount -a && df -h
# 三、针对k3s agent数据目录与server数据目录隔离(避免系统盘IO受限,系统盘空间不足问题,可选)
# 创建k3s数据目录
[root@ones ~]#K3S_DATA_DIR=/data/ones/ones-installer-pkg/k3s
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/etc/rancher ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent ${K3S_DATA_DIR}/run/k3s ${K3S_DATA_DIR}/var/lib/kubelet
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/etc/rancher /etc/rancher
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/agent /var/lib/rancher/k3s/agent
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/run/k3s /run/k3s
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/kubelet /var/lib/kubelet
# 若有充足数据盘,将etcd也独立出来(可选)
[root@ones ~]#mkdir -p ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd
[root@ones ~]#ln -sf ${K3S_DATA_DIR}/var/lib/rancher/k3s/server/db/etcd /var/lib/rancher/k3s/server/db/etcd