Tests that read ../../../mesh-catalog or ../../../mesh-host gave a verdict that depended on what sat beside the checkout: a stale or dirty sibling failed them on a desktop, and a missing one skipped them unseen. They now read the clone the build seat puts in MESH_CHECK_BESIDE, failing when it is absent there, and elsewhere a copy captured at a named commit. The skip had hidden that the builder test read a module retired by ADR 0190. The systemd reading test no longer counts the machine's own environment.d.
204 lines
4.8 KiB
Plaintext
204 lines
4.8 KiB
Plaintext
{
|
|
"module": "zfs",
|
|
"version": "1",
|
|
"capabilities": [
|
|
"service-manager"
|
|
],
|
|
"emits": [
|
|
"snapshot.taken",
|
|
"scrub.requested"
|
|
],
|
|
"settings": {
|
|
"scrub-cadence": {
|
|
"kind": "preference",
|
|
"default": "weekly",
|
|
"why": "how often the pool named by scrub-pool is scrubbed, weekly or monthly (the first scrub-day of each month); weekly is what the distribution's timer did on the home server before the module, so taking it over moves nothing until the operator chooses"
|
|
},
|
|
"scrub-day": {
|
|
"kind": "preference",
|
|
"default": "Mon",
|
|
"why": "the weekday the scrub starts, Mon to Sun: for a monthly scrub, the first such day of the month. Checked by the scheduled run, which refuses any other value and runs nothing; Monday is when the distribution's weekly timer fired"
|
|
},
|
|
"scrub-time": {
|
|
"kind": "preference",
|
|
"default": "00:00",
|
|
"why": "the time the scrub starts, HH:MM from 00:00 to 23:59 in the machine's time zone; the scheduled run checks it every quarter of an hour, so the scrub starts within 15 minutes of it. Midnight is when the distribution's weekly timer fired"
|
|
}
|
|
},
|
|
"tools": [
|
|
"zfs_datasets",
|
|
"zfs_snapshots",
|
|
"zfs_snapshot",
|
|
"zfs_pools",
|
|
"zfs_space",
|
|
"zfs_pool_layout",
|
|
"zfs_scrub",
|
|
"zfs_scrub_start",
|
|
"zfs_scrub_pause",
|
|
"zfs_scrub_stop",
|
|
"zfs_io",
|
|
"zfs_arc",
|
|
"zfs_events",
|
|
"zfs_properties",
|
|
"zfs_health"
|
|
],
|
|
"replaces": {
|
|
"zfs_datasets": [
|
|
"zfs list"
|
|
],
|
|
"zfs_snapshots": [
|
|
"zfs list -t snapshot"
|
|
],
|
|
"zfs_snapshot": [
|
|
"zfs snapshot"
|
|
],
|
|
"zfs_pools": [
|
|
"zpool list",
|
|
"zpool status -x"
|
|
],
|
|
"zfs_space": [
|
|
"zfs list -o space",
|
|
"zpool list -v"
|
|
],
|
|
"zfs_pool_layout": [
|
|
"zpool status",
|
|
"zpool status -v"
|
|
],
|
|
"zfs_scrub": [
|
|
"zpool history -i"
|
|
],
|
|
"zfs_io": [
|
|
"zpool iostat",
|
|
"zpool iostat -v"
|
|
],
|
|
"zfs_arc": [
|
|
"arcstat",
|
|
"arc_summary",
|
|
"cat /proc/spl/kstat/zfs/arcstats"
|
|
],
|
|
"zfs_events": [
|
|
"zpool events",
|
|
"zpool events -v"
|
|
],
|
|
"zfs_properties": [
|
|
"zfs get all",
|
|
"zfs get"
|
|
],
|
|
"zfs_scrub_start": [
|
|
"zpool scrub"
|
|
],
|
|
"zfs_scrub_pause": [
|
|
"zpool scrub -p"
|
|
],
|
|
"zfs_scrub_stop": [
|
|
"zpool scrub -s"
|
|
]
|
|
},
|
|
"resources": [
|
|
{
|
|
"id": "watch",
|
|
"type": "process",
|
|
"name": "zfs-watch",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./zfs-tools",
|
|
"watch"
|
|
],
|
|
"user": "${machine:account}",
|
|
"health": {
|
|
"kind": "tool",
|
|
"tool": "zfs_health",
|
|
"interval": "60s",
|
|
"timeout": "20s",
|
|
"looks": 2,
|
|
"grace": "60s"
|
|
}
|
|
},
|
|
{
|
|
"id": "state-dir",
|
|
"type": "directory",
|
|
"path": "/var/lib/zfs-tools",
|
|
"mode": "0755",
|
|
"owner": "${machine:account}"
|
|
},
|
|
{
|
|
"id": "cursor-dir",
|
|
"type": "directory",
|
|
"path": "/run/zfs-events",
|
|
"mode": "0700"
|
|
},
|
|
{
|
|
"id": "events",
|
|
"type": "process",
|
|
"name": "zfs-events",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./zfs-tools",
|
|
"events"
|
|
],
|
|
"health": {
|
|
"kind": "unit"
|
|
}
|
|
},
|
|
{
|
|
"id": "config-dir",
|
|
"type": "directory",
|
|
"path": "/etc/zfs-tools",
|
|
"mode": "0755"
|
|
},
|
|
{
|
|
"id": "scrub-config",
|
|
"type": "file",
|
|
"path": "/etc/zfs-tools/scrub.conf",
|
|
"mode": "0644",
|
|
"content": "# Written by the mesh (module zfs) from this machine's assignment. Replaced on every push; change the\n# settings scrub-pool, scrub-cadence, scrub-day and scrub-time, never this file. The module's tools read it.\npool=${setting:scrub-pool}\ncadence=${setting:scrub-cadence}\nday=${setting:scrub-day}\ntime=${setting:scrub-time}\n"
|
|
},
|
|
{
|
|
"id": "scrub-state-dir",
|
|
"type": "directory",
|
|
"path": "/var/lib/zfs-scrub",
|
|
"mode": "0700"
|
|
},
|
|
{
|
|
"id": "scrub-run",
|
|
"type": "process",
|
|
"name": "zfs-mesh-scrub",
|
|
"artifact": "tools",
|
|
"run": [
|
|
"./zfs-tools",
|
|
"scrub-run"
|
|
],
|
|
"schedule": "*/15 * * * *"
|
|
},
|
|
{
|
|
"id": "distribution-weekly",
|
|
"type": "service",
|
|
"unit": "zfs-scrub-weekly@${setting:scrub-pool}.timer",
|
|
"state": "stopped",
|
|
"boot": "disabled"
|
|
},
|
|
{
|
|
"id": "distribution-monthly",
|
|
"type": "service",
|
|
"unit": "zfs-scrub-monthly@${setting:scrub-pool}.timer",
|
|
"state": "stopped",
|
|
"boot": "disabled"
|
|
}
|
|
],
|
|
"build": {
|
|
"artifacts": [
|
|
{
|
|
"name": "tools",
|
|
"kind": "bundle",
|
|
"language": "go",
|
|
"system": "arch",
|
|
"from": "cmd/zfs-tools",
|
|
"binary": "zfs-tools",
|
|
"loads": [
|
|
"zfs-tools"
|
|
]
|
|
}
|
|
]
|
|
}
|
|
}
|