From b25b1fbf6285aae48079c6d5be62770468459305 Mon Sep 17 00:00:00 2001 From: panxiao81 Date: Wed, 16 Sep 2026 17:15:08 +0000 Subject: [PATCH] =?UTF-8?q?=E9=81=BF=E5=85=8D=20microVM=20=E9=95=9C?= =?UTF-8?q?=E5=83=8F=E5=A4=8D=E5=88=B6=E5=8D=A0=E6=BB=A1=20LXC=20page=20ca?= =?UTF-8?q?che?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- scripts/microvm-runner-launch | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 55e0c87..04d6668 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ runs-on: [self-hosted, vm] - `controller`:接收 Gitea `workflow_job` webhook,将指定 label 的 queued job 发布到 NATS JetStream。 - `worker`:领取任务、限制并发,并通过 Pod 或 microVM backend 创建一次性环境。 -- `microvm-runner-launch`:为每个任务复制 flat qcow2 root disk(支持时使用 reflink)、创建 NoCloud seed 和 TAP,运行 +- `microvm-runner-launch`:为每个任务以 direct I/O 转换出 flat qcow2 root disk、创建 NoCloud seed 和 TAP,运行 Cloud Hypervisor,退出后完整清理。 - `guest-runner`:在 guest 中领取一次性 runner registration token,注册 ephemeral runner,执行一个 job 后关机。 diff --git a/scripts/microvm-runner-launch b/scripts/microvm-runner-launch index ff3865b..64e3a5c 100755 --- a/scripts/microvm-runner-launch +++ b/scripts/microvm-runner-launch @@ -45,8 +45,9 @@ test -r "$base_image" test -r "$firmware" install -d -m 0700 "$state_root/instances" "$vm_dir" # Cloud Hypervisor cannot open qcow2 backing chains. Keep each disposable -# root disk flat; reflink-capable storage still makes this copy cheap. -cp --reflink=auto --sparse=always "$base_image" "$overlay" +# root disk flat and bypass the LXC page cache: caching both a 5 GiB copy and +# guest RAM can otherwise trigger the container memory limit. +qemu-img convert -q -T none -t none -f qcow2 -O qcow2 "$base_image" "$overlay" cat >"$vm_dir/meta-data" <