Webmin module for FreeBSD ZFS administration: pools, datasets, disks, services, ACL, system status, and benchmark workflows.
- Module name:
ZFSguru - OS support: FreeBSD (
os_support=freebsd) - Version:
0.1.1 beta - Author:
karmantyu(https://github.com/karmantyu/ZFSgame)
- Advanced pool management (
advanced_pools.cgi)- list/create/import/destroy pools
- add/replace devices
- scrub/history/properties
- benchmark jobs with
View Log,Kill Job,View Results
- Advanced dataset management (
advanced_datasets.cgi)- list/create filesystem or volume
- snapshots, clone, rollback (with confirmation)
- quotas, properties, rename, delete
- Disk and hardware management (
disks.cgi)- disk list, SMART, partition tools
- disk benchmark jobs with log/results views
- Services (
services.cgi)- NFS/SMB/SSH and related service helpers
- System status (
status.cgi)- overview/cpu/memory/hardware/pool status/logs
- Live VMStat tab with trend chart and selectable devices
- ACL manager (
acl.cgi,zfsaclmanager*.cgi)
Current behavior:
- Auto refresh default:
10s - Trend window default:
120s - Device trend selection supports up to
24devices Select all,Clear, andApplycontrols- Colored device cards with current Busy% labels
- Server-side history/trend state stored in
/tmpbystate_id
Performance protections implemented:
- Auto-refresh minimum interval enforced
- Server-side sampling throttling/caching for heavy commands
- Trend rendering can use stored history even when no fresh iostat sample is taken in that tick
Many action links preserve xnavigation=1 to keep the full Webmin frame UI. If you open URLs manually, prefer using links that already include xnavigation=1.
- FreeBSD with ZFS
- Webmin (module metadata requires >= 1.700)
- Root privileges for most operations
- Recommended tools (depending on features used):
smartctlgpart,camcontrol,diskinfo,dd,swapctl
- Copy module folder into Webmin modules directory.
- Ensure executable permissions on CGI files.
- Reload/restart Webmin.
- Open
Webmin -> Hardware -> ZFSguru(menu placement may vary by theme/category).
Primary files:
module.info- module metadataconfig.txt- command paths and feature togglesacl.txt- ACL feature flagslang/en- language strings
Notable config.txt options:
- command path overrides (
zpool_cmd,zfs_cmd,gpart_cmd, etc.) - feature toggles (
enable_benchmarking,enable_smart_monitoring) - safety confirmations (
require_confirmation_*) - cache/monitor settings (
cache_duration,monitor_*)
index.cgi- dashboardadvanced_pools.cgi- advanced pool workflowsadvanced_datasets.cgi- advanced dataset workflowsdisks.cgi- disk and benchmark workflowsservices.cgi- service managementstatus.cgi- system status pages (includes Live VMStat)system.cgi- system/update pagesnetwork.cgi,files.cgi,access.cgi,uefi.cgi,about.cgizfsguru-lib.pl- shared backend utilitieszfsguru_i18n.pl,zfsguru.css,zfsguru.jszfsaclmanager-lib.pl,zfsaclmanager*.cgi
- Inputs are validated and most user-visible values are HTML-escaped.
- Device/pool/dataset identifiers are validated/whitelisted before command execution.
- Destructive operations require confirmations in UI flows.
- Increase
Auto Refresh Interval. - Reduce selected trend devices.
- Lower
Trend windowif rendering overhead is high. - Verify no extra browser tabs keep the page auto-refreshing.
- Open
View Logfirst and confirm benchmark summary lines exist. - Ensure job status is
okand notstale/failed.
Some systems/OpenZFS versions do not support zpool rename directly. Use export/import workflow if required by your platform.
- Shebangs use
#!/usr/bin/env perlfor portability. - Target runtime environment is Webmin on FreeBSD.
- For local linting outside Webmin, missing
WebminCore.pmis expected unless Webmin libs are in@INC.
- Webmin-native ZFSguru module structure finalized
- Advanced pool/dataset/disk workflows
- Job log/result actions (
View Log,Kill Job,View Results) - Live VMStat trend page with device selection and auto-refresh controls
- UI/navigation refinements and return-link consistency improvements