华为云用户手册

  • 操作场景 使用GPU加速型云服务器时,需确保已安装Tesla驱动和CUDA工具包,否则无法实现计算加速功能。本节内容提供Tesla驱动及CUDA工具包下载地址,请根据实例的类型,选择具体的驱动版本。 Tesla驱动及CUDA工具包安装操作指导请参考GPU加速型实例安装Tesla驱动及CUDA工具包。 当前已支持使用自动化脚本安装GPU驱动,建议优先使用自动安装方式,脚本获取以及安装指导请参考(推荐)GPU加速型实例自动安装GPU驱动(Linux)和(推荐)GPU加速型实例自动安装GPU驱动(Windows)。 GPU虚拟化型实例,需要严格按照表1选择合适的驱动版本下载使用。
  • 步骤2:检查S CS I驱动 登录弹性云服务器。 打开“运行”对话框,输入“regedit”进入注册表编辑器。 在注册表中找到以下路径:Computer\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\vioscsi 查看该目录下是否存在“StartOverride”项。 若注册表该路径下只有“Enum”和“Parameters”项,则无需修改。 图2 注册表 若注册表该路径下存在“StartOverride”项,请执行步骤4。 修改“StartOverride”项中类型为“REG_DWORD”,数据为“3”的字段修改为“0”。 图3 “StartOverride”项 图4 修改“REG_DWORD”数据 重启弹性云服务器。 再次执行步骤2~步骤3,检查注册表路径下是否存在“StartOverride”项。 若该路径下只有“Enum”和“Parameters”项,则表示修改成功。
  • 切换其他语言的输入法 以Windows 2008操作系统云服务器,切换日语输入法为例,: 登录云服务器,打开“控制面板”。 单击“区域和语言”选项。 图7 区域和语言 选择“键盘和语言”标签,并单击“更改键盘”。 图8 键盘和语言 打开“文本服务和输入语言”对话框,在“常规”标签中单击“添加”。 图9 文本服务和输入语言 在弹出的“添加输入语言”对话框中,找到“日语(日本)”。 图10 添加输入语言 双击“日语(日本)”展开,双击“键盘”子项展开,勾选“Microsoft IME”和“日语”,单击“确定”,分别再单击“应用”和“确定”保存修改后退出。 图11 选择日语
  • 排查思路 如果打开网站有报错提示信息,首先应该根据报错提示信息,排查可能的原因。 您可以参考通用请求返回值中错误码说明排查可能原因。 如果报错提示信息无法帮助您准确定位问题,请记录资源信息和问题时间,然后单击提交工单,填写工单信息,获取技术支持。 你还可以根据以下排查思路进行问题定位,排查思路根据可能原因的出现概率进行排序,建议您从高频率原因往低频率原因排查,从而帮助您快速找到问题的原因。 如果解决完某个可能原因仍未解决问题,请继续排查其他可能原因。 图1 网站无法访问排查思路 表1 网站无法访问排查思路 可能原因 处理措施 检查端口通信 检查Web端口是否正常监听,详细操作请参考检查端口通信问题。 检查安全组规则 检查安全组是否放通Web端口,详细操作请参考检查安全组规则。 检查防火墙配置 测试防火墙关闭后是否可以正常访问,详细操作请参考检查防火墙配置。 检查云服务器路由配置 查看云服务器路由表中网关信息配置是否正确,详细操作请参考检查云服务器路由配置。 检查本地网络 更换手机热点或其他网络测试是否可以正常访问,详细操作请参考检查本地网络。 检查云服务器CPU利用率 定位影响云服务器CPU利用率高的进程并优化进程,详细操作请参考检查云服务器CPU利用率。 检查域名解析(适用于域名访问的场景) 域名解析配置是否配置正确,详细操作请参考检查备案与域名解析是否正常(使用域名无法访问时适用)。 检查域名备案(适用于域名访问的场景) 网站的域名和服务器IP是否备案成功,详细操作请参考检查备案与域名解析是否正常(使用域名无法访问时适用)。
  • 检查端口通信问题 确保服务进程和端口正常工作,处于LISTEN状态。表2为常见TCP状态。 Linux操作系统云服务器端口通信问题排查 使用netstat -antp命令检查服务的状态,确认端口是否正常监听。 例如:netstat -ntulp |grep 80 图2 查看端口监听状态_linux 如果端口被正常监听,请执行检查安全组规则。 如果端口没有被正常监听,请检查Web服务进程是否启动或者正常配置。 Windows操作系统云服务器端口通信问题排查 使用远程端口检测命令: 打开CMD命令行窗口。 执行netstat -ano | findstr “端口”命令查看进程使用的端口号。 例如:netstat -ano | findstr “80” 图3 查看端口监听状态_windows 如果端口被正常监听,请执行检查安全组规则。 如果端口没有被正常监听,请检查Web服务进程是否启动或者正常配置。 表2 常见TCP状态 TCP状态 说明 对应场景 LISTEN 侦听来自远方的TCP端口的连接请求 正常TCP服务端 ESTABLISHED 代表一个打开的连接 正常TCP连接 TIME-WAIT 等待足够的时间以确保远程TCP接收到连接中断请求的确认 已关闭的TCP连接,一般1分钟后清除。 CLOSE-WAIT 等待从本地用户发来的连接中断请求 应用程序BUG,没有关闭socket。出现在网络中断后。一般是进程死循环或等待其他条件。可以重启对应进程。 FIN-WAIT-2 从远程TCP等待连接中断请求 网络中断过,需要12分钟左右自行恢复。 SYN-SENT 再发送连接请求后等待匹配的连接请求 TCP连接请求失败。一般是服务端CPU占用率过高,处理不及时导致。DDos攻击也会出现此情况。 FIN-WAIT-1 等待远程TCP连接中断请求,或先前的连接中断请求的确认 网络中断过,此状态可能不会自行修复(等15分钟以上确认),如果长期占用端口需要重启OS恢复。
  • 检查云服务器路由配置 Linux操作系统云服务器 使用route命令查看路由策略,确保0.0.0.0的默认路由指向网关,使用的IP和网关在相同网段,如下图第1行和第3行所示。 使用ifconfig或者ip addr命令查看实例的IP地址。 图4 ifconfig命令查看IP地址 图5 ip addr命令查看IP地址 使用route -n命令通过路由表查看网关。 图6为示例,具体以云服务器网关实际地址为准。 图6 route -n命令查看网关
  • 检查云服务器CPU利用率 云服务器的带宽和CPU利用率过高可能导致网站无法访问。如果您已经通过 云监控服务 创建过告警任务,当CPU或带宽利用率高时,系统会自动发送告警给您。 定位影响云服务器带宽和CPU利用率高的进程。 Windows操作系统本身提供了较多工具可以定位问题,包括任务管理器、性能监视器(Performance Monitor)、资源监视器(Resource Monitor)、Process Explorer、Xperf (Windows server 2008 以后)和抓取系统Full Memory Dump检查。 Linux操作系统执行top命令查看当前系统的运行状态。 问题处理:排查进程是否正常,并分类进行处理。 正常进程:优化程序,或变更云服务器的配置。 异常进程:建议您手动关闭进程,您也可以借助第三方工具关闭进程。
  • 检查备案与域名解析是否正常(使用域名无法访问时适用) 完成上述的排查后,请使用弹性公网IP进行访问。如果使用IP地址可以访问,但是域名访问失败,则可能是域名备案或者解析相关问题造成网站无法访问。 网站的访问与域名的状态、域名实名认证状态、网站备案状态、解析是否生效、网站网络环境等多个环节有关系。在这些环节中,任意一个环节出现问题,都会导致网站无法访问。 关于域名与备案解析的排查思路请参考网站无法访问排查思路(排查域名与备案解析)。 检查域名备案。 备案是中国大陆的一项法规,网站的域名和服务器IP需要进行备案,备案成功后您的域名才可以指向服务器开通访问。 如果您使用中国大陆节点服务器提供互联网信息服务,需要先在服务器提供商处提交备案申请,备案成功后域名才可以指向服务器开通访问。如何备案? 如果您使用的是中国大陆地区以外的服务器(包括中国港澳台及其他国家、地区)提供互联网信息服务,无需备案。 如果您的域名已在其他接入商办理过备案并取得备案号,现在更换到华为云服务器进行域名解析(或者二级域名指向华为云),因接入商有变更,需要您在华为云做接入备案。 请确保网站内容与备案信息一致,且备案信息真实有效。 如果您的网站已备案成功仍无法访问,请等待一个工作日。由于信息同步延迟,备案通过一个工作日后网页会自动开放。 检查域名解析。 如果域名已备案,但未正确配置域名解析也可能会导致域名无法Ping通。 您可以DNS服务控制台查看域名解析详情。 检查DNS服务器配置。 如果ping 域名显示找不到主机可能是DNS服务器速度慢,导致的访问卡顿,建议您参考案例:弹性云服务器访问中国大陆外网站时加载缓慢怎么办?进行优化。
  • 激活服务器 登录云服务器,打开RD授权管理器选择服务器,单击右键选择“激活服务器”。 图11 激活服务器 在激活服务器向导中单击“下一步 ”。 图12 激活服务器向导 在连接方法处选择Web浏览器,然后单击“下一步”。 图13 选择Web浏览器 输入许可服务器ID,然后单击“下一步”。 许可服务器ID为步骤9中获取的ID。 图14 输入许可服务器ID 选择立即启动许可安装向导,单击“下一步”。 图15 启动许可安装向导 输入许可密钥包ID,单击“下一步”。 密钥包ID为步骤12中获取的密钥包ID。 图16 许可密钥包ID 服务器许可证激活向导完成,单击“完成”。
  • 操作步骤 在云服务器右下方的网络图标处,右键单击“打开网络和共享中心”。 图1 打开网络和共享中心 单击“更改高级共享设置”分别开启“专用”和“来宾公用”的“启用文件和打印机共享”,单击“保存更改” 图2 启用或关闭系统图标 在cmd窗口执行命令services.msc,找到TCP/IP NetBIOS Helper服务,并设置为开启。 若服务处于“禁用”状态,则右键属性,将服务设为“自动”或者“手动”,然后开启服务。 图3 开启TCP/IP NetBIOS Helper
  • 处理方法 通过策略路由让访问扩展网卡的流量从扩展网卡发出,方法如下: 执行以下命令,编辑文件rt_tables。 vi /etc/iproute2/rt_tables 添加一个route table的别名,如test。 保存后退出。 执行以下命令,在test表中添加路由。 ip route add default via 扩展网卡网关 dev eth1 table 步骤1中添加的表名 例如: ip route add default via 192.168.166.1 dev eth1 table test 执行以下命令,添加策略路由。 ip rule add from 扩展网卡IP地址 lookup 步骤1中添加的表名 prio 低于32766,优先级高于main表 例如: ip rule add from 192.168.166.22 lookup test prio 32000 至此,两块网卡上的公网IP应该都可以访问了。如果要持久化这个规则,可以将上述语句添加到开机脚本“/etc/rc.local”中。
  • 根因分析 执行以下命令,查看系统内核是否开启了TIME_WAIT快速回收和重利用策略 # sysctl -a |grep tcp_tw 如图1所示,确认已开启该策略。 图1 TIME_WAIT 由于服务端开启了TIME_WAIT快速回收和重利用策略导致,即启用了net.ipv4.tcp_tw_recycle或者net.ipv4.tcp_tw_reuse。系统默认是不启用该功能。 客户端通常在NAT环境下,多台终端使用同一个公网ip,无法实现服务端与客户端的一对一连接。如果开启此参数服务端会回收处于TIME_WAIT状态的TCP连接,导致连接断开。
  • 处理方法 执行以下命令,确认dhclient是否运行。 # ps -ef |grep dhclient |grep -v grep 如果未找到dhclient进程,则确认dhclient进程未运行,执行以下命令,继续排查NetworkManager是否运行。 # systemctl status NetworkManager 如果NetworkManager的状态为Active: inactive (dead),则NetworkManager未启动,执行以下命令,检查该服务是否开机自启。 # systemctl is-enabled NetworkManager 结果为disabled则确认为NetworkManager未设置开机自启导致,执行以下命令进行恢复。 # systemctl enable NetworkManager && systemctl start NetworkManager 如果NetworkManager的状态为Active: active (running),执行以下命令查看网卡设备是否被NetworkManager管理。 # nmcli device status 如果显示该网卡为的STATE为unmanaged,则该网卡设备未被NetworkManager管理,执行以下命令进行恢复。 # nmcli device set eth0 managed yes 执行以下命令重启NetworkManager。 # systemctl restart NetworkManager 执行以下命令查看ip是否已经获取。 # ip add
  • 方法一:通过编辑sshd配置文件实现允许或者禁止指定用户/用户组或者IP登录 允许指定用户进行登录(白名单) 在/etc/ssh/sshd_config 配置文件中设置AllowUsers选项,在配置文件末尾添加行格式如下(例如允许用户test通过192.168.1.2登录)。 AllowUsers test@192.168.1.2 配置了指定用户或者用户组允许登录后,默认拒绝其他所有用户或者用户组。 禁止指定用户登录(黑名单) 在 /etc/ssh/sshd_config 配置文件中设置DenyUsers选项,在配置文件末尾添加行格式如下(例如禁止用户testuser登录)。 DenyUsers testuser 上述修改需要重启sshd服务。 CentOS 6系列执行以下命令进行重启: # service sshd restart Centos 7/EulerOS系列执行以下命令进行重启: # systemctl restart sshd
  • 方法二:使用DenyHosts允许或者禁止指定IP通过SSH登录 linux 服务器通过设置 /etc/hosts.allow 和 /etc/hosts.deny 这个两个文件,可以限制或者允许某个或者某段IP地址远程SSH登录服务器.方法比较简单,具体如下: 允许192.168.1.3 这个IP地址ssh登录,打开/etc/hosts.allow,添加如下行: sshd: 192.168.1.3 禁止所有ip通过ssh登录,打开/etc/hosts.deny,添加如下行: sshd:ALL hosts.allow 和hosts.deny 两个文件同时设置规则的时候,hosts.allow 文件中的规则优先级高,假设按照上述方法设置后服务器只允许192.168.1.3这个IP地址的SSH登录,其它的 IP 都会拒绝。
  • 处理方法 执行以下命令,排查磁盘的物理空间是否已满。 # df -h 图1 检查磁盘物理空间 如图1所示,磁盘空间还有剩余,排除物理磁盘空间已满的情形 执行以下命令,查看系统可用的inode节点使用率。 # df -i 当结果中的Use%为100%时则为inode耗尽,可以执行以下的操作步骤释放inode。 执行以下命令,将所有在目录文件进行归档。 # tar czvf /tmp/backup.tar.gz /home/data 删除对应目录下确认不需要的文件释放inode。
  • 定位过程 查看客户端DHCP请求记录 # grep -E "dhclient|DHCP" /var/log/messages 图2 DHCP请求记录 dhclient续租记录显示在5月12日重新续租成功(当时正确的时间为4月26日,系统时间是被手动修改过)。 dhclient记录下一次续租发生在33696秒后(约9小时21分,通常为租约的1/2时发出续租请求),即下次续租发生在5月12日21点21分左右。 也可以通过查询dhclient租约信息记录文件,每一次续租成功都会记录在该文件中。执行以下命令查询文件的保存路径(文件以.lease结尾)。 # ps -ef |grep dhclient 继续查看系统日志(messages)发现在续租后的5小时14分后系统时间发生跳变,回退至4月26日,但是由于下次续租请求发生在16天后,但是在9小时后未发出续租请求,租约到期后ip被DHCP服务端回收,导致ip丢失。 # grep "Time has been changed" /var/log/messages 图3 系统日志
  • 带宽使用率高问题分析 如果是正常业务访问以及正常应用进程导致的带宽使用率高,需要升级服务器的带宽进行解决。如果是非正常访问,如某些特定IP的恶意访问,或者服务器遭受到了CC攻击。或者异常进程导致的带宽使用率高。可以通过流量监控工具nethogs来实时监测统计各进程的带宽使用情况,并进行问题进程的定位。 使用nethogs工具进行排查 执行以下命令,安装nethogs工具。 yum install nethogs -y 安装成功后可以通过netgos命令查看网络带宽的使用情况。 nethogs命令常用参数说明如下: -d:设置刷新的时间间隔,默认为 1s。 -t:开启跟踪模式。 -c:设置更新次数。 device:设置要监测的网卡,默认是eth0。 运行时可以输入以下参数完成相应的操作: q:退出nethogs工具。 s:按发送流量大小的顺序排列进程列表。 r:按接收流量大小的顺序排列进程列表。 m:切换显示计量单位,切换顺序依次为KB/s、KB、B、MB。 执行以下命令,查看指定的网络端口每个进程的网络带宽使用情况。 nethogs eth1 回显参数说明如下: PID:进程 ID。 USER:运行该进程的用户。 PROG RAM :进程或连接双方的IP地址和端口,前面是服务器的IP和端口,后面是客户端的IP和端口。 DEV:流量要去往的网络端口。 SENT:进程每秒发送的数据量。 RECEIVED:进程每秒接收的数据量。 终止恶意程序或者屏蔽恶意访问IP。 如果确认大量占用网络带宽的进程是恶意进程,可以使用kill PID命令终止恶意进程。 如果是某个IP恶意访问,可以使用iptables服务来对指定IP地址进行处理,如屏蔽IP地址或限速。 使用 Web应用防火墙 防御CC攻击 若服务遭受了CC攻击,请在Web应用防火墙控制台开启CC安全防护。Web应用防火墙的使用指导请参见配置CC防护策略。
  • 处理方法 备份多余的网卡,然后删除/etc/sysconfig/network-scripts目录下多余的网卡配置文件。 执行以下命令,进入该网卡配置文件目录。 本例中查看云服务器内部包含11个网卡配置文件。 cd /etc/sysconfig/network-scripts 执行以下命令备份网卡文件。 mkdir tmp cp ifcfg-* tmp/ ls tmp/ 图2 查看网卡配置文件 如果只使用一张网卡,则删除ifcfg-eth0外多余的网卡配置文件,如果有ifcfg-ens5配置文件也需要删除。 本例以删除ifcfg-eth1到ifcfg-eth11,和ifcfg-ens5为例,请根据实际网卡配置情况更新命令。 rm -rf ifcfg-eth[1-9] ifcfg-eth10 ifcfg-eth11 ifcfg-ens5 图3 删除多余的配置文件 结束多余的dhclient进程。 查询dhclient进程 ps -ef | grep dhclient 以PID为770 为例,执行以下命令结束该进程。 kill-9 770 请注意正确拼写服务的PID。 kill-9 PID表示强制结束进程。 图4 结束dhclient进程 重启network服务。 systemctl restart network 查看network网络状态恢复正常。 systemctl status network 图5 查看network网络状态
  • CPU占用率高问题定位 使用VNC功能登录云服务器。 执行如下命令查看当前系统的运行状态。 top 系统回显样例如下: 查看显示结果。 命令回显第一行:20:56:02 up 37 days,1 user, load average: 0.00, 0.01, 0.05的每个字段含义如下: 系统当前时间为20:56:02,该云服务器已运行37天,当前共有1个用户登录, 最近1分钟、最近5分钟和最近15分钟的CPU平均负载。 命令回显第三行:CPU资源总体使用情况。 命令回显第四行:内存资源总体使用情况。 回显最下方显示各进程的资源占用情况。 在top页面,可以直接输入小写“q”或者在键盘上按“Ctrl+C”退出。 除了直接输入命令,您还可以单击VNC登录页面屏幕右上角的“Input Command”,在弹出的对话框中粘贴或者输入相应命令,单击“Send”。 在top运行中常用的内容命令如下: s:改变画面更新频率。 l:关闭或开启第一部分第一行top信息的表示。 t:关闭或开启第一部分第二行Tasks和第三行Cpus信息的表示。 m:关闭或开启第一部分第四行Mem和 第五行Swap信息的表示。 N:以PID的大小的顺序排列进程列表。 P:以CPU占用率大小的顺序排列进程列表。 M:以内存占用率大小的顺序排列进程列表。 h:显示命令帮助。 n:设置在进程列表所显示进程的数量。 通过ll /proc/PID/exe命令可以查看每个进程ID对应的程序文件。
  • CPU使用率高问题处理 对于导致CPU使用率高的具体进程,如果确认是异常进程,可以直接通过top命令终止进程。对于kswapd0进程导致的CPU使用率高的问题,则需要对应用程序进行优化,或者通过增加内存进行系统规格的升级。 kswapd0是系统的虚拟内存管理程序,如果物理内存不够用,系统就会唤醒kswapd0进程,由kswapd0分配磁盘交换空间用作缓存,因而占用大量的CPU资源。 使用top命令终止CPU占用率高的进程 您可以直接在top运行界面快速终止相应的异常进程。操作步骤如下: 在top命令运行的同时,按下小写的“k”键。 输入要终止进程的PID。 进程的PID为top命令回显的第一列数值。例如,要终止PID为52的进程,直接输入“52”后回车。 操作成功后,会出现如下图所示类似信息,按回车确认。 kswapd0进程占用导致CPU使用率高 可通过以下步骤排查进程的内存占用情况。 通过top命令查看kswapd0进程的资源使用。 如果kswapd0进程持续处于非睡眠状态,且运行时间较长,可以初步判定系统在持续的进行换页操作,可以将问题转向内存不足的原因来排查。 通过vmstat命令进一步查看系统虚拟内存的使用情况。 如果si和so的值也比较高,说明系统存在频繁的换页操作,系统物理内存不足。 si:每秒从交换区写到内存的大小,由磁盘调入内存。 so:每秒写入交换区的内存大小,由内存调入磁盘。 对于内存不足问题,可以通过free、ps等命令进一步查询系统及系统内进程的内存占用情况,做进一步排查分析。 临时可通过在业务空闲期重启应用或者系统释放内存。 如果要从根本上解决内存不足的问题,需要对服务器内存进行扩容,扩大内存空间。如果不具备扩容的条件,可通过优化应用程序,以及配置使用大页内存来进行缓解。
  • 根因分析 执行以下命令,查看是否开启了firewalld。 # systemctl status firewalld 图1 开启firewalld 如图1所示,系统已开启firewalld。 执行以下命令,查看firewalld中的规则。 # firewall-cmd --list-all 图2 查看firewalld规则 如图2所示,firewall当前的zone为public,该zone默认只放通ssh和dhcpv6-client服务。其中ssh服务为默认的22端口,当ssh修改为非22端口时就无法访问。
  • 处理方法 方法1:执行以下命令,停止firewalld服务并取消开机自启。 建议通过安全组和ACL进行访问控制,如业务需要开启firewalld请参考•方法2:执行以下命令,在firewalld服务... # systemctl stop firewalld # systemctl disable firewalld 方法2:执行以下命令,在firewalld服务中添加新的端口55660。 # firewall-cmd --add-port=55660/tcp --permanent --zone=public # firewall-cmd --reload
  • 根因分析 执行以下命令,查询有问题的mount unit。 # systemctl list-units --type=mount |grep failed test1.mount loaded failed failed /test1 执行以下命令,查询该unit的状态。 # systemctl status test1.mount 回显信息如下所示: ● test1.mount - /test1Loaded: loaded (/etc/fstab; bad; vendor preset: disabled) Active: failed (Result: exit-code) since Wed 2019-08-28 15:32:53 CST; 3min 27s agoWhere: /test1What: /dev/vdb1Docs: man:fstab(5)man:systemd-fstab-generator(8)Process: 4601 ExecUnmount=/bin/umount /test1 (code=exited, status=0/SUC CES S)Process: 3129 ExecMount=/bin/mount /dev/vdb1 /test1 -t ext4 (code=exited, status=0/SUCCESS)... ...Warning: test1.mount changed on disk. Run 'systemctl daemon-reload' to reload units. 如回显信息所示test1.mount磁盘发生了改变,需要运行systemctl daemon-reload重新加载units。 更改/etc/fstab时,必须执行systemctl daemon-reload。在运行该命令之前,systemd不读取fstab并生成装载单元。
  • 问题现象 Linux操作系统云服务器根目录空间占用率过高。例如,以图1为例,根目录空间占用率为96%。 图1 根目录空间占用率过高 查询当前系统存在一个约42G大小的文件access_log,这个文件是apache产生的访问日志文件,从日志大小判断是很久没有清理的apache日志文件了。 执行以下命令删除access_log。 rm /tmp/access_log 执行以下命令查看文件系统使用率。 df -h 删除该文件后使用df查看文件系统使用率仍是96%。
  • 场景一:/var/empty/sshd属主非root导致sshd启动失败 sshd启动失败,查看journal日志,提示/var/empty/sshd must be owned by root。 # journalctl -xe 查看/var/empty/sshd文件属主信息 # ll /var/empty/sshd 如上图所示,由于/var/empty/sshd目录属主非root用户导致sshd服务启动失败。 修改/var/empty/sshd属主,及其权限。 # chown -R root.root /var/empty/sshd # chmod -R 711 /var/empty/sshd 重启sshd服务,执行: # systemctl restart sshd
  • 根因分析 通常不会出现删除文件后空间不释放的情况,特殊情况是文件进程锁定,或有进程一直在向这个文件写数据。 为了分析根因,首先需要了解Linux文件的存储机制和存储结构。 一个文件在文件系统中存放分为两个部分: 指针部分:指针位于文件系统的meta-data中,在将数据删除后,这个指针就从meta-data中清除了。 数据部分:而数据部分存储在磁盘中。 将数据对应的指针从meta-data中清除后,文件数据部分占用的空间就可以被覆盖并写入新的内容。出现删除access_log文件后,空间还没有释放的原因,是因为httpd进程还在一直向这个文件写入内容,导致删除了access_log文件后,进程锁定,文件对应的指针部分并未从meta-data中清除,由于指针并未删除,系统内核就默认文件并未被删除,因此查询文件系统使用率时,显示空间并未释放。
  • 场景二:如果结果显示挂载方式rw,则确认是否为文件系统错误导致 执行以下命令,检查内核中关于文件系统的信息。 # dmesg |egrep "ext[2..4]|xfs" 输出结果中如果有I/O error ... inode 的错误信息则根因为文件系统错误导致进入只读模式。 如图所示,需要修复文件系统,请先备份数据后操作,由于文件系统在使用中无法修复,需要通过单用户模式(在该模式下磁盘未挂载)修复文件系统。 重启进入单用户模式尝试修复文件系统。 查询当前设备及文件系统 # blkid 检查文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 # fsck -n /dev/vdb1 xfs系列文件系统执行以下命令 # xfs_check /dev/vdb1 如果遇到提示当前文件系统为mounted,需要先umount文件系统。 执行以下命令,查看当前挂载信息执行 # mount 卸载设备 # umount 挂载点 修复文件系统(以vdb1为例)。 ext系列文件系统执行以下命令 # fsck /dev/vdb1 xfs系列文件执行以下命令 # xfs_repair /dev/vdb1
  • CentOS 6操作系统 登录控制台,重启云服务器,单击“远程登录”。 在出现Booting CentOS界面时,按任意键,进入内核选择界面。 图1 Booting CentOS 内核选择界面出现时按下键将光标移至第二内核,然后按回车键进行启动。 待系统启动后,执行以下命令设置默认启动内核为第二内核。 # sed 's/default=0/default=1/' /boot/grub/grub.conf -i default默认值为 0(代表从/boot/grub/grub.conf文件中kernel菜单中第一个,从上往下依次是 0,1,2 等)。
  • 问题分析 在 Linux 的内存管理中,buffer是Linux内存中的Buffer cache。cache是Linux内存中的Page cache。 Buffer cache:主要是当系统对块设备进行读写的时候,对块进行数据缓存的系统来使用,即对块的操作会使用buffer cache进行缓存。 例如:当对一个文件进行写操作的时候,page cache 的内容会被改变,而buffer cache则可以用来将page标记为不同的缓冲区,并记录是哪一个缓冲区被修改了。内核在后续执行脏数据的回写writeback时,就不用将整个page写回,而只需要写回修改的部分即可。 Page cache:主要用来作为文件系统上的文件数据的缓存来用,尤其是针对当进程对文件有read/write操作的时候。Linux默认会将读取的文件内容缓存在内存中,方便后续使用。 Linux默认使用的是lazy模式,即内存如果还够用,则不会主动释放当前的占用的buffer和cache,如果需要内存,则会自动释放buffer和cache,所以正常情况下,cache占用高不会对系统造成影响。
共100000条