![SequoiaDB分布式数据库权威指南](https://wfqqreader-1252317822.image.myqcloud.com/cover/100/43738100/b_43738100.jpg)
3.1.2 Linux的推荐配置
本节将介绍在安装SequoiaDB(巨杉数据库)前,用户应如何调整Linux操作系统的环境配置,以保障操作系统稳定且高效地运行。需要调整的配置包括ulimit、内核参数、transparent_hugepage(挂载参数)和NUMA。
1.调整ulimit
SequoiaDB相关进程以数据库管理用户(安装SequoiaDB时指定,默认为sdbadmin)权限来运行。因此,建议调整数据库管理用户的ulimit配置。可以参照以下2个步骤来完成该配置。
(1)在配置文件/etc/security/limits.conf中进行如下设置:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_52_4.jpg?sign=1739291597-it5emkLZVn5TV4RW90Bu9xCLFcB5Fuxk-0-1b4974501d5b3a3575138bfe643ef375)
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_53_1.jpg?sign=1739291597-pAX0gzM2htUvGsSzFFfWA1nrg2SESynG-0-33a607123b793da1af54e65b452cf491)
具体参数说明如下。
● core:在数据库出现故障时,是否产生core文件来进行故障诊断。在生产系统中建议用户关闭此功能。
● data:数据库进程所允许分配的数据内存大小。
● fsize:数据库进程所允许寻址的文件大小。
● rss:数据库进程所允许的最大resident set大小。
● as:数据库进程所允许的最大虚拟内存寻址空间。
● nofile:数据库进程所允许打开的最大文件数。
(2)在配置文件/etc/security/limits.d/90-nproc.conf中进行如下设置:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_53_2.jpg?sign=1739291597-eEeUbq5pK032wuJBUfr93MXWi44y0mJr-0-1798017adb6d41225fa0c397b5a8dae5)
其中,参数nproc表示数据库所允许的最大线程数限制。要注意,每台作为数据库服务器的机器都需要配置,而且更改配置后需要重新登录,以确保配置生效。
2.调整内核参数
用户可以参照以下步骤来调整内核参数。
(1)备份系统原始的vm参数:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_53_3.jpg?sign=1739291597-7DhTfKnARBwFFBRuFz5rvN73fyudQbsx-0-f6b1ed67701ec0bc80fbface5872cb3b)
(2)修改文件/etc/sysctl.conf,添加如下内容:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_54_1.jpg?sign=1739291597-XUQ7lEHCwCYPmVpc4M11eRQCC6JU7h8m-0-eba292e8941856d2ef453eb429dc37a7)
注意:当数据库可用物理内存不足8GB时无须设置vm.swappiness=0。上述dirty类参数(控制系统的flush进程只采用脏页超时机制刷新脏页,而不采用脏页比例超支刷新脏页)所给的只是建议值,具体参数值可根据实际情况进行设置。如果用户采用SSD(固态磁盘),建议设置vm.dirty_expire_centisecs=1000。
(3)执行如下命令,使配置生效:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_54_2.jpg?sign=1739291597-TPHl1kgVEeHs3f4PkpUceF78uoeVj7Tr-0-0cb16992cc31d027896ac20b9bf944cd)
3.调整文件系统的挂载参数
SequoiaDB推荐使用ext4格式的文件系统。同时,建议在/etc/fstab文件中添加noatime挂载参数,以提升文件系统的性能。
下面以块设备/dev/sdb(假设其UUID为993c5bba-494f-44ae-b543-a109f3598777,挂载目录为/data/disk_ssd1)为例,介绍具体操作步骤。如果数据盘需要使用多个块设备,则需要对所有块设备进行设置。
首先,检查目标磁盘的文件系统状态:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_54_3.jpg?sign=1739291597-TPgshbGcKCLIPKRtNxNNGpMohbNOm8Z2-0-ac083c02969e8d7525c9883b705d8120)
如果输出结果中显示文件系统为ext4格式的,并且挂载参数中包含noatime,则表示已完成设置;如果输出为其他参数,则需要通过后续步骤进行配置。
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_54_4.jpg?sign=1739291597-R3nLLRbbYzTknJZgezsqZL6OABZnAksx-0-8ab755d82fbbe3e05367eb9137959935)
其次,对已挂载的块设备进行设置。如果块设备已创建分区且文件系统为ext4格式的,但其挂载参数不包含noatime,可通过如下操作步骤进行设置。
(1)卸载已挂载的数据盘:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_1.jpg?sign=1739291597-ZP3zoZd0WTzEdSE9j6ZsHpCEaAIHkdec-0-38f1aad3c0ecade9e561d5d852e65dad)
(2)编辑/etc/fstab文件:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_2.jpg?sign=1739291597-WnFolCCkAg5H5N6BRJHQ3namMqnUTjUG-0-c22b39ef9c28378389d6336757aa2c72)
(3)将块设备/dev/sdb的挂载参数调整为如下内容:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_3.jpg?sign=1739291597-ZNnw4FEyvHKgADUWKr0dfmFStcfwN3cj-0-dabce37cfe84249b4ccb8d80a75c3784)
(4)挂载块设备:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_4.jpg?sign=1739291597-b7jsDKaygtzuxYtAgMVkYZ0b4kGiNgp5-0-d491cb00da7465e712df786cf6bb6209)
(5)检查挂载参数是否生效:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_5.jpg?sign=1739291597-rokJtr03tiAlNGunhQ57EkOryyP5hWy5-0-bc9fdf058807e5ff12240f9a72949071)
最后对新块设备进行设置。对于新增的块设备,可以进行如下设置。
(1)查看块设备情况:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_6.jpg?sign=1739291597-nD2yVZ6WZpkwzPzkNukb5ExFjkbIa9VN-0-0a541c78ad55dfb2ba9f9677fd398a30)
(2)创建分区:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_7.jpg?sign=1739291597-WMm2qwmuFqqXhvVnZK8htQAcyQ6V9z7N-0-d93811274db5c030f8192a3d067e9d9b)
(3)将文件系统格式化为ext4格式的:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_8.jpg?sign=1739291597-gC7MFL6fm4HjPkF4rTZx7q3Ugvpb9WaK-0-c0fb8119c19ce3fb1f2562e0c63bec81)
(4)查看数据盘分区的UUID:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_9.jpg?sign=1739291597-8V5npqtBA8cQFh0qT3gTkZB7o4g1dH9A-0-9131c9ecc3c966886774d0c23f76c9aa)
输出结果如下:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_55_10.jpg?sign=1739291597-XGWStKL51usDB7rRPU8mjw9meaXRCFhf-0-31bd73e2ebabd5d584691a6d47f0022a)
(5)创建需要挂载的数据目录:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_1.jpg?sign=1739291597-IXsjuJEPxqFyuNHW4dRejSf5DwfnOLjP-0-40b7bd0a66ee2633c1c47ec759a6b5af)
(6)编辑/etc/fstab文件:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_2.jpg?sign=1739291597-duJdzuyaCBULmNYgCfpBWULamsFO0n4b-0-a6e2cc1880f9d47da8f3f7b573b68212)
添加如下内容:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_3.jpg?sign=1739291597-bbJhsNWINEMMh2jUWIiMKdGZ4i9YkPWz-0-632079d4e8fb20836a67fa00e3be374d)
(7)挂载数据盘:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_4.jpg?sign=1739291597-1lk6TY5cBNxTAbtxHZ61bAfk6LvaraJc-0-a9d60e56f8197102e1f54e60a54a8fde)
(8)检查挂载参数是否生效:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_5.jpg?sign=1739291597-OTh8xWphufH3RbdziZzWEKwPE9TJKle2-0-d5ee16ae2504508a8b0577b977c92f1b)
4.关闭transparent_hugepage
具体操作步骤如下。
(1)编辑/etc/rc.local,在第一行#!/bin/sh下添加如下两行:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_6.jpg?sign=1739291597-kdSfphzCVjAQfa5cjQ5kUWpuliuZtX8z-0-175fe6c41d8dbe39c4ccf62eb8a13a64)
(2)执行如下命令使配置生效:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_7.jpg?sign=1739291597-JxUudBv3GXV0iH7Zm1nZXekiyNwNWojP-0-5439e4f43db1345efeba9003e00ecf5f)
(3)依次执行如下两条命令,验证关闭操作是否成功:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_56_8.jpg?sign=1739291597-83u0YU23fgn1ZpUN3C7C0KTAiCR9ogjV-0-c69bcfe325558eb66618b55a5621a5fa)
如果两条命令执行后均显示always madvise [never],则说明关闭操作成功。
5.关闭(禁用)NUMA
Linux操作系统默认情况下会开启NUMA(Non Uniform Memory Access),其优先在进程所在的CPU节点本地进行内存分配。这种内存分配策略的初衷是,让内存更接近需要它的进程。但是,这不利于充分利用系统的物理内存,所以这种内存分配策略不适合数据库这种大规模使用内存的场景,它会导致CPU节点间内存分配得不均衡。比如,当某个CPU节点的内存不足时,NUMA非但不从有充足物理内存的远程节点分配内存,而且还会直接导致“swap”过高。因此,建议用户在使用SequoiaDB时关闭NUMA。
首先我们要检查NUMA的状态,查看是否已关闭NUMA,具体步骤如下。
(1)安装numactl工具:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_57_1.jpg?sign=1739291597-iYVd9sba0Vo7OMeOTvq1WCWonzUXXfTY-0-90cc2ede23b204ab7b107e282525efb7)
或
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_57_2.jpg?sign=1739291597-zpi5DVojgf9EY6HR9cskhUO5F7B9yeeG-0-39d6e6e8189399f8a1eb80f6a44b7b4a)
(2)检查是否已关闭NUMA:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_57_3.jpg?sign=1739291597-iFSVBbXnQ4KeRJAlq1YQDoAhoLkJdhVX-0-4f450e8e9e146f61b29dec7bfd2bb074)
如果输出结果中只有node0,则表示已关闭NUMA;如果有node1等其他节点出现,则表示未关闭NUMA:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_57_4.jpg?sign=1739291597-7jDlPc1w43zBm5q6rkdSpB2DZAU1mJtb-0-af6d883bedac6b363110108b79d7d7a5)
关闭NUMA的方法有两个:一是通过BIOS(Basic Input Output System)设置来关闭NUMA;二是通过修改gurb的配置文件来关闭NUMA。首选是第一个方法:开机后按快捷键进入BIOS设置界面,关闭NUMA,之后保存设置并重启。不同品牌的主板或服务器,具体操作略有差异,此处不做详述。
对于第二个方法,CentOS、SUSE、Ubuntu的grub配置文件有差异,在同一款Linux的不同版本中也略有不同。
对于CentOS 6/Red Hat 6,关闭NUMA的步骤如下。
(1)修改文件/boot/grub/grub.conf:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_57_5.jpg?sign=1739291597-Zqbdn3pTltrtq9UHxW710OFU6DOXjFVd-0-ee0d0c289020a1f5637c9969d1a998f3)
(2)找到“kernel”引导行(不同版本的内容略有差异,但其开头均有“kernel/vmlinuz-”字样):
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_1.jpg?sign=1739291597-yLmFzfFJRxQvmnSDa9dFbMEGbn175a7B-0-416401e21f794d652f826a0f54017c80)
(3)在“kernel”引导行的末尾加上空格和“numa=off”:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_2.jpg?sign=1739291597-ex2tyLzIVVMukLbNQvlgmYoOIkz71MZX-0-ec8fab427f7797452aa94dd28c8fd9fb)
要注意的是,如果该配置文件中存在多个“kernel”引导行,则每个引导行都需要进行修改。
(4)重启操作系统:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_3.jpg?sign=1739291597-FBwdBkwKINmN81RWrLfOCbLSKVOPUcjj-0-2d6ed40caad8e24b49ac3f072b6e3d3d)
而对于CentOS 7/Red Hat 7/CentOS 8/Red Hat 8/Suse 12/openEuler/中标麒麟/Ubuntu 16/统信UOS等系统,关闭NUMA的步骤如下。
(1)修改文件/etc/default/grub:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_4.jpg?sign=1739291597-zURWKv0KZ4sJsmlTr6tZk59WRINy4amd-0-d4291d4be49ad8cc6aaeea9d0fe99b7e)
(2)找到配置项“GRUB_CMDLINE_LINUX”:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_5.jpg?sign=1739291597-dnGI3H6buIarWHsH05O2USVSNleScFZR-0-20c607351d8ed9744fd8197182185918)
(3)在配置项“GRUB_CMDLINE_LINUX”的最后加上空格和“numa=off”:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_6.jpg?sign=1739291597-ITL5d8tEOEuQ4aVDmFgwgrCePHd2VbJJ-0-bfcaf8dad750aee43812b07f9d37e984)
(4)重新生成grub引导文件。
对于CentOS 7/Red Hat 7/CentOS 8/Red Hat 8,用户需要执行如下命令:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_7.jpg?sign=1739291597-JS558XjDgWiHndKtRlC7pFV7GkTPNSgT-0-ecc43f5f15a5e1ad53080c28e6d06568)
对于Suse12,用户需要执行如下命令:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_8.jpg?sign=1739291597-WLEScFk12XRfM8W4hCZaGdRgDKjFbckC-0-b27827b4f83cf66e926de331235b688d)
对于openEuler/中标麒麟,用户需要执行如下命令:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_58_9.jpg?sign=1739291597-rdrCY6yGSJUNkVBjvKEq3SkysbA1G3BK-0-b571c8f1e13c3b9d9c7f1065974ede3a)
对于Ubuntu 16/统信UOS,用户需要执行如下命令:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_59_1.jpg?sign=1739291597-0Hc2GdCd19V7uZOiGYpPuAsr9ytN1Q4t-0-c6286cb3fc62ec08ab99a5087c7386f4)
(5)关闭NUMA后,需要重启操作系统:
![](https://epubservercos.yuewen.com/4CE233/23020641509740506/epubprivate/OEBPS/Images/42291_59_2.jpg?sign=1739291597-6h2by7FKXgGTgtMsj1XM6hUCrtl1i3Pz-0-490cf292d1ea13da36a826330d071973)