以下常规操作系统设置必须手动完成。
常规操作系统配置 - 手动配置
- 1: 保留操作系统设置
- 2: SUSE 控制组配置
- 3: 计划作业所需的 Cron
- 4: 磁盘预读
- 5: I/O 计划
- 6: 启用或禁用透明大页
- 7: 检查 swappiness
- 8: 启用网络时间协议 (NTP)
- 9: 为 Red Hat 7/CentOS 7 系统启用 chrony 或 ntpd
- 10: SELinux 配置
- 11: CPU 频率调整
- 12: 启用或禁用 defrag
- 13: 支持工具
1 - 保留操作系统设置
Vertica 要求手动配置多个常规操作系统设置。您应该在 /etc/rc.local
脚本中配置其中一些设置,以防止它们在重新引导时恢复原有设置。该脚本包含系统每次启动时运行的脚本和命令。
重要
重新引导时,SUSE 系统使用/etc/init.d/after.local
文件而不是 /etc/rc.local
。
Vertica 使用 /etc/rc.local
中的设置来设置以下功能:
编辑 /etc/rc.local
-
以 root 用户身份打开
/etc/rc.local
:# vi /etc/rc.local
-
输入脚本或命令。例如,要根据 Vertica 要求配置透明大页,请输入以下内容:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
重要
在一些 Ubuntu/Debian 系统中,/etc/rc.local
中的最后一行必须为exit 0
。向/etc/rc.local
添加的所有内容都必须在此行之前。 -
保存更改,然后关闭
/etc/rc.local
。 -
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在重新引导时,启动过程中将会运行该命令。如果想要命令立即生效,也可以 root 用户身份手动运行该命令。
禁用优化系统服务
如果使用 Red Hat 7.0 或 CentOS 7.0 或更高版本,请确保优化系统服务在 Vertica 重新引导时不会启动。关闭优化会阻止对操作系统的监控以及基于此监控对操作系统进行的任何优化。优化还可以静默启用 THP,这可能会导致其他方面(例如预读)出现问题。
以 sudo 或 root 用户身份运行以下命令:
$ chkconfig tuned off
2 - SUSE 控制组配置
在 SuSE 12 上,安装程序检查 Vertica 可在以下各项下运行的控制组 (cgroup) 的 cgroup 设置:
-
verticad
-
vertica_agent
-
sshd
安装程序验证 pid.max
资源对于由 Vertica 创建的所有线程是否足够大。我们检查以下各项的内容:
-
/sys/fs/cgroup/pids/system.slice/verticad.service/pids.max
-
/sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max
-
/sys/fs/cgroup/pids/system.slice/sshd.service/pids.max
如果这些文件存在并且它们未能包含值 max
,则安装停止并且安装程序返回失败消息(代码 S0340)。
如果这些文件不存在,会在 systemd
运行 verticad
和 vertica_agent
启动脚本时自动创建这些文件。但是,这些文件的默认值是由该站点的 cgroup 配置过程管理的。Vertica 不会更改默认值。
安装前配置
在安装 Vertica 之前,请按如下方式配置您的系统:
# Create the following directories:
sudo mkdir /sys/fs/cgroup/pids/system.slice/verticad.service/
sudo mkdir /sys/fs/cgroup/pids/system.slice/vertica_agent.service/
# sshd service dir should already exist, so don't need to create it
# Set pids.max values:
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/verticad.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/vertica_agent.service/pids.max'
sudo sh -c 'echo "max" > /sys/fs/cgroup/pids/system.slice/sshd.service/pids.max'
在重新启动后保留配置
安装后,您可以为 Vertica 数据库的后续重新启动配置控制组。您可以编辑配置文件 /etc/init.d/after.local
并添加前面显示的命令来完成此操作。
注意
因为after.local
是以 root 用户身份执行的,所以可以省略 sudo
命令。
3 - 计划作业所需的 Cron
Admintools 使用 Linux cron
包来计划可定期滚动保存数据库日志的作业。如果不安装此包,永远不会滚动保存数据库日志。如果缺少滚动保存功能,可能会导致大量消耗日志存储空间。在忙碌的群集中,Vertica 每天都可能产生数百 GB 的日志。
cron
默认安装在大多数 Linux 发行版上,但在某些 SUSE 12 系统上可能不存在。
要安装 cron
,请运行以下命令:
$ sudo zypper install cron
4 - 磁盘预读
本主题详细说明如何将磁盘预读更改为支持的值。Vertica 要求将磁盘预读设置为不小于 2048 的值。安装程序将以标识符S0020 报告不支持的调度程序问题。
注意
-
这些命令必须使用 root 权限执行,并且假定 blockdev 程序位于
/sbin
中。 -
Blockdev 程序在整体设备而不是在单独的分区上运行。在同一设备上不能将预读值设为不同的设置。如果您对一个分区运行 blockdev(例如:/dev/sda1),那么该设置仍将应用于整个 /dev/sda 设备。例如,运行
/sbin/blockdev \--setra 2048 /dev/sda1
还会使 /dev/sda2 到 /dev/sdaN 均使用预读值 2048。
基于 RedHat/CentOS 和 SuSE 的系统
对于 Vertica 系统中的每个驱动器,Vertica 建议在大多数部署中将预读值设为不小于 2048。该命令会立即更改指定磁盘的预读值。第二行将该命令添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,一些部署可能要求更高的值,在支持人员的指导下,可以将该设置设为高达 8192。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SUSE 使用 /etc/init.d/after.local
。以下示例将驱动器 sda 的预读值设为 2048。
$ /sbin/blockdev --setra 2048 /dev/sda
$ echo '/sbin/blockdev --setra 2048 /dev/sda' >> /etc/rc.local
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
Ubuntu 和 debian 系统
对于 Vertica 系统中的每个驱动器,请将预读值设为 2048。在 shell 中运行一次该命令,然后将其添加到 /etc/rc.local
,使系统在每次启动时应用该设置。请注意,在一些 Ubuntu 系统中,rc.local 中的最后一行必须为“exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。/sbin/blockdev --setra 2048 /dev/sda
5 - I/O 计划
本主题详细说明如何将 I/O 计划更改为支持的调度程序。Vertica 要求将“I/O 计划 (I/O Scheduling)”设置为
deadline
或
noop
。安装程序会检查系统正在使用什么调度程序,从而以标识符 S0150 报告不支持的调度程序问题。如果安装程序未能检测到使用的调度程序类型(如果系统使用的是 RAID 阵列通常会这样),则会以标识符 S0151 报告此问题。
如果系统使用的不是 RAID 阵列,则完成以下步骤,以便将系统更改为支持的 I/O 调度程序。如果使用的是 RAID 阵列,则查询 RAID 供应商文档,了解能够为您的硬件提供最佳性能的调度程序。
配置 I/O 调度程序
Linux 内核可使用多种不同的 I/O 调度程序来设置磁盘输入和输出的优先级。大多数 Linux 发行版默认使用完全公平队列 (CFQ) 方案,该方案为输入和输出请求设定同等优先级。此调度程序在运行需要同等 I/O 资源访问权的多个任务的系统上非常高效。但在包含编录和数据目录的 Vertica 驱动器上使用时,可能会产生瓶颈,因为它为写入请求提供了与读取请求同等的优先级,而且其每进程 I/O 队列可能会使请求数量多于其他进程的进程处于不利地位。
对于包含编录和数据目录的驱动器,配置主机使用 Deadline 或 NOOP I/O 调度程序,而不是 CFQ 调度程序:
-
Deadline 调度程序为读取请求提供高于写入请求的优先级。它还对所有请求施加截止期限。在达到截止期限后,这类请求将获得高于其他所有请求的优先级。此计划方法有助于防止进程出现 I/O 访问短缺的情况。Deadline 调度程序最适合在物理介质驱动器(使用旋转盘片的磁盘)上使用,因为它会尝试将磁盘上相邻扇区的访问请求进行分组,从而缩短驱动器花在寻道上的时间。
-
NOOP 调度程序使用简单的 FIFO 方法,将所有输入和输出请求置于一个队列中。此调度程序最适合在固态硬盘 (SSD) 上使用。由于 SSD 没有物理读取磁头,因此在访问非相邻扇区时不存在性能损失。
对于包含编录和数据目录的 Vertica 驱动器,如果不使用以上调度程序中的一种,可能导致数据库性能下降。系统中的其他驱动器(例如包含交换空间、日志文件或 Linux 系统文件的驱动器)仍可以使用默认的 CFQ 调度程序(尽管对于 SSD 而言应该始终使用 NOOP 调度程序)。
有两种方法可以设置磁盘设备所用的调度程序:
-
将调度程序的名称写入
/sys
目录中的文件。--或--
-
使用内核启动参数。
配置 I/O 调度程序 - 通过 /sys 目录更改调度程序
可以使用 /sys
目录下面的虚拟文件来查看和更改 Linux 用于单个驱动器的 I/O 请求的调度程序。控制数据块设备所用的调度程序的文件名称为:
/sys/block/deviceName/queue/scheduler
其中,deviceName 是磁盘设备的名称,例如 sda
或 cciss\\!c0d1
(Micro Focus RAID 阵列上的第一个磁盘)。通过查看此文件的内容可以显示调度程序的所有可能设置。当前选择的调度程序用方括号括起来:
# cat /sys/block/sda/queue/scheduler
noop deadline [cfq]
要更改调度程序,请将您希望设备使用的调度程序的名称写入到其调度程序文件中。必须具有 root 用户权限才能写入此文件。例如,要设置 sda 驱动器使用 Deadline 调度程序,请以 root 用户身份运行以下命令:
# echo deadline > /sys/block/sda/queue/scheduler
# cat /sys/block/sda/queue/scheduler
noop [deadline] cfq
更改调度程序会立即影响设备的 I/O 请求。Linux 内核开始对所有驱动器的输入和输出请求使用新的调度程序。
注意
尽管测试表明在 Vertica 正在运行时更改调度程序设置不会导致问题,但 Vertica 建议关闭。在更改 I/O 计划或对系统配置进行任何其他更改之前,请考虑关闭所有正在运行的数据库。通过 /sys
目录对 I/O 调度程序做出的更改仅持续到系统重新引导为止,因此需要在启动脚本中添加用于更改 I/O 调度程序的命令(例如存储在 /etc/init.d
中的脚本,或通过 /etc/rc.local
中的命令)。此外还需要为系统中的想要更改其调度程序的每个驱动器使用单独的命令。
例如,使配置立即生效并将其添加到 rc.local,以便在后续重新引导时使用该配置。
注意
对于不支持/etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。echo deadline > /sys/block/sda/queue/scheduler
echo 'echo deadline > /sys/block/sda/queue/scheduler' >> /etc/rc.local
注意
在一些 Ubuntu/Debian 系统中,rc.local 中的最后一行必须为“exit 0
”。因此,您必须手动将以下行添加到 etc/rc.local
中的最后一行 exit 0
之前。
如果系统包含混合的固态硬盘和物理介质驱动器,或者包含大量未存储 Vertica 编录和数据目录的驱动器,则可以优先使用这种方法来设置 I/O 调度程序,而不是使用启动参数。
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
配置 I/O 调度程序 - 使用启动参数更改调度程序
使用 elevator
内核启动参数来更改系统中所有磁盘所用的默认调度程序。如果主机中的大多数或所有驱动器都是同一类型(物理介质或 SSD)并且将会包含编录或数据文件,则这是可使用的最佳方法。此外还可以使用启动参数来更改系统中大多数驱动器所需的调度程序默认设置,然后使用 /sys
文件来将单独的驱动器更改为其他 I/O 调度程序。elevator 启动参数的格式为:
elevator=schedulerName
其中,schedulerName 是 deadline
、noop
或 cfq
。可使用引导装载程序(在最近的 Linux 发行版中为 grub 或 grub2)设置驱动参数。有关如何添加内核启动参数的详细信息,请参见相应发行版的文档。
6 - 启用或禁用透明大页
可以修改透明大页以满足 Vertica 配置要求:
-
对于 Red Hat 7/CentOS 7 和 Amazon Linux 2.0,必须启用透明大页。安装程序将以标识符S0312 报告不支持的调度程序问题。
-
对于 Red Hat 8/CentOS 8 和 SUSE 15.1,Vertica 按工作负载提供建议设置以优化系统性能。
-
对于其他所有系统,必须禁用透明大页或将其设为
madvise
。安装程序将以标识符S0310 报告不支持的调度程序问题。
对 Red Hat 8/CentOS 8 和 SUSE 15.1 按工作负载建议设置
Vertica 按工作负载建议透明大页设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用 defrag。
在 Red Hat 7/8、CentOS 7/8、SUSE 15.1 和 Amazon Linux 2.0 上启用透明大页
确定是否启用了透明大页。为此,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
可通过编辑 /etc/rc.local
并添加以下脚本来启用透明大页:
if test -f /sys/kernel/mm/transparent_hugepage/enabled; then
echo always > /sys/kernel/mm/transparent_hugepage/enabled
fi
必须重新引导系统以使设置生效,或以 root 用户的身份运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/enabled
如果您使用的是 Red Hat 7.0 或 CentOS 7.0 或更高版本,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在其他系统上禁用透明大页
注意
SUSE 在最初的 11.0 版本中未提供透明大页支持。但后续的 SUSE 服务包中包含了透明大页支持。为确定是否已启用透明大页,请运行以下命令。
cat /sys/kernel/mm/transparent_hugepage/enabled
[always] madvise never
括号内返回的设置是当前设置。根据平台操作系统,可能不会显示 madvise
设置。
可采用两种方法之一禁用透明大页:
-
编辑引导装载程序(例如
/etc/grub.conf
)。通常情况下,可以将以下内容添加到内核行的末尾。但在编辑引导装载程序配置之前,请查阅系统文档。transparent_hugepage=never
-
编辑
/etc/rc.local
(在支持 rc.local 的系统上)并添加以下脚本。if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/enabled fi
对于不支持 /etc/rc.local
的系统,请使用在达到目标运行级别后运行的等效启动脚本。例如,SuSE 使用 /etc/init.d/after.local
。
不论选择哪种方法,都必须重新引导系统以使设置生效,或运行以下两个 echo 行以继续安装而不重新引导:
echo never > /sys/kernel/mm/transparent_hugepage/enabled
7 - 检查 swappiness
swappiness 内核参数定义内核将 RAM 内容复制到交换空间的数量和频率。Vertica 建议使用值 0。安装程序以标识符 S0112 报告任何 swappiness 问题。
您可以通过运行以下命令来检查 swappiness 值:
$ cat /proc/sys/vm/swappiness
要设置 swappiness 值,请在 /etc/sysctl.conf
中添加或更新如下行:
vm.swappiness = 1
这样还可以确保该值在重新启动后仍然存在。
如有必要,可通过在运行时以 root 身份登录并运行以下命令来更改 swappiness 值:
$ echo 1 > /proc/sys/vm/swappiness
8 - 启用网络时间协议 (NTP)
重要
如果在数据库运行时更改主机 NTP 设置,可能会导致数据损坏和性能问题。在更改 NPT 设置之前,请先停止数据库。如果无法停止数据库,请停止每台主机上的 Vertica 进程,然后更改 NTP 设置,一次一台主机。
有关详细信息,请参阅在主机上停止 Vertica。
必须在群集中的所有主机上运行网络时间协议 (NTP) 守护程序,才能使其时钟保持同步状态。Spread 守护程序依赖于所有节点将其时钟进行同步,以用于定时用途。如果节点没有运行 NTP,则安装可能失败,并且显示 spread 配置错误或其他错误。
注意
不同的 Linux 发行版以不同的方法引用 NTP 守护程序。例如,SUSE 和 Debian/Ubuntu 称其为ntp
,而 CentOS 和 Red Hat 称其为 ntpd
。如果以下命令产生错误,请尝试使用其他 NTP 守护程序引用名称。
验证 NTP 是否正在运行
为验证主机是否已配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ chkconfig --list ntpd
Debian 和 Ubuntu 不支持 chkconfig
,但它们提供了可选的软件包。可使用命令 sudo apt-get install sysv-rc-conf
安装此软件包。为验证是否已使用 sysv-rc-conf
实用工具将主机配置为在启动时运行 NTP 守护程序,请输入以下命令:
$ sysv-rc-conf --list ntpd
chkconfig
命令可能生成类似于 ntpd: unknown service
的错误。如果出现此错误,请验证 Linux 发行版将 NTP 守护程序称为 ntpd
,而不是 ntp
。否则,在配置之前,需要安装 NTP 守护程序软件包。有关如何查找和安装软件包的说明,请查阅 Linux 文档。
如果已安装 NTP 守护程序,则应显示与以下类似的输出:
ntp 0:off 1:off 2:on 3:on 4:off 5:on 6:off
该输出指示了运行守护程序的运行级别。验证系统的当前运行级别(通常为 3 或 5)已将 NTP 守护程序设为 on
。如果当前运行级别未知,可使用 runlevel
命令查明运行级别:
$ runlevel
N 3
为 Red Hat 6/CentOS 6 和 SLES 配置 NTP
如果系统基于 Red Hat 6/CentOS 6 或 SUSE Linux Enterprise Server,请使用 service
和 chkconfig
实用程序启动 NTP 并将其设为在系统启动时启动。
$ /sbin/service ntpd restart
$ /sbin/chkconfig ntpd on
-
Red Hat 6/CentOS 6 —NTP 使用位于 ntp.org 的默认时间服务器。可通过编辑
/etc/ntpd.conf
来更改默认的 NTP 服务器。 -
SLES —默认情况下未配置任何时间服务器。在安装完成并添加时间服务器后,必须编辑
/etc/ntpd.conf
。
为 ubuntu 和 debian 配置 NTP
默认情况下,一些 Ubuntu 和 Debian 系统上没有安装 NTP 守护程序。首先安装 NTP,然后启动 NTP 进程。如下所示,可通过编辑 /etc/ntpd.conf
来更改默认的 NTP 服务器:
$ sudo apt-get install ntp
$ sudo /etc/init.d/ntp reload
验证 NTP 是否正在正常运行
要验证网络时间协议守护程序 (NTPD) 是否正确运行,请在群集中的所有节点上发出以下命令。
对于 Red Hat 6/CentOS 6 和 SLES:
$ /usr/sbin/ntpq -c rv | grep stratum
对于 Ubuntu 和 Debian:
$ ntpq -c rv | grep stratum
层级别 16 指示 NTP 未正确同步。
如果检测到层级别 16,则等待 15 分钟,然后再次发出该命令。要使 NTP 服务器稳定下来,可能需要这么长时间。
如果 NTP 仍旧检测到层级别 16,则验证在群集与您尝试同步的远程计算机之间的所有防火墙上,NTP 端口(UDP 端口 123)是否均处于开放状态。
与 NTP 相关的 Red hat 文档
前述链接是截至 Vertica 文档上次发布时的最新链接,并且在不同版本之间可能有所变化。
9 - 为 Red Hat 7/CentOS 7 系统启用 chrony 或 ntpd
在安装 Vertica 之前,必须在系统上启用以下一项以进行时钟同步:
-
chrony
-
NTPD
必须在安装前启用并激活网络时间协议 (NTP)。否则,安装程序会以标识符 S0030 报告此问题。
有关安装和使用 chrony 的信息,请参阅以下信息。有关 NTPD 的信息,请参阅启用网络时间协议 (NTP)。有关 chrony 的详细信息,请参阅 Red Hat 文档中的使用 chrony。
安装 chrony
chrony 套件包含:
-
chronyd - 用于时钟同步的守护程序。
-
chronyc - 用于配置 chronyd 的命令行实用程序。
一些版本的 Red Hat/CentOS 7 上默认安装了 chrony。但如果系统中尚未安装 chrony,则必须下载该软件包。要下载 chrony,请以 sudo 或 root 用户身份运行以下命令:
# yum install chrony
验证 chrony 是否正在运行
要查看 chronyd 守护程序的状态,请运行以下命令:
$ systemctl status chronyd
如果 chrony 正在运行,则会显示与以下类似的输出:
chronyd.service - NTP client/server
Loaded: loaded (/usr/lib/systemd/system/chronyd.service; enabled)
Active: active (running) since Mon 2015-07-06 16:29:54 EDT; 15s ago
Main PID: 2530 (chronyd)
CGroup: /system.slice/chronyd.service
ââ2530 /usr/sbin/chronyd -u chrony
如果 chrony 未在运行,则以 sudo 或 root 用户身份执行以下命令。此命令还会使 chrony 在系统启动时运行:
# systemctl enable chronyd
验证 chrony 是否正在正常运行
要验证 chrony 守护程序是否正常运行,请在群集中的所有节点上发出以下命令:
$ chronyc tracking
将显示与以下类似的输出:
Reference ID : 198.247.63.98 (time01.website.org)
Stratum : 3
Ref time (UTC) : Thu Jul 9 14:58:01 2015
System time : 0.000035685 seconds slow of NTP time
Last offset : -0.000151098 seconds
RMS offset : 0.000279871 seconds
Frequency : 2.085 ppm slow
Residual freq : -0.013 ppm
Skew : 0.185 ppm
Root delay : 0.042370 seconds
Root dispersion : 0.022658 seconds
Update interval : 1031.0 seconds
Leap status : Normal
层级别 16 指示 chrony 未正确同步。如果 chrony 仍旧检测到层级别 16,请验证 UDP 端口 323 处于开放状态。在群集与尝试同步的远程计算机之间的所有防火墙上,此端口必须保持开放状态。
10 - SELinux 配置
除非 SELinux 在许可模式下运行,否则 Vertica 不支持 SELinux。如果安装程序检测到已安装 SELinux 并且无法确定模式,则会以标识符 S0080 报告此问题。如果可以确定模式,并且该模式不是许可模式,则会以标识符 S0081 报告此问题。
Red Hat 和 SUSE 系统
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
-
编辑
/etc/selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。 -
以 root/sudo 用户身份,键入
setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
-
编辑
/etc/selinux/config
,并将 SELINUX 的设置更改为许可模式 (SELINUX=Permissive
)。 -
以 root/sudo 用户身份,键入
setenforce Permissive
以立即切换至许可模式。
Ubuntu 和 debian 系统
可以禁用 SELinux 或将其更改为使用许可模式。
要禁用 SELinux:
-
编辑
/selinux/config
并将 SELinux 设置更改为禁用 (SELINUX=disabled
)。这会在引导时禁用 SELinux。 -
以 root/sudo 用户身份,键入
setenforce 0
以立即禁用 SELinux。
要将 SELinux 更改为使用许可模式:
-
编辑
/selinux/config
,并将 SELinux 的设置更改为许可模式 (SELINUX=Permissive
)。 -
以 root/sudo 用户身份,键入
setenforce Permissive
以立即切换至许可模式。
11 - CPU 频率调整
本主题详细说明 Vertica 所支持的各种 CPU 频率调整方法。一般而言,如果不需要 CPU 频率调整,则将其禁用以免影响系统性能。
重要
当禁用频率调整时,系统使用的能源量可能大幅增加。在将 cpufreq 调控器设为 performance
时,安装程序将允许启用 CPU 频率调整。如果将 CPU 调控器设为 ondemand,并且 ignore_nice_load
为 1 (true),则安装程序将会失败,并显示错误 S0140。如果将 CPU 调控器设置为 ondemand,并且 ignore_nice_load
为 0 (false),则安装程序将会发出警告,并显示标识符 S0141。
CPU 频率调整是一项硬件兼软件功能,可通过在系统负载较低时放慢处理器速度以及在系统负载增加时加快其运行速度,来帮助计算机节省能源。由于提高 CPU 频率以响应更高系统负载的情况并非即时操作,因此此功能可能会影响系统性能。始终在 Vertica 数据库主机上禁用此功能,以防止其对性能造成干扰。
在主机系统 BIOS 中禁用 CPU 调整。主机 BIOS 中可能有多项需要调整的设置,以便完全禁用 CPU 频率调整。有关进入系统 BIOS 和禁用 CPU 频率调整的详细信息,请查阅主机硬件文档。
如果无法通过系统 BIOS 禁用 CPU 调整,则可通过 Linux 内核禁用调整功能或将 CPU 频率调控器设为始终全速运行 CPU,来限制 CPU 调整带来的影响。
当心
此方法不太可靠,因为一些硬件平台可能会忽略内核设置。有关详细信息,请参阅《Vertica 硬件指南》。用于禁用频率调整的方法取决于 Linux 内核当前使用的 CPU 调整方法。有关在内核中禁用调整或更改 CPU 调控器的说明,请参见 Linux 发行版文档。
12 - 启用或禁用 defrag
可以根据 Vertica 配置要求修改 defrag 实用程序,也可以根据工作负载优化系统性能。
在所有 Red Hat/CentOS 系统上,必须禁用 defrag 实用程序才能满足 Vertica 配置要求。
注意
在 Red Hat 6/CentOS 6 系统上禁用 defrag 的步骤与在 Red Hat 7/CentOS 7 和 Red Hat 8/CentOS 8 上禁用 defrag 的步骤有所不同。对于 SUSE 15.1,Vertica 建议启用 defrag 以获得最优性能。
对 Red Hat 8/CentOS 8 和 SUSE 15.1 按工作负载建议设置
Vertica 按工作负载建议 defrag 设置以优化性能。下表列出了针对主要运行并发查询(例如短时间运行的仪表板查询)或顺序 SELECT 或 load (COPY) 查询的系统提出的建议:
有关按工作负载优化系统性能的其他设置,请参阅启用或禁用透明大页。
在 Red Hat 6/CentOS 6 系统上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/redhat_transparent_hugepage/defrag [always] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或never
作为 defrag 设置,则必须禁用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/redhat_transparent_hugepage/enabled; then echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
在 Red Hat 7/CentOS 7、Red Hat 8/CentOS 8 和 SUSE 15.1 上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag [always] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或never
作为 defrag 设置,则必须禁用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo never > /sys/kernel/mm/transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo never > /sys/kernel/mm/transparent_hugepage/defrag
-
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
在 Red Hat 7/8、CentOS 7/8 和 SUSE 15.1 上禁用 defrag
-
通过运行以下命令确定是否已启用 defrag:
cat /sys/kernel/mm/transparent_hugepage/defrag [never] madvise never
括号内返回的设置是当前设置。如果未使用
madvise
或always
作为 defrag 设置,则必须启用 defrag。 -
编辑
/etc/rc.local,
并添加以下脚本:if test -f /sys/kernel/mm/transparent_hugepage/enabled; then echo always > /sys/kernel/mm/transparent_hugepage/defrag fi
必须重新引导系统以使设置生效,或运行以下 echo 行以继续安装而不重新引导:
# echo always > /sys/kernel/mm/transparent_hugepage/defrag
-
如果使用的是 Red Hat 7.0/CentOS 7.0 或 Red Hat 8.0/CentOS 8.0,请以 root 或 sudo 身份运行以下命令:
$ chmod +x /etc/rc.d/rc.local
13 - 支持工具
Vertica 建议安装下列工具,以便在出现任何问题时,支持人员可以协助诊断系统问题:
-
pstack(或 gstack)软件包。当未安装时,将标识为问题 S0040。
- 在 Red Hat 7 和 CentOS 7 系统中,pstack 软件包将作为 gdb 软件包的一部分安装。
-
mcelog 软件包。当未安装时,将标识为问题 S0041。
-
sysstat 软件包。当未安装时,将标识为问题 S0045。
Red hat 6 和 CentOS 6 系统
要在 Red Hat 6 和 CentOS 6 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install pstack
yum install mcelog
yum install sysstat
Red hat 7 和 CentOS 7 系统
要在 Red Hat 7/CentOS 7 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
yum install gdb
yum install mcelog
yum install sysstat
Ubuntu 和 debian 系统
要在 Ubuntu 和 Debian 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令:
apt-get install pstack
apt-get install mcelog
apt-get install sysstat
重要
对于 Ubuntu 18.04 及更高版本,运行apt-get install rasdaemon
而不是 apt-get install mcelog
。
SuSE 系统
要在 SuSE 系统中安装必需的工具,请以 sudo 或 root 用户身份运行以下命令。
zypper install sysstat
zypper install mcelog
pstack/gstack 没有单独的 SuSE 软件包。但 gdb 软件包中包含 gstack,因此可选择安装 gdb 或从源代码编译 pstack/gstack。要安装 gdb 软件包:
zypper install gdb