我运行一个脚本,以便在备份虚拟来宾之前优化磁盘空间(实际上使用哪个虚拟机管理程序并不重要)。
现代 Ubuntu 版本(例如 18.04)似乎默认使用分区/swapfile
而不是分区。那也很好。
但是,我想对交换文件以及包含它的根分区进行零填充。
有交换分区这是相对轻松的,因为总有一种方法可以$UUID
从交换分区中提取现有的分区,并且在对分区进行清零之后,运行mkswap -U $UUID
以重新创建所述交换分区。
但是,/swapfile
我不知道该怎么做。虽然我意识到您无法/swapfile
通过 UUID安装/etc/fstab
,但我仍然想保留 UUID。
所以我认为需要以下之一才能继续:
- 我需要一种方法,可以对交换文件进行零填充,而无需擦除那些使其成为交换分区的结构(即避免运行
mkswap -U $UUID
) - 我需要一种从交换中检索现有 UUID 的方法文件(与我可以使用任何东西的分区相反,从
blkid
到查看/dev/disk/by-uuid/$UUID
......)
答案1
这不会像重新创建交换文件那样彻底清除交换文件,但如果您在跳过前 4KiB(严格来说,第一页,这取决于您的体系结构)后清除它,您将不会触及任何结构它标识一个交换文件。
blkid
在交换文件上也能正常工作:$ mkswap swap Setting up swapspace version 1, size = 512 MiB (536866816 bytes) no label, UUID=7916b81f-1faa-4b7d-84ef-b0bf2f75dbbc $ blkid swap swap: UUID="7916b81f-1faa-4b7d-84ef-b0bf2f75dbbc" TYPE="swap"
标头格式为内核中定义的:旧格式在第一页末尾有一个神奇的值,新格式将其与 1KiB 可用区域结合起来,然后是许多字段(版本、大小、坏页、UUID、标签),这些字段都可以轻松地容纳在第一页。