--- 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 ## Related - No related pages yet.