Rodent is a node agent for managing ZFS-based storage systems. It can connect to Strata platform for centralized management, or run standalone in headless mode. It can also be integrated with other management platforms via its REST and gRPC API.
Rodent is a comprehensive agent designed to manage ZFS-based storage systems. It provides a robust set of features for modern Network Attached Storage (NAS) environments:
- ZFS Pool Management: Create, import, export, and monitor ZFS pools
- Dataset Operations: Manage filesystems, volumes, and snapshots
- Data Sharing: Support for SMB/CIFS, NFS(WIP), and iSCSI(WIP) protocols
- User Management: Integrated access control and permission management
- Data Protection: Snapshot scheduling, replication, and backup workflows
- Performance Monitoring: Real-time metrics and health reporting
- REST API: Programmatic access to all functionality
Rodent serves as the operational layer between the ZFS subsystem and higher-level storage management interfaces, providing a unified approach to storage administration.
curl -fsSL https://utils.strata.host/install.sh | sudo bash -s -- --non-interactiveSee Installation Guide for detailed options.
Login to https://strata.foo and create a new Rodent to obtain your JWT token.
Edit the configuration file as the rodent user:
sudo -u rodent nano /home/rodent/.rodent/rodent.ymlAdd your JWT token:
ad:
mode: self-hosted
adminPassword: Passw0rd
dc:
enabled: false
toggle:
enable: true
jwt: your-jwt-token-from-strata
baseurl: https://toggle.strata.foo
rpcaddr: tunnel.strata.foo:443sudo systemctl enable --now rodent.service
sudo journalctl -u rodent.service -fYour Rodent will appear as active in Strata.
# Stop the service
sudo systemctl stop rodent.service
# Switch to rodent user and run manually
sudo -u rodent rodent serveConfig must be at ~/.rodent/rodent.yml when running as rodent user. Set loglevel in config to debug for verbose output.
logger:
loglevel: debug
server:
loglevel: debugTo enable SMB shares with AD authentication, configure self-hosted or external AD. See Active Directory Configuration Guide.
Look for issues labeled with:
-
good first issue: Beginner-friendly tasks -
Needs Fix: Known issues needing attention -
tests: Test coverage improvements -
Essential: It is understood that this can't be overlooked, and demands attention. -
Adding test cases in data_transfer_test.go, dataset_test.go, pool_test.go and other pivotal modules
-
Improving error messages in errors/types.go
-
Adding documentation examples in docs/ (/notes?)
-
Implementing missing validations
Have a look at Contributing Guide, Code of Conduct and Pull Request Guidelines
- Fork repository
- Create feature branch
- Make changes
- Run tests
- Run linter, go fmt
- Commit changes
- Submit PR
This project is licensed under the Apache License 2.0. By using this software, you are granted:
- Freedom to Use: You can use the software for personal, academic, or commercial purposes.
- Freedom to Modify: You can modify the code to suit your needs.
- Freedom to Distribute: You can distribute the software, including any modifications you make.
- Freedom from Patent Worries: Contributors provide a broad patent license, protecting you from patent claims related to the software.
- Attribution: You must include the original license and copyright notice in any distribution.
- No Liability: The software is provided "as is," without warranties or guarantees.
- Patent Protection: The license includes a patent grant, and your rights are terminated if you initiate patent litigation involving the software.
For the full text of the license, see the LICENSE file.