引言:SAP HANA 与 SUSE Linux Enterprise 的完美结合

SAP HANA 作为企业级内存计算平台,对底层操作系统有着极高的要求。SUSE Linux Enterprise Server (SLES) 是 SAP 官方推荐的首选操作系统平台,提供了卓越的性能、稳定性和与 SAP 生态系统的深度集成。本指南将带您走过 SAP HANA 部署的完整生命周期,从硬件规划到生产环境优化,提供实战验证的部署方案。

根据 SAP 官方文档和实际项目经验,SLES for SAP Applications 提供了针对 SAP 工作负载的特殊优化,包括内核参数调优、资源管理策略和高可用性集成。本文将基于 SLES 15 SP4/SP5 和 SAP HANA 2.0 SPS07 的最新特性进行详细说明。

第一部分:硬件选型与架构规划

1.1 SAP HANA 硬件需求核心原则

SAP HANA 的硬件选型必须遵循 SAP HANA TDI (Tailored Datacenter Integration) 标准。关键要求包括:

  • 内存容量:至少为生产数据的 1.5-2 倍(考虑压缩和运行时开销)
  • CPU:支持 AVX2/AVX-512 指令集的 Intel Xeon Scalable 或 AMD EPYC 处理器
  • 存储:NVMe SSD 用于数据盘,SATA/SAS SSD 用于日志盘
  • 网络:最低 10GbE,推荐 25GbE/100GbE 用于分布式部署

1.2 单节点 vs. 分布式架构选择

单节点部署适用于:

  • 数据量 < 500GB
  • 并发用户数 < 100
  • 开发/测试环境

分布式架构(多节点)适用于:

  • 数据量 > 500GB
  • 高并发生产环境
  • 需要高可用性

分布式架构典型配置:

  • Worker 节点:负责数据处理和计算
  • Standby 节点:热备节点(可选)
  • NameServer:元数据管理(通常与 Worker 合并)
  • IndexServer:核心数据处理引擎

1.3 硬件配置参考表

组件最小配置推荐配置(中型)高端配置(大型)
CPU8 核 @ 2.5GHz32 核 @ 3.0GHz96 核 @ 3.5GHz
内存128GB512GB2TB+
数据盘1TB NVMe4TB NVMe RAID110TB+ NVMe RAID10
日志盘512GB SSD2TB SSD RAID15TB+ SSD RAID1
备份盘2TB HDD10TB NAS/NFS20TB+ 备份存储
网络10GbE25GbE100GbE

1.4 存储架构最佳实践

数据目录 /hana/data

  • 使用 LVM 条带化(striping)提高 IOPS
  • RAID 级别:RAID 10 或 RAID 5/6(取决于写性能需求)
  • 预分配空间,避免动态扩展

日志目录 /hana/log

  • 高写入性能,建议 RAID 10
  • 分离物理磁盘,避免与数据盘 I/O 竞争
  • 配置写缓存策略

备份目录 /hana/backup

  • 使用 NFS/CIFS 挂载到专用备份服务器
  • 带宽至少 10GbE
  • 配置自动快照策略

第二部分:SUSE Linux Enterprise 安装与配置

2.1 SLES for SAP Applications 安装

下载与验证

# 从 SUSE Customer Center 下载 ISO wget https://download.suse.com/.../SLES4SAP-15-SP4-DVD-x86_64.iso # 验证校验和 sha256sum SLES4SAP-15-SP4-DVD-x86_64.iso # 应与官网发布的校验和一致 

安装模式选择

  • 选择 “SUSE Linux Enterprise Server for SAP Applications” 模式
  • 分区方案:选择 “SAP HANA” 自动分区模板
  • 时区:设置为 UTC(推荐)或 SAP 应用时区

关键安装参数

# 在安装过程中配置网络 hostnamectl set-hostname hana01.company.com # 配置静态 IP(示例) cat > /etc/sysconfig/network/ifcfg-eth0 <<EOF BOOTPROTO='static' IPADDR='192.168.1.100/24' GATEWAY='192.168.1.1' DNS1='8.8.8.8' STARTMODE='auto' EOF 

2.2 系统基础配置

更新系统

