笔记本服务器改造踩坑

栏目: 服务器 · 发布时间: 6年前

内容简介:公司入职发了台 16G 内存的惠普笔记本,买了 Mac 之后一直闲置,在拖延许久之后终于抽时间将其换成 CentOS,来搞一些自己的服务放上面,毕竟 16G 内存还是很可观的配置。本篇讲述折腾过程。安装过程就不多说了,需要注意的就是关闭安全启动,启用传统模式(事实上启用之后是 UEFI 和传统模式混用,这种情况下 CentOS 会自动以 UEFI 模式进行安装)。这里有一个坑点在于如果在安装过程中选择无线连接,在安装完之后该连接无法启用。因为选择了最小化安装,网络管理相关的依赖是残缺的,所以需要在安装之后

公司入职发了台 16G 内存的惠普笔记本,买了 Mac 之后一直闲置,在拖延许久之后终于抽时间将其换成 CentOS,来搞一些自己的服务放上面,毕竟 16G 内存还是很可观的配置。本篇讲述折腾过程。

安装 CentOS

安装过程就不多说了,需要注意的就是关闭安全启动,启用传统模式(事实上启用之后是 UEFI 和传统模式混用,这种情况下 CentOS 会自动以 UEFI 模式进行安装)。这里有一个坑点在于如果在安装过程中选择无线连接,在安装完之后该连接无法启用。因为选择了最小化安装,网络管理相关的依赖是残缺的,所以需要在安装之后手动修复。

命令行模式下的网络连接

首先查看网络设备:

[root@localhost ~]# nmcli dev status
DEVICE  TYPE      STATE        CONNECTION
wlp2s0  wifi      unmanaged    --
enp1s0  ethernet  unavailable  --
lo      loopback  unmanaged    --

证明无线网卡没有被管理,需要将其纳入网络管理。

安装 NetworkManager-wifi 包重启即可,由于在安装过程中连接过无线网,那么在 /etc/sysconfig/network-scripts 目录下可以看到 ifcfg-[SSID] 的配置文件,那么重启之后会用该文件连接 wifi 网络。

没有网络怎么安装依赖包呢?挂安装光盘起本地镜像就好,在 /etc/yum.repos.d/CentOS-Media.repo 中指定了本地镜像源的挂载位置,挂在到相应位置启用即可。

设置公网访问

电信提供公网 IP,在路由器中将该电脑设备设置为 DMZ 区设备即可利用公网 IP 访问,需要注意的是启用 DHCP 的话内网 IP 可能变化,要在路由器配置中将特定的固定 IP 地址与设备 MAC 进行绑定,如此便确保 DMZ 区的设备始终为该电脑设备。

休眠问题

笔记本电脑合盖之后会自动休眠,需要进行配置,使其在合盖操作时依然保持运行状态。

编辑 /etc/systemd/logind.conf 文件,找到如下部分:

[Login]
#NAutoVTs=6
#ReserveVT=6
#KillUserProcesses=no
#KillOnlyUsers=
#KillExcludeUsers=root
#InhibitDelayMaxSec=5
HandlePowerKey=ignore # 按电源键时不做任何处理
#HandleSuspendKey=suspend
#HandleHibernateKey=hibernate
HandleLidSwitch=ignore # 合上盖子时不做任何处理
#HandleLidSwitchDocked=ignore
#PowerKeyIgnoreInhibited=no
#SuspendKeyIgnoreInhibited=no
#HibernateKeyIgnoreInhibited=no
#LidSwitchIgnoreInhibited=yes
#IdleAction=ignore
#IdleActionSec=30min
#RuntimeDirectorySize=10%
#RemoveIPC=no
#UserTasksMax=

这里对该文件有详细的描述: https://www.freedesktop.org/software/systemd/man/logind.conf.html

到这里应该已经 OK 了,但是合上盖子后发现,即使通过局域网内进行 ssh 连接操作,都异常卡顿,网络连接非常慢。然而确实是可以连接上去的,服务器并没有休眠。这就让我开始怀疑除了上述控制休眠的设定之外,还有其他配置,猜测是由于电源管理的问题引起的。

由电源管理着手,搜寻资料,找到了一份 《Red Hat Enterprise Linux 7 电源管理指南》 。在其中发现了管理无线设备的工具,RFKill。此处引用原文介绍:

