我对 Linux 并不陌生,但对它的底层机制却不熟悉,而且我对 LVM 或设备映射器一无所知。我试图排除 livecd 在操作过程中将其 live-rw (dm-0) 文件系统安装为只读的故障,说得客气一点,这很令人沮丧。
我发现dmsetup 状态将显示一些数字 - 我认为是快照大小,但我不确定:
[root@localhost ~]# dmsetup status
live-osimg-min: 0 4194304 snapshot 1272/1272 16
live-rw: 0 4194304 snapshot 7568/1048576 40
我发现最右边的数字“7568/1048576”似乎决定了我的 livecd 在以只读方式挂载并死机之前必须存活的时间长度。这些数字总是从相同的数量开始,并且随着文件系统上执行的更多活动而增加 - 无论根分区的大小如何。像“yum update”这样的命令对这个数字特别苛刻。
我在网上找不到任何标记这些字段并描述它们是什么的文档——以经典的 Linux 方式,它们只是黑色背景上的一些浮动整数,没有任何解释,好像在说“祝你好运!”。
有人知道这些数字代表什么吗?以及在构建 CentOS 6.6 livecd 时如何将“上限”从 1048576 增加到更大的值?
答案1
Linux 内核文档快照DM 目标包含您的第一个问题的答案:
快照合并和快照状态行以以下内容结尾:
<sectors_allocated>/<total_sectors> <metadata_sectors>
前两个数字(在您的情况下为 0 和 4194304)定义了 512 字节扇区中映射的起始和长度,但这并不是特定于快照目标的(它不是严格的状态信息,而更像是表信息)。device-mapper
如果您有兴趣,请阅读文档目录中的其他文件。
快照大小(“cap”)由分配给快照目标的写时复制 (COW) 设备的大小决定。通过 检查目标参数dmsetup table
。它们的文档位于同一文件中,简而言之:
snapshot <origin> <COW device> <persistent?> <chunksize>
您的 CentOS 6.6 LiveCD 使用什么作为 COW 设备以及如何影响它,我不知道。