是的,这就快到年底了,技术的或管理的工作都要进入收尾阶段。作为技术人员,有时候最怕关键时刻出的那点意外。
人家美国佬总结了一个定律叫【墨菲定律】,你之前曾担心容易出问题的,往往后面就真的容易出问题的概率非常大。
只是不确定什么时候发生而已(发生了就呵呵了~~)。
所以今天向各位提个醒,提早做检查预防和本文接下来指出的一些方面的准备。
还记得经典的蓝屏吗?
不一样的面孔,熟悉的味道 —— 启动异常在Linux里面是这样的:
好吧,这是旁边同事断电重启后崩溃的电脑。我的极少出现故障,因为我已做好多重预防措施。
本文接下来复盘和总结操作系统和Linux下容易发生的各种意外损坏情况,如何提前检测和预防。很实用,一定要看到最底部哦。
Linux系统一般容易在哪些方面出问题
Linux 系统的稳定性通常是非常好的,但在某些情况下,仍然可能出现稳定性问题。以下是一些可能导致 Linux 系统不稳定的常见原因:
- 硬件故障:硬件故障是导致系统不稳定的常见原因之一。例如,磁盘故障、内存故障、CPU 故障等都可能导致系统崩溃或无法启动。
- 内核错误:内核是 Linux 系统的核心,如果内核出现错误,可能会导致系统不稳定。例如,内核 遇到无法处理的异常(panic)等都可能导致系统崩溃。
- 文件系统损坏:文件系统是存储 Linux 系统数据的重要组成部分,如果文件系统损坏,可能会导致系统无法启动或数据丢失。
- 软件冲突:在 Linux 系统中安装软件时,可能会出现软件冲突或错误安装,导致系统不稳定。
- 系统更新问题:在更新 Linux 系统时,如果更新过程中出现错误,可能会导致系统不稳定。
- 恶意软件:恶意软件可能会导致系统不稳定,例如病毒、木马等。
- 过度负载:如果系统负载过高,可能会导致系统不稳定,例如内存不足、CPU 占用率过高等。
- 配置错误:Linux 系统的配置文件非常重要,如果配置文件出现错误,可能会导致系统不稳定。
以上是一些可能导致 Linux 系统不稳定的常见原因。
存储硬件的故障和预防
日常我们用得最多也最重要的是文件数据,所以硬盘之类的存储设备故障要加以预防。
目前硬盘分为机械硬盘(HDD)和固态硬盘(SSD)。
机械硬盘的寿命通常取决于多种因素,例如使用环境、使用方式、工作负载等。一般机械硬盘的寿命在 3 到 5 年之间,但在良好的使用条件下,它们可以持续更长时间。
SSD 硬盘的寿命一般比机械硬盘长,通常在 5 到 10 年之间,但这也取决于 SSD 硬盘的质量和使用条件,如写入次数的限制。SSD 硬盘的写入次数是有限的,当写入次数达到一定数量时,SSD 硬盘的性能可能会下降。因此,为了延长 SSD 硬盘的寿命,建议减少不必要的写入操作,例如适用于机械硬盘的磁盘碎片整理,就完全不适用于 SSD 硬盘。
如果您在Windows下喜欢经常个硬盘做磁盘碎片整理,从今天起就要知道Windows的磁盘碎片整理功能对于 SSD 来说只会加速消耗 SSD 硬盘的寿命。而 Linux 下的文件系统其实没有“碎片整理”一说,因为Linux的主流的文件系统(如ext4、xfs等),在开发设计之初就是对碎片友好的,能最优化地使用磁盘的可用空间,而无需碎片整理。
对于服务器存储来说,由于硬件设备常年累月持续运行,服务器硬盘几乎就以硬盘最大寿命在持续损耗。那么在部署Linux系统之前,就应当以RAID1、RAID5、RAID6、RAID10等带有数据冗余灾备规格的磁盘阵列方式进行磁盘初始化,然后再规划文件系统、部署Linux系统,规划业务数据的冗余存储方式(如分布式存储、多机房冗余、异地冗余、定期备份、冷热备份、使用支持快照的文件系统进行备份),以多措并举,保护最重要资源——数据。
举个成功的例子,备份数据的习惯,让某工程师成功避免了一场血的教训
某次电脑开机后,王工像往常一样处理工作中的业务。为了传输 文件A到远端Linux系统下,通过拖拽文件到mobaxterm 软件(一款SSH客户端)的方式,进度显示上传100% 已完成,他顺便把本地文件彻底删了。但由于未知原因触发了该mobaxterm 软件的BUG,mobaxterm报错后自动关闭。此后再检查远端的Linux系统下却没有文件A。
由于远端Linux系统不允许重启或挂载恢复数据,而本地文件A已彻底删除(删除得太自信了)。领导说文件A 非常重要,不允许丢失,马上要用!否则后果很严重!你懂的!
OK,想起前一天下班前及时、完整备份过文件A到其他磁盘。不然真的要被KILL了。。。
这剧情,就像过山车一样。不过这个习惯确实多次避免了【墨菲定律】的悲剧在这位工程师工作中的影响。
通过上面的例子,牵扯出硬件之外的另一个重要话题——软件层面的预防:
软件和文件数据相关的可靠性
建议在工作中多借助云端软件,避免本地软件故障带来的损失。
又一个例子,某财务小姐姐最开始给客户记录财务,都是保存到U盘随身携带。某次在别的电脑U盘无法识别,经过一通操作后,U盘在她自己电脑竟然也无法识别了。使用数据恢复软件扫描也无法恢复(导致数据丢失的原因,比如U盘硬件故障、被恶意软件破坏等,总之数据看起来没了)。最终只能寻求专业的数据恢复公司解决,为了找回重要的财务记录,恢复这个16GB的 U盘的数据的费用,花了千把元。非常可惜。
而如果是资深财务人员,往往会借助内网财务系统或 PaaS平台的财务系统 等,让数据在线存储。数据存储的可靠性,交由专业的云厂商。
即使个人财务,也可以借助云的力量,比如使用WPS Office的自动定时保存功能,WPS自动备份到云端功能。而且WPS 也支持Linux,对于工程师来说也非常实用。WPS的年费也不高,你值得拥有~
个人知识库的管理,也可以借助飞书、钉钉、企业微信等的知识库工具(支持Linux系统),实现个人知识库上云备份的效果。
文件备份还可以基于跨平台的网盘软件(如坚果云 就提供了非常好的跨平台的网盘客户端,支持目录自动备份到云端功能、支持WebDav API开发实现自定义的备份效果)。
所以,使用云端软件备份保护本地数据,是一个人人可实现的,简单可行的方式。利用好云备份,可达到花小钱,受大利的效果。
Linux文件系统的数据可靠性机制
数据管理最常见的问题是数据写入不一致,诸如在文件系统没有完成写入的时候突然断电,这种情况并不算特别少见,Linux提供了下面的两种方式解决断电数据状态不一致的问题:
- 文件系统的日志 :通常出现在ext4和xfs、btrfs等主流的文件系统。文件系统的日志特性可以确保文件系统的一致性,即使在系统崩溃或突然断电的情况下,也可以通过日志恢复文件系统的数据,日志可以记录文件系统的所有操作,并在需要时验证文件系统的数据。,加快文件系统的恢复速度。日志功能还可以提高文件系统的性能,因为它减少了往文件系统的实际写入的操作次数。
- 写时复制机制 :也是主流文件系统大多支持的一个特性。写时复制是一种文件系统的优化技术,它可以减少文件系统的写入操作,提高文件系统的性能和可靠性。在写时复制技术中,当文件系统需要修改某个文件的数据时,它并不会直接修改原始数据,而是将原始数据复制到一个新的位置,并在新位置上进行修改。这样可以减少文件系统的写入操作,提高文件系统的性能和可靠性。
支持日志保护的文件系统
使用日志处理情况要多一些,因为日志的方式具备一定的可读性也方便恢复,操作主要分为下面两个步骤:
- 数据修改之前把原子操作记录到日志当中。
- 宕机恢复的时候根据日志记录内容还原文件状态。如果异常情况发生在日志记录之前,可以直接丢弃写入一部分的日志并且回滚,当作文件状态没有更改过。而如果异常状态发生在原子操作的过程之后,则根据日志的记录把操作重新执行一遍即可。
Linux下的现代文件系统,如ext4和xfs、btrfs文件系统都支持写入前的日志记录功能, 这大大提高了抗断电损坏的能力。适合作为桌面Linux和服务器Linux的文件系统格式。
Linux文件系统的数据一致性自动修复方式
如果Linux文件系统的数据不一致了,在分区被挂载使用之前,会自动先进行分区数据自建修复,成功后才会挂载使用。
几乎所有的文件系统都有通用的fsck命令进行恢复,如ext4文件系统的修复可用 fsck.ext4命令,xfs文件系统的修复可用 fsck.xfs(或xfs_repair)。其他文件系统的修复命令类似。
例如,以下错误,说明文件系统XFS需要使用xfs_repair 修复后方能挂载使用:
Linux fsck(file system check)命令用于检查与修复 Linux 文件系统。fsck命令的基本语法:
fsck [-sACVRP] [-t fstype] [--] [fsck-options] filesys [...]
(未完待续)