很多计算机系统包含无线电传输,其中包括 Wi-Fi、蓝牙和 3G 设备。这些设备消耗电源,在不使用这些设备时是一种浪费。

RFKill 是 Linux kernel 中的一个子系统,它可提供一个界面,在此界面中可查询、激活并取消激活计算机系统中的无线电传输。当取消激活传输时,可使其处于可被软件重新激活的状态(即“软锁定”)或者将其放在软件无法重新激活的位置(即“硬锁定”)。

刚开始以为这就是原因,后来才发现该软件包和 BIOS 设定中的启用硬件设备一样,都是为了在电脑运行时停止启用某些设备。

[root@localhost yum.repos.d]# rfkill list
0: hci0: Bluetooth
	Soft blocked: no
	Hard blocked: no
1: phy0: Wireless LAN
	Soft blocked: no
	Hard blocked: no
2: hp-wifi: Wireless LAN
	Soft blocked: no
	Hard blocked: no

要么启用,要么禁用。这跟合上盖子启用网卡节能的现象不太相符。后来同样在该手册中,我发现了ASPM(Active-State Power Management,活动状态电源管理)。

ASPM(Active-State Power Management,活动状态电源管理)能节省 PCI Express(PCIe,Peripheral Component Interconnect Express)子系统的电量,其原理为当 PCIe 连接没有处于使用状态时将其设定为低功率状态。ASPM 可以同时控制连接两端的电源状态,并且在连接终端的设备处于满电状态的情况下,仍然可以节电。

看描述和我遇到的问题比较相符,在如下文件中可以看到 ASPM 的策略配置。

[root@localhost yum.repos.d]# cat /sys/module/pcie_aspm/parameters/policy
[default] performance powersave

在默认情况下,ASPM 是默认状态(default),即根据固件设置设定 PCIe 连接的状态。在上述文件中去直接更改设置是不可以的,修改的话系统会报写保护,手册中提到可以在启动时作为内核参数配置,参考 《在 CentOS 7 上设置 grub2》 尝试之:

[root@localhost yum.repos.d]# cat /etc/default/grub
GRUB_TIMEOUT=5
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="console"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet pcie_aspm=off"
GRUB_DISABLE_RECOVERY="true"

核心参数就是 pcie_aspm=off 。重启之后测试,立竿见影,当我觉得问题解决的时候。过了一个小时,又歇菜了,又开始陷入了卡顿。

这时考虑,可能默认的固件设置还是会生效,只是相比较系统的设置而言没那么严格,遂决定尝试更改策略,而不是完全禁用。将 GRUB 配置中改为:

GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet pcie_aspm.policy=performance"

一切运行 OK,只能说服务器发行版运行于个人 PC 时,还是有或多或少的水土不服的。

配置免密登录

事实上 CentOS 7.4 之后,使用了 ssh 2.0 版本的协议,无需手动配置 sshd_config 来启用免密登录,默认是启用的。如果像之前那样配置 RSAAuthentication yes 选项,会在 /var/log/secure 记录中看到如下提示:

Nov 17 14:47:06 localhost sshd[11773]: reprocess config line 43: Deprecated option RSAAuthentication

此次设置公钥之后,仍然无法登录,搜索资料有说是 SELinux 引起的,关闭 SELinux 仍然无法免密登录。查找许久后发现是我本地的 ssh 连接配置出现了问题。

Host 192.168.1.*
  HostName %h
  User root
  IdentityFile ~/.ssh/xxx

我的局域网连接恰好和该 ip 段重复,所以一直使用错误的密钥文件进行连接。

添加了一条特殊的 ip 配置之后,问题解决,由此也说明 ssh 的 config 文件配置具体 ip 的优先级要高于表达式匹配,无所谓配置在文件中的先后顺序。

至此,便可以快乐的玩耍这台小鸡了。

-EOF-


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Node.js in Action

Node.js in Action

Mike Cantelon、Marc Harter、TJ Holowaychuk、Nathan Rajlich / Manning Publications / 2013-11-25 / USD 44.99

* Simplifies web application development * Outlines valuable online resources * Teaches Node.js from the ground up Node.js is an elegant server-side JavaScript development environment perfect for scal......一起来看看 《Node.js in Action》 这本书的介绍吧!

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具