操作系统和存储配置 - AWS 上的 SAP HANA
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

操作系统和存储配置

请按照操作系统的说明操作:

注意

对于横向扩展工作负载,请为集群中的每个节点重复这些步骤。

配置操作系统 – SLES for SAP 12.x

重要

在以下步骤中,您需要更新几个配置文件。我们建议您在修改文件之前先备份文件。如果需要,这将帮助您恢复到以前的配置。

  1. 实例启动并运行后,使用安全外壳 (SSH) 和用于启动实例的密钥对连接到实例。

    注意

    根据您的网络和安全设置,在访问 SAP HANA 实例之前,您可能必须先使用 SSH 连接到堡垒主机,或者您可能需要向安全组添加 IP 地址或端口以允许 SSH 访问。

  2. 切换到根用户。

    或者,您可以使用 sudo 以 ec2-user 的身份执行以下命令。

  3. 通过执行 hostnamectl 命令和更新 /etc/hostname 文件,为您的实例设置主机名和完全限定域名 (FQDN)。

    # hostnamectl set-hostname --static your_hostname # echo your_hostname.example.com > /etc/hostname

    打开一个新会话以验证主机名更改。

  4. 确保 DHCLIENT_SET_HOSTNAME 参数设置为 no,以防止 DHCP 在重新启动期间更改主机名。

    # grep DHCLIENT_SET_HOSTNAME /etc/sysconfig/network/dhcp
  5. preserve_hostname 参数设置为 true 以确保在重新启动期间保留主机名。

    # sed -i '/preserve_hostname/ c\preserve_hostname: true' /etc/cloud/cloud.cfg
  6. /etc/hosts 文件中添加一个包含新主机名和 IP 地址的条目。

    ip_address hostname.example.com hostname
  7. 如果您使用的是 BYOS SLES for SAP 映像,请向 SUSE 注册您的实例。确保您的订阅是针对 SLES for SAP。

    # SUSEConnect -r Your_Registration_Code # SUSEConnect -s
  8. 确保安装了以下软件包:

    systemdtunedsaptunelibgcc_s1libstdc++6cpupowerautofsnvme-cli

    您可以使用 rpm 命令检查是否已安装软件包。

    # rpm -qi package_name

    然后,您可以使用 zypper install 命令来安装丢失的软件包。

    # zypper install package_name
    注意

    如果您要导入自己的 SLES 映像,则可能需要额外的软件包来确保您的实例以最佳方式设置。有关最新信息,请参阅适用于 SAP HANA 的 SLES for SAP 应用程序配置指南中的“软件包列表”部分,该指南附于 SAP OSS Note 1944799

  9. 确保您的实例在 SAP OSS Note 2205917 中建议的内核版本上运行。如果需要,请更新系统以满足最低内核版本要求。您可以使用以下命令检查内核和其他软件包的版本:

    # rpm -qi kernel*
  10. 启动 saptune daemon 并使用以下命令将其设置为在系统重新启动时自动启动。

    # saptune daemon start
  11. 检查是否在 saptune 配置文件中设置了 force_latency 参数。

    # grep force_latency /usr/lib/tuned/saptune/tuned.conf

    如果设置了参数,请跳过下一步,然后继续使用 saptune 激活 HANA 配置文件。

  12. 根据 SAP OSS Note 2205917 更新 saptune HANA 配置文件,然后运行以下命令为 SAP HANA 创建自定义配置文件。如果已设置 force_latency 参数,则不需要执行此步骤。

    # mkdir /etc/tuned/saptune # cp /usr/lib/tuned/saptune/tuned.conf /etc/tuned/saptune/tuned.conf # sed -i "/\[cpu\]/ a force_latency=70" /etc/tuned/saptune/tuned.conf # sed -i "s/script.sh/\/usr\/lib\/tuned\/saptune\/script.sh/"
  13. tuned 配置文件切换到 HANA,并验证所有设置均已正确配置。

    # saptune solution apply HANA # saptune solution verify HANA
  14. 配置并启动网络时间协议 (NTP) 服务。您可以根据您的要求调整 NTP 服务器池;例如:

    注意

    /etc/ntp.conf 中删除任何现有的无效 NTP 服务器池,然后添加以下内容。

    # echo "server 0.pool.ntp.org" >> /etc/ntp.conf # echo "server 1.pool.ntp.org" >> /etc/ntp.conf # echo "server 2.pool.ntp.org" >> /etc/ntp.conf # echo "server 3.pool.ntp.org" >> /etc/ntp.conf # systemctl enable ntpd.service # systemctl start ntpd.service
    提示

    如果需要,您可以连接到内部 NTP 服务器,而不是连接到全局 NTP 服务器池。或者,您可以使用 Amazon Time Sync Service 使系统时间保持同步。

  15. 通过更新 current_clocksource 文件和 GRUB2 引导加载程序将时钟源设置为 tsc

    # echo "tsc" > /sys/devices/system/clocksource/*/current_clocksource # cp /etc/default/grub /etc/default/grub.backup # sed -i '/GRUB_CMDLINE_LINUX/ s|"| clocksource=tsc"|2' /etc/default/grub # grub2-mkconfig -o /boot/grub2/grub.cfg
  16. 重新启动系统以使更改生效。

  17. 继续执行 SAP HANA 的存储配置

