假设我有两个不同的 Linux 安装A和B,都使用相同的交换分区。
据我了解,运行A或B不会导致交换问题,因为在给定时间只有其中一个正在使用它。但是,如果我启动A,休眠,然后启动B,则两者都使用交换(A处于被动形式,但数据在那里)。
问题是:在此之后,休眠的系统会继续存在吗?如果没有,是不是内存损坏了,或者A只是无法恢复,导致正常启动?
注意:我的主要音乐会是现场系统,它检测和使用硬盘驱动器上的可用交换分区。它们会破坏休眠的系统吗?
问题是:在此之后,休眠的系统会继续存在吗?
如果系统 B 使用交换空间,您可能也认为它会使用,那么我真的怀疑系统 A 是否能够成功地从休眠状态重新启动,如果这样做,后果可能很糟糕。
如果不是,是内存损坏还是A无法恢复?
尽管内核文档确实包含:
* BIG FAT WARNING *********************************************************
*
* If you touch anything on disk between suspend and resume...
* ...kiss your data goodbye.
Run Code Online (Sandbox Code Playgroud)
我认为这意味着适用于实际的文件系统,因为同样[src]/Documentation/power/swsusp.txt
也指出:
恢复进程检查恢复设备的存在,如果找到,则检查休眠图像签名的内容。如果两者都找到,它将恢复休眠图像。
所以,假设这个签名在swap设备的开头,并且假设正常的swap使用也从设备的开头开始,那么正常的swap使用会破坏“休眠映像签名”,当系统A启动时,它会找不到这样的签名,也不会从休眠状态恢复,它只会重新开始。
但是,虽然这些假设似乎是合理的,没有实施该系统的人的任何承诺,但不可能说它们完全合理——我的建议是你这样做可能是在进行一场严重的赌博。
顺便说一下,如果您正在使用休眠并且在引导加载程序菜单中还没有这样的选项,那么最好noresume
在内核行中包含一个选项,以便您可以选择跳过从休眠中恢复。据我所知,不幸的是没有这样的内核行参数来禁用交换的使用,例如,当您知道系统 A 使用交换进行休眠时,对于系统 B。