146 lines
4.8 KiB
Markdown
146 lines
4.8 KiB
Markdown
# SRS-07: Snapshot & Replication
|
|
|
|
## 1. Overview
|
|
Snapshot & Replication module provides ZFS snapshot management and remote replication task configuration.
|
|
|
|
## 2. Functional Requirements
|
|
|
|
### 2.1 Snapshot Management
|
|
**FR-SNAP-001**: System shall allow users to create snapshots
|
|
- **Input**: Dataset name, snapshot name
|
|
- **Output**: Created snapshot with timestamp
|
|
- **Validation**: Dataset exists, snapshot name uniqueness
|
|
|
|
**FR-SNAP-002**: System shall allow users to list snapshots
|
|
- **Output**: Snapshot list with name, dataset, created date, referenced size
|
|
- **Filtering**: By dataset, date range, name
|
|
|
|
**FR-SNAP-003**: System shall allow users to view snapshot details
|
|
- **Output**: Snapshot properties, dataset, size, creation date
|
|
|
|
**FR-SNAP-004**: System shall allow users to delete snapshots
|
|
- **Input**: Snapshot ID
|
|
- **Validation**: Snapshot not in use
|
|
|
|
**FR-SNAP-005**: System shall allow users to rollback to snapshot
|
|
- **Input**: Snapshot ID
|
|
- **Warning**: Data loss warning required
|
|
- **Action**: Rollback dataset to snapshot state
|
|
|
|
**FR-SNAP-006**: System shall allow users to clone snapshots
|
|
- **Input**: Snapshot ID, clone name
|
|
- **Output**: Created clone dataset
|
|
|
|
**FR-SNAP-007**: System shall display snapshot retention information
|
|
- **Output**: Snapshots marked for expiration, retention policy
|
|
|
|
### 2.2 Replication Management
|
|
**FR-SNAP-008**: System shall allow users to create replication tasks
|
|
- **Input**: Task name, source dataset, target host, target dataset, schedule, compression
|
|
- **Output**: Created replication task with ID
|
|
- **Validation**: Valid source dataset, target host reachable
|
|
|
|
**FR-SNAP-009**: System shall allow users to list replication tasks
|
|
- **Output**: Task list with status, last run, next run
|
|
|
|
**FR-SNAP-010**: System shall allow users to view replication task details
|
|
- **Output**: Task configuration, history, status
|
|
|
|
**FR-SNAP-011**: System shall allow users to update replication tasks
|
|
- **Input**: Task ID, updated configuration
|
|
|
|
**FR-SNAP-012**: System shall allow users to delete replication tasks
|
|
- **Input**: Task ID
|
|
|
|
**FR-SNAP-013**: System shall display replication status
|
|
- **Output**: Task status (idle, running, error), progress percentage
|
|
|
|
**FR-SNAP-014**: System shall allow users to run replication manually
|
|
- **Input**: Task ID
|
|
- **Action**: Trigger immediate replication
|
|
|
|
### 2.3 Replication Configuration
|
|
**FR-SNAP-015**: System shall allow users to configure replication schedule
|
|
- **Input**: Schedule type (hourly, daily, weekly, monthly, custom cron)
|
|
- **Input**: Schedule time
|
|
|
|
**FR-SNAP-016**: System shall allow users to configure target settings
|
|
- **Input**: Target host, SSH port, target user, target dataset
|
|
|
|
**FR-SNAP-017**: System shall allow users to configure compression
|
|
- **Input**: Compression type (off, lz4, gzip, zstd)
|
|
|
|
**FR-SNAP-018**: System shall allow users to configure replication options
|
|
- **Input**: Recursive flag, auto-snapshot flag, encryption flag
|
|
|
|
### 2.4 Restore Points
|
|
**FR-SNAP-019**: System shall display restore points
|
|
- **Output**: Available restore points from snapshots
|
|
|
|
**FR-SNAP-020**: System shall allow users to restore from snapshot
|
|
- **Input**: Snapshot ID, restore target
|
|
|
|
## 3. User Interface Requirements
|
|
|
|
### 3.1 Snapshot & Replication Dashboard
|
|
- Statistics cards (total snapshots, last replication, next scheduled)
|
|
- Quick actions (create snapshot, view logs)
|
|
|
|
### 3.2 Tabs
|
|
- **Snapshots**: Snapshot list and management
|
|
- **Replication Tasks**: Replication task management
|
|
- **Restore Points**: Restore point management
|
|
|
|
### 3.3 Snapshot List
|
|
- Table view with columns (name, dataset, created, referenced, actions)
|
|
- Search and filter functionality
|
|
- Pagination
|
|
- Bulk actions (select multiple)
|
|
|
|
### 3.4 Replication Task Management
|
|
- Task list with status indicators
|
|
- Task creation wizard
|
|
- Task detail view with progress
|
|
|
|
### 3.5 Create Replication Modal
|
|
- Task name input
|
|
- Source dataset selection
|
|
- Target configuration (host, port, user, dataset)
|
|
- Schedule configuration
|
|
- Compression and options
|
|
|
|
## 4. API Endpoints
|
|
|
|
```
|
|
GET /api/v1/snapshots
|
|
GET /api/v1/snapshots/:id
|
|
POST /api/v1/snapshots
|
|
DELETE /api/v1/snapshots/:id
|
|
POST /api/v1/snapshots/:id/rollback
|
|
POST /api/v1/snapshots/:id/clone
|
|
|
|
GET /api/v1/replication/tasks
|
|
GET /api/v1/replication/tasks/:id
|
|
POST /api/v1/replication/tasks
|
|
PUT /api/v1/replication/tasks/:id
|
|
DELETE /api/v1/replication/tasks/:id
|
|
POST /api/v1/replication/tasks/:id/run
|
|
GET /api/v1/replication/tasks/:id/status
|
|
|
|
GET /api/v1/restore-points
|
|
POST /api/v1/restore-points/restore
|
|
```
|
|
|
|
## 5. Permissions
|
|
- **storage:read**: Required for viewing snapshots and replication tasks
|
|
- **storage:write**: Required for creating, updating, deleting, executing
|
|
|
|
## 6. Error Handling
|
|
- Invalid dataset
|
|
- Snapshot not found
|
|
- Replication target unreachable
|
|
- SSH authentication failure
|
|
- Replication task errors
|
|
- Insufficient permissions
|
|
|