From f07f4e2ce0dc69a566409cbceb1eb3cb9e4f004b Mon Sep 17 00:00:00 2001
From: Paul Buetow
Date: Sun, 12 Oct 2025 11:11:13 +0300
Subject: Update content for html
---
CLAUDE.md | 60 -------
about/index.html | 3 +-
about/resources.html | 200 ++++++++++-----------
gemfeed/2021-07-04-the-well-grounded-rubyist.html | 2 +-
...5-07-14-f3s-kubernetes-with-freebsd-part-6.html | 161 +++++++++++++++++
...y-takeaways-from-the-well-grounded-rubyist.html | 2 +-
gemfeed/atom.xml | 165 ++++++++++++++++-
index.html | 2 +-
uptime-stats.html | 32 ++--
9 files changed, 445 insertions(+), 182 deletions(-)
delete mode 100644 CLAUDE.md
diff --git a/CLAUDE.md b/CLAUDE.md
deleted file mode 100644
index 5a79f3e0..00000000
--- a/CLAUDE.md
+++ /dev/null
@@ -1,60 +0,0 @@
-# CLAUDE.md
-
-This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
-
-## Project Overview
-
-This is a static site generator project that uses **Gemtext** as the source format and generates multiple output formats. The project uses "Gemtexter" (a Bash-based static site generator) to convert Gemtext files into HTML, Markdown, and various feed formats.
-
-**Key Architecture:**
-- **Source files**: Gemtext (`.gmi`) and template files (`.gmi.tpl`) in the `/gemtext` directory
-- **Generated outputs**: HTML in `../html/`, Markdown in `../md/`, with caching in `../cache/`
-- **Content structure**: Blog posts in `gemfeed/`, personal notes in `notes/`, about pages in `about/`
-- **Template system**: `.gmi.tpl` files are processed to generate final `.gmi` files with dynamic content
-
-## Build Commands
-
-Since this project uses Gemtexter (a Bash-based static site generator), the build process involves:
-
-**Main generation command:**
-```bash
-# From the parent directory (/home/paul/git/foo.zone-content/)
-# Look for gemtexter script or build scripts in the parent directory
-```
-
-**File structure patterns:**
-- `.gmi.tpl` → `.gmi` (template processing)
-- `.gmi` → `.html` + `.md` + feeds (multi-format generation)
-
-## Content Architecture
-
-**Template System:**
-- Files with `.gmi.tpl` extension are templates that get processed
-- Templates can include dynamic content like timestamps and automatic content generation
-- Example: `index.gmi.tpl` generates `index.gmi` with current timestamp
-
-**Output Formats:**
-- **Gemtext**: Native format for Gemini protocol (`.gmi` files)
-- **HTML**: Web-ready format with embedded CSS and fonts
-- **Markdown**: For GitHub Pages deployment
-- **Atom feeds**: For blog subscription (XML format)
-- **Gemfeeds**: Gemini-specific feed format
-
-**Content Organization:**
-- `gemfeed/`: Blog posts with date-prefixed naming (YYYY-MM-DD-title.gmi)
-- `notes/`: Book notes and technical references
-- `about/`: Personal information and resource lists
-
-## Development Workflow
-
-1. **Content Creation**: Write new content in Gemtext format (`.gmi` files)
-2. **Template Updates**: Modify `.gmi.tpl` files for dynamic content
-3. **Generation**: Run Gemtexter to generate all output formats
-4. **Multi-format Output**: Content automatically appears in HTML, Markdown, and feed formats
-
-## Important Notes
-
-- The current working directory is `/gemtext` but build tools are likely in the parent directory
-- Generated files should not be edited directly - edit source `.gmi` or `.gmi.tpl` files instead
-- The project generates a complete multi-format website from simple Gemtext sources
-- Cache files in `../cache/` help with performance during regeneration
\ No newline at end of file
diff --git a/about/index.html b/about/index.html
index 4b2bd7a6..2a21835b 100644
--- a/about/index.html
+++ b/about/index.html
@@ -55,7 +55,8 @@
Inhibitor Phase; Alastair Reynolds; Audiobook
-
A Fire Upon the Deep (german: Ein Feuer auf der Tiefe); Vernor Vinge; eBook
+
A Fire Upon the Deep (german: Ein Feuer auf der Tiefe); Vernor Vinge; eBook (buecher.de)
+
Origin: Die Entdecknug (german); Andreas Brandhorst; eBook (buecher.de)
Books on my wishlist
diff --git a/about/resources.html b/about/resources.html
index 2818672a..b49e1156 100644
--- a/about/resources.html
+++ b/about/resources.html
@@ -50,52 +50,52 @@
In random order:
-
Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
-
Concurrency in Go; Katherine Cox-Buday; O'Reilly
-
Ultimate Go Notebook; Bill Kennedy
-
Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
-
Leanring eBPF; Liz Rice; O'Reilly
-
Effective Java; Joshua Bloch; Addison-Wesley Professional
-
Pro Puppet; James Turnbull, Jeffrey McCune; Apress
-
Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
-
Raku Recipes; J.J. Merelo; Apress
-
Perl New Features; Joshua McAdams, brian d foy; Perl School
-
Systemprogrammierung in Go; Frank Müller; dpunkt
-
Terraform Cookbook; Mikael Krief; Packt Publishing
The Docker Book; James Turnbull; Kindle
+
Terraform Cookbook; Mikael Krief; Packt Publishing
+
The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
+
Pro Puppet; James Turnbull, Jeffrey McCune; Apress
+
The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
+
The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
Data Science at the Command Line; Jeroen Janssens; O'Reilly
-
Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
-
The Pragmatic Programmer; David Thomas; Addison-Wesley
-
The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
+
DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
+
Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
+
Systemprogrammierung in Go; Frank Müller; dpunkt
+
Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
+
Funktionale Programmierung; Peter Pepper; Springer
+
DNS and BIND; Cricket Liu; O'Reilly
Effective awk programming; Arnold Robbins; O'Reilly
-
Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
-
Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
-
The Go Programming Language; Alan A. A. Donovan; Addison-Wesley Professional
-
Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
+
Raku Recipes; J.J. Merelo; Apress
+
Learn You a Haskell for Great Good!; Miran Lipovaca; No Starch Press
Distributed Systems: Principles and Paradigms; Andrew S. Tanenbaum; Pearson
+
Ultimate Go Notebook; Bill Kennedy
+
Systems Performance Tuning; Gian-Paolo D. Musumeci and others...; O'Reilly
+
The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
+
Amazon Web Services in Action; Michael Wittig and Andreas Wittig; Manning Publications
+
Concurrency in Go; Katherine Cox-Buday; O'Reilly
Kubernetes Cookbook; Sameer Naik, Sébastien Goasguen, Jonathan Michaux; O'Reilly
-
Polished Ruby Programming; Jeremy Evans; Packt Publishing
-
Site Reliability Engineering; How Google runs production systems; O'Reilly
-
The Practise of System and Network Administration; Thomas A. Limoncelli, Christina J. Hogan, Strata R. Chalup; Addison-Wesley Professional Pro Git; Scott Chacon, Ben Straub; Apress
+
Object-Oriented Programming with ANSI-C; Axel-Tobias Schreiner
+
C++ Programming Language; Bjarne Stroustrup;
+
Perl New Features; Joshua McAdams, brian d foy; Perl School
+
21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
Raku Fundamentals; Moritz Lenz; Apress
-
Modern Perl; Chromatic ; Onyx Neon Press
-
Higher Order Perl; Mark Dominus; Morgan Kaufmann
-
Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
-
The Kubernetes Book; Nigel Poulton; Unabridged Audiobook
-
DevOps And Site Reliability Engineering Handbook; Stephen Fleming; Audible
-
The KCNA (Kubernetes and Cloud Native Associate) Book; Nigel Poulton
+
The DevOps Handbook; Gene Kim, Jez Humble, Patrick Debois, John Willis; Audible
Java ist auch eine Insel; Christian Ullenboom;
+
Chaos Engineering - System Resiliency in Practice; Casey Rosenthal and Nora Jones; eBook
+
Programming Ruby 3.3 (5th Edition); Noel Rappin, with Dave Thomas; The Pragmatic Bookshelf
Tmux 2: Productive Mouse-free Development; Brain P. Hogan; The Pragmatic Programmers
+
Higher Order Perl; Mark Dominus; Morgan Kaufmann
+
The Pragmatic Programmer; David Thomas; Addison-Wesley
+
Leanring eBPF; Liz Rice; O'Reilly
+
Effective Java; Joshua Bloch; Addison-Wesley Professional
Go Brain Teasers - Exercise Your Mind; Miki Tebeka; The Pragmatic Programmers
-
97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
-
C++ Programming Language; Bjarne Stroustrup;
-
Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
-
21st Century C: C Tips from the New School; Ben Klemens; O'Reilly
-
Hands-on Infrastructure Monitoring with Prometheus; Joel Bastos, Pedro Araujo; Packt
-
DNS and BIND; Cricket Liu; O'Reilly
-
Think Raku (aka Think Perl 6); Laurent Rosenfeld, Allen B. Downey; O'Reilly
+
Modern Perl; Chromatic ; Onyx Neon Press
+
Polished Ruby Programming; Jeremy Evans; Packt Publishing
+
Site Reliability Engineering; How Google runs production systems; O'Reilly
Developing Games in Java; David Brackeen and others...; New Riders
-
Funktionale Programmierung; Peter Pepper; Springer
+
Clusterbau mit Linux-HA; Michael Schwartzkopff; O'Reilly
+
Learn You Some Erlang for Great Good; Fred Herbert; No Starch Press
+
Programming Perl aka "The Camel Book"; Tom Christiansen, brian d foy, Larry Wall & Jon Orwant; O'Reilly
+
97 things every SRE should know; Emil Stolarsky, Jaime Woo; O'Reilly
100 Go Mistakes and How to Avoid Them; Teiva Harsanyi; Manning Publications
Technical references
@@ -103,56 +103,56 @@
I didn't read them from the beginning to the end, but I am using them to look up things. The books are in random order:
+
Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
+
BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
Implementing Service Level Objectives; Alex Hidalgo; O'Reilly
Algorithms; Robert Sedgewick, Kevin Wayne; Addison Wesley
-
Understanding the Linux Kernel; Daniel P. Bovet, Marco Cesati; O'Reilly
-
Relayd and Httpd Mastery; Michael W Lucas
The Linux Programming Interface; Michael Kerrisk; No Starch Press
Go: Design Patterns for Real-World Projects; Mat Ryer; Packt
Groovy Kurz & Gut; Joerg Staudemeier; O'Reilly
-
BPF Performance Tools - Linux System and Application Observability, Brendan Gregg; Addison Wesley
+
Relayd and Httpd Mastery; Michael W Lucas
Self-development and soft-skills books
In random order:
-
Getting Things Done; David Allen
-
The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
-
The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
-
Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
-
97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
-
The Bullet Journal Method; Ryder Carroll; Fourth Estate
+
Influence without Authority; A. Cohen, D. Bradford; Wiley
+
Eat That Frog!; Brian Tracy; Hodder Paperbacks
Staff Engineer: Leadership beyond the management track; Will Larson; Audiobook
-
So Good They Can't Ignore You; Cal Newport; Business Plus
-
Soft Skills; John Sommez; Manning Publications
-
Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
-
Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
+
Atomic Habits; James Clear; Random House Business
+
The Good Enough Job; Simone Stolzoff; Ebury Edge
+
Deep Work; Cal Newport; Piatkus
+
The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
Coders at Work - Reflections on the craft of programming, Peter Seibel and Mitchell Dorian et al., Audiobook
+
Buddah and Einstein walk into a Bar; Guy Joseph Ale, Claire Bloom; Blackstone Publishing
+
Stop starting, start finishing; Arne Roock; Lean-Kanban University
+
Digital Minimalism; Cal Newport; Portofolio Penguin
+
97 Things Every Engineering Manager Should Know; Camille Fournier; Audiobook
+
The Obstacle Is The Way; Ryan Holiday; Profile Books Ltd
+
Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
+
Soft Skills; John Sommez; Manning Publications
+
Time Management for System Administrators; Thomas A. Limoncelli; O'Reilly
+
Meditation for Mortals, Oliver Burkeman, Audiobook
+
Psycho-Cybernetics; Maxwell Maltz; Perigee Books
Ultralearning; Anna Laurent; Self-published via Amazon
+
Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
The 7 Habits Of Highly Effective People; Stephen R. Covey; Simon & Schuster UK
-
The Power of Now; Eckhard Tolle; Yellow Kite
-
The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
-
Psycho-Cybernetics; Maxwell Maltz; Perigee Books
-
Eat That Frog!; Brian Tracy; Hodder Paperbacks
+
Solve for Happy; Mo Gawdat (RE-READ 1ST TIME)
+
The Bullet Journal Method; Ryder Carroll; Fourth Estate
+
The Phoenix Project - A Novel About IT, DevOps, and Helping your Business Win; Gene Kim and Kevin Behr; Trade Select
The Joy of Missing Out; Christina Crook; New Society Publishers
-
Never Split the Difference; Chris Voss, Tahl Raz; Random House Business
-
Meditation for Mortals, Oliver Burkeman, Audiobook
+
The Power of Now; Eckhard Tolle; Yellow Kite
+
Slow Productivity; Cal Newport; Penguin Random House
+
Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
101 Essays that change the way you think; Brianna Wiest; Audiobook
-
The Off Switch; Mark Cropley; Virgin Books (RE-READ 1ST TIME)
Consciousness: A Very Short Introduction; Susan Blackmore; Oxford Uiversity Press
-
Search Inside Yourself - The Unexpected path to Achieving Success, Happiness (and World Peace); Chade-Meng Tan, Daniel Goleman, Jon Kabat-Zinn; HarperOne
-
Digital Minimalism; Cal Newport; Portofolio Penguin
-
Who Moved My Cheese?; Dr. Spencer Johnson; Vermilion
-
Atomic Habits; James Clear; Random House Business
-
Stop starting, start finishing; Arne Roock; Lean-Kanban University
-
Slow Productivity; Cal Newport; Penguin Random House
-
The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
-
Eat That Frog; Brian Tracy
-
The Good Enough Job; Simone Stolzoff; Ebury Edge
-
Influence without Authority; A. Cohen, D. Bradford; Wiley
-
Deep Work; Cal Newport; Piatkus
+
So Good They Can't Ignore You; Cal Newport; Business Plus
Ultralearning; Scott Young; Thorsons
+
Eat That Frog; Brian Tracy
+
The Complete Software Developer's Career Guide; John Sonmez; Unabridged Audiobook
+
Getting Things Done; David Allen
+
The Daily Stoic; Ryan Holiday, Stephen Hanselman; Profile Books
@@ -161,22 +161,22 @@
Some of these were in-person with exams; others were online learning lectures only. In random order:
-
The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
-
Ultimate Go Programming; Bill Kennedy; O'Reilly Online
-
F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
+
Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
+
Scripting Vim; Damian Conway; O'Reilly Online
+
Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
The Well-Grounded Rubyist Video Edition; David. A. Black; O'Reilly Online
Cloud Operations on AWS - Learn how to configure, deploy, maintain, and troubleshoot your AWS environments; 3-day online live training with labs; Amazon
-
Red Hat Certified System Administrator; Course + certification (Although I had the option, I decided not to take the next course as it is more effective to self learn what I need)
-
Developing IaC with Terraform (with Live Lessons); O'Reilly Online
+
MySQL Deep Dive Workshop; 2-day on-site training
+
Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
+
The Ultimate Kubernetes Bootcamp; School of Devops; O'Reilly Online
Functional programming lecture; Remote University of Hagen
-
Structure and Interpretation of Computer Programs; Harold Abelson and more...;
+
F5 Loadbalancers Training; 2-day on-site training; F5, Inc.
Protocol buffers; O'Reilly Online
-
Algorithms Video Lectures; Robert Sedgewick; O'Reilly Online
+
Developing IaC with Terraform (with Live Lessons); O'Reilly Online
+
Ultimate Go Programming; Bill Kennedy; O'Reilly Online
AWS Immersion Day; Amazon; 1-day interactive online training
-
Linux Security and Isolation APIs Training; Michael Kerrisk; 3-day on-site training
+
Structure and Interpretation of Computer Programs; Harold Abelson and more...;
Apache Tomcat Best Practises; 3-day on-site training
-
MySQL Deep Dive Workshop; 2-day on-site training
-
Scripting Vim; Damian Conway; O'Reilly Online
Technical guides
@@ -194,61 +194,61 @@
In random order:
-
Wednesday Wisdom
+
BSD Now [BSD]
Deep Questions with Cal Newport
-
Dev Interrupted
+
Fallthrough [Golang]
Backend Banter
-
Maintainable
-
Hidden Brain
-
Pratical AI
-
Cup o' Go [Golang]
-
Modern Mentor
+
Wednesday Wisdom
The Pragmatic Engineer Podcast
-
BSD Now [BSD]
-
Fallthrough [Golang]
-
Fork Around And Find Out
The ProdCast (Google SRE Podcast)
+
Hidden Brain
+
Dev Interrupted
+
Fork Around And Find Out
+
Modern Mentor
+
Pratical AI
The Changelog Podcast(s)
+
Maintainable
+
Cup o' Go [Golang]
Podcasts I liked
I liked them but am not listening to them anymore. The podcasts have either "finished" (no more episodes) or I stopped listening to them due to time constraints or a shift in my interests.
-
Modern Mentor
-
Ship It (predecessor of Fork Around And Find Out)
-
Go Time (predecessor of fallthrough)
-
FLOSS weekly
-
Java Pub House
CRE: Chaosradio Express [german]
+
Java Pub House
+
FLOSS weekly
+
Go Time (predecessor of fallthrough)
+
Ship It (predecessor of Fork Around And Find Out)
+
Modern Mentor
Newsletters I like
This is a mix of tech and non-tech newsletters I am subscribed to. In random order:
-
Register Spill
-
Applied Go Weekly Newsletter
+
byteSizeGo
Ruby Weekly
Golang Weekly
+
The Pragmatic Engineer
+
Applied Go Weekly Newsletter
The Valuable Dev
-
Monospace Mentor
+
Register Spill
The Imperfectionist
+
Monospace Mentor
+
Andreas Brandhorst Newsletter (Sci-Fi author)
Changelog News
VK Newsletter
-
Andreas Brandhorst Newsletter (Sci-Fi author)
-
byteSizeGo
-
The Pragmatic Engineer
Magazines I like(d)
This is a mix of tech I like(d). I may not be a current subscriber, but now and then, I buy an issue. In random order:
-
freeX (not published anymore)
+
Linux User
Linux Magazine
LWN (online only)
-
Linux User
+
freeX (not published anymore)
Formal education
diff --git a/gemfeed/2021-07-04-the-well-grounded-rubyist.html b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
index 75d538d5..14332626 100644
--- a/gemfeed/2021-07-04-the-well-grounded-rubyist.html
+++ b/gemfeed/2021-07-04-the-well-grounded-rubyist.html
@@ -135,7 +135,7 @@ Hello World
Other Ruby-related posts:
Back to the main site
diff --git a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
index 9af59a5d..df04504e 100644
--- a/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
+++ b/gemfeed/2025-07-14-f3s-kubernetes-with-freebsd-part-6.html
@@ -49,6 +49,13 @@
Always verify datasets are mounted after reboot with zfs list -o name,mounted
Critical: Always ensure the replicated dataset on f1 remains read-only with doas zfs set readonly=on zdata/sink/f0/zdata/enc/nfsdata
+
Troubleshooting: zrepl Replication Not Working
+
+If zrepl replication is not working, here's a systematic approach to diagnose and fix common issues:
+
+#### Check if zrepl Services are Running
+
+First, verify that zrepl is running on both nodes:
+
+
+
# Check service status on both f0 and f1
+paul@f0:~ % doas service zrepl status
+paul@f1:~ % doas service zrepl status
+
+# If not running, start the service
+paul@f0:~ % doas service zrepl start
+paul@f1:~ % doas service zrepl start
+
+
+#### Check zrepl Status for Errors
+
+Use the status command to see detailed error information:
+
+
+
# Check detailed status (use --mode raw for non-tty environments)
+paul@f0:~ % doas zrepl status --mode raw
+
+# Look for error messages in the replication section
+# Common errors include "no common snapshot" or connection failures
+
+
+#### Fixing "No Common Snapshot" Errors
+
+This is the most common replication issue, typically occurring when:
+
+
+
The receiver has existing snapshots that don't match the sender
+
Different snapshot naming schemes are in use
+
The receiver dataset was created independently
+
+**Error message example:**
+
+no common snapshot or suitable bookmark between sender and receiver
+
+
+**Solution: Clean up conflicting snapshots on receiver**
+
+
+
# First, identify the destination dataset on f1
+paul@f1:~ % doas zfs list | grep sink
+
+# Check existing snapshots on the problematic dataset
+paul@f1:~ % doas zfs list -t snapshot | grep nfsdata
+
+# If you see snapshots with different naming (e.g., @daily-*, @weekly-*)
+# these conflict with zrepl's @zrepl_* snapshots
+
+# Destroy the entire destination dataset to allow clean replication
+paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zdata/enc/nfsdata
+
+# For VM replication, do the same for the fedora dataset
+paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zroot/bhyve/fedora
+
+# Wake up zrepl to start fresh replication
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_nfsdata
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_fedora
+
+# Check replication status
+paul@f0:~ % doas zrepl status --mode raw
+
+
+**Verification that replication is working:**
+
+
+
# Look for "stepping" state and active zfs send processes
+paul@f0:~ % doas zrepl status --mode raw | grep -A5 "State.*stepping"
+
+# Check for active ZFS commands
+paul@f0:~ % doas zrepl status --mode raw | grep -A10 "ZFSCmds.*Active"
+
+# Monitor progress - bytes replicated should be increasing
+paul@f0:~ % doas zrepl status --mode raw | grep BytesReplicated
+
# Test connectivity between nodes
+paul@f0:~ % nc -zv 192.168.2.131 8888
+
+# Check if zrepl is listening on f1
+paul@f1:~ % doas netstat -an | grep 8888
+
+# Verify WireGuard tunnel is working
+paul@f0:~ % ping 192.168.2.131
+
# Verify encryption keys are available on both nodes
+paul@f0:~ % doas zfs get keystatus zdata/enc/nfsdata
+paul@f1:~ % doas zfs get keystatus zdata/sink/f0/zdata/enc/nfsdata
+
+# Load keys if unavailable
+paul@f1:~ % doas zfs load-key -L file:///keys/f0.lan.buetow.org:zdata.key \
+ zdata/sink/f0/zdata/enc/nfsdata
+
# Monitor replication progress (run repeatedly to check status)
+paul@f0:~ % doas zrepl status --mode raw | grep -A10 BytesReplicated
+
+# Or install watch from ports and use it
+paul@f0:~ % doas pkg install watch
+paul@f0:~ % watch -n 5 'doas zrepl status --mode raw | grep -A10 BytesReplicated'
+
+# Check for new snapshots being created
+paul@f0:~ % doas zfs list -t snapshot | grep zrepl | tail -5
+
+# Verify snapshots appear on receiver
+paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep zrepl | tail -5
+
+
+This troubleshooting process resolves the most common zrepl issues and ensures continuous data replication between your storage nodes.
+
CARP (Common Address Redundancy Protocol)
High availability is crucial for storage systems. If the storage server goes down, all NFS clients (which will also be Kubernetes pods later on in this series) lose access to their persistent data. CARP provides a solution by creating a virtual IP address that automatically migrates to a different server during failures. This means that clients point to that VIP for NFS mounts and are always contacting the current primary node.
diff --git a/gemfeed/2025-10-11-key-takeaways-from-the-well-grounded-rubyist.html b/gemfeed/2025-10-11-key-takeaways-from-the-well-grounded-rubyist.html
index 75950fb3..1b893408 100644
--- a/gemfeed/2025-10-11-key-takeaways-from-the-well-grounded-rubyist.html
+++ b/gemfeed/2025-10-11-key-takeaways-from-the-well-grounded-rubyist.html
@@ -258,7 +258,7 @@ p hash.values_at(:a, :c)
Other Ruby-related posts:
Back to the main site
diff --git a/gemfeed/atom.xml b/gemfeed/atom.xml
index eadcfbbb..e119c57b 100644
--- a/gemfeed/atom.xml
+++ b/gemfeed/atom.xml
@@ -1,6 +1,6 @@
- 2025-10-11T15:44:10+03:00
+ 2025-10-12T11:09:49+03:00foo.zone feedTo be in the .zone!
@@ -265,7 +265,7 @@ p hash.values_at(:a, :c)
Other Ruby-related posts:
@@ -3402,6 +3409,160 @@ paul@f1:~ % doas zfs set \
Always verify datasets are mounted after reboot with zfs list -o name,mounted
Critical: Always ensure the replicated dataset on f1 remains read-only with doas zfs set readonly=on zdata/sink/f0/zdata/enc/nfsdata
+
Troubleshooting: zrepl Replication Not Working
+
+If zrepl replication is not working, here's a systematic approach to diagnose and fix common issues:
+
+#### Check if zrepl Services are Running
+
+First, verify that zrepl is running on both nodes:
+
+
+
# Check service status on both f0 and f1
+paul@f0:~ % doas service zrepl status
+paul@f1:~ % doas service zrepl status
+
+# If not running, start the service
+paul@f0:~ % doas service zrepl start
+paul@f1:~ % doas service zrepl start
+
+
+#### Check zrepl Status for Errors
+
+Use the status command to see detailed error information:
+
+
+
# Check detailed status (use --mode raw for non-tty environments)
+paul@f0:~ % doas zrepl status --mode raw
+
+# Look for error messages in the replication section
+# Common errors include "no common snapshot" or connection failures
+
+
+#### Fixing "No Common Snapshot" Errors
+
+This is the most common replication issue, typically occurring when:
+
+
+
The receiver has existing snapshots that don't match the sender
+
Different snapshot naming schemes are in use
+
The receiver dataset was created independently
+
+**Error message example:**
+
+no common snapshot or suitable bookmark between sender and receiver
+
+
+**Solution: Clean up conflicting snapshots on receiver**
+
+
+
# First, identify the destination dataset on f1
+paul@f1:~ % doas zfs list | grep sink
+
+# Check existing snapshots on the problematic dataset
+paul@f1:~ % doas zfs list -t snapshot | grep nfsdata
+
+# If you see snapshots with different naming (e.g., @daily-*, @weekly-*)
+# these conflict with zrepl's @zrepl_* snapshots
+
+# Destroy the entire destination dataset to allow clean replication
+paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zdata/enc/nfsdata
+
+# For VM replication, do the same for the fedora dataset
+paul@f1:~ % doas zfs destroy -r zdata/sink/f0/zroot/bhyve/fedora
+
+# Wake up zrepl to start fresh replication
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_nfsdata
+paul@f0:~ % doas zrepl signal wakeup f0_to_f1_fedora
+
+# Check replication status
+paul@f0:~ % doas zrepl status --mode raw
+
+
+**Verification that replication is working:**
+
+
+
# Look for "stepping" state and active zfs send processes
+paul@f0:~ % doas zrepl status --mode raw | grep -A5 "State.*stepping"
+
+# Check for active ZFS commands
+paul@f0:~ % doas zrepl status --mode raw | grep -A10 "ZFSCmds.*Active"
+
+# Monitor progress - bytes replicated should be increasing
+paul@f0:~ % doas zrepl status --mode raw | grep BytesReplicated
+
# Test connectivity between nodes
+paul@f0:~ % nc -zv 192.168.2.131 8888
+
+# Check if zrepl is listening on f1
+paul@f1:~ % doas netstat -an | grep 8888
+
+# Verify WireGuard tunnel is working
+paul@f0:~ % ping 192.168.2.131
+
# Verify encryption keys are available on both nodes
+paul@f0:~ % doas zfs get keystatus zdata/enc/nfsdata
+paul@f1:~ % doas zfs get keystatus zdata/sink/f0/zdata/enc/nfsdata
+
+# Load keys if unavailable
+paul@f1:~ % doas zfs load-key -L file:///keys/f0.lan.buetow.org:zdata.key \
+ zdata/sink/f0/zdata/enc/nfsdata
+
# Monitor replication progress (run repeatedly to check status)
+paul@f0:~ % doas zrepl status --mode raw | grep -A10 BytesReplicated
+
+# Or install watch from ports and use it
+paul@f0:~ % doas pkg install watch
+paul@f0:~ % watch -n 5 'doas zrepl status --mode raw | grep -A10 BytesReplicated'
+
+# Check for new snapshots being created
+paul@f0:~ % doas zfs list -t snapshot | grep zrepl | tail -5
+
+# Verify snapshots appear on receiver
+paul@f1:~ % doas zfs list -t snapshot -r zdata/sink | grep zrepl | tail -5
+
+
+This troubleshooting process resolves the most common zrepl issues and ensures continuous data replication between your storage nodes.
+
CARP (Common Address Redundancy Protocol)
High availability is crucial for storage systems. If the storage server goes down, all NFS clients (which will also be Kubernetes pods later on in this series) lose access to their persistent data. CARP provides a solution by creating a virtual IP address that automatically migrates to a different server during failures. This means that clients point to that VIP for NFS mounts and are always contacting the current primary node.
diff --git a/index.html b/index.html
index 7cdb2637..144ac20c 100644
--- a/index.html
+++ b/index.html
@@ -13,7 +13,7 @@
Hello!
-This site was generated at 2025-10-11T15:44:10+03:00 by Gemtexter
+This site was generated at 2025-10-12T11:09:49+03:00 by Gemtexter
-This site was last updated at 2025-10-11T15:44:10+03:00
+This site was last updated at 2025-10-12T11:09:49+03:00
The following stats were collected via uptimed on all of my personal computers over many years and the output was generated by guprecords, the global uptime records stats analyser of mine.