Linux 下执行 Sync 命令可以避免固态硬盘掉电造成数据丢失吗?

2016-12-12 19:07:26 +08:00
 feng32

请问 Linux 下周期性执行 Sync 命令可以避免固态硬盘掉电造成数据丢失吗?

另外 Windows 下可以通过某种手段把 SSD 缓存数据写入闪存以避免数据丢失吗?

这个问题的背景是:电脑 24 小时开机,大部分时间是空闲的状态,但是没有企业级 SSD 防掉电特性,由于怕麻烦也不想装 UPS 然后配置断电自动通知机制

5172 次点击
所在节点    Linux
21 条回复
xfspace
2016-12-12 19:22:26 +08:00
防断电不是一两句命令能解决的🌚
XGHeaven
2016-12-12 19:48:38 +08:00
既然大部分时间是空闲的,那就不用担心会丢失数据的问题,概率太低了
honeycomb
2016-12-12 20:02:49 +08:00
禁用写入缓存能以性能损失换来避免(多数的)固态硬盘掉电造成数据损失
loading
2016-12-12 20:53:28 +08:00
ssd 的数据是最脆弱的。
flynaj
2016-12-13 00:29:06 +08:00
缓存禁用,可以降低,无论什么方法都是降低, ups 才能保证
flynaj
2016-12-13 00:29:36 +08:00
可以用笔记本,自动电池
msg7086
2016-12-13 03:27:41 +08:00
不说别的, SSD 你放在旁边放一年再拿出来,数据就丢了。
jimzhong
2016-12-13 06:05:35 +08:00
本来 Linux 就会定期( 10s-60s )回写数据,不需要手动 sync 。
sagaxu
2016-12-13 09:14:13 +08:00
sync 至是从 vfs cache 提交到 dev , dev 有没有写入,不知道。而且 ssd 掉电,不一定丢文件,可能还会丢固件变砖。
feng32
2016-12-13 09:49:31 +08:00
@xfspace
@XGHeaven
@honeycomb
@loading
@jimzhong
@sagaxu

把缓存从 fs cache 提交到 dev 应该还是可以做到的,但是就怕 dev 把数据攒着没写入闪存,万一停电就完了
目前我的情况是一台 NUC 兼任 HTPC / Steam Host / CentOS Server (svn, git, trac, wordpress), 24 小时开机并且不是经常使用

这种情况下,看起来安全的方法只有定时重启了吧?感觉这个方法好挫啊。。。
luojiyin87
2016-12-13 10:15:21 +08:00
不如有备用电源
type
2016-12-13 10:59:51 +08:00
简单的方法就是再加一块机械硬盘
npc0der
2016-12-13 11:47:52 +08:00
买个带掉电保护的 比你考虑这个问题是在。从软件上 你做的任何 基本徒劳。
sagaxu
2016-12-13 13:10:48 +08:00
@feng32 数据完整性要靠冗余,不能靠单个硬件的可靠性
redsonic
2016-12-13 13:15:28 +08:00
9 楼正解, SSD 的主控比机械盘的复杂的多,简单讲可以认为是一个 raid 控制器,很多 raid 卡都带电池......
feng32
2016-12-13 13:24:47 +08:00
@sagaxu NUC 里面两个 M2 槽位,就算建个 RAID1 也完全没意义吧,停电了还是一起挂

而且要保护的数据主要是系统运行中产生的临时文件、运行中的 vdi 虚拟硬盘、文件系统状态等,并非文档资料可以定期跑 rsync 来备份
doubleflower
2016-12-13 13:32:03 +08:00
哪个 SSD 这么 SB 攒着一把缓存数据半天不写闪存
kokutou
2016-12-13 13:32:40 +08:00
@feng32 搞个 ups 。。。断电自动发送关机指令不久行了。。。
Siril
2016-12-13 18:01:06 +08:00
硬盘(或 raid 卡)内部的缓存, 没听说过操作系统可以控制的。
专业的 raid 卡带电池,就是为了避免掉电时丢失缓存中的数据。
企业级 ssd 一般内置一个大电容,作用类似。
因为这个缓存对操作系统透明,而且各厂商实现方式可能区别较大,主要是没听说过这个缓存有相关接口暴露给 OS 的。

一般操作系统可以控制的缓存,是指系统内存作为文件系统读写的缓存。

比如说死机了,可能内存中未写入磁盘的数据丢失,但是硬盘没掉电,硬盘的缓存仍然同步完成;
再比如说断电了,内存中的数据丢失,硬盘掉电导致硬盘自身的缓存中的数据也丢失,此时 raid 卡的 fbwc 和 bbwc 啥的, ssd 的“电池” 就起作用了。
Siril
2016-12-13 18:01:43 +08:00
sync 仅可以同步操作系统内存中的缓存数据。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/327134

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX