connector – Connector¶
用于每个支持的传输协议的 Brick Connector 对象。
这里的连接器负责发现和移除每个支持的传输协议的卷。
- class os_brick.initiator.connector.InitiatorConnector¶
- static factory(protocol, root_helper, driver=None, use_multipath=False, device_scan_attempts=3, arch=None, *args, **kwargs)¶
基于协议和架构构建 Connector 对象。
- class os_brick.initiator.connector.ISCSIConnector(root_helper: str, driver=None, execute=None, use_multipath: bool = False, device_scan_attempts: int = 3, transport: str = 'default', *args, **kwargs)¶
连接/断开 iSCSI 卷的 Connector 类。
- connect_volume(connection_properties: dict) dict[str, str] | None¶
将卷连接到 instance_name。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的有效字典。
- 返回值:
dict
iSCSI 的 connection_properties 必须包括:target_portal(s) - IP 和可选端口 target_iqn(s) - iSCSI Qualified Name target_lun(s) - 卷的 LUN ID 请注意,当 use_multipath=True 时可以使用复数键。
- disconnect_volume(connection_properties: dict, device_info: dict, force: bool = False, ignore_errors: bool = False) None¶
从 instance_name 断开卷。
- 参数:
connection_properties (dict 必须包括:target_portal(s) - IP 和可选端口 target_iqn(s) - iSCSI Qualified Name target_lun(s) - 卷的 LUN ID) – 描述所有目标卷属性的字典。
device_info (dict) – 历史差异,但与 connection_props 相同
force (bool) – 是否强制断开连接,即使刷新失败。
ignore_errors (bool) – 当 force 为 True 时,这将决定在完成操作后是忽略错误还是引发异常。默认值为 False。
- class os_brick.initiator.connector.FibreChannelConnector(root_helper: str, driver=None, execute: str | None = None, use_multipath: bool = False, device_scan_attempts: int = 3, *args, **kwargs)¶
连接/断开 Fibre Channel 卷的 Connector 类。
- connect_volume(connection_properties: dict) dict¶
将卷连接到 instance_name。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的字典。
- 返回值:
dict
Fibre Channel 的 connection_properties 必须包括:target_wwn - World Wide Name target_lun - 卷的 LUN ID
- disconnect_volume(connection_properties: dict, device_info: dict, force: bool = False, ignore_errors: bool = False) None¶
从 instance_name 断开卷。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的字典。
device_info (dict) – 历史差异,但与 connection_props 相同
Fibre Channel 的 connection_properties 必须包括:target_wwn - World Wide Name target_lun - 卷的 LUN ID
- class os_brick.initiator.connector.LocalConnector(root_helper, driver=None, *args, **kwargs)¶
“连接/断开基于文件系统的卷的 Connector 类。
- connect_volume(connection_properties: dict) dict¶
连接到卷。
- 参数:
connection_properties (dict) –
描述所有目标卷属性的字典。
connection_properties必须包括device_path- 要连接的卷的路径
- 返回值:
dict
- disconnect_volume(connection_properties, device_info, force=False, ignore_errors=False)¶
从本地主机断开卷。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的字典。
device_info (dict) – 历史差异,但与 connection_props 相同
- class os_brick.initiator.connector.HuaweiStorHyperConnector(root_helper, driver=None, *args, **kwargs)¶
“连接/断开 SDSHypervisor 卷的 Connector 类。
- connect_volume(connection_properties)¶
连接到卷。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的字典。
- 返回值:
dict
- disconnect_volume(connection_properties, device_info, force=False, ignore_errors=False)¶
从本地主机断开卷。
- 参数:
connection_properties (dict) – 描述所有目标卷属性的字典。
device_info (dict) – 历史差异,但与 connection_props 相同
- class os_brick.initiator.connectors.nvmeof.NVMeOFConnector(root_helper: str, driver: HostDriver | None = None, use_multipath: bool = False, device_scan_attempts: int = 5, *args, **kwargs)¶
用于连接/断开 NVMe-oF 卷的连接器类。
- connect_volume(connection_properties: NVMeOFConnProps) dict[str, str]¶
连接并发现卷。
- disconnect_volume(connection_properties: dict, device_info: dict[str, str], force: bool = False, ignore_errors: bool = False) None¶
刷新卷。
卷的断开发生在存储系统端。在这里,如果没有任何卷剩余,我们可以删除到子系统的连接。但新的卷可能会在同时异步出现。所以剩下的只有刷新或拆卸相应的 RAID 设备。
- 参数:
connection_properties (dict) – 字典,描述了所有目标卷属性,如 connect_volume 中所述,但还包含“device_path”键,其中包含连接的卷的路径(Nova 添加此项)。
device_info (dict) – 历史差异,但与 connection_props 相同
- extend_volume(connection_properties: dict[str, str]) int¶
更新已连接的卷,以反映扩展后的当前大小
反映 NVMe-oF 卷的新大小的唯一方法是重新扫描,这将重新扫描整个子系统。这在 attach_volume 和 detach_volume 中是一个问题,但在这里不是,因为我们将至少在子系统中拥有我们正在操作的命名空间。
棘手的部分是知道何时已经完成重新扫描,并且 sysfs 上的卷大小是最终的。重新扫描可能由于 AER 消息而在此方法调用之前已经发生,或者我们可能需要在这里触发它。
可以使用“nvme ns-rescan”手动触发扫描,或者写入 configf 的 rescan 文件中的 1,或者它们可以通过调用“nvme list”、“nvme id-ns”,甚至使用“nvme admin-passthru”命令间接触发。
即使在使用上述任何 NVMe 命令获取新大小后,我们仍然需要等待直到这反映在主机设备上,因为我们不能在新的大小生效之前返回给调用者。
如果在系统上没有看到新的大小生效 5 秒钟,或者我们无法使用 nvme 获取新的大小,那么我们将在后者中重新扫描,并且在两种情况下,我们都会盲目地等待 5 秒钟并返回当前存在的大小。
对于复制的卷,需要扩展 RAID。
- get_volume_paths(connection_properties: NVMeOFConnProps, device_info: dict[str, str] | None = None) list[str]¶
返回存在卷的路径。
- classmethod get_connector_properties(root_helper, *args, **kwargs) dict¶
NVMe-oF 连接器属性(initiator uuid 和 nqn)。