C KVM下是否有获取ZoneID的API?
在Solaris下使用分区时,hostid不会按区域更改,但您还可以(通过函数调用getzoneid())为您的区域获取唯一的zoneid 在Linux下使用KVM,hostid会按区域更改(递增)-这很好,但并不完美-您可能会与其他人的hostid发生冲突C KVM下是否有获取ZoneID的API?,c,linux,virtualization,kvm,C,Linux,Virtualization,Kvm,在Solaris下使用分区时,hostid不会按区域更改,但您还可以(通过函数调用getzoneid())为您的区域获取唯一的zoneid 在Linux下使用KVM,hostid会按区域更改(递增)-这很好,但并不完美-您可能会与其他人的hostid发生冲突 是否有KVM提供的API使我能够获得一个zoneid?关于您对重复主机ID的担忧: 与Solaris不同,Linux内核不提供“gethostid”调用。相反,“gethostid”(由/usr/bin/hostid程序使用)是,它试图:
是否有KVM提供的API使我能够获得一个zoneid?关于您对重复主机ID的担忧: 与Solaris不同,Linux内核不提供“gethostid”调用。相反,“gethostid”(由
/usr/bin/hostid
程序使用)是,它试图:
/etc/hostid
);如果是,则使用其中的4字节值李>
0
sethostid
glibc库调用(写入glibc的gethostid
算法的步骤(1)读取的文件)覆盖hostid
关于获取KVM实例的zoneid:
与Solaris区域(所有实例共享同一内核)不同,KVM的每个实例都运行其自己的Linux内核副本,所有这些都不被其他运行的实例所注意。据我所知,Solaris zoneid没有直接的等价物,因为每个Linux实例都无法与其他Linux实例协作
如果您需要每个正在运行的KVM实例的唯一标识符,则有些选项包括:
- 如上所述,只需设置IP地址/主机ID
- 在设置/启动实例时,使用
为系统生成一个文件,并将其保存在文件系统上的安全位置。此类生成的UUID将永远不会以极高的概率匹配任何其他UUIDuuidgen
- 引导系统的每个实例时,在内核命令行上为实例传递一个手动构造的唯一标识符(使用
KVM命令行参数)。这可以稍后从-append
获取/proc/cmdline