本文档风哥主要介绍Linux系统大规模LVM共享存储集群配置,包括LVM基础概念、共享存储原理、集群存储架构、LVM基础配置、共享存储配置、集群集成以及实战案例等内容,风哥教程参考Linux官方文档Storage、Clusters等内容,适合系统管理员在生产环境中使用。
Part01-基础概念与理论知识
1.1 LVM基础概念
LVM(Logical Volume Manager)是一种逻辑卷管理技术,它允许将多个物理磁盘组合成一个逻辑卷组(VG),然后在卷组上创建逻辑卷(LV)。LVM提供了灵活的存储管理能力,包括在线扩容、快照、条带化等功能。
- 物理卷(PV):物理磁盘或分区
- 卷组(VG):由多个PV组成的逻辑存储池
- 逻辑卷(LV):从VG中分配的逻辑存储空间
- 物理扩展(PE):PV的基本分配单位
- 逻辑扩展(LE):LV的基本分配单位
1.2 共享存储原理
共享存储是指多个服务器可以同时访问同一块存储设备的技术。在集群环境中,共享存储允许多个节点访问相同的数据,实现数据的高可用性和负载均衡。
– NFS:网络文件系统,基于TCP/IP
– iSCSI:基于IP的存储区域网络
– Fibre Channel:光纤通道存储
– GlusterFS:分布式文件系统
– Ceph:分布式存储系统
# 共享存储优势
– 数据集中管理
– 高可用性
– 负载均衡
– 简化备份和恢复
– 提高存储利用率
1.3 集群存储架构
集群存储架构是指多个服务器通过网络连接到共享存储设备,形成一个存储集群,提供高可用、高性能的存储服务。
- 主动-被动架构:一个节点为活动节点,其他节点为备用节点
- 主动-主动架构:多个节点同时提供服务
- 分布式架构:数据分布在多个节点上,提供更高的可扩展性
Part02-生产环境规划与建议
2.1 存储规划
生产环境存储规划要点:
– 数据量:根据业务需求预测
– 增长趋势:考虑未来3-5年的增长
– 冗余:RAID级别选择(RAID10推荐)
– 备份:预留备份空间
# 存储性能规划
– IOPS:随机读写性能
– 带宽:顺序读写性能
– 延迟:响应时间
– 并发:同时处理的请求数
# 存储可靠性规划
– 冗余:多路径、RAID
– 备份:定期备份策略
– 监控:存储健康状态监控
– 灾备:异地灾备方案
2.2 硬件选择
生产环境硬件选择要点:
from PG视频:www.itpux.com
– 企业级硬盘:SAS、SSD
– 存储控制器:RAID卡,支持缓存
– 网络设备:万兆网卡、光纤交换机
– 服务器:支持多路径、高可用
# 硬件配置建议
– 硬盘:使用企业级SAS或SSD
– RAID级别:RAID10(性能和可靠性兼顾)
– 缓存:配置BBU(电池备份单元)
– 网络:万兆以太网或光纤通道
2.3 网络要求
生产环境网络要求:
– 存储网络:单独的网络,避免与业务网络混用
– 网络带宽:万兆以太网或更高
– 网络延迟:低延迟,确保存储性能
– 网络冗余:多网卡绑定,提高可用性
# 网络配置
– VLAN:为存储网络创建专用VLAN
– MTU:调整为9000(jumbo frames)
– 网络隔离:使用防火墙隔离存储网络
– 网络监控:监控网络流量和延迟
Part03-生产环境项目实施方案
3.1 LVM基础配置
3.1.1 物理卷创建
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part /
sdb 8:16 0 200G 0 disk
sdc 8:32 0 200G 0 disk
sdd 8:48 0 200G 0 disk
# 创建物理卷
$ sudo pvcreate /dev/sdb /dev/sdc /dev/sdd
Physical volume “/dev/sdb” successfully created.
Physical volume “/dev/sdc” successfully created.
Physical volume “/dev/sdd” successfully created.
# 查看物理卷
$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sdb lvm2 — 200.00g 200.00g
/dev/sdc lvm2 — 200.00g 200.00g
/dev/sdd lvm2 — 200.00g 200.00g
3.1.2 卷组创建
$ sudo vgcreate vg_shared /dev/sdb /dev/sdc /dev/sdd
Volume group “vg_shared” successfully created
# 查看卷组
$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg_shared 3 0 0 wz–n- 599.99g 599.99g
# 扩展卷组(添加新磁盘)
$ sudo vgextend vg_shared /dev/sde
Volume group “vg_shared” successfully extended
3.1.3 逻辑卷创建
$ sudo lvcreate -n lv_data -L 500G vg_shared
Logical volume “lv_data” created.
# 查看逻辑卷
$ sudo lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
lv_data vg_shared -wi-a—– 500.00g
# 格式化逻辑卷
$ sudo mkfs.xfs /dev/vg_shared/lv_data
meta-data=/dev/vg_shared/lv_data isize=512 agcount=4, agsize=32768000 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1
data = bsize=4096 blocks=131072000,更多视频教程www.fgedu.net.cn imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0, ftype=1
log =internal log bsize=4096 blocks=63999, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
# 挂载逻辑卷
$ sudo mkdir /mnt/shared
$ sudo mount /dev/vg_shared/lv_data /mnt/shared
$ sudo echo “/dev/vg_shared/lv_data /mnt/shared xfs defaults 0 0” >> /etc/fstab
3.2 共享存储配置
3.2.1 NFS共享存储配置
$ sudo dnf install -y nfs-utils
# 创建共享目录
$ sudo mkdir -p /mnt/shared/data
# 配置NFS共享
$ sudo echo “/mnt/shared/data 192.168.1.0/24(rw,sync,no_root_squash)” >> /etc/exports
# 启动NFS服务
$ sudo systemctl start nfs-server
$ sudo systemctl enable nfs-server
# 查看NFS共享
$ sudo exportfs -v
/mnt/shared/data 192.168.1.0/24(rw,wdelay,root_squash,no_subtree_check,sec=sys,rw,secure,no_root_squash,no_all_squash)
# 在客户端挂载NFS
$ sudo mount -t nfs 192.168.1.100:/mnt/shared/data /mnt/nfs
$ sudo echo “192.168.1.100:/mnt/shared/data /mnt/nfs nfs defaults 0 0” >> /etc/fst学习交流加群风哥QQ113257174ab
3.2.2 iSCSI共享存储配置
$ sudo dnf install -y targetcli
# 启动iSCSI服务
$ sudo systemctl start target
$ sudo systemctl enable target
# 配置iSCSI target
$ sudo targetcli
/> backstores/block create disk0 /dev/vg_shared/lv_data
/> iscsi/ create iqn.2026-04.com.fgedu:target0
/> iscsi/iqn.2026-04.com.fgedu:target0/tpg1/luns create /backstores/block/disk0
/> iscsi/iqn.2026-04.com.fgedu:target0/tpg1/acls create iqn.2026-04.com.fgedu:initiator0
/> iscsi/iqn.2026-04.com.fgedu:target0/tpg1/portals create 192.168.1.100
/> saveconfig
/> exit
# 在客户端安装iSCSI initiator
$ sudo dnf install -y iscsi-initiator-utils
# 配置iSCSI initiator
$ sudo echo “InitiatorName=iqn.2026-04.com.fgedu:initiator0” > /etc/iscsi/initiatorname.iscsi
# 启动iSCSI服务
$ sudo systemctl start iscsid
$ sudo systemctl enable iscsid
# 发现iSCSI target
$ sudo iscsiadm -m discovery -t st -p 192.168.1.100
192.168.1.100:3260,1 iqn.2026-04.com.fgedu:target0
# 登录iSCSI target
$ sudo iscsiadm -m node -T iqn.2026-04.com.fgedu:target0 -p 192.168.1.100 -l
# 查看iSCSI设备
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 50G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 49G 0 part /
sdb 8:16 0 500G 0 disk
3.3 集群集成
3.3.1 Pacemaker集群集成
$ sudo dnf install -y pacemaker corosync pcs
# 启动pcsd服务
$ sudo systemctl start pcsd
$ sudo systemctl enable pcsd
# 设置pcsd密码
$ sudo passwd hacluster
# 在所有节点上认证
$ sudo pcs host auth node1 node2 node3 -u hacluster
# 创建集群
$ sudo pcs cluster setup –name fgedu-cluster node1 node2 node3
# 启动集群
$ sudo pcs cluster start –all
# 查看集群状态
$ sudo pcs status
Cluster name: fgedu-cluster
Cluster Summary:
* Stack: corosync
* Current DC: node1 (version 2.1.5-9.el9_3.1)
* 3 nodes configured
* 0 resources configured
# 创建存储资源
$ sudo pcs resource create shared-storage ocf:heartbeat:Filesystem \
device=”/dev/vg_shared/lv_data” \
directory=”/mnt/shared” \
fstype=”xfs” \
op monitor interval=”30s”
# 查看资源状态
$ sudo pcs status
Cluster name: fgedu-cluster
Cluster Summary:
* Stack: corosync
* Current DC: node1 (version 2.1.5-9.el9_3.1)
* 3 nodes configured
* 1 resource configured
Online: [ node1 node2 node3 ]
Full list of resources:
shared-storage (ocf::heartbeat:Filesystem): Started node1
Part04-生产案例与实战讲解
4.1 NFS共享存储案例
4.1.1 企业级NFS共享存储
# 环境:3台服务器,1台存储服务器
# 目标:为Web服务器提供共享存储
# 1. 存储服务器配置
$ sudo dnf install -y nfs-utils
$ sudo mkdir -p /export/web
$ sudo mkfs.xfs /dev/vg_shared/lv_web
$ sudo mount /dev/vg_shared/lv_web /export/web
$ sudo echo “/dev/vg_shared/lv_web /export/web xfs defaults 0 0” >> /etc/fstab
$ sudo echo “/export/web 192.168.1.0/24(rw,sync,no_root_squash)” >> /etc/exports
$ sudo systemctl restart nfs-server
# 2. Web服务器配置
$ sudo mkdir -p /var/www/html
$ sudo mount -t nfs 192.168.1.100:/export/web /var/www/html
$ sudo echo “192.168.1.100:/export/web /var/www/html nfs defaults 0 0” >> /etc/fstab
# 3. 测试共享存储
$ echo “Hello from NFS shared storage” > /var/www/html/index.html
$ curl http://localhost
Hello from NFS shared storage
4.2 iSCSI共享存储案例
4.2.1 数据库集群iSCSI存储
# 环境:2台数据库服务器,1台iSCSI存储服务器
# 目标:为MySQL集群提供共享存储
# 1. iSCSI存储服务器配置
$ sudo dnf install -y targetcli
$ sudo targetcli
/> backstores/block create mysql /dev/vg_shared/lv_mysql
/> iscsi/ create iqn.2026-04.com.fgedu:mysql
/> iscsi/iqn.2026-04.com.fgedu:mysql/tpg1/luns create /backstores/block/mysql
/> iscsi/iqn.2026-04.com.fgedu:mysql/tpg1/acls create iqn.2026-04.com.fgedu:mysql1
/> iscsi/iqn.2026-04.com.fgedu:mysql/tpg1/acls create iqn.2026-04.com.fgedu:mysql2
/> iscsi/iqn.2026-04.com.fgedu:mysql/tpg1/portals create 192.168.1.100
/> saveconfig
/> exit
# 2. 数据库服务器配置
$ sudo dnf install -y iscsi-initiator-utils
$ sudo echo “InitiatorName=iqn.2026-04.com.fgedu:mysql1” > /etc/iscsi/initiatorname.iscsi
$ sudo systemctl restart iscsid
$ sudo iscsiadm -m discovery -t st -p 192.168.1.100
$ sudo iscsiadm -m node -T iqn.2026-04.com.fgedu:mysql -p 192.168.1.100 -l
$ sudo mkfs.xfs /dev/sdb
$ sudo mkdir -p /var/lib/mysql
$ sudo mount /dev/sdb /var/lib/mysql
$ sudo echo “/dev/sdb /var/lib/mysql xfs defaults,_netdev 0 0” >> /etc/fstab
# 3. 配置MySQL集群
$ sudo dnf install -y mysql-server
$ sudo systemctl start mysqld
$ sudo mysql_secure_installation
$ sudo mysql -u root -p -e “CREATE DATABASE fgedudb;”
$ sudo mysql -u root -p -e “CREATE USER ‘fgedu’@’%’ IDENTIFIED BY ‘fgedu123’;”
$ sudo mysql -u root -p -e “GRANT ALL PRIVILEGES ON fgedudb.* TO ‘fgedu’@’%’;”
$ sudo mysql -u root -p -e “FLUSH PRIVILEGES;”
4.3 GlusterFS集群存储案例
4.3.1 分布式GlusterFS集群
# 环境:4台服务器
# 目标:创建高可用分布式存储
# 1. 安装GlusterFS
$ sudo dnf install -y glusterfs-server
$ sudo systemctl start glusterd
$ sudo systemctl enable glusterd
# 2. 创建信任池
$ sudo gluster peer probe node2
$ sudo gluster peer probe node3
$ sudo gluster peer probe node4
# 3. 查看信任池
$ sudo gluster peer status
Number of Peers: 3
Hostname: node2
Uuid: 12345678-1234-1234-1234-1234567890ab
State: Peer in Cluster (Connected)
Hostname: node3
Uuid: 87654321-4321-4321-4321-ba0987654321
State: Peer in Cluster (Connected)
Hostname: node4
Uuid: abcdef12-3456-7890-abcd-ef1234567890
State: Peer in Cluster (Connected)
# 4. 创建分布式卷
$ sudo mkdir -p /gluster/data
$ sudo gluster volume create gv0 node1:/gluster/data node2:/gluster/data node3:/gluster/data node4:/gluster/data
$ sudo gluster volume start gv0
# 5. 查看卷状态
$ sudo gluster volume info
Volume Name: gv0
Type: Distribute
Volume ID: 12345678-1234-1234-1234-1234567890ab
Status: Started
Snapshot Count: 0
Number of Bricks: 4
Transport-type: tcp
Bricks:
Brick1: node1:/gluster/data
Brick2: node2:/gluster/data
Brick3: node3:/gluster/data
Brick4: node4:/gluster/data
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
# 6. 挂载GlusterFS卷
$ sudo mkdir -p /mnt/gluster
$ sudo mount -t glusterfs node1:/gv0 /mnt/gluster
$ sudo echo “node1:/gv0 /mnt/gluster glusterfs defaults 0 0” >> /etc/fstab
Part05-风哥经验总结与分享
5.1 LVM共享存储最佳实践
LVM共享存储最佳实践:
- 合理规划存储容量:根据业务需求和增长趋势,合理规划存储容量
- 选择合适的RAID级别:RAID10兼顾性能和可靠性
- 使用企业级硬件:选择可靠的存储设备和网络设备
- 网络隔离:为存储网络创建专用VLAN,避免与业务网络混用
- 多路径配置:配置多路径,提高存储访问的可靠性
- 定期备份:制定合理的备份策略,确保数据安全
- 监控与告警:实时监控存储健康状态,及时发现问题
- 性能优化:根据应用特点,优化存储性能
5.2 常见问题与解决方案
## 1. 存储性能问题
– 原因:RAID级别不当、缓存配置不合理、网络带宽不足
– 解决方案:选择合适的RAID级别、配置足够的缓存、使用万兆网络
## 2. 存储可靠性问题
– 原因:硬件故障、RAID损坏、多路径配置错误
– 解决方案:定期检查硬件、配置RAID冗余、正确配置多路径
## 3. 共享存储访问冲突
– 原因:多个节点同时写入、文件锁定机制不当
– 解决方案:使用集群文件系统、配置适当的锁定机制
## 4. 存储扩容问题
– 原因:空间不足、扩容操作不当
– 解决方案:提前规划扩容、使用LVM在线扩容、遵循正确的扩容步骤
## 5. 网络存储延迟
– 原因:网络带宽不足、网络拥塞、存储设备性能不足
– 解决方案:使用万兆网络、优化网络配置、选择高性能存储设备
5.3 性能调优建议
风哥针对
LVM共享存储性能调优建议:
- 文件系统选择:根据应用特点选择合适的文件系统(XFS适合大文件,EXT4适合小文件)
- 挂载选项:使用noatime、nodiratime等选项减少磁盘I/O
- RAID缓存:配置适当的RAID缓存策略
- 网络优化:调整MTU、使用 jumbo frames、配置适当的网络队列
- 存储设备优化:使用SSD缓存、配置适当的I/O调度器
- 应用优化:调整应用的I/O模式,减少随机I/O
风哥提示:
风哥提示:
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