# 注册 SUSE Manager 或 SCC SUSEConnect --regcode <您的注册码> # 添加 SAP 模块 SUSEConnect --product sle-module-sap-applications # 更新所有包 zypper refresh zypper update 

配置 SELinux 和防火墙

# 对于 SAP HANA,通常建议禁用 SELinux(SAP 官方推荐) # 但生产环境建议保持启用并配置策略 setenforce 0 sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config # 配置防火墙(允许 SAP 端口) firewall-cmd --permanent --add-port=3{0013-30015}/tcp firewall-cmd --permanent --add-port=3{0040-30043}/tcp firewall-cmd --permanent --add-port=3{0060-30063}/tcp firewall-cmd --reload 

2.3 内核参数调优(SLES for SAP)

SLES for SAP 提供了预设的 SAP 优化配置:

# 应用 SAP HANA 内核参数模板 # 该模板位于 /usr/share/doc/packages/sap-note/ cp /usr/share/doc/packages/sap-note/941735.conf /etc/sysctl.d/99-sap-hana.conf # 手动调整关键参数(如需自定义) cat > /etc/sysctl.d/99-sap-hana.conf <<EOF # 内存管理 vm.swappiness = 10 vm.dirty_ratio = 15 vm.dirty_background_ratio = 5 vm.dirty_expire_centisecs = 3000 # 网络优化 net.core.rmem_max = 4249600 net.core.wmem_max = 4249600 net.ipv4.tcp_rmem = 4096 87380 4249600 net.ipv4.tcp_wmem = 4096 65536 4249600 net.ipv4.tcp_congestion_control = cubic # 文件系统 fs.file-max = 2097152 fs.nr_open = 2097152 EOF # 应用参数 sysctl -p /etc/sysctl.d/99-sap-hana.conf 

用户和权限配置

# 创建 sapadm 用户(SAP 管理员) useradd -m -s /bin/bash sapadm echo "sapadm:password" | chpasswd # 创建 hdbadm 用户(HANA 管理员) useradd -m -s /bin/bash hdbadm echo "hdbadm:password" | chpasswd # 配置 sudo 权限 echo "sapadm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/sap echo "hdbadm ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers.d/hana chmod 440 /etc/sudoers.d/sap /etc/sudoers.d/hana 

第三部分:SAP HANA 安装实战

3.1 安装前准备

系统检查

# 检查内存 grep MemTotal /proc/meminfo # 检查 CPU lscpu # 检查存储空间 df -h /hana/data /hana/log /hana/backup # 棔查操作系统版本 cat /etc/os-release 

配置主机解析

# /etc/hosts 文件配置(所有节点) cat >> /etc/hosts <<EOF 192.168.1.100 hana01.company.com hana01 192.168.1.101 hana02.company.com hana02 192.168.1.102 hana03.company.com hana03 EOF 

配置 SSH 免密登录

# 以 hdbadm 用户执行 su - hdbadm ssh-keygen -t rsa -b 4096 # 分发公钥到所有节点 ssh-copy-id hana01 ssh-copy-id hana02 ssh-copy-id hana03 # 测试连接 ssh hana02 hostname 

3.2 使用 hdblcm 安装 HANA

准备安装文件

# 挂载 SAP HANA 安装介质 mount -o loop /path/to/SAP_HANA_DATABASE_2.00.07.00.iso /mnt/hana_install # 进入安装目录 cd /mnt/hana_install 

交互式安装

# 以 root 用户执行 ./hdblcm --action=install # 交互式参数说明: # - 选择安装类型:1 (Install new system) # - 输入 SID: HDB # - 实例编号: 00 # - 输入 hdbadm 用户密码 # - 系统角色: 1 (Primary) # - 数据盘路径: /hana/data # - 日志盘路径: /hana/log # - 备份盘路径: /hana/backup # - 端口: 默认 (30013-30015) 

静默安装(推荐生产环境)

# 创建响应文件 cat > /tmp/hana_install.rsp <<EOF [General] action=install sid=HDB instance_number=00 system_usage=production password=hdbadm_password [Hosts] host_names=hana01.company.com [Storage] data_volumes=/hana/data log_volumes=/hana/log backup_volumes=/hana/backup [Security] ssl=enable root_password=root_password EOF # 执行静默安装 ./hdblcm --batch --input_file=/tmp/hana_install.rsp 

