為什麼不能將文件作為交換文件用於 Linux 中的休眠?
我試圖使用交換文件暫時休眠我的 Fedora 27 系統但失敗了。以下問題的答案還說必須使用專用交換分區來休眠系統,並且交換文件將不起作用。
我正在使用創建交換文件的 ext3 文件系統。是什麼阻止它被用於休眠?
正如這裡所說(@don_crissti 提供的連結),系統必須找到交換文件的頭,但為了做到這一點,必須掛載包含交換文件的文件系統,並且不能在期間掛載日誌文件系統(如 ext3)從磁碟恢復。
引用文件:
為了在 swsusp 中使用交換文件,您需要:
1)創建交換文件並使其處於活動狀態,例如。
# dd if=/dev/zero of=<swap_file_path> bs=1024 count=<swap_file_size_in_k>
# mkswap <swap_file_path>
# swapon <swap_file_path>
- 使用將在 FIBMAP ioctl 的幫助下 bmap 交換文件的應用程序,並確定文件交換頭的位置,作為
<PAGE_SIZE>
從保存交換文件的分區開始的偏移量,以單位為單位。3)在核心命令行中添加以下參數:
resume=<swap_file_partition> resume_offset=<swap_file_offset>
其中
<swap_file_partition>
是交換文件所在的分區,是<swap_file_offset>
由應用程序在 2) 中確定的交換頭的偏移量(當然,此步驟可以由確定交換文件頭偏移量的同一應用程序自動執行,使用FIBMAP ioctl)或者
使用使用者級掛起應用程序,該應用程序將藉助 Documentation/power/userland-swsusp.txt 中描述的 SNAPSHOT_SET_SWAP_AREA ioctl 設置分區和偏移量(這是掛起到交換文件的唯一方法,允許從initrd 或 initramfs 映像)。
你可以這樣做,我在這個 SO 回復中寫了一個大文件,它在全球範圍內通過正確使用
uswsusp
和配置 initramfs 和 Grub 來工作。