---
pageType: source
id: source.zfs-drive-prep
title: zfs-drive-prep
sourceType: local-file
sourcePath: /home/topher/.openclaw/workspace-crash-bot/projects/zfs-drive-prep.md
ingestedAt: 2026-05-02T21:21:38.036Z
updatedAt: 2026-05-02T21:21:38.036Z
status: active
growth: sprout
---

# zfs-drive-prep

## Source
- Type: `local-file`
- Path: `/home/topher/.openclaw/workspace-crash-bot/projects/zfs-drive-prep.md`
- Bytes: 3171
- Updated: 2026-05-02T21:21:38.036Z

## Content
````text
# ZFS Drive Prep — Drive Status Tracker

**Thread:** #setting-up-zfs-on-casaos  
**Updated:** 2026-04-20

## Drive Inventory

| # | Device | Size | Model | Serial | Pool Role | SMART | badblocks | Status |
|---|--------|------|-------|--------|----------|-------|------------|--------|
| 1 | sdb | 4TB | WDC WD40EFRX-68WT0N0 | WD-WCC4E0343316 | raidz2 | ✅ PASS | ✅ 0/0/0 | **READY** |
| 2 | sdc | 9.1T | OOS10000G | 000E0RKT | CasaOS data | — | — | Mounted, skip |
| 3 | sdd | 7.3T | WDC WD8002FZWX-00BKUA0 | WD-AW0056SF | CasaOS data | — | — | Mounted, skip |
| 4 | sde | 3.6T | MDD4000GSA6472E | PBG8AVPS | raidz2 | ✅ PASS | ✅ 0/0/0 | **READY** |
| 5 | sdf | 4TB | ST4000VN008-2DR166 | ZDH7GDYA | raidz2 | ✅ PASS (short) | 🔄 IN PROGRESS (~38h) | **TESTING** |
| 6 | — | 4TB | TBD | — | raidz2 | ❓ | ❓ | **COLD** |
| 7 | — | 4TB | TBD | — | raidz2 | ❓ | ❓ | **COLD** |
| 8 | — | 4TB | TBD | — | raidz2 | ❓ | ❓ | **COLD** |
| 9 | — | 4TB | TBD | — | raidz2 | ❓ | ❓ | **COLD** |
| 10 | — | 4TB | TBD | — | HOT SPARE | ❓ | ❓ | **COLD** |
| 11 | — | 3TB | TBD | — | raidz1 | ❓ | ❓ | **COLD** |
| 12 | — | 3TB | TBD | — | raidz1 | ❓ | ❓ | **COLD** |
| 13 | — | 3TB | TBD | — | raidz1 | ❓ | ❓ | **COLD** |

> **Note:** sda (447G Patriot Burst) is the OS drive — not part of the ZFS pool.

## Pool Plan (From zfs-casaos.md)

### Main Pool ("tank")
- **Vdev 1:** 5×4TB raidz2 → ~12TB usable, 2-drive redundancy
- **Vdev 2:** 3×3TB raidz1 → ~6TB usable, 1-drive redundancy

### Backup (standalone, NOT in main pool)
- 8TB + 10TB → standalone backup targets, format TBD

## Testing Pipeline

### Phase 1: SMART Long Test
```bash
smartctl -t long /dev/sdX
smartctl -H /dev/sdX  # check result
smartctl -a /dev/sdX > smart-$(basename sdX)-$(date +%Y%m%d).log
```

### Phase 2: badblocks (non-destructive)
```bash
badblocks -nvs /dev/sdX > badblocks-$(basename sdX)-$(date +%Y%m%d).log
```

### Pass/Fail Criteria
- ✅ **PASS:** Reallocated=0, Pending=0, Uncorrectable=0, badblocks=0/0/0
- ⚠️ **CONDITIONAL:** Any reallocated/pending sectors → demote to non-critical vdev
- ❌ **FAIL:** Any uncorrectable errors, badblocks bad sectors, SMART health=FAILED → retire

## Key Metrics to Watch
| Attribute | Warning | Critical |
|-----------|---------|----------|
| Reallocated Sectors (5) | >0 | >100 |
| Current Pending (197) | >0 | >10 |
| Uncorrectable Errors (198) | >0 | any |
| Power-On Hours (9) | — | >50,000 |
| Temperature (194) | >40°C | >45°C |
| Power Cycle Count (12) | — | high = old/used |

## Current Batch Schedule
| Batch | Drives | Status |
|-------|--------|--------|
| 1 | sdb, sde | ✅ Done |
| 2 | sdc, sdd | Mounted — test when safe |
| 3-4 | Cold 4TB×4 | Need to power up and swap |
| 5 | 3×3TB | Cold — TBD |

## Next Steps
- [ ] Identify cold drives — get model/serial for drives 5-11
- [ ] Run SMART tests on sdc, sdd (mounted, in use)
- [ ] Power up and test cold drives in batches
- [ ] Get exact drive models for all cold storage
- [ ] Set up smartd monitoring once testing complete
- [ ] Build pool on new rig when hardware arrives
````

## Notes
<!-- openclaw:human:start -->
<!-- openclaw:human:end -->

## Related
<!-- openclaw:wiki:related:start -->
- No related pages yet.
<!-- openclaw:wiki:related:end -->