3.3 安装后验证

检查 HANA 服务状态

# 切换到 hdbadm 用户 su - hdbadm # 查看实例状态 HDB status # 检查进程 ps -ef | grep hdb # 查看端口监听 netstat -tlnp | grep 300 

连接测试

# 使用 hdbsql 连接 hdbsql -i 00 -u SYSTEM -p <password> "SELECT * FROM M_DATABASE" # 预期输出: # DATABASE_NAME, HOST, PORT, VERSION, START_TIME 等信息 

安装 SAP HANA Studio(可选)

# 从 SAP Marketplace 下载 SAP HANA Studio # 解压并安装 ./hdbinst -i 00 -s HDB --studio 

第四部分:SUSE Linux Enterprise 性能调优

4.1 文件系统调优

XFS 文件系统优化(推荐用于 /hana/data 和 /hana/log):

# 创建 XFS 文件系统(如果未格式化) mkfs.xfs -f -i size=512 -d su=128k,sw=4 /dev/mapper/hana-data # 挂载选项优化 cat >> /etc/fstab <<EOF /dev/mapper/hana-data /hana/data xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 0 /dev/mapper/hana-log /hana/log xfs defaults,noatime,nodiratime,logbufs=8,logbsize=256k 0 0 EOF # 重新挂载 mount -o remount /hana/data mount -o remount /hana/log 

EXT4 文件系统优化(如果使用 EXT4):

# 创建 EXT4 文件系统 mkfs.ext4 -E lazy_itable_init=1,lazy_journal_init=1 -O extent,uninit_bg /dev/mapper/hana-data # 挂载选项 cat >> /etc/fstab <<EOF /dev/mapper/hana-data /hana/data ext4 defaults,noatime,nodiratime,data=writeback,barrier=0 0 0 /dev/mapper/hana-log /hana/log ext4 defaults,noatime,nodiratime,data=ordered,barrier=0 0 0 EOF 

4.2 CPU 和内存调优

CPU 频率调节策略

# 安装 cpupower 工具 zypper install cpupower # 设置为 performance 模式 cpupower frequency-set -g performance # 检查当前策略 cpupower frequency-info # 永久化配置 cat > /etc/systemd/system/cpu-performance.service <<EOF [Unit] Description=CPU Performance Mode [Service] Type=oneshot ExecStart=/usr/bin/cpupower frequency-set -g performance [Install] WantedBy=multi-user.target EOF systemctl enable cpu-performance.service 

透明大页(THP)配置

# 对于 SAP HANA,建议禁用 THP # 创建 systemd 服务 cat > /etc/systemd/system/disable-thp.service <<EOF [Unit] Description=Disable Transparent Huge Pages [Service] Type=oneshot ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/enabled' ExecStart=/bin/sh -c 'echo never > /sys/kernel/mm/transparent_hugepage/defrag' [Install] WantedBy=multi-user.target EOF systemctl enable disable-thp.service systemctl start disable-thp.service 

NUMA 配置

# 检查 NUMA 拓扑 numactl --hardware # 对于多 CPU 插槽系统,配置 NUMA 亲和性 # 在 HANA 全局配置中添加: # [memory] # numa_memory_binding = true 

4.3 网络性能调优

网络接口优化

# 配置 MTU(如果网络支持 Jumbo Frames) ifconfig eth0 mtu 9000 # 永久化配置 cat > /etc/sysconfig/network/ifcfg-eth0 <<EOF BOOTPROTO='static' IPADDR='192.168.1.100/24' MTU='9000' STARTMODE='auto' EOF # 调整网络缓冲区 cat > /etc/sysctl.d/99-network.conf <<EOF net.core.rmem_max = 134217728 net.core.wmem_max = 134217728 net.ipv4.tcp_rmem = 4096 87380 134217728 net.ipv4.tcp_wmem = 4096 65536 134217728 net.ipv4.tcp_congestion_control = cubic net.ipv4.tcp_mtu_probing = 1 EOF sysctl -p /etc/sysctl.d/99-network.conf 

4.4 I/O 调度器优化

针对 NVMe 设备

