我最初尝试使用 论坛和网上有人提到的 svmstack-letsencrypt 包，但就是不行。一番查找之后，我发现有人在使用一个 acme.sh 脚本。 我甚至联系了支持人员，并引用他们的话， letsencrypt 脚本并不适合所有人，他们还建议我使用acme.sh，所以这些是我在我们的 SolusVM 主服务器上安装多域证书所执行的步骤。 您可以按照 ACME Deploy SolusVM 说明中的步骤进行操作，但如果您像我一样运行 CentOS 7.x，那么您的某些步骤会略有不同。首先下载并安装脚本curl https://get.acme.sh | sh现在，这会将脚本以 .acme.sh/acme.sh 的形式安装到您的用户帐户中，并添加一个别名。完成后，您需要注销并重新登录，以便系统识别更新后的 shell 路径。 接下来确保该文件夹可用，如果不可用，您可能需要升级整个安装，以便目录存在并且 Nginx 具有将 ACME 请求传递到正确目录的配置。ls -la /usr/local/solusvm/www/.verification自 2022 年以后，acme.sh 默认将 CA 改为 ZeroSSL，如果没有设置邮箱，会卡在获取 EAB 授权这一步。Let’s Encrypt 则不需要账号注册，可直接申请证书，我们切换CA为 Let’s Encrypt。acme.sh --set-default-ca --server letsencrypt如果提示 -bash: acme.sh: command not found则需要手动加载source ~/.bashrc如果没问题，接下来我们就可以获取证书了。acme.sh --issue -d example.com -d www.example.net -w /usr/local/solusvm/www/.verification之后您需要安装证书。acme.sh --installcert -d example.com -d www.example.net --keypath /usr/local/svmstack/nginx/ssl/ssl.key --fullchainpath /usr/local/svmstack/nginx/ssl/ssl.crt --reloadcmd "systemctl restart svmstack-nginx; cd /usr/local/svmstack/nginx/ssl && cat ssl.key ssl.crt > ssl.pem"完成这些步骤后，我可以浏览 SolusVM 主机上的每个 URL，并看到它现在正在使用 Let's Encrypt 证书。此证书将通过 Let's Encrypt 自动续订，但您需要一个 cron 来更新。这是我的0 0 * * * “/root/.acme.sh”/acme.sh --cron --home “/root/.acme.sh” > /dev/null60天后会通过cron自动尝试证书renew。文章转自 https://centosquestions.com/setup-solusvm-with-lets-encrypt-free-ssl-certificate/
一、主(master)数据库配置1./etc/my.cnf 添加配置[mariadb] log-bin server_id=1 log-basename=master1 binlog-format=mixed max_binlog_size=200M expire_logs_days=7server_id 必须唯一。log-basename 是指定binlog 的命名规则， binlog 会以它为前缀生成日志，如 master1-bin.000001。max_binlog_size=200M 生成的log最大值，到达最大值，会重新创建一个，如 master1-bin.000002。expire_logs_days binlog 过期天数。2.然后重启数据库生效。systemctl restart mariadb3.创建执行同步的数据库用户//用户名： replication_user， 密码： PWD，可以修改成你想要的。 //授予仅同步权限 CREATE USER 'replication_user'@'%' IDENTIFIED BY 'PWD'; GRANT REPLICATION SLAVE ON *.* TO 'replication_user'@'%'; //刷新授权 flush privileges; //查看所有用户 MariaDB [(none)]> SELECT User, Host, Password FROM mysql.user; +------------------+-----------+-------------------------------------------+ | User | Host | Password | +------------------+-----------+-------------------------------------------+ | root | localhost | ***************************************** | | root | 127.0.0.1 | ***************************************** | | root | ::1 | ***************************************** | | replication_user | % | ***************************************** | +------------------+-----------+-------------------------------------------+4.锁定数据库FLUSH TABLES WITH READ LOCK;在导出数据库时，先加锁，避免在导出时修改了数据库导致数据不一致。5.记录当前的同步位置MariaDB [(none)]> show master status; +--------------------+----------+--------------+------------------+ | File | Position | Binlog_Do_DB | Binlog_Ignore_DB | +--------------------+----------+--------------+------------------+ | master1-bin.000001 | 1379828 | | | +--------------------+----------+--------------+------------------+ 1 row in set (0.000 sec)当前master 生成的日志文件: master1-bin.000001,日志位置： 1379828。6.导出数据库//查看所有数据库 MariaDB [(none)]> show databases; +--------------------+ | Database | +--------------------+ | db01 | | db02 | | information_schema | | mysql | | performance_schema | +--------------------+ 5 rows in set (0.001 sec)//备份数据库 mysqldump -u root -pPWD --databases db01 db02 db03 | gzip > dump.master.gzdb01 db02 db03 替换为你的数据库名7.解锁数据库UNLOCK TABLES ;二、从(slave)数据库配置1./etc/my.cnf 添加配置[mariadb] #log-bin server_id=2注意，从服务器可以不用开启bin-log，将bin-log注释也可以。2.将主服务器导出的数据库导入到从服务器//主服务器scp传送文件 scp dump.master.gz root@从服务器IP:/root/dump.master.gz //从服务器将gz文件解压缩 gunzip dump.master.gz //导入 slave mysql mysql -uroot -pPWD < dump.master3.登录数据库，设置主服务器信息mysql -uroot -pPWD change master to master_host='主服务器IP', master_user='replication_user', master_password='PWD', master_port=3306, master_log_file='master1-bin.000001', master_log_pos=1379828, master_connect_retry=10;4.然后重启数据库生效。systemctl restart mariadb5.启动同步start slave;6.查看是否同步成功MariaDB [(none)]> show slave status \G; *************************** 1. row *************************** Slave_IO_State: Waiting for master to send event Master_Host: 主服务器IP Master_User: replication_user Master_Port: 3306 Connect_Retry: 10 Master_Log_File: master1-bin.000001 Read_Master_Log_Pos: 1468860 Relay_Log_File: mariadb-relay-bin.000003 Relay_Log_Pos: 133159 Relay_Master_Log_File: master1-bin.000001 Slave_IO_Running: Yes Slave_SQL_Running: Yes Replicate_Do_DB: Replicate_Ignore_DB: Replicate_Do_Table: Replicate_Ignore_Table: Replicate_Wild_Do_Table: Replicate_Wild_Ignore_Table: Last_Errno: 0 Last_Error: Skip_Counter: 0 Exec_Master_Log_Pos: 1468860 Relay_Log_Space: 133470 Until_Condition: None Until_Log_File: Until_Log_Pos: 0 Master_SSL_Allowed: No Master_SSL_CA_File: Master_SSL_CA_Path: Master_SSL_Cert: Master_SSL_Cipher: Master_SSL_Key: Seconds_Behind_Master: 0 Master_SSL_Verify_Server_Cert: No Last_IO_Errno: 0 Last_IO_Error: Last_SQL_Errno: 0 Last_SQL_Error: Replicate_Ignore_Server_Ids: Master_Server_Id: 1 Master_SSL_Crl: Master_SSL_Crlpath: Using_Gtid: No Gtid_IO_Pos: Replicate_Do_Domain_Ids: Replicate_Ignore_Domain_Ids: Parallel_Mode: conservative SQL_Delay: 0 SQL_Remaining_Delay: NULL Slave_SQL_Running_State: Slave has read all relay log; waiting for the slave I/O thread to update it Slave_DDL_Groups: 2 Slave_Non_Transactional_Groups: 9 Slave_Transactional_Groups: 433
例子:旧服务器 solusvm.conf 文件：cat /usr/local/solusvm/includes/solusvm.conf Vmf7LEAnrb5S8x6:218H3lW42EkJZ1y:GOJebeWEl0IOaciXhnM27OryQfQikF:localhost:XFrORvKb69F1QDlmJ6hDqg374iQjL2ndgGIEtkYFTixpFIYFQ0 新服务器 solusvm.conf 文件：cat /usr/local/solusvm/includes/solusvm.conf ORq0dnadRkMyu5S:O4enHwSNLOQImDx:p1BSl44Mi0CBCaGEUZk1txkAdDHNRJ:localhost:gcTrdvQorLnvJhyZYrC0cIOUBJ3H4gJVl3k0SjQ54xgT4hFC5a 将旧服务器的加密密钥修改到新服务器上cat /usr/local/solusvm/includes/solusvm.conf ORq0dnadRkMyu5S:O4enHwSNLOQImDx:p1BSl44Mi0CBCaGEUZk1txkAdDHNRJ:localhost:XFrORvKb69F1QDlmJ6hDqg374iQjL2ndgGIEtkYFTixpFIYFQ0 XFrORvKb69F1QDlmJ6hDqg374iQjL2ndgGIEtkYFTixpFIYFQ0 - 应在新服务器上添加的来自旧服务器的加密密钥SolusVM 主数据库的部分使用存储在/usr/local/solusvm/includes/solusvm.conf. 格式solusvm.conf如下：<DATABASENAME>:<USER>:<PASSWORD>:<HOST>:<the key is the last entry> 之后，将解压过后的SolusVM数据库的mysql dump上传到新服务器，并在新服务器上恢复：/usr/bin/mysql --user=USER --password=PASSWORD DATABASENAME < database USER、PASSWORD、DATABASE 应取自新solusvm.conf文件。将 SSL 证书从旧主节点复制到新主节点，证书位于以下位置：/usr/local/svmstack/nginx/ssl/ssl.crt /usr/local/svmstack/nginx/ssl/ssl.key /usr/local/solusvm/includes/nvnc/cert.pem 或仅上传ssl.crt ssl.pem，生成cert.pemcat /usr/local/svmstack/nginx/ssl/ssl.crt /usr/local/svmstack/nginx/ssl/ssl.key > /usr/local/solusvm/includes/nvnc/cert.pem 在Nodes > List nodes > Edit localhost node中，将 IP 地址替换为主节点的新 IP 地址。旧主节点停止后，立即删除每个母鸡上的 /usr/local/solusvm/data/allow.dat 和 /usr/local/solusvm/data/ftp.dat 文件。rm -rf /usr/local/solusvm/data/allow.dat & rm -rf /usr/local/solusvm/data/ftp.dat
该文章内容提及的第二步有一定几率会出现事故的风险。 LVM删除一些分区后数据仍然保留在磁盘内，只要没有被完全覆盖是可以恢复的。大致上3个步骤完成：第一步查找出日志位置，第二步恢复分区，第三步激活分区。以下内容的约定：卷组名为vggroup，kvm*_img为卷。恢复卷的对象是kvm22572_img第一步查找日志#vgcfgrestore -l /dev/vggroup vgcfgrestore -l /dev/vggroup|grep -B2 -A1 lvremove 执行后可以看到类似以下的日志内容。在日志内找到了kvm22572_img卷然后对应的File是/etc/lvm/archive/vggroup_01087-654942930.vg-- File: /etc/lvm/archive/vggroup_01087-654942930.vg VG name: vggroup Description: Created *before* executing 'lvremove -v -f /dev/vggroup/kvm22572_img' Backup Time: Thu Dec 15 10:35:29 2022 -- File: /etc/lvm/backup/vggroup VG name: vggroup Description: Created *after* executing 'lvremove -v -f /dev/vggroup/kvm22572_img' Backup Time: Thu Dec 15 10:35:29 2022 第二步对卷进行恢复vgcfgrestore /dev/vggroup -f /etc/lvm/archive/vggroup_01087-654942930.vg *执行命令后会有回显信息 Restored volume group vggroup第三步对卷做激活。lvchange -a y /dev/vggroup/kvm22572_img 本文转载自 http://www.kvm.la/910.html
1.以 root 身份登录，首先罗列出所有可用的python 替代版本信息update-alternatives --list python 这一步可能会报错update-alternatives: error: no alternatives for python2.如果出现以上所示的错误信息，则表示 Python 的替代版本尚未被update-alternatives 命令识别。想解决这个问题，我们需要更新一下替代列表，将python2.7 和 python3.6 放入其中。update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1 update-alternatives --install /usr/bin/python python /usr/bin/python3.6 2 最后的1、2、3...代表序号，后面会有用3.再次列出可用的 Python 替代版本update-alternatives --list python 4.我们就可以使用下方的命令随时在列出的 Python 替代版本中任意切换了update-alternatives --config python 顺手安装pip3sudo apt-get install python3-pip
1.1 系统环境Centos7.7.1908 PowerDNS 4.4.0 MariaDB 10.4 PowerDNS官方源 https://repo.powerdns.com/PowerDNS文档 https://doc.powerdns.com/authoritative/2.1 安装PowerDNS#添加PowerDNS官方源 yum install -y epel-release yum-plugin-priorities curl -o /etc/yum.repos.d/powerdns-auth-master.repo https://repo.powerdns.com/repo-files/centos-auth-master.repo yum install -y pdns pdns-backend-mysql.x86_64 #修改前备份配置文件 cp /etc/pdns/pdns.conf /etc/pdns/pdns.conf.bak #赋予权限，否则PowerDNS无法启动 chown pdns. /etc/pdns/pdns.conf 2.2 修改配置文件，添加以下内容vim /etc/pdns/pdns.conf launch=gmysql gmysql-host=127.0.0.1 gmysql-user=root gmysql-dbname=pdns gmysql-password=123456 api=yes api-key=123456 webserver=yes # ttl default-ttl=3002.3 启动PowerDNS（日志在message中）systemctl start pdns systemctl enable pdns systemctl status pdns.service2.4 开放DNS服务端口firewall-cmd --zone=public --add-port=53/tcp --permanent firewall-cmd --zone=public --add-port=53/udp --permanent firewall-cmd --reload 3.1 安装MariaDB10.4Centos7仓库最新版5.5，需要手动添加新版10.4到仓库。vim /etc/yum.repos.d/Mariadb.repo# MariaDB 10.4 CentOS repository list - created 2020-04-06 18:11 UTC # http://downloads.mariadb.org/mariadb/repositories/ [mariadb] name = MariaDB baseurl = http://yum.mariadb.org/10.4/centos7-amd64 gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck=1 yum clean all yum makecache all yum install -y mariadb-server mariadb 3.2 添加以下内容，配置MariaDB的字符集为UTF-8vim /etc/my.cnf [mysqld] init_connect='SET collation_connection = utf8_unicode_ci' init_connect='SET NAMES utf8' character-set-server=utf8 collation-server=utf8_unicode_ci skip-character-set-client-handshake vim /etc/my.cnf.d/client.cnf [client] default-character-set=utf8 vim /etc/my.cnf.d/mysql-clients.cnf [mysql] default-character-set=utf8 3.3 启动MariaDBsystemctl start mariadb systemctl enable mariadb systemctl status mariadb 3.4 初始化MariaDBmysql_secure_installation 回车, N, Y, #设置root密码 root密码, 重复root密码, Y, #删除匿名登入 Y, #禁用root远程登入 Y, #删除test库 Y, #刷新权限 3.5 初始化PowerDNS数据库mysql -u root -p #先确认已设置UTF-8编码 mysql > show variables like "%character%"; mysql > create database pdns; mysql > use pdns; CREATE TABLE domains ( id INT AUTO_INCREMENT, name VARCHAR(255) NOT NULL, master VARCHAR(128) DEFAULT NULL, last_check INT DEFAULT NULL, type VARCHAR(6) NOT NULL, notified_serial INT UNSIGNED DEFAULT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX name_index ON domains(name); CREATE TABLE records ( id BIGINT AUTO_INCREMENT, domain_id INT DEFAULT NULL, name VARCHAR(255) DEFAULT NULL, type VARCHAR(10) DEFAULT NULL, content VARCHAR(64000) DEFAULT NULL, ttl INT DEFAULT NULL, prio INT DEFAULT NULL, disabled TINYINT(1) DEFAULT 0, ordername VARCHAR(255) BINARY DEFAULT NULL, auth TINYINT(1) DEFAULT 1, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX nametype_index ON records(name,type); CREATE INDEX domain_id ON records(domain_id); CREATE INDEX ordername ON records (ordername); CREATE TABLE supermasters ( ip VARCHAR(64) NOT NULL, nameserver VARCHAR(255) NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (ip, nameserver) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE TABLE comments ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, name VARCHAR(255) NOT NULL, type VARCHAR(10) NOT NULL, modified_at INT NOT NULL, account VARCHAR(40) CHARACTER SET 'utf8' DEFAULT NULL, comment TEXT CHARACTER SET 'utf8' NOT NULL, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX comments_name_type_idx ON comments (name, type); CREATE INDEX comments_order_idx ON comments (domain_id, modified_at); CREATE TABLE domainmetadata ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, kind VARCHAR(32), content TEXT, PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainmetadata_idx ON domainmetadata (domain_id, kind); CREATE TABLE cryptokeys ( id INT AUTO_INCREMENT, domain_id INT NOT NULL, flags INT NOT NULL, active BOOL, published BOOL DEFAULT 1, content TEXT, PRIMARY KEY(id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE INDEX domainidindex ON cryptokeys(domain_id); CREATE TABLE tsigkeys ( id INT AUTO_INCREMENT, name VARCHAR(255), algorithm VARCHAR(50), secret VARCHAR(255), PRIMARY KEY (id) ) Engine=InnoDB CHARACTER SET 'latin1'; CREATE UNIQUE INDEX namealgoindex ON tsigkeys(name, algorithm); 建议您还添加以下MySQL语句。这些将在表中添加外键约束，以便在从域表中删除域时自动删除记录，密钥材料和其他信息。这些仅适用于InnoDB存储引擎，但是，如果您到目前为止已遵循我们的指南，则正是我们正在使用的引擎。以下SQL可以完成这项工作：mysql> use pdns; ALTER TABLE records ADD CONSTRAINT `records_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE comments ADD CONSTRAINT `comments_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE domainmetadata ADD CONSTRAINT `domainmetadata_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; ALTER TABLE cryptokeys ADD CONSTRAINT `cryptokeys_domain_id_ibfk` FOREIGN KEY (`domain_id`) REFERENCES `domains` (`id`) ON DELETE CASCADE ON UPDATE CASCADE; 4.1 安装PowerDNS-Admin官方教程：https://github.com/ngoduykhanh/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Centos-7#安装Python3.6 + pip yum install -y https://centos7.iuscommunity.org/ius-release.rpm yum install -y python36u python36u-devel python36u-pip pip3.6 install -U pip pip install -U virtualenv rm -f /usr/bin/python3 && ln -s /usr/bin/python3.6 /usr/bin/python3 # 安装构建Python库所需包 1）如果使用 Centos 默认的 mariadb 5.5 版本，安装如下： yum install -y gcc mariadb-devel openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel 2）如果使用mariadb 10.x 版本，安装如下： yum install -y gcc MariaDB-devel MariaDB-shared openldap-devel xmlsec1-devel xmlsec1-openssl libtool-ltdl-devel # 安装 Nodejs 10 curl -sL https://rpm.nodesource.com/setup_10.x | bash - curl -sL https://dl.yarnpkg.com/rpm/yarn.repo -o /etc/yum.repos.d/yarn.repo yum install -y yarn yum install -y python-virtualenv yum install -y gcc-c++ make #创建Python3 virtualenv环境 yum install -y git git clone https://github.com/ngoduykhanh/PowerDNS-Admin.git /opt/web/powerdns-admin cd /opt/web/powerdns-admin virtualenv -p python3 flask #激活Python3环境并安装Python库（后续操作都是基于Python3 环境下操作） source ./flask/bin/activate pip install python-dotenv pip install -r requirements.txt 4.2 修改关于数据库的连接信息vim /opt/web/powerdns-admin/powerdnsadmin/default_config.py ### DATABASE CONFIG SQLA_DB_USER = 'root' SQLA_DB_PASSWORD = '123456' SQLA_DB_HOST = '127.0.0.1' SQLA_DB_NAME = 'pdns' #导出 export FLASK_CONF=../configs/development.py #然后运行以下命令创建数据库模式： export FLASK_APP=powerdnsadmin/__init__.py flask db upgrade yarn install --pure-lockfile flask assets build 删掉关于debug字段vim run.py#!/usr/bin/env python3 from powerdnsadmin import create_app if __name__ == '__main__': app = create_app() app.run(host=app.config.get('BIND_ADDRESS', '127.0.0.1'), port=app.config.get('PORT', '9191'))4.3 开放WEB端口firewall-cmd --zone=public --add-port=9191/tcp --permanent firewall-cmd --reload #查看是否生效 yum install -y net-tools netstat -lnpt 4.4 启动PowerDNS-Admin#测试运行 查看输出是否正常 cd /opt/web/powerdns-admin/ ./run.py #开机自启 chmod +x /etc/rc.d/rc.local vim /etc/rc.local source /opt/web/powerdns-admin/flask/bin/activate export FLASK_CONF=/opt/web/powerdns-admin/configs/development.py export FLASK_APP=/opt/web/powerdns-admin/powerdnsadmin/__init__.py /opt/web/powerdns-admin/run.py /opt/web/powerdns-admin/powerdns-admin-log 2>&1 & 4.5 设置PowerDNS-Admin访问http://IP:9191 注册新用户首个注册用户会默认加权为管理员填入2.2步骤中设置的API KEY等信息当与后端PowerDNS通讯正常时，可以在控制面板中看到PowerDNS Uptime参考https://github.com/ngoduykhanh/PowerDNS-Admin/wiki/Running-PowerDNS-Admin-on-Centos-7https://www.cnblogs.com/weavepub/p/11152919.htmlhttps://boke.wsfnk.com/archives/787.html
现在的CPU耗电很大，按需调节CPU频率对普通桌面及移动设备节能有重要的意义，目前多数Linux发行版都已经默认启用了这个功能，但在一些像数据库，集群系统等特别需要CPU高性能的服务器环境中，Linux提供的这种对CPU频率调节的功能对CPU性能使用受到一些限制，不利于系统性能的更好发挥。为此需要Linux系统管理员进行必要相关参数优化及设置来确保CPU性能最大化。本文将针对应用中常见的RedHat6、7系列及Debian Gnu/Linux 8系列中CPU频率调整工具的使用进行描述，以方便Linux用户进行该方面工作的优化。在Linux中，内核的开发者定义了一套框架模型来完成CPU频率动态调整这一目的，它就是CPU Freq系统。尽管在各个Linux发行版中，前端软件稍有差异，但其最终都会通过Linux内核的CPU Freq系统来实现CPU频率动态调整的功能。这些软件都会提供如下CPU模式（governor参数）：ondemand：系统默认的超频模式，按需调节，内核提供的功能，不是很强大，但有效实现了动态频率调节，平时以低速方式运行，当系统负载提高时候自动提高频率。以这种模式运行不会因为降频造成性能降低，同时也能节约电能和降低温度。一般官方内核默认的方式都是ondemand。interactive：交互模式，直接上最高频率，然后看CPU负荷慢慢降低，比较耗电。Interactive 是以 CPU 排程数量而调整频率，从而实现省电。InteractiveX 是以 CPU 负载来调整 CPU 频率，不会过度把频率调低。所以比 Interactive 反应好些，但是省电的效果一般。conservative：保守模式，类似于ondemand，但调整相对较缓，想省电就用他吧。Google官方内核，kang内核默认模式。smartass：聪明模式，是I和C模式的升级，该模式在比interactive 模式不差的响应的前提下会做到了更加省电。performance：性能模式！只有最高频率，从来不考虑消耗的电量，性能没得说，但是耗电量。powersave 省电模式，通常以最低频率运行。userspace：用户自定义模式，系统将变频策略的决策权交给了用户态应用程序，并提供了相应的接口供用户态应用程序调节CPU 运行频率使用。也就是长期以来都在用的那个模式。可以通过手动编辑配置文件进行配置Hotplug：类似于ondemand, 但是cpu会在关屏下尝试关掉一个cpu，并且带有deep sleep，比较省电。在进行CPU频率优化之前，我们首先需要使用命令：lsmod | grep "acpi_cpufreq" 查看内核是否加载了acpi_cpufreq模块，如果加载了此模块，按照一般情况发行版都会将CPU设置为 “ondemand”模式。之后可以通过命令：cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies 来进一步确认CPU节能模式，但此时用户无法进行修改，需要进行修改必须使用命令安装cpufreq管理软件，在Debian Gnu/Linux下使用如下命令：apt-get install cpufrequtils 在RedHat6以下版本中使用如下命令：yum install cpuspeed 在RedHat7系列版本中使用如下命令：yum install kernel-tools 之后我们就可以通过修改相应系统所在配置文件，Debian Gnu/Linux 8、RedHat6以下版本、RedHat7系列版本cpufreq管理软件配置文件分别为：/etc/init.d/cpufrequtils、/etc/sysconfig/cpuspeed、/etc/sysconfig/cpupower 修改Debian Gnu/Linux 8配置文件中：GOVERNOR="ondemand" 为： GOVERNOR="performance" RedHat6以下版本配置文件中：GOVERNOR 为 GOVERNOR=performance RedHat7系列版本配置文件中：CPUPOWER_STOP_OPTS=”frequency-set -g ondemand” 为： CPUPOWER_STOP_OPTS=”frequency-set -g performance” 在Debian Gnu/Linux 8、RedHat6一下版本、RedHat7系列版本中分别执行：/etc/init.d/cpufrequtils restart /etc/init.d/cpuspeed restart systemctl restart cpupower.service 命令即可重启相关cpufreq管理软件。从 kernel 3.9 开始，名为 pstate 的新的功率驱动程序将会在以下的驱动程序之前自动为现代的 Intel CPU 启用。该驱动会优先于其他的驱动程序，因为它是内置驱动，而不是作为一个模块来加载。该驱动自动作用于 Sandy Bridge 和 Ivy Bridge 这两个类型的 CPU,在该模式下CPU只能被设置成performance或者powersave模式。如果您在使用这个驱动的时候遇到问题，建议您在 Grub 的内核参数中对其禁用（即修改 /etc/default/grub 文件，在 GRUB_CMDLINE_LINUX_DEFAULT= 后添加 intel_pstate=disable）测试是否生效#让CPU占用率达到100％ for i in `seq 1 $(cat /proc/cpuinfo |grep "physical id" |wc -l)`; do dd if=/dev/zero of=/dev/null & done #查看 CPU 目前频率 cat /proc/cpuinfo | grep -i "cpu mhz" #查看 CPU 核心的实时频率： watch -n 1 "cat /proc/cpuinfo | grep MHz" #结束测试 pkill -9 dd
首先检查 KVM host（宿主机/母机）上的kvm_intel模块是否打开了嵌套虚拟机功能（默认未开启的）：root@localhost:~# modinfo kvm_intel | grep nested parm: nested:bool root@localhost:~# cat /sys/module/kvm_intel/parameters/nested N root@localhost:~# 如果上面的显示结果是 N 的话需要开启 nested：root@localhost:~# modprobe -r kvm-intel root@localhost:~# modprobe kvm-intel nested=1 root@localhost:~# cat /sys/module/kvm_intel/parameters/nested Y 如果提示下面的报错，则说明宿主机中有KVM虚拟机正在运行，全部关机后再操作。modprobe: FATAL: Module kvm_intel is in use.
新版本Directadmin已经支持4个版本的PHP共存，需搭配CustomBuild 2.0实现。cd /usr/local/directadmin/custombuild ./build set php1_mode mod_php ./build set php2_mode mod_php ./build set php3_mode mod_php ./build set php4_mode mod_php ./build set php1_release 5.6 ./build set php2_release 7.0 ./build set php3_release 7.2 ./build set php4_release 7.3 ./build php n ./build rewrite_confs