Files
calypso/docs/alpha/srs/SRS-01-Storage-Management.md
2026-01-04 13:19:40 +07:00

128 lines
4.2 KiB
Markdown

# SRS-01: Storage Management
## 1. Overview
Storage Management module provides comprehensive management of ZFS storage pools, datasets, disks, and storage repositories.
## 2. Functional Requirements
### 2.1 ZFS Pool Management
**FR-SM-001**: System shall allow users to create ZFS pools
- **Input**: Pool name, RAID level, disk selection, compression, deduplication options
- **Output**: Created pool with UUID
- **Validation**: Pool name uniqueness, disk availability, RAID level compatibility
**FR-SM-002**: System shall allow users to list all ZFS pools
- **Output**: List of pools with status, capacity, health information
- **Refresh**: Auto-refresh every 2 minutes
**FR-SM-003**: System shall allow users to view ZFS pool details
- **Output**: Pool configuration, capacity, health, datasets, disk information
**FR-SM-004**: System shall allow users to delete ZFS pools
- **Validation**: Pool must be empty or confirmation required
- **Side Effect**: All datasets in pool are destroyed
**FR-SM-005**: System shall allow users to add spare disks to pools
- **Input**: Pool ID, disk list
- **Validation**: Disk availability, compatibility
### 2.2 ZFS Dataset Management
**FR-SM-006**: System shall allow users to create ZFS datasets
- **Input**: Pool ID, dataset name, type (filesystem/volume), compression, quota, reservation, mount point
- **Output**: Created dataset with UUID
- **Validation**: Name uniqueness within pool, valid mount point
**FR-SM-007**: System shall allow users to list datasets in a pool
- **Input**: Pool ID
- **Output**: List of datasets with properties
- **Refresh**: Auto-refresh every 1 second
**FR-SM-008**: System shall allow users to delete ZFS datasets
- **Input**: Pool ID, dataset name
- **Validation**: Dataset must not be in use
### 2.3 Disk Management
**FR-SM-009**: System shall discover and list all physical disks
- **Output**: Disk list with size, type, status, mount information
- **Refresh**: Auto-refresh every 5 minutes
**FR-SM-010**: System shall allow users to manually sync disk discovery
- **Action**: Trigger disk rescan
**FR-SM-011**: System shall display disk details
- **Output**: Disk properties, partitions, usage, health status
### 2.4 Storage Repository Management
**FR-SM-012**: System shall allow users to create storage repositories
- **Input**: Name, type, path, capacity
- **Output**: Created repository with ID
**FR-SM-013**: System shall allow users to list storage repositories
- **Output**: Repository list with capacity, usage, status
**FR-SM-014**: System shall allow users to view repository details
- **Output**: Repository properties, usage statistics
**FR-SM-015**: System shall allow users to delete storage repositories
- **Validation**: Repository must not be in use
### 2.5 ARC Statistics
**FR-SM-016**: System shall display ZFS ARC statistics
- **Output**: Hit ratio, cache size, eviction statistics
- **Refresh**: Real-time updates
## 3. User Interface Requirements
### 3.1 Storage Dashboard
- Pool overview cards with capacity and health
- Dataset tree view
- Disk list with status indicators
- Quick actions (create pool, create dataset)
### 3.2 Pool Management
- Pool creation wizard
- Pool detail view with tabs (Overview, Datasets, Disks, Settings)
- Pool deletion confirmation dialog
### 3.3 Dataset Management
- Dataset creation form
- Dataset list with filtering and sorting
- Dataset detail view
- Dataset deletion confirmation
## 4. API Endpoints
```
GET /api/v1/storage/zfs/pools
GET /api/v1/storage/zfs/pools/:id
POST /api/v1/storage/zfs/pools
DELETE /api/v1/storage/zfs/pools/:id
POST /api/v1/storage/zfs/pools/:id/spare
GET /api/v1/storage/zfs/pools/:id/datasets
POST /api/v1/storage/zfs/pools/:id/datasets
DELETE /api/v1/storage/zfs/pools/:id/datasets/:dataset
GET /api/v1/storage/disks
POST /api/v1/storage/disks/sync
GET /api/v1/storage/repositories
GET /api/v1/storage/repositories/:id
POST /api/v1/storage/repositories
DELETE /api/v1/storage/repositories/:id
GET /api/v1/storage/zfs/arc/stats
```
## 5. Permissions
- **storage:read**: Required for all read operations
- **storage:write**: Required for create, update, delete operations
## 6. Error Handling
- Invalid pool name format
- Disk not available
- Pool already exists
- Dataset in use
- Insufficient permissions