# 查看当前调度器 cat /sys/block/nvme0n1/queue/scheduler # 设置为 none(对于 NVMe,推荐) echo none > /sys/block/nvme0n1/queue/scheduler # 永久化配置 cat > /etc/udev/rules.d/60-ioscheduler.rules <<EOF ACTION=="add|change", KERNEL=="nvme*", ATTR{queue/scheduler}="none" ACTION=="add|change", KERNEL=="sd*", ATTR{queue/scheduler}="deadline" EOF # 重新加载 udev 规则 udevadm control --reload-rules 

针对 SSD 设备

# 设置为 deadline 或 noop echo deadline > /sys/block/sda/queue/scheduler # 调整队列深度 echo 128 > /sys/block/sda/queue/nr_requests 

4.5 SAP HANA 内部参数调优

全局配置文件 /hana/shared/HDB/global/hdb/custom/config/global.ini

# 使用 hdbadm 用户编辑 su - hdbadm cd /hana/shared/HDB/global/hdb/custom/config # 创建或编辑 global.ini cat > global.ini <<EOF [memorymanagement] global_allocation_limit = 90 # 分配 90% 内存给 HANA memorytrace = off [resource_tracking] enable_resource_tracking = on [sql] preexecute_sql_statements = on [parallel_processing] query_parallelism = 8 # 根据 CPU 核心数调整 [execution] optimized_plan_cache = on plan_cache_entry_expiry = 3600 [consistency] check_consistency = off # 生产环境建议关闭 EOF # 重新加载配置 HDBSettings.sh /usr/sap/HDB/HDB00/exe/hdbcons -u hdbadm "config_reload" 

命名服务器参数

# 在 HANA Studio 中配置 # 或使用 SQL 语句: hdbsql -i 00 -u SYSTEM -p <password> "ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('memorymanagement', 'global_allocation_limit') = '90' WITH RECONFIGURE" 

第五部分:高可用性配置

5.1 SUSE Linux Enterprise High Availability Extension

安装 HA 扩展

# 注册 HA 模块 SUSEConnect --product sle-module-ha # 安装 HA 包 zypper install -y pacemaker corosync crmsh 

配置 Corosync

# 生成认证密钥 corosync-keygen -l # 配置 corosync.conf cat > /etc/corosync/corosync.conf <<EOF totem { version: 2 cluster_name: hana_cluster transport: knet crypto_cipher: aes256 crypto_hash: sha256 } nodelist { node { ring0_addr: hana01.company.com nodeid: 1 } node { ring0_addr: hana02.company.com nodeid: 2 } } quorum { provider: corosync_votequorum two_node: 1 } logging { to_logfile: yes logfile: /var/log/corosync/corosync.log to_syslog: yes } EOF 

5.2 SAP HANA System Replication

配置 HANA 系统复制

# 在主节点上执行(hdbadm 用户) su - hdbadm # 启用系统复制 hdbnsutil -sr_enable --name=HDB # 输出示例: # done, enabled system replication # done, enabling system replication for site: default 

配置复制模式

# 在主节点配置 hdbsql -i 00 -u SYSTEM -p <password> "ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('system_replication', 'mode') = 'sync' WITH RECONFIGURE" # 可选模式: # sync: 同步复制(数据零丢失,性能影响) # async: 异步复制(性能最佳,可能丢失少量数据) # logshipping: 仅日志传输 

注册从节点

# 在从节点上执行 su - hdbadm hdbnsutil -sr_register --name=HDB --remoteHost=hana01 --remoteInstance=00 --mode=sync 

启动复制

# 在从节点启动 HANA HDB start # 检查复制状态 hdbnsutil -sr_state # 预期输出: # system replication status: active # mode: sync # site: default 

5.3 Pacemaker 集群配置

配置 Pacemaker 资源

# 切换到 root 用户 # 配置 SBD(STONITH 设备,可选但推荐) zypper install -y sbd sbd -d /dev/sdb1 create # 配置 Pacemaker crm configure property stonith-enabled=true property no-quorum-policy=ignore property cluster-recheck-interval=60s # 配置 HANA 资源 primitive rsc_sap_HDB_HDB ocf:heartbeat:SAPInstance params InstanceName=HDB_HDB00_hana01 op start timeout=600 op stop timeout=180 op monitor interval=120 timeout=60 # 配置 HANA 系统复制资源 primitive rsc_sap_HDB_sr ocf:suse:SAPHanaSR params SID=HDB InstanceNumber=00 op start timeout=600 op stop timeout=180 op monitor interval=120 timeout=60 # 配置克隆资源 clone cl_sap_HDB_sr rsc_sap_HDB_sr meta clone-max=2 clone-node-max=1 interleave=true # 提交配置 commit exit 

验证集群状态

# 查看资源状态 crm_mon -1 # 检查 SAPHanaSR 角色 crm_resource -r rsc_sap_HDB_sr --force-check # 预期输出: # HDB00: primary # HDB00: active 

第六部分:监控与维护

6.1 SAP HANA 监控工具

使用 HANA Cockpit

# 启动 HANA Cockpit su - hdbadm hdbcockpit-start # 访问 https://hana01:51015 # 默认用户:HDB_ADMIN 

使用 HANA Studio

# 在 HANA Studio 中连接实例 # 查看性能视图: # - M_LOAD_HISTORY # - M_SERVICE_MEMORY # - M_CONNECTIONS # - M_ACTIVE_STATEMENTS 

SQL 监控脚本

# 创建监控脚本 cat > /home/hdbadm/monitor_hana.sh <<'EOF' #!/bin/bash # SAP HANA 监控脚本 HDB_USER="SYSTEM" HDB_PASSWORD="<password>" HDB_SQL="SELECT * FROM M_DATABASE" # 执行查询 hdbsql -i 00 -u $HDB_USER -p $HDB_PASSWORD "$HDB_SQL" # 检查内存使用 echo "=== Memory Usage ===" hdbsql -i 00 -u $HDB_USER -p $HDB_PASSWORD "SELECT HOST, TOTAL_MEMORY_USED, ALLOCATION_LIMIT FROM M_SERVICE_MEMORY" # 检查活动连接 echo "=== Active Connections ===" hdbsql -i 00 -u $HDB_USER -p $HDB_PASSWORD "SELECT COUNT(*) AS ACTIVE_CONNECTIONS FROM M_CONNECTIONS WHERE CONNECTION_ID IS NOT NULL" EOF chmod +x /home/hdbadm/monitor_hana.sh 

6.2 日志管理

配置日志轮转

# HANA 日志轮转配置 cat > /hana/log/HDB00/hdb/hdblogrotate.conf <<EOF /hana/log/HDB00/hdb/*.log { daily rotate 7 compress delaycompress missingok notifempty create 640 hdbadm sapsys sharedscripts postrotate /usr/sap/HDB/HDB00/exe/hdbcons -u hdbadm "log_rotate" endscript } EOF # 配置系统日志轮转 cat > /etc/logrotate.d/sap-hana <<EOF /var/log/sap/*.log { weekly rotate 4 compress delaycompress missingok notifempty create 640 root root } EOF 

日志分析脚本

# 创建日志分析脚本 cat > /home/hdbadm/analyze_logs.sh <<'EOF' #!/bin/bash # 分析 HANA 错误日志 LOG_DIR="/hana/log/HDB00/hdb" ERROR_COUNT=$(grep -c "ERROR" $LOG_DIR/*.log) WARNING_COUNT=$(grep -c "WARNING" $LOG_DIR/*.log) echo "Errors: $ERROR_COUNT" echo "Warnings: $WARNING_COUNT" # 查找最近的错误 echo "=== Recent Errors ===" grep "ERROR" $LOG_DIR/*.log | tail -10 EOF chmod +x /home/hdbadm/analyze_logs.sh 

6.3 备份策略

配置 HANA 备份

# 配置完整备份 su - hdbadm hdbsql -i 00 -u SYSTEM -p <password> "BACKUP DATA USING FILE ('/hana/backup/data/backup_$(date +%Y%m%d).bak')" # 配置增量备份 hdbsql -i 00 -u SYSTEM -p <password> "BACKUP DATA USING FILE ('/hana/backup/data/inc_$(date +%Y%m%d).bak') INCREMENTAL" # 配置日志备份 hdbsql -i 00 -u SYSTEM -p <password> "BACKUP LOG USING FILE ('/hana/backup/log/log_$(date +%Y%m%d).bak')" 