配置操作系统 – RHEL for SAP 7.x

重要

在以下步骤中,您需要更新几个配置文件。我们建议您在修改文件之前先备份文件。如果需要,这将帮助您恢复到以前的配置。

  1. 实例启动并运行后,使用安全外壳 (SSH) 和用于启动实例的密钥对连接到实例。

    注意

    根据您的网络和安全设置,在访问 SAP HANA 实例之前,您可能必须先使用 SSH 连接到堡垒主机,或者您可能需要向安全组添加 IP 地址或端口以允许 SSH 访问。

  2. 切换到根用户。

    或者,您可以使用 sudo 以 ec2-user 的身份执行以下命令。

  3. 通过执行 hostnamectl 命令并更新 /etc/cloud/cloud.cfg 文件来为您的实例设置主机名,以确保在系统重新引导期间保留主机名。

    # hostnamectl set-hostname --static your_hostname # echo "preserve_hostname: true" >> /etc/cloud/cloud.cfg

    打开一个新会话以验证主机名更改。

  4. /etc/hosts 文件中添加一个包含新主机名和 IP 地址的条目。

    ip address hostname.example.com hostname

    确保安装了以下软件包:

    xfsprogsgcccompat-sap-c++-5compat-sap-c++-6tuned-profiles-sap-hanaglibc.x86_64autofsnvme-cli

    请注意,您的实例应该有权访问 SAP HANA 通道以安装 SAP HANA 所需的库。

    您可以使用 rpm 命令检查是否已安装软件包:

    # rpm -qi package_name

    然后,您可以使用 yum –y install 命令安装任何丢失的软件包。

    # yum -y install package name
    注意

    根据您的基本 RHEL 映像,可能需要额外的软件包来确保您的实例以最佳方式设置。(如果您正在使用带有 HA 和 US 映像的 RHEL for SAP,则可以跳过此步骤。) 有关最新信息,请参阅附于 SAP OSS Note 2009879 的 RHEL 配置指南。查看“安装其他必需软件包”部分和“附录 - RHEL 7 上的 SAP HANA 的必需软件包”部分中的软件包。

  5. 确保您的实例在 SAP OSS Note 2292690 中建议的内核版本上运行。如果需要,请更新系统以满足最低内核版本要求。您可以使用以下命令检查内核和其他软件包的版本。

    # rpm -qi kernel*
  6. 启动 tuned daemon 并使用以下命令将其设置为在系统重新启动时自动启动。

    # systemctl start tuned # systemctl enable tuned
  7. 配置 tuned HANA 配置文件以针对 SAP HANA 工作负载优化您的实例。

    检查是否已在 /usr/lib/tuned/sap-hana/tuned.conf 文件中设置 force_latency 参数。如果设置了参数,请执行以下命令来应用和激活 sap-hana 配置文件。

    # tuned-adm profile sap-hana # tuned-adm active

    如果未设置 force_latency 参数,请执行以下步骤来修改和激活 sap-hana 配置文件。

    # mkdir /etc/tuned/sap-hana # cp /usr/lib/tuned/sap-hana/tuned.conf /etc/tuned/sap-hana/tuned.conf # sed -i '/force_latency/ c\force_latency=70' /etc/tuned/sap-hana/tuned.conf # tuned-adm profile sap-hana # tuned-adm active
  8. 通过运行以下命令禁用安全增强式 Linux (SELinux)。(如果您正在使用带有 HA 和 US 映像的 RHEL for SAP,则跳过此步骤。)

    # sed -i 's/\(SELINUX=enforcing\|SELINUX=permissive\)/SELINUX=disabled/g' \/etc/selinux/config
  9. 通过在 /etc/default/grub 文件中以 GRUB_CMDLINE_LINUX 开头的行中添加以下内容,在启动时禁用透明大页 (THP)。执行以下命令以添加所需的参数并重新配置 grub(如果您正在使用带有 HA 和 US 映像的 RHEL for SAP,则跳过此步骤)。

    # sed -i '/GRUB_CMDLINE_LINUX/ s|"| transparent_hugepage=never"|2' /etc/default/grub # cat /etc/default/grub # grub2-mkconfig -o /boot/grub2/grub.cfg
  10. 通过执行以下命令添加符号链接。(如果您正在使用带有 HA 和 US 映像的 RHEL for SAP,则跳过此步骤。)

    # ln -s /usr/lib64/libssl.so.10 /usr/lib64/libssl.so.1.0.1 # ln -s /usr/lib64/libcrypto.so.10 /usr/lib64/libcrypto.so.1.0.1
  11. 配置并启动网络时间协议 (NTP) 服务。您可以根据您的要求调整 NTP 服务器池。以下只是一个例子。

    注意

    /etc/ntp.conf 中删除任何现有的无效 NTP 服务器池,然后添加以下内容。

    # echo "server 0.pool.ntp.org" >> /etc/ntp.conf # echo "server 1.pool.ntp.org" >> /etc/ntp.conf # echo "server 2.pool.ntp.org" >> /etc/ntp.conf # echo "server 3.pool.ntp.org" >> /etc/ntp.conf # systemctl enable ntpd.service # systemctl start ntpd.service # systemctl restart systemd-timedated.service
    提示

    如果需要,您可以连接到内部 NTP 服务器,而不是连接到全局 NTP 服务器池。或者,您也可以使用 Amazon Time Sync Service 使系统时间保持同步。

  12. 通过更新 current_clocksource 文件和 GRUB2 引导加载程序将时钟源设置为 tsc

    # echo "tsc" > /sys/devices/system/clocksource/*/current_clocksource # cp /etc/default/grub /etc/default/grub.backup # sed -i '/GRUB_CMDLINE_LINUX/ s|"| clocksource=tsc"|2' /etc/default/grub # grub2-mkconfig -o /boot/grub2/grub.cfg
  13. 重新启动系统以使更改生效。

  14. 重新启动后,以 root 用户身份登录并执行 tuned-adm 命令,验证所有 SAP 建议设置是否都已到位。

    # tuned-adm verify “tuned-adm verify” creates a log file under /var/log/tuned/tuned.log Review this log file and ensure that all checks have passed.
  15. 继续进行存储配置。

