|
Bogdan Timofte
authored
3 months ago
|
1
|
# AutoNAS - Change Log
|
|
|
2
|
|
|
Bogdan Timofte
authored
3 months ago
|
3
|
## [v3.1.2] - 2026-03-07
|
|
|
4
|
|
|
|
5
|
### Fixed
|
|
|
6
|
- motivatie: topologiile AutoNAS self-hosted pot monta exportul local inapoi ca storage Proxmox, iar shutdown-ul devenea dependent de o cursa implicita intre `umount.nfs4` si oprirea `nfs-server.service`
|
|
Bogdan Timofte
authored
3 months ago
|
7
|
- solutie: installerul genereaza acum un drop-in pentru `nfs-server.service` care ordoneaza explicit mount-urile Proxmox self-hosted identificate din `storage.cfg` inaintea opririi providerului NFS; aceasta este partea AutoNAS din incidentul cluster-wide `ISSUE-2026-002`
|
|
Bogdan Timofte
authored
3 months ago
|
8
|
|
|
Bogdan Timofte
authored
3 months ago
|
9
|
## [v3.1.1] - 2026-03-07
|
|
|
10
|
|
|
|
11
|
### Fixed
|
|
|
12
|
- kept `autonas.service` and `autonas-boot-scan.service` ordered before `remote-fs.target` and `umount.target` so local AutoNAS exports remain available long enough for Proxmox NFS client mounts to unmount during shutdown
|
|
|
13
|
- reduced reboot delay observed on `ebony` when `AutoNAS-1` is exported locally and also mounted back as a Proxmox NFS storage
|
|
|
14
|
|
|
|
15
|
### Notes
|
|
|
16
|
- this does not remove all self-hosted NFS edge cases; it only prevents the provider side from stopping before the client-side unmount phase finishes
|
|
|
17
|
- PBS availability loss during `pgs suspend` on `ebony` remains expected while VM `301 is-anjohibe` is intentionally suspended
|
|
|
18
|
|
|
Bogdan Timofte
authored
3 months ago
|
19
|
## [v3.1.0] - 2026-03-06
|
|
|
20
|
|
|
|
21
|
### Standardized Install Layout
|
|
|
22
|
- standardized runtime under `/usr/local/lib/xdev/autonas`
|
|
|
23
|
- moved the operator-facing command to `/usr/local/sbin/autonas`
|
|
|
24
|
- standardized canonical uninstall path to `/usr/local/lib/xdev/autonas/uninstall.sh`
|
|
|
25
|
- added `/etc/default/xdev-autonas` as the namespaced defaults location
|
|
|
26
|
- added installed documentation under `/usr/local/share/doc/xdev/autonas`
|
|
|
27
|
- updated systemd units and udev rules to use the namespaced runtime path
|
|
|
28
|
- preserved cluster-shared config in `/etc/pve/autonas`
|
|
|
29
|
- preserved `/mnt/autonas` and NFS export references as explicit uninstall exceptions
|
|
Bogdan Timofte
authored
3 months ago
|
30
|
|
|
Bogdan Timofte
authored
3 months ago
|
31
|
## [v3.0.1] - 2026-03-02
|
|
|
32
|
|
|
|
33
|
### 🔧 CLI Simplification
|
|
|
34
|
|
|
|
35
|
#### Removed Redundant Disk Commands
|
|
|
36
|
- **Removed** `autonas mount` and `autonas unmount/umount` from user-facing CLI
|
|
|
37
|
- **Standardized disk operations** on `autonas attach` and `autonas detach`
|
|
|
38
|
- **Updated help output and documentation** to reflect the simplified command set
|
|
|
39
|
|
|
|
40
|
#### Why This Change
|
|
|
41
|
- Reduced command redundancy and ambiguity between attach/detach vs mount/unmount
|
|
|
42
|
- Clearer operational model for both manual and automated workflows
|
|
|
43
|
|
|
Bogdan Timofte
authored
3 months ago
|
44
|
## [v3.0.0] - 2025-08-15 🚀
|
|
|
45
|
|
|
|
46
|
### 🎉 **CLEAN USER INTERFACE & SCRIPT ORGANIZATION**
|
|
|
47
|
|
|
|
48
|
#### 🔧 Complete Script Architecture Refactoring
|
|
|
49
|
- **Single User Command**: Only `autonas` visible in shell autocomplete
|
|
|
50
|
- **Internal Script Organization**: All utility scripts moved to `/usr/local/lib/autonas/`
|
|
|
51
|
- **47% Code Reduction**: ~2,300 lines eliminated through deduplication
|
|
|
52
|
- **Single Source of Truth**: All shared functions in `autonas-core.sh` library
|
|
|
53
|
|
|
|
54
|
#### 📁 New Script Architecture
|
|
|
55
|
```
|
|
|
56
|
/usr/local/bin/
|
|
|
57
|
├── autonas -> autonas.sh # Only user-visible command
|
|
|
58
|
├── autonas.sh # Main CLI interface (1,208 lines)
|
|
|
59
|
└── autonas-core.sh # Core business logic library (1,044 lines)
|
|
|
60
|
|
|
|
61
|
/usr/local/lib/autonas/ # Internal scripts (hidden from autocomplete)
|
|
|
62
|
├── autonas-boot-scan.sh # Boot scanner
|
|
|
63
|
├── autonas-disk-handler.sh # Disk event handler
|
|
|
64
|
├── autonas-media-importer.sh # Media importer
|
|
|
65
|
├── autonas-network-handler.sh # Network handler
|
|
|
66
|
├── autonas-udev-wrapper.sh # Udev wrapper
|
|
|
67
|
└── autonas-uninstall.sh # System uninstaller
|
|
|
68
|
```
|
|
|
69
|
|
|
|
70
|
#### 🎯 Clean User Experience
|
|
|
71
|
- **Professional Interface**: Only `autonas` command appears in tab completion
|
|
|
72
|
- **Unified Functionality**: All operations through single command interface
|
|
|
73
|
- **Organized Backend**: All system utilities properly categorized and hidden
|
|
|
74
|
- **Zero Code Duplication**: Complete elimination of duplicate functions
|
|
|
75
|
|
|
|
76
|
#### 🔄 Revolutionary Background Import Architecture (Preserved)
|
|
|
77
|
- **Service-Based Import System**: Complete separation of mount/import through systemd services
|
|
|
78
|
- **Unlimited Import Duration**: No more systemd timeout constraints (tested with 300+ files)
|
|
|
79
|
- **Production Scalability**: Architecture tested and validated in production environment
|
|
|
80
|
|
|
|
81
|
#### �️ **Complete System Integration Updates**
|
|
|
82
|
- **All Service Files**: Updated systemd services with new script paths
|
|
|
83
|
- **All udev Rules**: Updated with `/usr/local/lib/autonas/` paths
|
|
|
84
|
- **All Configuration References**: Updated throughout entire system
|
|
|
85
|
- **Deploy Script**: Enhanced with directory creation and proper installation
|
|
|
86
|
- **Install/Uninstall**: Complete support for new architecture
|
|
|
87
|
|
|
|
88
|
#### 🔧 **Technical Architecture Improvements**
|
|
|
89
|
- **Core Library Pattern**: `autonas-core.sh` with all shared business logic
|
|
|
90
|
- **Clean Separation**: User interface vs. system utilities properly organized
|
|
|
91
|
- **Professional Deployment**: Only essential commands visible to users
|
|
|
92
|
- **Backward Compatibility**: Seamless upgrade path from previous versions
|
|
|
93
|
|
|
|
94
|
#### 📊 **Production Test Results** (Background Import)
|
|
|
95
|
- **✅ 302 files imported** successfully in single session (36 minutes)
|
|
|
96
|
- **✅ 100% success rate** with zero errors
|
|
|
97
|
- **✅ Perfect UTC conversion** for all QuickTime/EXIF timestamps
|
|
|
98
|
- **✅ Complete workflow** mount → background import → auto unmount
|
|
|
99
|
- **✅ Robust error handling** and disconnect detection
|
|
|
100
|
|
|
|
101
|
#### 🚨 **Architecture Changes**
|
|
|
102
|
- **Script Locations**: Internal scripts moved from `/usr/local/bin/` to `/usr/local/lib/autonas/`
|
|
|
103
|
- **User Interface**: Single `autonas` command replaces multiple visible scripts
|
|
|
104
|
- **Configuration Updates**: All references updated throughout system
|
|
|
105
|
- **Clean Autocomplete**: Professional user experience with hidden utilities
|
|
|
106
|
|
|
|
107
|
---
|
|
|
108
|
|
|
|
109
|
## [v2.5.0] - 2024-08-12
|
|
|
110
|
|
|
|
111
|
### 🚀 Dual Configuration System
|
|
|
112
|
|
|
|
113
|
#### Enhanced Mounting Options
|
|
|
114
|
- **Dual Configuration Support**: Complete system supporting both NFS shares and simple local mounts
|
|
|
115
|
- **NFS share complet**: Cu IP și export pentru acces de rețea
|
|
|
116
|
- **Montare locală simplă**: Doar mount point, fără IP și NFS (NOUĂ!)
|
|
|
117
|
- **LOCAL Configuration Format**: New `UUID:NAME:LOCAL:LOCAL:MOUNT_POINT:LOCAL` format
|
|
|
118
|
- **Interactive Configuration Selection**: Enhanced `autonas-config.sh add` with mount type selection
|
|
|
119
|
- **Mixed Environment Support**: Both NFS and LOCAL configurations can coexist seamlessly
|
|
|
120
|
|
|
|
121
|
#### Core System Improvements
|
|
|
122
|
- **Extended UUID Support**: Support for both standard UUIDs and FAT32 short UUIDs (e.g., `8765-4321`)
|
|
|
123
|
- **Enhanced Manager Integration**: Complete autonas-manager.sh support for LOCAL configurations
|
|
|
124
|
- **Clean Logging**: LOCAL configurations show "Skipping X for local mount configuration" instead of errors
|
|
|
125
|
- **Synchronized Disk Display**: Fixed desynchronization between disk display and mapping logic
|
|
|
126
|
|
|
|
127
|
#### Bug Fixes Resolved
|
|
|
128
|
- **Disk Selection Mapping Bug**: Fixed issue where selecting disk 6 would map to wrong UUID
|
|
|
129
|
- **LOG Spam Resolution**: Eliminated infinite "Waiting for interface LOCAL" loops
|
|
|
130
|
- **UUID Regex Enhancement**: Updated regex pattern to handle FAT32 short UUIDs properly
|
|
|
131
|
- **Manager Function Updates**: All network-related functions now properly detect and skip LOCAL configurations
|
|
|
132
|
|
|
|
133
|
#### Technical Implementation
|
|
|
134
|
```bash
|
|
|
135
|
# NFS Configuration (existing)
|
|
|
136
|
UUID:NAME:IP:INTERFACE:MOUNT_POINT:NFS_OPTIONS
|
|
|
137
|
|
|
|
138
|
# LOCAL Configuration (new)
|
|
|
139
|
UUID:NAME:LOCAL:LOCAL:MOUNT_POINT:LOCAL
|
|
|
140
|
```
|
|
|
141
|
|
|
|
142
|
#### Manager Function Enhancements
|
|
|
143
|
- **`activate_ip()`**: Skips IP activation for LOCAL configurations
|
|
|
144
|
- **`deactivate_ip()`**: Skips IP deactivation for LOCAL configurations
|
|
|
145
|
- **`add_nfs_export()`**: Skips NFS export for LOCAL configurations
|
|
|
146
|
- **`remove_nfs_export()`**: Skips NFS export removal for LOCAL configurations
|
|
|
147
|
|
|
|
148
|
#### Use Cases for LOCAL Configurations
|
|
|
149
|
- **Simple local storage**: Diskuri pentru backup-uri locale fără acces de rețea
|
|
|
150
|
- **Scratch space**: Space temporar pentru procesare locală de date
|
|
|
151
|
- **Development storage**: Storage local pentru cache-uri și fișiere temporare
|
|
|
152
|
- **Archive storage**: Archive locale care nu necesită export NFS
|
|
|
153
|
- **Mixed environments**: Combinație de storage local și shares de rețea
|
|
|
154
|
|
|
|
155
|
#### Configuration Examples
|
|
|
156
|
```properties
|
|
|
157
|
# NFS Shares (network access)
|
|
|
158
|
920fe1b7-4091-4d6a-bab8-2f48d8d704bc:shared-docs:192.168.1.100:eth0:/mnt/autonas/shared-docs:*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)
|
|
|
159
|
|
|
|
160
|
# LOCAL Mounts (local only)
|
|
|
161
|
8765-4321:local-backup:LOCAL:LOCAL:/mnt/autonas/local-backup:LOCAL
|
|
|
162
|
abcd-1234:scratch-space:LOCAL:LOCAL:/mnt/autonas/scratch-space:LOCAL
|
|
|
163
|
```
|
|
|
164
|
|
|
|
165
|
#### Backward Compatibility
|
|
|
166
|
- **Full compatibility**: Existing NFS configurations continue to work unchanged
|
|
|
167
|
- **No migration required**: Current setups work without any changes
|
|
|
168
|
- **Enhanced functionality**: New LOCAL options available alongside existing NFS features
|
|
|
169
|
|
|
|
170
|
## [v2.4.0] - 2025-08-11
|
|
|
171
|
|
|
|
172
|
### 🌐 Interface Stability Management System
|
|
|
173
|
|
|
|
174
|
#### Problema Rezolvată
|
|
|
175
|
- **USB/Thunderbolt interfaces instabile**: Interfețele USB și Thunderbolt dispar și revin periodic
|
|
|
176
|
- **IP-uri pierdute**: IP-urile configurate pentru diskuri nu se readaugă automat când interfața revine
|
|
|
177
|
- **NFS exports indisponibile**: Export-urile devin temporar inaccesibile din cauza IP-urilor lipsă
|
|
|
178
|
|
|
|
179
|
#### Interface Management Tools
|
|
|
180
|
- **autonas-interface-handler.sh**: Handler principal pentru evenimente udev de interfețe
|
|
|
181
|
- **Event-driven only**: Arhitectură complet bazată pe evenimente (fără daemon/servicii permanente)
|
|
|
182
|
- **Emergency diagnostics**: Tool-uri de diagnostic pentru depanare în cazuri extreme
|
|
|
183
|
|
|
|
184
|
#### Interface Handler System
|
|
|
185
|
- **autonas-interface-handler.sh**: Handler principal pentru evenimente udev de interfețe
|
|
|
186
|
- **Event-driven architecture**: Răspuns instant la schimbările interfețelor (nu polling)
|
|
|
187
|
- **Multiple event types**: Detectează add/remove/change/carrier/operstate events
|
|
|
188
|
- **Focus USB/Thunderbolt**: Tratament special pentru interfețele instabile
|
|
|
189
|
- **Smart restoration**: Verifică starea interfețelor înainte de configurare IP
|
|
|
190
|
- **Background processing**: Execuție asincronă pentru a evita timeout-urile udev
|
|
|
191
|
- **Retry mechanism**: Logică de retry pentru configurarea IP-urilor pe interfețe instabile
|
|
|
192
|
|
|
|
193
|
#### Advanced IP Management
|
|
|
194
|
- **Interface existence checking**: Verificare inteligentă dacă interfața există înainte de configurare
|
|
|
195
|
- **IP conflict resolution**: Detectează și evită conflictele de IP-uri
|
|
|
196
|
- **Retry mechanism**: Logic de retry pentru configurarea IP-urilor pe interfețe instabile
|
|
|
197
|
- **Shared IP management**: Gestionarea corectă a IP-urilor folosite de multiple diskuri
|
|
|
198
|
- **Wait for interface**: Așteaptă ca interfețele USB/Thunderbolt să apară (până la 30 secunde)
|
|
|
199
|
|
|
|
200
|
#### Comprehensive Debug Tools
|
|
|
201
|
- **autonas-interface-debug.sh**: Tool complet de diagnostic pentru probleme interfețe
|
|
|
202
|
- **Status analysis**: Analiză detaliată a statusului interfețelor și IP-urilor configurate
|
|
|
203
|
- **Real-time monitoring**: Monitorizare în timp real a schimbărilor de interfețe
|
|
|
204
|
- **Configuration validation**: Verificare configurații AutoNAS vs. starea actuală
|
|
|
205
|
- **Troubleshooting guide**: Sugestii automate pentru rezolvarea problemelor
|
|
|
206
|
- **Color-coded output**: Interface prietenoasă cu coding color pentru status
|
|
|
207
|
|
|
|
208
|
#### Enhanced udev Rules
|
|
|
209
|
- **98-autonas-interfaces.rules**: Reguli udev comprehensive pentru interfețe de rețea
|
|
|
210
|
- **Event-driven primary mechanism**: Detectare principală prin evenimente, nu polling
|
|
|
211
|
- **Multiple trigger types**: add/remove/change/operstate/carrier events
|
|
|
212
|
- **USB/Thunderbolt specific**: Tratament special pentru interfețele instabile
|
|
|
213
|
- **State change monitoring**: Monitorizează schimbările de stare operațională și carrier
|
|
|
214
|
- **Instant response**: Răspuns în 2-3 secunde la schimbările interfețelor
|
|
|
215
|
|
|
|
216
|
#### Management Commands
|
|
|
217
|
```bash
|
|
|
218
|
# Debug interfețe și IP-uri
|
|
|
219
|
autonas-interface-debug.sh check
|
|
|
220
|
|
|
|
221
|
# Monitorizare timp real schimbări
|
|
|
222
|
autonas-interface-debug.sh realtime
|
|
|
223
|
|
|
|
224
|
# Test stabilitate interfețe USB/Thunderbolt
|
|
|
225
|
autonas-test-interface-stability.sh
|
|
|
226
|
```
|
|
|
227
|
|
|
|
228
|
#### Installation & Service Integration
|
|
|
229
|
- **Automatic installation**: Toate componentele sunt instalate automat de `install.sh`
|
|
|
230
|
- **Service auto-start**: Serviciul de monitorizare pornește automat la instalare
|
|
|
231
|
- **Initial restore**: Restaurare automată a IP-urilor la finalul instalării
|
|
|
232
|
- **Proper dependencies**: Dependențe corecte cu serviciile de rețea și NFS
|
|
|
233
|
|
|
|
234
|
### 🔧 Îmbunătățiri Core Manager
|
|
|
235
|
|
|
|
236
|
#### Smart IP Configuration
|
|
|
237
|
- **Interface existence validation**: Verifică dacă interfața există înainte de configurare
|
|
|
238
|
- **Wait for interface**: Logică de așteptare pentru interfețele care apar cu întârziere
|
|
|
239
|
- **Retry mechanism**: Până la 3 încercări pentru configurarea IP-urilor
|
|
|
240
|
- **Conflict detection**: Evită adăugarea IP-urilor deja configurate
|
|
|
241
|
|
|
|
242
|
#### Enhanced Error Handling
|
|
|
243
|
- **Detailed error reporting**: Mesaje de eroare mai descriptive
|
|
|
244
|
- **Recovery suggestions**: Sugestii pentru rezolvarea problemelor
|
|
|
245
|
- **Graceful degradation**: Continuă operațiunea chiar dacă unele componente eșuează
|
|
|
246
|
|
|
|
247
|
### 📚 Documentație Extinsă
|
|
|
248
|
|
|
|
249
|
#### New Troubleshooting Section
|
|
|
250
|
- **USB/Thunderbolt specific issues**: Secțiune dedicată pentru problemele interfețelor instabile
|
|
|
251
|
- **Debug commands**: Liste complete de comenzi pentru diagnosticare
|
|
|
252
|
- **Step-by-step solutions**: Soluții pas cu pas pentru probleme comune
|
|
|
253
|
- **Power management tips**: Sugestii pentru managementul power al USB
|
|
|
254
|
|
|
|
255
|
#### Updated Architecture Documentation
|
|
|
256
|
- **Interface monitoring flow**: Documentare completă a fluxului de monitorizare
|
|
|
257
|
- **Service interactions**: Interacțiunile între servicii și dependențele lor
|
|
|
258
|
- **Debug methodology**: Metodologie pentru diagnosticarea problemelor
|
|
|
259
|
|
|
|
260
|
### 🎯 Use Cases Noi
|
|
|
261
|
|
|
|
262
|
#### Unstable Interface Environments
|
|
|
263
|
- **USB docking stations**: Stații de andocare USB care se deconectează periodic
|
|
|
264
|
- **Thunderbolt hubs**: Hub-uri Thunderbolt cu conectivitate intermitentă
|
|
|
265
|
- **USB-C multiport adapters**: Adaptoare multiport cu stabilitate variabilă
|
|
|
266
|
- **Laptop docking scenarios**: Scenarii de laptop care se conectează/deconectează des
|
|
|
267
|
|
|
|
268
|
#### Enterprise Environment
|
|
|
269
|
- **Multiple identical setups**: Deploy pe multiple servere cu aceleași probleme interfețe
|
|
|
270
|
- **Centralized monitoring**: Monitorizare centralizată a stabilității interfețelor
|
|
|
271
|
- **Automated recovery**: Recuperare automată fără intervenție manuală
|
|
|
272
|
|
|
|
273
|
## [v2.3.0] - 2025-07-22
|
|
|
274
|
|
|
|
275
|
### 🚀 Boot Recovery System
|
|
|
276
|
|
|
|
277
|
#### Boot Scan Service
|
|
|
278
|
- **Automatic boot detection**: New `autonas-boot-scan.service` detects and mounts configured disks at system boot
|
|
|
279
|
- **Pre-connected disk support**: Handles disks that were already attached before system start
|
|
|
280
|
- **Intelligent scanning**: Checks all configured UUIDs from `/etc/pve/autonas/disks.conf`
|
|
|
281
|
- **Mount status detection**: Identifies disks already mounted elsewhere and handles appropriately
|
|
|
282
|
|
|
|
283
|
#### Boot Scanner Script
|
|
|
284
|
- **autonas-boot-scan.sh**: Comprehensive boot-time disk scanner
|
|
|
285
|
- **UUID existence verification**: Checks if configured disk UUIDs are present as devices
|
|
|
286
|
- **Mount state analysis**: Determines if disks are unmounted, mounted elsewhere, or correctly mounted
|
|
|
287
|
- **Automatic attachment**: Uses `autonas-manager.sh` to properly mount and configure detected disks
|
|
|
288
|
- **Detailed reporting**: Statistics on total, processed, already-mounted, and newly-attached disks
|
|
|
289
|
|
|
|
290
|
#### System Integration
|
|
|
291
|
- **Service dependencies**: Proper ordering after filesystem, udev-settle, network, and NFS services
|
|
|
292
|
- **Installation automation**: Added to install/uninstall scripts with proper enable/disable
|
|
|
293
|
- **Documentation updates**: Complete documentation of new boot recovery architecture
|
|
|
294
|
- **RemainAfterExit=yes**: Service stays active to indicate successful boot scan completion
|
|
|
295
|
|
|
|
296
|
#### Main Service Integration
|
|
|
297
|
- **autonas.service**: New main AutoNAS service for centralized system management
|
|
|
298
|
- **Enhanced reload functionality**: Comprehensive reload of udev rules, NFS exports, and systemd daemon
|
|
|
299
|
- **Service orchestration**: Proper dependencies and integration with boot-scan service
|
|
|
300
|
- **Centralized control**: Single point of management for the entire AutoNAS system
|
|
|
301
|
|
|
|
302
|
#### Orphan File Prevention System
|
|
|
303
|
- **Pre-installation cleanup**: Automatic cleanup of previous installations before reinstalling
|
|
|
304
|
- **Uninstaller integration**: Install script now installs uninstaller for future clean upgrades
|
|
|
305
|
- **Deploy script uninstall**: New `./deploy.sh uninstall` command for remote uninstallation
|
|
|
306
|
- **Force mode uninstaller**: Silent cleanup mode with `--force` flag for automated use
|
|
|
307
|
- **Evolution protection**: Prevents orphan files during project evolution and upgrades
|
|
|
308
|
|
|
|
309
|
#### Problem Resolution
|
|
|
310
|
- **Solves reboot issue**: Addresses problem where pre-connected disks weren't exported after system restart
|
|
|
311
|
- **udev gap coverage**: Handles scenario where udev doesn't re-trigger events for existing devices
|
|
|
312
|
- **NFS export recovery**: Ensures all configured disks are properly exported after boot
|
|
|
313
|
- **Robust boot process**: System now handles both hot-plug and pre-connected disk scenarios
|
|
|
314
|
|
|
|
315
|
## [v2.2.0] - 2025-07-22
|
|
|
316
|
|
|
|
317
|
### 🚀 Remote Deployment System
|
|
|
318
|
|
|
|
319
|
#### Deploy Script Added
|
|
|
320
|
- **Remote deployment support**: New `deploy.sh` script for automated installation on multiple targets
|
|
|
321
|
- **Multi-target management**: Support for servers 192.168.2.91, 192.168.2.92, 192.168.2.93
|
|
|
322
|
- **SSH-based automation**: Uses SSH keys for seamless remote operations
|
|
|
323
|
- **Intelligent connectivity checks**: Host availability verification before operations
|
|
|
324
|
|
|
|
325
|
#### Enhanced Reliability
|
|
|
326
|
- **Host status verification**: Ping test before attempting SSH connections
|
|
|
327
|
- **Graceful failure handling**: Skip unavailable hosts with clear warnings
|
|
|
328
|
- **Connection testing**: SSH connectivity validation before deployment
|
|
|
329
|
- **Error reporting**: Clear status messages for each operation step
|
|
|
330
|
|
|
|
331
|
#### Deployment Features
|
|
|
332
|
- **Complete installation**: Automated install, configure, and start services
|
|
|
333
|
- **Service management**: Start, restart, stop remote AutoNAS services
|
|
|
334
|
- **Status monitoring**: Remote status checking and health validation
|
|
|
335
|
- **Cleanup operations**: Temporary file cleanup on target systems
|
|
|
336
|
|
|
|
337
|
#### Command Operations
|
|
|
338
|
- **install**: Complete AutoNAS installation and configuration
|
|
|
339
|
- **start/restart/stop**: Service lifecycle management
|
|
|
340
|
- **status**: Health check and configuration validation
|
|
|
341
|
- **cleanup**: Temporary file removal
|
|
|
342
|
- **help**: Comprehensive usage documentation
|
|
|
343
|
|
|
|
344
|
#### Documentation Consolidation
|
|
|
345
|
- **Merged TECHNICAL.md into README.md**: Complete technical documentation in single file
|
|
|
346
|
- **Enhanced architecture section**: Detailed component descriptions and workflows
|
|
|
347
|
- **Comprehensive troubleshooting**: Technical debugging and extensibility guides
|
|
|
348
|
- **Unified documentation**: Single source of truth for all AutoNAS information
|
|
|
349
|
|
|
|
350
|
## [v2.1.0] - 2024-12-02
|
|
|
351
|
|
|
|
352
|
### 🚀 udev Context Improvements
|
|
|
353
|
|
|
|
354
|
#### Simplified Execution Strategy
|
|
|
355
|
- **Direct systemd execution**: Removed unreliable direct execution in udev context
|
|
|
356
|
- **Guaranteed privilege handling**: All mount operations now run through systemd service
|
|
|
357
|
- **Improved reliability**: Eliminates "permission denied" issues in restricted udev context
|
|
|
358
|
- **Consistent behavior**: Same execution path for all environments
|
|
|
359
|
|
|
|
360
|
#### Enhanced Logging
|
|
|
361
|
- **Streamlined logging**: Clear indication of systemd service usage
|
|
|
362
|
- **Better debugging**: Simplified troubleshooting without fallback complexity
|
|
|
363
|
|
|
|
364
|
## [v2.0.0] - 2024-12-02
|
|
|
365
|
|
|
|
366
|
### 🚀 Major Features Added
|
|
|
367
|
|
|
|
368
|
#### Intelligent Device Detection
|
|
|
369
|
- **Multiple device type support**: USB storage, SCSI removable, USB-to-SATA bridges
|
|
|
370
|
- **UUID-based identification**: Precise device matching via filesystem UUID
|
|
|
371
|
- **Smart udev rules**: Comprehensive detection for various hardware configurations
|
|
|
372
|
|
|
|
373
|
#### Enhanced User Experience
|
|
|
374
|
- **Interactive configuration helper**: `autonas-config.sh` with guided setup
|
|
|
375
|
- **UUID parameter support**: Pre-populate UUIDs in `add` and `test` commands
|
|
|
376
|
- **Automatic mounting post-configuration**: Immediate disk availability after setup
|
|
|
377
|
- **Standardized NFS configuration**: Optimized settings applied automatically
|
|
|
378
|
|
|
|
379
|
#### Advanced System Integration
|
|
|
380
|
- **udev wrapper**: Prevents timeout issues with asynchronous execution
|
|
|
381
|
- **Intelligent IP management**: Shared IP handling across multiple disks
|
|
|
382
|
- **Comprehensive logging**: Structured logging with proper syslog tags
|
|
|
383
|
- **Error handling and recovery**: Robust failure handling with detailed reporting
|
|
|
384
|
|
|
|
385
|
### 🛡️ Data Protection & Safety
|
|
|
386
|
|
|
|
387
|
#### Installation Safety
|
|
|
388
|
- **Configuration preservation**: Existing `disks.conf` files are never overwritten
|
|
|
389
|
- **User data detection**: Automatically detects and preserves user configurations
|
|
|
390
|
- **Template system**: New installs get templates, upgrades preserve data
|
|
|
391
|
|
|
|
392
|
#### Uninstallation Safety
|
|
|
393
|
- **Data-preserving uninstall**: User configurations and mount points preserved
|
|
|
394
|
- **Selective cleanup**: Only removes AutoNAS components, keeps user data
|
|
|
395
|
- **Manual cleanup guidance**: Clear instructions for complete removal if desired
|
|
|
396
|
|
|
|
397
|
### 🔧 Configuration Management
|
|
|
398
|
|
|
|
399
|
#### Simplified Configuration Process
|
|
|
400
|
```bash
|
|
|
401
|
# Old method (manual editing)
|
|
|
402
|
sudo nano /etc/pve/autonas/disks.conf
|
|
|
403
|
|
|
|
404
|
# New method (guided interactive)
|
|
|
405
|
sudo autonas-config.sh add <UUID>
|
|
|
406
|
```
|
|
|
407
|
|
|
|
408
|
#### Smart Validation
|
|
|
409
|
- **UUID format validation**: Proper 8-4-4-4-12 hex format checking
|
|
|
410
|
- **Disk name validation**: Character restrictions and reserved name checking
|
|
|
411
|
- **Network interface validation**: Real-time interface existence checking
|
|
|
412
|
- **IP address validation**: Format and availability checking
|
|
|
413
|
|
|
|
414
|
#### Enhanced Commands
|
|
|
415
|
- **`autonas-config.sh add [UUID]`**: Interactive configuration with optional UUID
|
|
|
416
|
- **`autonas-config.sh test [UUID]`**: Configuration testing with optional UUID
|
|
|
417
|
- **`autonas-config.sh list`**: Formatted display of all configurations
|
|
|
418
|
- **`autonas-config.sh remove`**: Interactive configuration removal
|
|
|
419
|
|
|
|
420
|
### 🌐 Network & NFS Improvements
|
|
|
421
|
|
|
|
422
|
#### Standardized NFS Configuration
|
|
|
423
|
```
|
|
|
424
|
*(rw,all_squash,insecure,async,no_subtree_check,anonuid=0,anongid=0)
|
|
|
425
|
```
|
|
|
426
|
- **Optimized for performance**: Async writes with no_subtree_check
|
|
|
427
|
- **Security balanced**: all_squash with root mapping for compatibility
|
|
|
428
|
- **Wide compatibility**: insecure flag for broader client support
|
|
|
429
|
|
|
|
430
|
#### Intelligent IP Management
|
|
|
431
|
- **Shared IP support**: Multiple disks can use the same IP address
|
|
|
432
|
- **Smart cleanup**: IPs only removed when no longer in use
|
|
|
433
|
- **Automatic configuration**: IP setup integrated with disk mounting
|
|
|
434
|
|
|
|
435
|
### 🔍 Monitoring & Debugging
|
|
|
436
|
|
|
|
437
|
#### Enhanced Logging System
|
|
|
438
|
- **Structured logging**: Separate tags for different components
|
|
|
439
|
- `autonas`: Main manager operations
|
|
|
440
|
- `autonas-wrapper`: udev wrapper operations
|
|
|
441
|
- `autonas-config`: Configuration helper operations
|
|
|
442
|
- **Informative messages**: Clear indication of actions and results
|
|
|
443
|
- **Debugging support**: Detailed error reporting with context
|
|
|
444
|
|
|
|
445
|
#### Monitoring Commands
|
|
|
446
|
```bash
|
|
|
447
|
# Live monitoring all AutoNAS components
|
|
|
448
|
journalctl -t autonas -t autonas-wrapper -t autonas-config -f
|
|
|
449
|
|
|
|
450
|
# Component-specific monitoring
|
|
|
451
|
journalctl -t autonas --since "10 minutes ago"
|
|
|
452
|
|
|
|
453
|
# udev debugging
|
|
|
454
|
udevadm monitor --subsystem-match=block
|
|
|
455
|
```
|
|
|
456
|
|
|
|
457
|
### 📁 Project Structure Improvements
|
|
|
458
|
|
|
|
459
|
#### Organized Component Structure
|
|
|
460
|
```
|
|
|
461
|
autoNAS/
|
|
|
462
|
├── README.md # User documentation
|
|
|
463
|
├── TECHNICAL.md # Technical documentation
|
|
|
464
|
├── CHANGELOG.md # This file
|
|
|
465
|
├── config/
|
|
|
466
|
│ ├── disks.conf # Configuration template
|
|
|
467
|
│ ├── 99-autonas-disk.rules # udev detection rules
|
|
|
468
|
│ └── autonas-attach@.service # systemd fallback service
|
|
|
469
|
└── scripts/
|
|
|
470
|
├── autonas-manager.sh # Main disk management
|
|
|
471
|
├── autonas-udev-wrapper.sh # udev timeout prevention
|
|
|
472
|
├── autonas-config.sh # Interactive configuration
|
|
|
473
|
├── install.sh # Safe installation
|
|
|
474
|
└── uninstall.sh # Safe uninstallation
|
|
|
475
|
```
|
|
|
476
|
|
|
|
477
|
#### Documentation Overhaul
|
|
|
478
|
- **Complete README**: Comprehensive user guide with examples
|
|
|
479
|
- **Technical documentation**: Developer-focused implementation details
|
|
|
480
|
- **Inline comments**: Extensive code documentation for maintainability
|
|
|
481
|
|
|
|
482
|
### ⚡ Performance Optimizations
|
|
|
483
|
|
|
|
484
|
#### udev Integration
|
|
|
485
|
- **Timeout prevention**: Asynchronous wrapper prevents udev blocking
|
|
|
486
|
- **Background processing**: Non-blocking device handling
|
|
|
487
|
- **Immediate feedback**: Quick udev response with background operations
|
|
|
488
|
|
|
|
489
|
#### File System Operations
|
|
|
490
|
- **UUID-based mounting**: Consistent device identification
|
|
|
491
|
- **Optimized mount points**: Organized `/mnt/autonas/` structure
|
|
|
492
|
- **Efficient configuration parsing**: Fast config file processing
|
|
|
493
|
|
|
|
494
|
### 🔒 Security Enhancements
|
|
|
495
|
|
|
|
496
|
#### File Permissions
|
|
|
497
|
- **Proper ownership**: All scripts owned by root:root
|
|
|
498
|
- **Secure permissions**: 755 for scripts, 644 for configs
|
|
|
499
|
- **Protected configuration**: Config files not world-writable
|
|
|
500
|
|
|
|
501
|
#### NFS Security
|
|
|
502
|
- **User mapping**: all_squash prevents privilege escalation
|
|
|
503
|
- **Anonymous mapping**: anonuid=0,anongid=0 for consistent access
|
|
|
504
|
- **Performance vs security**: Balanced configuration for practical use
|
|
|
505
|
|
|
|
506
|
### 🧪 Testing & Validation
|
|
|
507
|
|
|
|
508
|
#### Configuration Testing
|
|
|
509
|
- **Real-time validation**: Test configurations against current system state
|
|
|
510
|
- **Device detection**: Check if UUIDs correspond to actual devices
|
|
|
511
|
- **Network validation**: Verify interface existence and IP availability
|
|
|
512
|
|
|
|
513
|
#### Integration Testing
|
|
|
514
|
- **Manual testing support**: Commands for manual mount/unmount testing
|
|
|
515
|
- **Status verification**: Built-in checks for successful operations
|
|
|
516
|
- **Rollback capability**: Automatic cleanup on operation failures
|
|
|
517
|
|
|
|
518
|
### 🚨 Error Handling Improvements
|
|
|
519
|
|
|
|
520
|
#### Graceful Failure Handling
|
|
|
521
|
- **Descriptive error messages**: Clear indication of what went wrong
|
|
|
522
|
- **Suggested remedies**: Specific commands to fix common issues
|
|
|
523
|
- **Logging preservation**: All errors logged for later analysis
|
|
|
524
|
|
|
|
525
|
#### Recovery Mechanisms
|
|
|
526
|
- **Automatic rollback**: Failed operations clean up after themselves
|
|
|
527
|
- **State consistency**: System left in known good state after failures
|
|
|
528
|
- **Manual recovery**: Clear instructions for manual intervention when needed
|
|
|
529
|
|
|
|
530
|
### 📖 Breaking Changes
|
|
|
531
|
|
|
|
532
|
#### Configuration Format
|
|
|
533
|
- **No breaking changes**: Existing configurations continue to work
|
|
|
534
|
- **Enhanced format**: New configurations use optimized NFS settings
|
|
|
535
|
- **Backwards compatibility**: Old configurations preserved during upgrades
|
|
|
536
|
|
|
|
537
|
#### Command Interface
|
|
|
538
|
- **Extended syntax**: Commands now accept optional parameters
|
|
|
539
|
- **Backwards compatibility**: Old syntax continues to work
|
|
|
540
|
- **Enhanced features**: New parameters provide additional functionality
|
|
|
541
|
|
|
|
542
|
### 🔄 Migration Guide
|
|
|
543
|
|
|
|
544
|
#### From Manual Configuration
|
|
|
545
|
If you've been manually editing configuration files:
|
|
|
546
|
1. **Backup existing configs**: `sudo cp /etc/pve/autonas/disks.conf ~/backup.conf`
|
|
|
547
|
2. **Run installer**: `sudo bash scripts/install.sh` (preserves existing configs)
|
|
|
548
|
3. **Use new tools**: `autonas-config.sh list` to see current configurations
|
|
|
549
|
|
|
|
550
|
#### From Previous AutoNAS Version
|
|
|
551
|
1. **Safe upgrade**: `sudo bash scripts/install.sh` automatically preserves data
|
|
|
552
|
2. **New features**: Start using `autonas-config.sh add <UUID>` for new disks
|
|
|
553
|
3. **Enhanced monitoring**: Use new logging commands for better visibility
|
|
|
554
|
|
|
|
555
|
### 🎯 Future Roadmap
|
|
|
556
|
|
|
|
557
|
#### Planned Features
|
|
|
558
|
- **Web interface**: GUI for configuration management
|
|
|
559
|
- **Notification system**: Email/webhook notifications for disk events
|
|
|
560
|
- **Health monitoring**: SMART data integration and disk health reporting
|
|
|
561
|
- **Cloud integration**: Automatic cloud backup triggers
|
|
|
562
|
|
|
|
563
|
#### Performance Improvements
|
|
|
564
|
- **Parallel processing**: Concurrent handling of multiple disk operations
|
|
|
565
|
- **Caching**: Configuration caching for faster operations
|
|
|
566
|
- **Optimization**: Further NFS and mount option tuning
|
|
|
567
|
|
|
|
568
|
#### Security Enhancements
|
|
|
569
|
- **TLS support**: Encrypted NFS where supported
|
|
|
570
|
- **Access control**: Per-disk user/group restrictions
|
|
|
571
|
- **Audit logging**: Enhanced security logging for compliance
|
|
|
572
|
|
|
|
573
|
---
|
|
|
574
|
|
|
|
575
|
### 📝 Notes
|
|
|
576
|
|
|
|
577
|
- **Semantic versioning**: AutoNAS follows semver for version numbering
|
|
|
578
|
- **Stability focus**: All changes prioritize data safety and system stability
|
|
|
579
|
- **Community feedback**: Features developed based on user needs and feedback
|
|
|
580
|
|
|
|
581
|
For detailed technical information, see [TECHNICAL.md](TECHNICAL.md).
|
|
Bogdan Timofte
authored
3 months ago
|
582
|
For user documentation, see [README.md](README.md).
|