linux如何优雅的关机

常见的关机三大法宝:拔电源、shutdown、poweroff

机械硬部结构

断电之前先来看下机械硬盘的内部结构

为了避免磁头和磁盘的接触磨损,现代机械硬盘会有一个磁头复位的装置,机械硬盘不工作时,磁头回到复位位置,磁头复位不是依靠电能的驱动,而是机械力量。 磁头上有个类似弹簧装置,一直试图将磁头拉回复位区,通电时磁头受磁力作用移动至磁盘上方。 如果机械硬盘突然断电,磁力消失,磁头瞬间被拉回,但因磁盘立刻停转,导致盘面形成空气消失以及主机震动等原因,磁头很容易落在盘面,被磁力拉回的瞬间造成磁盘损伤。

那固态硬盘SSD呢

FTL工作示意图

先来普及一个独木桥组件FTL的知识:FTL是固态硬盘中的逻辑地址(LBA,logical block addresses )和物理地址(PBA, physical block addresses)的对应表。简单讲就是操作系统操作LBA逻辑地址,具体写入有FTL控制真正的物理地址在哪里,由此可见FTL这个“阳关大道”的重要性。

FTL表如此重要,没了它,整个SSD/SD卡就没法工作了。如果在FTL写回Flash之前,还在内存的时候,忽然没电了,内存数据丢失,FTL表也就丢失了。有鉴于此,高端SSD和服务器SSD都加上了电容,来作为应急供电方案,让SSD控制器有时间把内存中的FTL表和一些缓存内容存到Flash上

拔电源的对硬件的损坏(机械盘的磁头)相对于数据的丢失是可以忽略的,如数据库正在写入数据、缓存还未持久化、集群数据没有平衡这些对程序员来讲是致命的,直接拔电源不仅够优雅还会有数据丢失风险,pass?

那shutdown、poweroff以及halt有什么区别呢?

网上文章有很多,说的大多都是一个来源,经过调查发现,这三个命令的最大区别如下

half:关机,不关电
poweroff:关机、关电、关机过程不阻止其他用户登录
shutdown:关机、关电、发送命令通知其他用户将要关机,可以通过参数指定定时关机,只有root权限才可以执行,
会创建nologin阻止新用户登录。

参考:

1、为什么固态会掉盘?著名的30分钟大法修复是什么原理?这么做对吗? - 知乎 (zhihu.com)

2、实测:电脑突然断电对硬盘有影响吗? (baidu.com)

相关文章

linux常用进程通信方式包括管道(pipe)、有名管道(FIFO)、...
Linux性能观测工具按类别可分为系统级别和进程级别,系统级别...
本文详细介绍了curl命令基础和高级用法,包括跳过https的证书...
本文包含作者工作中常用到的一些命令,用于诊断网络、磁盘占满...
linux的平均负载表示运行态和就绪态及不可中断状态(正在io)的...
CPU上下文频繁切换会导致系统性能下降,切换分为进程切换、线...