为 SAP HANA 配置存储

  1. Amazon EBS 卷应在启动 Amazon EC2 实例时创建和连接。通过运行 lsblk 命令,返回已连接到实例的存储设备列表,确认所有所需的卷都已连接到实例。

    注意

    基于 Nitro 的实例上,Amazon EBS 卷显示为 NVMe 块储存设备。配置这些卷时,您需要执行其他映射。

    根据实例和存储卷类型,块储存设备映射看起来类似于以下示例。

    非 Nitro 实例的示例

    # lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT xvda 202:0 0 50G 0 disk ├─xvda1 202:1 0 1M 0 part └─xvda2 202:2 0 50G 0 part / xvdb 202:16 0 800G 0 disk xvdc 202:32 0 800G 0 disk xvdd 202:48 0 800G 0 disk xvde 202:64 0 1T 0 disk xvdf 202:80 0 4T 0 disk xvdh 202:112 0 525G 0 disk xvdr 202:4352 0 50G 0 disk #

    Nitro 实例的示例

    ## lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT nvme0n1 259:0 0 50G 0 disk └─nvme0n1p1 259:1 0 50G 0 part / nvme1n1 259:2 0 4T 0 disk nvme2n1 259:3 0 800G 0 disk nvme3n1 259:4 0 800G 0 disk nvme4n1 259:5 0 800G 0 disk nvme5n1 259:6 0 525G 0 disk nvme6n1 259:7 0 1T 0 disk nvme7n1 259:8 0 50G 0 disk #
  2. 启动 SAP HANA 数据、日志和备份卷,以便与 Linux 逻辑卷管理器 (LVM) 一起使用。

    注意

    确保您选择的是与 SAP HANA 数据、日志和备份卷相关联的设备。您环境中的设备名称可能不同。

    非 Nitro 实例的示例

    # pvcreate /dev/xvdb /dev/xvdc /dev/xvdd /dev/xvdf /dev/xvdh Physical volume "/dev/xvdb" successfully created. Physical volume "/dev/xvdc" successfully created. Physical volume "/dev/xvdd" successfully created. Physical volume "/dev/xvdf" successfully created. Physical volume "/dev/xvdh" successfully created. #

    Nitro 实例的示例

    # pvcreate /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 /dev/nvme5n1 /dev/nvme1n1 Physical volume "/dev/nvme2n1" successfully created. Physical volume "/dev/nvme3n1" successfully created. Physical volume "/dev/nvme4n1" successfully created. Physical volume "/dev/nvme5n1" successfully created. Physical volume "/dev/nvme1n1" successfully created. #
  3. 为 SAP HANA 数据、日志和备份创建卷组。确保设备 ID 与相应的卷组正确关联。

    非 Nitro 实例的示例

    # vgcreate vghanadata /dev/xvdb /dev/xvdc /dev/xvdd Volume group "vghanadata" successfully created # vgcreate vghanalog /dev/xvdh Volume group "vghanalog" successfully created # vgcreate vghanaback /dev/xvdf Volume group "vghanaback" successfully created #

    Nitro 实例的示例

    # vgcreate vghanadata /dev/nvme2n1 /dev/nvme3n1 /dev/nvme4n1 Volume group "vghanadata" successfully created # vgcreate vghanalog /dev/nvme5n1 Volume group "vghanalog" successfully created # vgcreate vghanaback /dev/nvme1n1 Volume group "vghanaback" successfully created #
  4. 为 SAP HANA 数据创建逻辑卷。

    在以下命令中,-i 3 根据用于 HANA 数据卷组的卷数来表示条带。根据实例和存储类型以及分配给 HANA 数据卷组的卷数调整数量。

    # lvcreate -n lvhanadata -i 3 -I 256 -L 2350G vghanadata Rounding size 2.29 TiB (601600 extents) up to stripe boundary size 2.29 TiB (601602 extents). Logical volume "lvhanadata" created. #
  5. 为 SAP HANA 日志创建逻辑卷。

    在以下命令中,-i 1 根据用于 HANA 日志卷组的卷数来表示条带。根据实例和存储类型以及分配给 HANA 日志卷组的卷数调整数量。

    # lvcreate -n lvhanalog -i 1 -I 256 -L 512G vghanalog Ignoring stripesize argument with single stripe. Logical volume "lvhanalog" created. #
  6. 为 SAP HANA 备份创建逻辑卷。

    # lvcreate -n lvhanaback -i 1 -I 256 -L 4095G vghanaback Ignoring stripesize argument with single stripe. Logical volume "lvhanaback" created. #
  7. 使用以下命令,利用新创建的 HANA 数据、日志和备份逻辑卷构建 XFS 文件系统:

    # mkfs.xfs -f /dev/mapper/vghanadata-lvhanadata # mkfs.xfs -f /dev/mapper/vghanalog-lvhanalog # mkfs.xfs -f /dev/mapper/vghanaback-lvhanaback
  8. 为 HANA 共享和 HANA 二进制文件构建 XFS 文件系统。

    # mkfs.xfs -f /dev/xvde -L HANA_SHARE # mkfs.xfs -f /dev/xvdr -L USR_SAP
    注意

    在基于 Nitro 的实例类型上,设备名称会在实例重新启动期间发生变化。为了防止出现文件系统挂载问题,必须为不属于逻辑卷的设备创建标签,以便可使用标签而不是实际设备名称挂载设备。

  9. 为 HANA 数据、日志、备份、共享和二进制文件创建目录。

    # mkdir /hana /hana/data /hana/log /hana/shared /backup /usr/sap
  10. 使用 echo 命令和以下挂载选项将条目添加到 /etc/fstab 文件中,以便在重新启动期间自动挂载这些文件系统。

    # echo "/dev/mapper/vghanadata-lvhanadata /hana/data xfs nobarrier,noatime,nodiratime,logbsize=256k 0 0" >> /etc/fstab # echo "/dev/mapper/vghanalog-lvhanalog /hana/log xfs nobarrier,noatime,nodiratime,logbsize=256k 0 0" >> /etc/fstab # echo "/dev/mapper/vghanaback-lvhanaback /backup xfs nobarrier,noatime,nodiratime,logbsize=256k 0 0" >> /etc/fstab # echo "/dev/disk/by-label/HANA_SHARE /hana/shared xfs nobarrier,noatime,nodiratime,logbsize=256k 0 0" >> /etc/fstab # echo "/dev/disk/by-label/USR_SAP /usr/sap xfs nobarrier,noatime,nodiratime,logbsize=256k 0 0" >> /etc/fstab
  11. 挂载文件系统。

    # mount -a
  12. 检查以确保所有文件系统都已正确挂载;例如,以下是 x1.32xlarge 系统的输出:

    # df -h Filesystem Size Used Avail Use% Mounted on /dev/xvda2 50G 1.8G 49G 4% / devtmpfs 961G 0 961G 0% /dev tmpfs 960G 0 960G 0% /dev/shm tmpfs 960G 17M 960G 1% /run tmpfs 960G 0 960G 0% /sys/fs/cgroup tmpfs 192G 0 192G 0% /run/user/1000 /dev/mapper/vghanadata-lvhanadata 2.3T 34M 2.3T 1% /hana/data /dev/mapper/vghanalog-lvhanalog 512G 33M 512G 1% /hana/log /dev/mapper/vghanaback-lvhanaback 4.0T 33M 4.0T 1% /backup /dev/xvde 1.0T 33M 1.0T 1% /hana/shared /dev/xvdr 50G 33M 50G 1% /usr/sap #
  13. 此时,我们建议重新启动系统并确认所有文件系统在重新启动后自动挂载。

  14. 如果要部署横向扩展工作负载,请按照为横向扩展工作负载配置 NFS 中指定的步骤,使用 Amazon EFS 设置 SAP HANA 共享和备份 NFS 文件系统。

    如果不部署横向扩展工作负载,现在可以继续安装 SAP HANA 软件。

