MarianoM Asked: 2019-01-08 00:42:11 +0800 CST2019-01-08 00:42:11 +0800 CST 2019-01-08 00:42:11 +0800 CST Linux安装在U盘上,关机时数据会丢失吗? 772 我正在观察该sync命令的使用,并且我已阅读该命令确保将内存中的任何内容写入磁盘。 当我考虑在可移动磁盘(USB)上安装 Ubuntu 时,我想知道是否有必要执行此命令。 让我担心的是,在关闭计算机时,如果仍在写入数据,它们最终会因为系统关闭而丢失。 是否需要sync在关机或重启系统前运行? 有人对此进行更多解释吗? sync shutdown usb 2 个回答 Voted Best Answer Sergiy Kolodyazhnyy 2019-01-08T00:48:06+08:002019-01-08T00:48:06+08:00 在意外关机或系统崩溃期间,数据可能会丢失 - 当操作系统实际上无法将数据从内存刷新到磁盘时。在正常关机或重新启动期间,操作系统仍处于控制之中,因此它会将数据写入磁盘。 换句话说,正常关机/重启是可以的。还有一种称为halt状态的东西 - 机器仍在运行,但操作系统已经经历了关闭过程并放弃了对硬件的控制。在这种情况下,关闭机器电源也可以。不正常的是异常断电和关机。 Simon Richter 2019-01-08T04:11:06+08:002019-01-08T04:11:06+08:00 sync在磁盘被卸载(或以只读方式重新安装,在根文件系统的情况下)之后,正常关闭包括最后的 a 。通常,这应该什么都不做,因为文件系统已经在 上同步umount,所以应该在“卸载文件系统”阶段写入数据。 因为当服务器无法访问时,网络文件系统可能会花费任意时间来卸载,某些 init 系统会在 上实现超时umount,并且如果磁盘内部的挂载点仍然挂载,则无法卸载磁盘,这可能会导致级联失败,无法干净地卸载文件系统,在这种情况下,到达关机点时可能仍有未写入的数据。然后,最终同步确保即使文件系统没有完全卸载,也不会丢失任何数据。下次启动时的文件系统检查和/或日志重播(取决于文件系统)应该会清除它。 最终同步运行时(理想情况下)不存在读写挂载,并且没有其他程序仍在运行,因此在此之后无法生成新的写入请求。此时,持有已删除文件的打开文件句柄的僵尸进程也应该已被清除。 磁盘可以实现自己的缓存,这应该是完全透明的,但 Linux 通常会向驱动器发送关闭命令并等待报告完成;驱动器固件通常足够聪明,可以在此之前完成所有挂起的写入。 对于 USB 设备,SCSI 命令被包装在 USB 数据包中,因此同样的顺序适用于它们,但是由于 USB 比 SCSI 慢很多,内核缓存通常会增长很多,所以sync这里可能需要几分钟才能完成,但是内核将尽职尽责地等待。
在意外关机或系统崩溃期间,数据可能会丢失 - 当操作系统实际上无法将数据从内存刷新到磁盘时。在正常关机或重新启动期间,操作系统仍处于控制之中,因此它会将数据写入磁盘。
换句话说,正常关机/重启是可以的。还有一种称为
halt
状态的东西 - 机器仍在运行,但操作系统已经经历了关闭过程并放弃了对硬件的控制。在这种情况下,关闭机器电源也可以。不正常的是异常断电和关机。sync
在磁盘被卸载(或以只读方式重新安装,在根文件系统的情况下)之后,正常关闭包括最后的 a 。通常,这应该什么都不做,因为文件系统已经在 上同步umount
,所以应该在“卸载文件系统”阶段写入数据。因为当服务器无法访问时,网络文件系统可能会花费任意时间来卸载,某些 init 系统会在 上实现超时
umount
,并且如果磁盘内部的挂载点仍然挂载,则无法卸载磁盘,这可能会导致级联失败,无法干净地卸载文件系统,在这种情况下,到达关机点时可能仍有未写入的数据。然后,最终同步确保即使文件系统没有完全卸载,也不会丢失任何数据。下次启动时的文件系统检查和/或日志重播(取决于文件系统)应该会清除它。最终同步运行时(理想情况下)不存在读写挂载,并且没有其他程序仍在运行,因此在此之后无法生成新的写入请求。此时,持有已删除文件的打开文件句柄的僵尸进程也应该已被清除。
磁盘可以实现自己的缓存,这应该是完全透明的,但 Linux 通常会向驱动器发送关闭命令并等待报告完成;驱动器固件通常足够聪明,可以在此之前完成所有挂起的写入。
对于 USB 设备,SCSI 命令被包装在 USB 数据包中,因此同样的顺序适用于它们,但是由于 USB 比 SCSI 慢很多,内核缓存通常会增长很多,所以
sync
这里可能需要几分钟才能完成,但是内核将尽职尽责地等待。