服务器HBA卡配置的核心是驱动安装、WWN绑定和速率匹配,修改pg_hba配置则需理解认证方法并按需调整pg_hba.conf文件,两者共同决定服务器与存储及数据库的连通性。
服务器HBA卡需要配置什么内容
驱动与固件配置
HBA卡插入服务器后,系统通常不会自动识别,需要安装对应驱动,QLogic卡使用qla2xxx模块,Emulex卡使用lpfc模块,在Linux中,通过lspci | grep -i fibre检查设备是否出现,如果未识别,需安装厂商提供的驱动包,使用yum install qla2xxx或apt install qla2xxx-fw,驱动加载后,使用lsmod | grep qla2xxx确认,固件升级建议在厂商官网查看,使用qaucli -f工具升级,可通过cat /sys/class/fc_host/host/firmware_version查看当前版本,业内专家指出,固件版本过低可能导致HBA卡在高速率下不稳定,需要定期检查更新。
速率与拓扑配置
HBA卡速率需与光纤交换机端口匹配,多数情况下,HBA卡默认自动协商,但生产环境常固定速率以避免协商失败,在Linux中,通过systool -c fc_host -v查看当前速率,如果显示unknown,可能链路异常,通过HBA BIOS设置:QLogic卡按Ctrl+Q进入,选择Adapter Settings,设置Data Rate为固定值(如16Gbps或32Gbps),拓扑选择Point-to-Point,禁用Loop Mode,设置后重启服务器,使用cat /sys/class/fc_host/host/speed确认。
WWN与分区配置
每个HBA卡有唯一WWN,在存储端用于LUN映射,查看WWN使用cat /sys/class/fc_host/host/port_name,输出类似0x500143802426b8a0,在FC交换机上,需要创建Zone,包含服务器HBA的WWN和存储端口WWN,使用zonecreate “ZoneName”, “member; member”命令,在存储端,将LUN映射给服务器,通常使用存储管理GUI,在服务器上,使用rescan-scsi-bus.sh扫描新设备,或echo “- – -” > /sys/class/scsi_host/host/scan,确认磁盘可见使用
fdisk -l,如果使用多路径,还需配置/etc/multipath.conf,启用rr或service-time算法,使用multipath -ll查看路径状态。
多路径与负载均衡配置
HBA卡通常配置双卡冗余,配合多路径软件(如device-mapper-multipath)实现负载均衡和故障切换,配置/etc/multipath.conf,建议启用path_checker tur,path_grouping_policy multibus,使用multipath -ll查看路径状态,如果路径缺失,可能是HBA卡或交换机问题,多路径配置不当也会导致数据库性能下降,例如路径切换时出现I/O延迟。
修改pg_hba配置的常见场景与操作
编辑pg_hba.conf文件
pg_hba.conf是PostgreSQL的访问控制配置文件,常见场景包括:允许远程连接、修改认证方法、限制IP范围,文件行格式:TYPE DATABASE USER ADDRESS METHOD,TYPE可以是host、local等,ADDRESS支持CIDR格式。
host all all 192.168.1.0/24 scram-sha-256
修改后,使用pg_ctl reload或systemctl reload postgresql,如果不生效,检查SHOW hba_file;确认路径是否正确,在Windows中,路径类似C:Program FilesPostgreSQL14datapg_hba.conf,使用pg_ctl configtest -D /path检查语法。
常见的认证方法选择
- trust:无条件信任,仅用于本地开发。
- password:明文密码,网络传输不安全。
- md5:基于MD5的哈希,但已不够安全,在许多新版本中默认禁用。
- scram-sha-256:更安全,推荐使用,需要客户端支持,PostgreSQL 10+默认支持。
- cert:使用客户端证书认证,适合高安全环境,配置时需同时启用SSL。
行业共识认为,生产环境应使用scram-sha-256,如果使用md5,考虑升级,修改认证方法后,需确保客户端密码已更新,否则连接失败,从md5切换到scram-sha-256后,用户密码需要重新设置。
不同认证方法的配置示例
- md5配置:
host all all 192.168.1.0/24 md5 - scram-sha-256配置:
host all all 192.168.1.0/24 scram-sha-256 - cert配置:
hostssl all all 192.168.1.0/24 cert
重新加载配置
修改后必须重新加载,否则新配置不生效,命令:pg_ctl reload -D /var/lib/pgsql/14/data,或systemctl reload postgresql,在日志中看到SIGHUP reload表示成功,使用psql -c “SELECT pg_reload_conf()”也可以,测试配置:psql -h 127.0.0.1 -U testuser -d postgres,如果连接成功,配置正确。
常见配置错误及解决
- 错误:no pg_hba.conf entry for host,解决:添加对应IP和认证方法。
- 错误:password authentication failed for user,解决:检查密码或认证方法是否匹配。
- 错误:SSL connection required,解决:在pg_hba.conf中使用hostssl,或修改postgresql.conf的ssl设置。
- 错误:multiple matching entries,解决:调整规则顺序,最具体的规则放在前面。
HBA卡与pg_hba配置不匹配导致的连接问题
检查存储连接
当数据库无法启动,且日志显示I/O error,先检查HBA卡状态,使用systool -c fc_host -v查看port_state,应为Online,如果Offline,检查光纤接口、交换机端口、速率是否匹配,使用fcinfo或qaucli诊断,如果Online但磁盘不可见,检查多路径配置,使用multipath -ll查看路径,如果路径缺失,可能是HBA卡或交换机问题,在存储端,确认LUN已正确映射给服务器HBA的WWN。
检查数据库访问
如果数据库服务启动,但客户端连接被拒绝,检查pg_hba.conf。FATAL: no pg_hba.conf entry是常见错误,确认客户端IP在允许范围内,认证方法正确,如果使用hostssl但客户端未启用SSL,也会失败,检查
postgresql.conf的ssl设置,使用netstat -tlnp | grep 5432确认服务监听地址,如果不是0.0.0.0,可能只监听本机,需修改listen_addresses,如果使用IPv6,需在pg_hba.conf中配置host all all ::1/128 scram-sha-256。
服务器HBA卡配置与pg_hba修改常见问题解答
问题1:服务器HBA卡配置后需要重启服务器吗?
安装驱动后,通常需要重启或卸载加载模块,在Linux中,使用modprobe -r qla2xxx; modprobe qla2xxx可以动态加载,但部分设置如速率更改需要重启,生产环境建议在维护窗口重启服务器,确保HBA卡完全初始化,如果使用多路径,重启后检查multipath -ll确认路径正常。
问题2:修改pg_hba配置后为什么没生效?
首先检查是否执行reload,如果已执行,检查文件路径是否正确,使用SHOW hba_file;,如果路径正确,检查文件语法,使用pg_ctl configtest -D /path,如果语法正确,检查规则顺序,第一条匹配的规则生效,如果之前有host all all 0.0.0.0/0 trust,则后面的规则不会生效,调整顺序,将更具体的规则放在前面,如果使用hostssl,检查postgresql.conf中ssl是否开启。
问题3:HBA卡和pg_hba配置冲突如何排查?
两者无直接冲突,但HBA卡问题可导致数据库启动失败,误以为是pg_hba配置问题,排查时,先检查HBA卡链路状态,确保存储设备可见,然后检查数据库能否启动,如果可以,再测试客户端连接,如果客户端连接失败,再排查pg_hba,如果数据库启动时报数据文件错误,则HBA卡或存储配置不正确,总体排查顺序:HBA卡硬件 -> 存储映射 -> 数据库启动 -> pg_hba访问,在日志中分别查看系统日志、数据库日志,定位错误源头。
服务器HBA卡配置和pg_hba配置分别作用于存储和网络访问,是数据库服务器稳定运行的基础,正确配置这两项,能有效避免性能瓶颈和连接失败问题。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/584824.html