为横向扩展工作负载配置 NFS

Amazon EFS 提供易于设置、可扩展且高度可用的共享文件系统,可使用 NFSv4 客户端挂载。对于横向扩展工作负载,我们建议使用 Amazon EFS for SAP HANA 共享卷和备份卷。您可以根据您的要求为文件系统选择不同的性能选项。我们建议从“通用吞吐量”和“预置吞吐量”选项开始,吞吐量大约为 100 MiB/s 到 200 MiB/s。要设置文件系统,请执行以下操作:

  1. 在横向扩展集群的所有节点中安装 nfs-utils 软件包。

    • 对于 RHEL,请使用 yum install nfs-utils

    • 对于 SLES,请使用 zypper install nfs-utils

  2. 为目标 VPC 和子网中的 SAP HANA 共享和备份创建两个 Amazon EFS 文件系统和目标挂载。有关详细步骤,请按照 AWS 文档中指定的说明进行操作。

  3. 创建文件系统后,使用以下命令在所有节点中挂载新创建的文件系统:

    # mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 EFS DNS Name:/ /hana/shared # mount -t nfs -o nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 EFS DNS Name:/ /backup
    注意

    如果在挂载 NFS 文件系统时遇到问题,可能需要调整安全组以允许访问端口 2049。有关详细信息,请参阅 AWS 文档中的 Amazon EC2 实例安全组和挂载目标

  4. 将 NFS 挂载条目添加到所有节点中的 /etc/fstab 文件,以便在系统重新启动期间自动挂载这些文件系统;例如:

    # echo “nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 EFS DNS Name:/ /hana/shared” >> /etc/fstab # echo “nfsvers=4.1,rsize=1048576,wsize=1048576,hard,timeo=600,retrans=2 EFS DNS Name:/ /backup” >> /etc/fstab
  5. 为目标挂载点设置适当的权限和所有权。