From 9abefceb194645d47288e81a2589d314127e0664 Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 19:53:18 +0900 Subject: [PATCH 1/6] Update Vagrantfile --- jepsen/Vagrantfile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/jepsen/Vagrantfile b/jepsen/Vagrantfile index d96d3bf..e84e964 100644 --- a/jepsen/Vagrantfile +++ b/jepsen/Vagrantfile @@ -19,13 +19,13 @@ Vagrant.configure("2") do |config| # VirtualBox (Intel) defaults node.vm.provider "virtualbox" do |vb| - vb.memory = name == :ctrl ? 4096 : 2048 + vb.memory = name == :ctrl ? 2048 : 1024 vb.cpus = 2 end # UTM (Apple Silicon) defaults node.vm.provider "utm" do |utm| - utm.memory = name == :ctrl ? 4096 : 2048 + utm.memory = name == :ctrl ? 2048 : 1024 utm.cpus = 2 end From 009324f1a9af4e0e28657a3f7acab1fe9f8187ee Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 20:47:56 +0900 Subject: [PATCH 2/6] Update Vagrantfile --- jepsen/Vagrantfile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/jepsen/Vagrantfile b/jepsen/Vagrantfile index e84e964..1494773 100644 --- a/jepsen/Vagrantfile +++ b/jepsen/Vagrantfile @@ -29,6 +29,13 @@ Vagrant.configure("2") do |config| utm.cpus = 2 end + node.vm.provider "libvirt" do |kvm| + kvm.memory = name == :ctrl ? 4096 : 2048 + kvm.cpus = 2 + # 必要に応じてドライバを指定 + kvm.driver = 'kvm' + end + if name == :ctrl node.vm.synced_folder "..", "/home/vagrant/elastickv", type: "rsync", From 7816187303f4cb4678f0d98b45c32da6a83669ce Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 21:00:11 +0900 Subject: [PATCH 3/6] ci: configure jepsen workflow to use libvirt on ubuntu-latest --- .github/workflows/jepsen.yml | 31 +++++++++++++++++++++++++++---- 1 file changed, 27 insertions(+), 4 deletions(-) diff --git a/.github/workflows/jepsen.yml b/.github/workflows/jepsen.yml index a56e253..0d94f60 100644 --- a/.github/workflows/jepsen.yml +++ b/.github/workflows/jepsen.yml @@ -21,8 +21,9 @@ on: jobs: jepsen: - # Requires a self-hosted runner with VirtualBox + Vagrant and at least 12GB RAM free. - runs-on: [self-hosted, virtualbox] + # Requires a runner with KVM support (e.g. larger GitHub runners or metal) for decent performance. + # Standard ubuntu-latest might fall back to QEMU TCG (very slow) or fail if kvm driver is forced. + runs-on: ubuntu-latest timeout-minutes: 120 steps: - name: Checkout @@ -35,9 +36,31 @@ jobs: with: go-version: "1.25.5" + - name: Install Vagrant and Libvirt + run: | + sudo apt-get update + sudo apt-get install -y vagrant ruby-libvirt qemu-kvm libvirt-daemon-system libvirt-clients bridge-utils libvirt-dev gcc make + + # Check KVM support + echo "Checking KVM support..." + if [ -r /dev/kvm ]; then + echo "KVM is available." + else + echo "WARNING: KVM is NOT available. VMs may run very slowly or fail." + fi + + # Setup Libvirt permissions + sudo usermod -aG libvirt $USER + # Allow current session to access libvirt socket + sudo chmod 666 /var/run/libvirt/libvirt-sock + + # Install Vagrant plugins + vagrant plugin install vagrant-libvirt + vagrant plugin install vagrant-scp + - name: Bring up Jepsen VMs working-directory: jepsen - run: vagrant up + run: vagrant up --provider=libvirt - name: Run Jepsen workload working-directory: jepsen @@ -72,4 +95,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: jepsen-results - path: artifacts/results.tgz + path: artifacts/results.tgz \ No newline at end of file From 651320b6e9bad32220187a3e3c1bc77d7908da3f Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 21:37:24 +0900 Subject: [PATCH 4/6] Update jepsen.yml --- .github/workflows/jepsen.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/jepsen.yml b/.github/workflows/jepsen.yml index 0d94f60..387c6f1 100644 --- a/.github/workflows/jepsen.yml +++ b/.github/workflows/jepsen.yml @@ -23,7 +23,9 @@ jobs: jepsen: # Requires a runner with KVM support (e.g. larger GitHub runners or metal) for decent performance. # Standard ubuntu-latest might fall back to QEMU TCG (very slow) or fail if kvm driver is forced. - runs-on: ubuntu-latest + # runs-on: ubuntu-latest + runs-on: [self-hosted] + timeout-minutes: 120 steps: - name: Checkout @@ -95,4 +97,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: jepsen-results - path: artifacts/results.tgz \ No newline at end of file + path: artifacts/results.tgz From 820031d743bc7647c7d3e3eb87782b9bd39a1fc0 Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 21:40:45 +0900 Subject: [PATCH 5/6] jepsen: use generic/debian12 box for libvirt provider --- jepsen/Vagrantfile | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/jepsen/Vagrantfile b/jepsen/Vagrantfile index 1494773..b707ae1 100644 --- a/jepsen/Vagrantfile +++ b/jepsen/Vagrantfile @@ -29,7 +29,8 @@ Vagrant.configure("2") do |config| utm.cpus = 2 end - node.vm.provider "libvirt" do |kvm| + node.vm.provider "libvirt" do |kvm, override| + override.vm.box = "generic/debian12" kvm.memory = name == :ctrl ? 4096 : 2048 kvm.cpus = 2 # 必要に応じてドライバを指定 From 8946871d6b34745e5afcaf47be7d64efd011d148 Mon Sep 17 00:00:00 2001 From: "Yoshiaki Ueda (bootjp)" Date: Sat, 3 Jan 2026 21:46:04 +0900 Subject: [PATCH 6/6] jepsen: allow libvirt driver fallback to qemu in CI --- .github/workflows/jepsen.yml | 10 +++++++++- jepsen/Vagrantfile | 2 +- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/.github/workflows/jepsen.yml b/.github/workflows/jepsen.yml index 387c6f1..ae62e5d 100644 --- a/.github/workflows/jepsen.yml +++ b/.github/workflows/jepsen.yml @@ -62,7 +62,15 @@ jobs: - name: Bring up Jepsen VMs working-directory: jepsen - run: vagrant up --provider=libvirt + run: | + if [ -r /dev/kvm ] && [ -w /dev/kvm ]; then + echo "KVM is available. Using kvm driver." + export LIBVIRT_DRIVER=kvm + else + echo "KVM is NOT available or not writable. Falling back to qemu driver (slow)." + export LIBVIRT_DRIVER=qemu + fi + vagrant up --provider=libvirt - name: Run Jepsen workload working-directory: jepsen diff --git a/jepsen/Vagrantfile b/jepsen/Vagrantfile index b707ae1..17a562a 100644 --- a/jepsen/Vagrantfile +++ b/jepsen/Vagrantfile @@ -34,7 +34,7 @@ Vagrant.configure("2") do |config| kvm.memory = name == :ctrl ? 4096 : 2048 kvm.cpus = 2 # 必要に応じてドライバを指定 - kvm.driver = 'kvm' + kvm.driver = ENV['LIBVIRT_DRIVER'] || 'kvm' end if name == :ctrl