我有一个脚本,我运行该脚本是为了在备份虚拟来宾之前优化磁盘空间(使用哪个管理程序实际上并不重要)。
现代 Ubuntu 版本(例如 18.04)似乎默认使用 a/swapfile
而不是分区。那也很好。
但是,我想将交换文件以及包含它的根分区清零。
使用交换分区,这相对容易,因为总有一种方法可以$UUID
从交换分区中提取现有的,并且 - 在对分区进行零填充之后 - 运行mkswap -U $UUID
以重新创建所述交换分区。
但是,/swapfile
我不知道该怎么做。虽然我意识到你不能通过/swapfile
UUID挂载 a /etc/fstab
,但我仍然想保留 UUID。
所以我认为需要以下其中一项才能继续:
- 我需要一种方法,可以在不擦除那些使其成为交换分区的结构的情况下对交换文件进行零填充(即避免运行
mkswap -U $UUID
) - 我需要一种从交换文件中检索现有 UUID 的方法(而不是我可以使用任何东西的分区
blkid
来查看/dev/disk/by-uuid/$UUID
...)
这不会像重新创建交换文件那样彻底清除它,但是如果您在跳过第一个 4KiB(严格来说,第一页,这取决于您的架构)后清除它,您将不会触及任何结构它标识一个交换文件。
blkid
也适用于交换文件:标头格式在内核中定义:旧格式在第一页末尾有一个神奇的值,新格式将它与 1KiB 空闲区域相结合,然后是一些字段(版本、大小、坏页、UUID、标签),所有这些都可以舒适地放在第一页内。