Red Hat Training

A Red Hat training course is available for Red Hat Virtualization

2.10. Red Hat Virtualization 中的专用资源和 Sanlock

Red Hat Virtualization 环境中的某些资源必须专门访问。
SPM 角色是一个这样的资源。如果有多个主机成为 SPM,则数据崩溃的风险可能同时从两个位置更改同一数据。
在 Red Hat Enterprise Virtualization 3.1 之前,使用名为 safelease 的 VDSM 功能维护并跟踪 SPM。该租期被写入数据中心所有存储域的特殊区域。环境中的所有主机都可以以网络独立的方式跟踪 SPM 状态。VDSM 的安全租用仅维护一个资源的exclusivity:SPM 角色。
sanlock 提供相同的功能,但将 SPM 角色视为可以锁定的资源之一。sanlock 更为灵活,因为它允许锁定其他资源。
需要资源锁定的应用程序可以使用 Sanlock 注册。然后注册的应用程序可以代表它请求 Sanlock 锁定资源,以便其他应用程序都无法访问它。例如,VDSM 现在不锁定 SPM 状态,而是请求 Sanlock 这样做。
锁定空间 的磁盘上跟踪锁定。每个存储域都有一个锁定空间。如果 SPM 资源上的锁定,每个主机的存活度由主机在锁定空间中跟踪,因为主机在它连接到存储时从 Manager 接收的 hostid,并以固定间隔将时间戳写入锁定间隔。ids 逻辑卷跟踪每个主机的唯一标识符,并在每次主机更新其 hostid 时更新。SPM 资源只能由实时主机持有。
租期 逻辑卷中在磁盘上跟踪资源。当其在磁盘上表示已使用已获取的进程的唯一标识符进行更新时,会采取资源。如果是 SPM 角色,则 SPM 资源使用已获取它的 hostid 进行更新。
每个主机上的 Sanlock 进程只需要检查一次资源,才能看到它们被使用。在进行初始检查后,Sanlock 可以监控锁定空间,直到具有锁定资源的主机的时间戳过时。
sanlock 监控使用资源的应用程序。例如,VDSM 是针对 SPM 状态和 hostid 的监控。如果主机无法从 Manager 续订它的主机,它会丢失锁定空间中所有资源的排除。sanlock 更新资源以显示不再被使用。
如果 SPM 主机无法在指定时间内将时间戳写入存储域上的锁定空间,则主机的 Sanlock 请求实例会释放其资源。如果 VDSM 进程响应,则释放其资源,并且锁定空间中的 SPM 资源可由其他主机执行。
如果 SPM 主机上的 VDSM 没有响应释放资源的请求,则主机上的 Sanlock 将终止 VDSM 进程。如果 kill 命令失败,Sanlock 会试图使用 sigkill 来终止 VDSM。如果 sigkill 失败,Sanlock 依赖于 watchdog 守护进程来 重启主机。
每次主机上的 VDSM 续订其 hostid 并将时间戳写入锁定空间时,watchdog 守护进程都会收到 pet。当 VDSM 无法这样做时,watchdog 守护进程不再会被请求。在 watchdog 守护进程在给定时间内没有收到 pet 后,它会重启主机。达到的最终升级级别,保证 SPM 资源已被释放,并可以被另一主机执行。