云原生操作系统容器编排【免费下载链接】talosTalos Linux is a modern Linux distribution built for Kubernetes.项目地址https://gitcode.com/gh_mirrors/ta/talos点击查看免费下载本篇技术指南以 Talos Linux 官方参考文档中的storage配置包website/content/v1.15/reference/configuration/storage/_index.md为主体系统讲解 LVM 卷组、LVM 逻辑卷与 Linux MD 软件 RAID 三类存储虚拟化配置文档Document的完整字段、CEL 选择器语义与实际 YAML 示例并结合仓库内 machined 控制器的源码实现说明这些配置从机器配置到实际设备编排的底层原理。读完本文你将能够独立编写可用的 LVM 卷组/逻辑卷与 RAID 阵列配置并理解 Talos 的卷管理volume manager如何对待加密卷、系统盘与分区做出约束。存储虚拟化Talos 的配置驱动编排模型在 Talos Linux 中存储虚拟化配置以独立的配置文档configuration document形式存在于机器配置machine config中。storage包提供三类核心文档全部使用apiVersion: v1alpha1LVMVolumeGroupConfig定义一个 LVM 卷组Volume Group并通过 CEL 选择器挑选参与的后端磁盘LVMLogicalVolumeConfig定义卷组内部的一个逻辑卷Logical Volume支持 linear、raid0、raid1、raid10 等多种布局RAIDArrayConfig定义一个 Linux MD软件 RAID阵列从匹配的磁盘上装配阵列暴露为/dev/disk/by-id/md-name-name。这三类文档共同构成了 Talos 存储虚拟化的“声明式控制面”你只需要在机器配置中声明“想要什么样的卷”Talos 的控制器controller会负责将声明翻译成真实的物理卷PV、卷组VG、逻辑卷LV与 MD 阵列。LVMVolumeGroupConfig声明卷组与后端磁盘选择完整示例原文档给出的最小可用示例LVMVolumeGroupConfigapiVersion: v1alpha1 kind: LVMVolumeGroupConfig name: vg-pool # Volume group name. # The provisioning describes how the Physical Volumes are provisioned. provisioning: # Matches disks to initialize as physical volumes. volumeSelector: match: volume.partition_label.startsWith(r-lvm) # CEL expression matching a disk or partition to use as a physical volume.顶层字段说明FieldTypeDescriptionValue(s)namestring卷组名称。必须为 1-63 字符ASCII 字母、数字、连字符、下划线。provisioningProvisioningSpec描述物理卷PV的供应方式。provisioning如何初始化物理卷provisioning由ProvisioningSpec描述其唯一字段是volumeSelectorLVMVolumeSelectorSpec用于匹配要初始化为物理卷的磁盘。volumeSelector 的 CEL 匹配语义match字段是一个 CEL 表达式针对每个被发现的卷volume求值表达式中可用的变量为volume被发现的卷disk仅在匹配整块磁盘whole disk时绑定分区场景下为空分区即 raw 卷可以通过其分区标签匹配例如volume.partition_label在机器配置中声明的卷还支持volume_id匹配其值为“卷名 类型前缀”u-user、r-raw、s-swap例如volume_id r-lvmdataTalos 未作为卷管理的设备其volume_id为空字符串。两条重要的实战准则整盘用volume_id分区用partition_label整块磁盘的卷没有分区标签可供匹配因此应使用volume_id分区raw volume则应使用volume.partition_label。加密卷匹配的是解密后的设备Talos 会在已打开unlocked的设备上创建物理卷绝不会在密文ciphertext上写入。因此加密卷也使用volume_id匹配且卷管理器只有在准备好该卷例如加密卷已解锁之后才会匹配供应流程会等待解锁完成而不是向仍处于锁定状态的设备写入。原文档给出的两个官方示例匹配标签为r-lvm*的 raw 卷分区match: volume.partition_label.startsWith(r-lvm)匹配名为lvmdata的 raw 卷无论是否加密match: volume_id r-lvmdataLVMLogicalVolumeConfig在卷组内定义逻辑卷完整示例原文档给出的示例LVMLogicalVolumeConfigapiVersion: v1alpha1 kind: LVMLogicalVolumeConfig name: lv-data # Logical volume name. type: linear # Logical volume layout. # Describes how the logical volume is provisioned. provisioning: volumeGroup: vg-pool # Name of the volume group that backs the logical volume. maxSize: 50GiB # The maximum size of the volume.顶层字段说明FieldTypeDescriptionValue(s)namestring逻辑卷名称。必须为 1-63 字符ASCII 字母、数字、连字符、下划线。typeLVMLogicalVolumeType逻辑卷布局。linearraid0raid1raid10mirrorsuint32raid1/raid10布局的镜像副本数。未设置时默认为 1即双向镜像。对linear或raid0无效。stripesuint32raid0/raid10布局的条带数。未设置时默认使用所有可用物理卷必须至少为 2。对linear或raid1无效。provisioningLVMLogicalVolumeProvisioningSpec描述逻辑卷的供应方式。provisioning指定后端卷组与尺寸策略LVMLogicalVolumeProvisioningSpec描述逻辑卷如何被供应字段如下FieldTypeDescriptionValue(s)volumeGroupstring支撑该逻辑卷的卷组名称。minSizeByteSize卷的最小尺寸。以字节为单位也支持人类可读格式如100MB。maxSizeSize卷的最大尺寸。以字节或卷组百分比表示支持人类可读格式如100MB或80%。尺寸字段的设计要点maxSize既支持绝对字节值50GiB也支持卷组百分比80%这为“占用卷组剩余空间的一部分”这类场景提供了声明式表达minSize则保证供应时的下限。布局类型与镜像/条带约束速查linear线性布局不使用mirrors/stripesraid0条带化布局stripes默认取全部可用物理卷最小为 2raid1镜像布局mirrors默认为 1双向镜像不使用stripesraid10条带 镜像两者均可用mirrors默认为 1stripes默认取全部可用物理卷且最小为 2。RAIDArrayConfig用 Linux MD 软件 RAID 装配阵列完整示例原文档给出的示例RAIDArrayConfigapiVersion: v1alpha1 kind: RAIDArrayConfig name: talos # Array name, stamped into the md metadata. level: raid1 # RAID level. # The provisioning describes how the RAID arrays are provisioned. provisioning: # The volume selector describes how the members of RAID arrays are selected. volumeSelector: match: disk.transport nvme disk.size 100u * GiB # CEL expression matching the member volumes of the array.顶层字段说明FieldTypeDescriptionValue(s)namestring阵列名称会写入 md 元数据。必须为 1-32 字符ASCII 字母、数字、连字符、下划线。暴露为/dev/disk/by-id/md-name-name。levelMDLevelRAID 级别。raid1metadataMDMetadataMD 磁盘元数据格式。默认1.0将 superblock 存储在成员设备的末尾使阵列可支撑可引导分区数据阵列无需可引导建议使用1.2。1.01.2provisioningRAIDProvisioningSpec描述 RAID 阵列的供应方式。provisioning成员卷选择RAIDProvisioningSpec的唯一字段是volumeSelectorRAIDVolumeSelector用于选择阵列成员。volumeSelector 的 CEL 匹配语义针对每个被发现的卷求值变量为volume整块磁盘时绑定disk变量分区场景为空因此整盘与分区均可被选中系统盘及其分区永不可被选为成员机器配置中声明的卷同样支持volume_idu-/r-/s-前缀例如volume_id r-mirror0未被 Talos 管理的设备volume_id为空加密卷的匹配规则与 LVM 一致Talos 在已打开的设备上构建阵列绝不在密文上构建且仅在卷管理器准备好该卷之后才进行匹配。原文档官方示例匹配大于 100 GiB 的 NVMe 磁盘match: disk.transport nvme disk.size 100u * GiB关键行为增量式供应与手动清除原文档特别强调RAID 阵列的供应是增量的additive本配置文档只会创建阵列及其成员永远不会销毁它们。若需移除阵列应使用talosctl wipe md device命令对应 CLI 实现位于 cmd/talosctl/cmd/talos/wipe.go。这意味着删除RAIDArrayConfig文档并不会自动清理磁盘上的 md 元数据运维上需要显式执行 wipe。从文档到设备控制器实现链上述三类文档并非静态配置而是由 machined 内的存储控制器持续编排为真实设备状态。仓库中的控制器源码验证了这一机制位于 internal/app/machined/pkg/controllers/storageLVMPhysicalVolumeSpecController监听机器配置与DiscoveredVolume/Disk/SystemDisk/VolumeStatus等 block 资源将LVMVolumeGroupConfig的选择器对已发现的卷整盘与分区求值为每个命中项输出一个LVMPhysicalVolumeSpec从源码结构看它还负责输出LVMValidationError说明选择器错误会被显式上报为校验错误。LVMVolumeGroupSpecController按卷组名称聚合所有LVMPhysicalVolumeSpec为每个v1alpha1文档输出一个LVMVolumeGroupSpec其中PhysicalVolumes字段列出该卷组的全部设备已排序。该控制器同时以OutputExclusive方式管理输出并会在机器配置变更后清理不再存在的卷组资源。MDArraySpecController把RAIDArrayConfig文档渲染为MDArraySpec透传 RAID 级别spec.Level、元数据格式spec.Metadata与卷选择器spec.VolumeSelector同样采用OutputExclusive输出并在配置删除时清理。这条链路清晰地展示了 Talos 的编排哲学机器配置中的文档是唯一事实来源控制器负责将其映射到资源状态最终由卷管理器volume manager落盘为真实设备。配置实战建议结合原文档字段约束与源码实现编写存储配置时建议遵循以下要点命名即约束卷组与逻辑卷名称限制为 1-63 字符ASCII 字母/数字/连字符/下划线RAID 阵列名限制为 1-32 字符违反约束会被拒绝。区分整盘与分区选择整盘用volume_idu-/r-/s-前缀分区用volume.partition_label加密卷一律用volume_id因为物理卷创建在解密设备上。牢记系统盘保护RAID 成员选择永远不会包含系统盘及其分区这是内置的安全边界。maxSize的百分比用法需要“占满卷组剩余空间”时直接写百分比如80%需要固定大小时写人类可读字节值如50GiB。RAID 元数据格式按用途选择需要阵列支撑可引导分区时用默认的1.0纯数据阵列用1.2。销毁需显式操作RAID 阵列供应是增量式的删除配置文档不会清理 md 元数据请使用talosctl wipe md device完成清理。赞分享云原生操作系统容器编排【免费下载链接】talosTalos Linux is a modern Linux distribution built for Kubernetes.项目地址https://gitcode.com/gh_mirrors/ta/talos点击查看免费下载相关推荐Talos Linux 存储配置指南LVMVolumeGroupConfig 声明式卷组与物理卷选择器详解Talos Linux 存储配置指南LVMVolumeGroupConfig 声明式卷组与物理卷选择器详解 导读 LVMVolumeGroupConfig 是云原生操作系统容器编排Talos Linux 网络配置指南VethConfig 虚拟以太网设备对配置详解Talos Linux 网络配置指南VethConfig 虚拟以太网设备对配置详解 导读 本文讲解 Talos Linux 的 VethConfig 配置文档云原生操作系统容器编排Talos Linux RAIDArrayConfig 配置指南基于 CEL 选择器动态创建软件 RAIDMD阵列Talos Linux RAIDArrayConfig 配置指南基于 CEL 选择器动态创建软件 RAIDMD阵列 本指南详解 Talos Linux 的云原生操作系统容器编排创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考