自动化备份脚本

# 创建每日备份脚本 cat > /home/hdbadm/daily_backup.sh <<'EOF' #!/bin/bash # SAP HANA 每日备份脚本 BACKUP_DATE=$(date +%Y%m%d) BACKUP_DIR="/hana/backup/data" LOG_DIR="/hana/backup/log" # 创建备份目录 mkdir -p $BACKUP_DIR $LOG_DIR # 执行完整备份 hdbsql -i 00 -u SYSTEM -p <password> "BACKUP DATA USING FILE ('$BACKUP_DIR/full_$BACKUP_DATE.bak')" >> $LOG_DIR/backup_$BACKUP_DATE.log 2>&1 # 检查备份状态 if [ $? -eq 0 ]; then echo "Backup completed successfully" >> $LOG_DIR/backup_$BACKUP_DATE.log # 发送通知 echo "HANA Backup completed for $BACKUP_DATE" | mail -s "HANA Backup Success" admin@company.com else echo "Backup failed" >> $LOG_DIR/backup_$BACKUP_DATE.log echo "HANA Backup FAILED for $BACKUP_DATE" | mail -s "HANA Backup Failure" admin@company.com fi # 清理旧备份(保留 7 天) find $BACKUP_DIR -name "*.bak" -mtime +7 -delete find $LOG_DIR -name "*.log" -mtime +7 -delete EOF chmod +x /home/hdbadm/daily_backup.sh # 配置 cron 任务 echo "0 2 * * * /home/hdbadm/daily_backup.sh" | crontab -u hdbadm - 

第七部分:性能测试与基准测试

7.1 使用 SAP HANA 基准测试工具

SAP HANA 基准测试

# 下载并安装 SAP HANA 基准测试工具 # 从 SAP Service Marketplace 获取 # 配置测试参数 cat > /tmp/hana_benchmark.cfg <<EOF [General] db_host=hana01.company.com db_port=30015 db_user=SYSTEM db_password=<password> db_name=HDB [Test] duration=3600 concurrent_users=50 think_time=1 EOF # 执行测试 ./hana_benchmark --config=/tmp/hana_benchmark.cfg --output=/tmp/benchmark_results.txt 

自定义性能测试

# 创建性能测试 SQL cat > /tmp/performance_test.sql <<'EOF' -- 测试 1: 数据加载性能 CREATE TABLE test_performance ( id INT PRIMARY KEY, data VARCHAR(1000), timestamp TIMESTAMP ); -- 插入 100 万条记录 INSERT INTO test_performance SELECT ROW_NUMBER() OVER () as id, RPAD('X', 1000, 'X') as data, CURRENT_TIMESTAMP as timestamp FROM SERIES_GENERATE_INTEGER(1, 1, 1000000); -- 测试 2: 复杂查询性能 SELECT COUNT(*) as total_rows, AVG(LENGTH(data)) as avg_data_length, MAX(timestamp) as latest_timestamp FROM test_performance WHERE id > 500000 GROUP BY id % 10; -- 测试 3: 并发查询 -- 在多个会话中同时执行: -- SELECT * FROM test_performance WHERE id BETWEEN ? AND ?; EOF # 执行测试 hdbsql -i 00 -u SYSTEM -p <password> -I /tmp/performance_test.sql 

7.2 使用 OS 级监控工具

使用 sar 监控系统资源

# 安装 sysstat zypper install -y sysstat # 启动 sar 监控 systemctl enable sysstat systemctl start sysstat # 查看历史数据 sar -u -f /var/log/sa/sa$(date +%d) # CPU sar -r -f /var/log/sa/sa$(date +%d) # 内存 sar -b -f /var/log/sa/sa$(date +%d) # I/O 

使用 perf 工具分析性能

# 安装 perf zypper install -y perf # 分析 HANA 进程性能 perf record -p $(pgrep -f hdbindexserver) -g -- sleep 60 perf report # 分析 CPU 周期 perf stat -p $(pgrep -f hdbindexserver) -- sleep 30 

7.3 性能问题诊断

