128 lines
4.2 KiB
Markdown
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
|
|
|