常见性能问题及解决方案

  1. 内存不足: “`bash

    检查内存使用

    hdbsql -i 00 -u SYSTEM -p “SELECT HOST, TOTAL_MEMORY_USED, ALLOCATION_LIMIT, USED_PERCENT FROM M_SERVICE_MEMORY”

# 解决方案:调整 global_allocation_limit 或增加物理内存

 2. **CPU 瓶颈**: ```bash # 检查活动语句 hdbsql -i 00 -u SYSTEM -p <password> "SELECT STATEMENT_NAME, DURATION, CPU_TIME FROM M_ACTIVE_STATEMENTS ORDER BY CPU_TIME DESC" # 解决方案:优化 SQL,增加并行度 
  1. I/O 瓶颈: “`bash

    检查磁盘 I/O

    iostat -x 1 10

# 检查 HANA I/O 统计 hdbsql -i 00 -u SYSTEM -p “SELECT * FROM M_VOLUME_IO_TOTAL_STATISTICS”

# 解决方案:优化存储配置,使用更快的磁盘

 ## 第八部分:安全加固 ### 8.1 操作系统安全 **配置 SUSE Linux Enterprise 安全基线**: ```bash # 安装安全工具 zypper install -y aide rsyslog # 初始化 AIDE(文件完整性检查) aide --init cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db # 配置定期检查 echo "0 2 * * * /usr/bin/aide --check | mail -s 'AIDE Report' security@company.com" | crontab - 

配置审计

# 启用 auditd zypper install -y audit systemctl enable auditd systemctl start auditd # 配置审计规则(监控 HANA 关键文件) cat > /etc/audit/rules.d/hana.rules <<EOF -w /hana/data -p wa -k hana_data -w /hana/log -p wa -k hana_log -w /hana/backup -p wa -k hana_backup -w /usr/sap/HDB -p wa -k hana_sap EOF # 重新加载规则 augenrules --load 

8.2 SAP HANA 安全配置

配置 SSL/TLS

# 生成证书 su - hdbadm cd /usr/sap/HDB/HDB00/sec # 生成 CA 证书 openssl genrsa -out ca.key 4096 openssl req -new -x509 -days 3650 -key ca.key -out ca.crt # 生成服务器证书 openssl genrsa -out server.key 4096 openssl req -new -key server.key -out server.csr openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out server.crt -days 365 # 配置 HANA 使用 SSL hdbsql -i 00 -u SYSTEM -p <password> "ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('communication', 'ssl') = 'on' WITH RECONFIGURE" hdbsql -i 00 -u SYSTEM -p <password> "ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('communication', 'sslforce') = 'on' WITH RECONFIGURE" 

配置用户和权限

# 创建专用用户 hdbsql -i 00 -u SYSTEM -p <password> "CREATE USER APP_USER PASSWORD Password123 NO FORCE_FIRST_PASSWORD_CHANGE" # 授予最小权限 hdbsql -i 00 -u SYSTEM -p <password> "GRANT SELECT ON SCHEMA PUBLIC TO APP_USER" # 配置密码策略 hdbsql -i 00 -u SYSTEM -p <password> "ALTER SYSTEM ALTER CONFIGURATION ('global.ini', 'SYSTEM') SET ('password_policy', 'minimum_length') = '8' WITH RECONFIGURE" 

8.3 网络安全

配置防火墙

# 使用 firewalld 配置 firewall-cmd --permanent --new-zone=sap-hana firewall-cmd --permanent --zone=sap-hana --add-service=ssh firewall-cmd --permanent --zone=sap-hana --add-port=30013-30015/tcp firewall-cmd --permanent --zone=sap-hana --add-port=30040-30043/tcp firewall-cmd --permanent --zone=sap-hana --add-port=30060-30063/tcp firewall-cmd --permanent --zone=sap-hana --add-port=1128-1129/tcp firewall-cmd --permanent --zone=sap-hana --add-port=51000-51015/tcp firewall-cmd --reload # 将接口加入区域 firewall-cmd --permanent --zone=sap-hana --change-interface=eth0 

配置 SSH 安全

# 编辑 /etc/ssh/sshd_config cat >> /etc/ssh/sshd_config <<EOF # SAP HANA 安全配置 Protocol 2 PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes AllowUsers hdbadm sapadm PermitEmptyPasswords no MaxAuthTries 3 ClientAliveInterval 300 ClientAliveCountMax 2 EOF systemctl restart sshd 

第九部分:故障排除

9.1 常见问题诊断流程

HANA 无法启动

# 1. 检查系统资源 free -h df -h /hana/data /hana/log # 2. 检查日志 tail -f /hana/log/HDB00/hdb/alert_HDB00.log # 3. 尝试手动启动 su - hdbadm HDB start # 4. 如果失败,检查具体错误 HDB info 

性能下降

# 1. 检查活动连接 hdbsql -i 00 -u SYSTEM -p <password> "SELECT COUNT(*) FROM M_CONNECTIONS WHERE CONNECTION_ID IS NOT NULL" # 2. 检查长运行查询 hdbsql -i 00 -u SYSTEM -p <password> "SELECT * FROM M_ACTIVE_STATEMENTS WHERE DURATION > 60" # 3. 检查内存使用 hdbsql -i 00 -u SYSTEM -p <password> "SELECT HOST, TOTAL_MEMORY_USED, ALLOCATION_LIMIT FROM M_SERVICE_MEMORY" # 4. 检查系统负载 top -p $(pgrep -f hdbindexserver) 

存储空间不足

# 1. 检查 HANA 内部存储 hdbsql -i 00 -u SYSTEM -p <password> "SELECT * FROM M_VOLUME_IO_TOTAL_STATISTICS" # 2. 清理旧备份 find /hana/backup -name "*.bak" -mtime +7 -delete # 3. 检查日志文件大小 ls -lh /hana/log/HDB00/hdb/ # 4. 扩展存储(如果需要) lvextend -L +100G /dev/mapper/hana-data xfs_growfs /hana/data 

9.2 使用 SAP Note 进行故障排除

关键 SAP Note

  • Note 1999997: SAP HANA 2.0 安装指南
  • Note 2372784: SLES 15 for SAP Applications 配置
  • Note 2292690: SAP HANA 性能调优
  • Note 2800001: SAP HANA 高可用性配置

查找相关 Note

# 使用 hdbdiag 工具 su - hdbadm hdbdiag --help # 收集诊断信息 hdbdiag info --all 

第十部分:升级与迁移

10.1 SAP HANA 升级

升级前准备

# 1. 备份系统 su - hdbadm hdbsql -i 00 -u SYSTEM -p <password> "BACKUP DATA USING FILE ('/hana/backup/upgrade_pre.bak')" # 2. 检查兼容性 cd /usr/sap/HDB/HDB00/exe ./hdbupd --check-only # 3. 下载升级包 # 从 SAP Service Marketplace 下载最新补丁 

执行升级

# 停止 HANA HDB stop # 执行升级 ./hdbupd --batch --sid=HDB # 启动并验证 HDB start hdbsql -i 00 -u SYSTEM -p <password> "SELECT * FROM M_DATABASE" 

10.2 SUSE Linux Enterprise 升级

系统升级

# 1. 备份系统配置 tar -czf /tmp/system_config_backup.tar.gz /etc /usr/sap /hana # 2. 升级系统 zypper refresh zypper dist-upgrade # 3. 重启并验证 reboot systemctl status sapinit 

总结

SAP HANA 在 SUSE Linux Enterprise 上的部署是一个系统工程,需要从硬件规划、系统配置、安装部署到性能调优的全方位考虑。通过遵循本指南,您可以构建一个高性能、高可用、安全稳定的 SAP HANA 环境。

关键成功因素

  1. 硬件选型:严格遵循 SAP TDI 标准
  2. 系统配置:使用 SLES for SAP Applications 并应用所有推荐配置
  3. 性能调优:持续监控和优化,根据实际负载调整参数
  4. 高可用性:配置系统复制和 Pacemaker 集群
  5. 安全加固:实施操作系统和应用层安全措施
  6. 监控维护:建立完善的监控和备份策略

持续改进

  • 定期审查 SAP Note 更新
  • 监控系统性能趋势
  • 定期测试灾难恢复流程
  • 保持系统补丁最新

通过本指南的实施,您的 SAP HANA 环境将能够支持企业关键业务应用,提供卓越的性能和可靠性。