Skip to content
View in the app

A better way to browse. Learn more.

Unraid

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Migrating from Windows Server 2019

Featured Replies

Hello,

I'm planning to migrate my ~100TB Windows Server 2019 (with DrivePool) to Unraid and would appreciate some feedback on my migration strategy.

I used Claude AI to create a migration plan, but I'd like to get it reviewed by the community to make sure I'm not missing anything or if there are any outdated practices.

My setup goals:

No parity drive - mostly media files that are easily replaceable

512GB M.2 SSD - cache drive for Sabnzbd extraction and Docker databases

4TB WD Purple - dedicated to Frigate (security camera footage)

2x 8TB WD Red - documents and photos with file duplication/mirroring

Remaining drives (~9 drives) - simple media storage for Plex (no protection)

Does this approach make sense, or are there better practices I should consider? Any feedback appreciated!


Your Drive Setup Summary

Total: ~106TB raw capacity

Unraid target configuration:

  • 🟣 WD Purple (4TB) - Frigate only

  • 🔴 2x WD Red (8TB) - Documents/photos with duplication

  • 📦 9x Mixed drives - Media storage (no protection)

  • 💾 SSD 512GB - Cache drive for databases/Docker


Migration Strategy: "Rolling Consolidation"

Since you have no parity, this is actually easier! We'll consolidate data onto larger drives first, then build Unraid array.


Phase 1: Preparation (Still in Windows)

Goal: Consolidate all data onto 8-9 drives, leaving 4-5 drives empty

Step 1: Calculate your actual data

Move all data TO these drives (keep full):

1. 12TB WD (Drive 1)

2. 10TB WD (Drive 2) 

3. 18TB WD (Drive 5)

4. 8TB SMR (Drive 3)

5. 8TB SMR (Drive 4)

6. 8TB SMR (Drive 6)

7. 8TB SMR (Drive 7)

8. 8TB SMR (Drive 8)

 

Leave EMPTY (or minimal data):

- 8TB SMR (Drive 9)

- 8TB WD Red (Drive 10)

- 4TB WD Purple (Drive 11)

- 8TB WD Red (Drive 12)

- 512GB SSD (Drive 13)

 

**In DrivePool, use "File Placement" rules:**

```

- Move data to fills drives 1-8 completely

- Empty drives 9, 10, 11, 12, 13

## **Phase 2: Create Initial Unraid Array**

**Shutdown Windows → Boot Unraid USB**

**Initial Unraid array (NO PARITY):**

```

Array Configuration:

├─ Cache: 512GB SSD (XFS)

├─ Disk 1: 8TB SMR (Drive 9) - WILL BE FORMATTED

├─ Disk 2: 8TB Red (Drive 10) - WILL BE FORMATTED 

├─ Disk 3: 4TB Purple (Drive 11) - WILL BE FORMATTED

└─ Disk 4: 8TB Red (Drive 12) - WILL BE FORMATTED

 

Total: 32TB usable (all formatted XFS)

Unassigned (keep NTFS, read-only):

  • Drive 1-8 (all your data is here)

Format and start array - This gives you 32TB to work with.


Phase 3: Copy Data Stage 1

Install plugins:

bash

# In Unraid

Community Applications → Install:

- Unassigned Devices

- Dynamix File Manager (optional)

- MC (Midnight Commander) via Nerd Tools

Mount old drives:

  1. Go to: Main → Unassigned Devices

  2. Mount drives 1-8 as read-only

  3. They appear as: /mnt/disks/WD120EDJAZ/, etc.

Copy data:

bash

# For each NTFS drive

cd /mnt/disks/[DRIVE_NAME]/PoolPart.xxx/

 

# Copy to Unraid user shares

rsync -avh --progress --ignore-existing ./ /mnt/user/media/

 

# For SMR drives (slower), use:

rsync -avh --progress --no-compress --ignore-existing ./ /mnt/user/media/

```

 

**Strategy:**

- Copy from Drive 3 (8TB SMR) first → takes ~24 hours

- Verify copy completed

- Once Drive 3 is empty, stop array

 

---

 

## **Phase 4: Expand Array (Repeat)**

 

**Add Drive 3 to array:**

1. Stop Unraid array

2. Go to Main → Array Devices

3. Assign Drive 3 (8TB SMR) to next available slot

4. Start array → formats Drive 3 as XFS

5. Now you have 40TB usable

 

**Repeat copy process:**

- Copy from Drive 4 → Add Drive 4 to array

- Copy from Drive 6 → Add Drive 6 to array

- Continue until all drives added

 

---

 

## **Phase 5: Final Unraid Configuration**

 

Once all data copied and all drives in array:

 

**Create shares with specific allocations:**

 

**1. Frigate Share (Purple drive only):**

```

Share: frigate

Included disks: disk3 (Purple 4TB)

Excluded disks: All others

```

 

**2. Documents Share (Both Reds with duplication):**

```

Share: documents

Included disks: disk2, disk4 (both 8TB Reds)

Allocation method: High-water

Minimum free space: 10GB

 

# Enable duplication at share level (not drive level)

# Use Unraid's "User Share Copy" plugin or manually rsync

```

 

**3. Media Share (Everything else):**

```

Share: media

Included disks: disk1, disk5-13 (all others)

Allocation method: Most-free

Split level: Automatically split



Order of Drive Addition (Optimized)

Copy priority (fastest first):

  1. Drive 9 (8TB SMR) → already empty, format first

  2. Drive 10 (8TB Red) → already empty, format first

  3. Drive 11 (4TB Purple) → already empty, format first

  4. Drive 12 (8TB Red) → already empty, format first

  5. Then copy from and add:

  6. Drive 3 (8TB SMR) → 24h copy

  7. Drive 4 (8TB SMR) → 24h copy

  8. Drive 6 (8TB SMR) → 24h copy

  9. Drive 7 (8TB SMR) → 24h copy

  10. Drive 8 (8TB SMR) → 24h copy

  11. Drive 2 (10TB WD) → 30h copy

  12. Drive 1 (12TB WD) → 36h copy

  13. Drive 5 (18TB WD) → 48h copy (LAST - biggest)

Keep SSD (Drive 13) for cache throughout.

 

  • Community Expert

well, lots going on here. First FYI SMB on unraids doesn't have nor natively support Active Directory.

I would highly recommend going ZFS:

Since using zfs please review:
https://forums.unraid.net/topic/177887-os-70beta4-best-practice-storagediskcache-configuration/#findComment-1478045

Short answer: your plan is solid, but you can make it safer, faster, and simpler by (a) using a small ZFS or btrfs mirrored pool for your important data (docs/photos), (b) keeping Frigate on its own device, and (c) being picky about rsync flags and share settings. Below is a tight review plus a ZFS-based variant you asked for.

As I Understand it:
Quick review of your current plan

  • No parity for the media: totally fine for “easy-to-replace” Plex content. Consider at least good backups for irreplaceables.

  • 512 GB SSD cache: great for Docker/appdata and SABNZBD extraction. Make sure appdata, domains, and system shares are set to Primary storage: Cache (or a pool) and Mover: Prefer/Only so they don’t spray onto array disks.

  • WD Purple for Frigate: ok for 24×7 sequential writes. I’d still keep Frigate’s DB/thumbs on SSD for responsiveness; keep the recordings on the Purple.

  • 2×8 TB Reds “duplicated”: Unraid array itself does not do duplication like DrivePool. Use a pool (btrfs RAID1 or ZFS mirror) for this. That way duplication is automatic and bullet-proof.

  • SMR drives in the array: fine for large sequential media. Don’t use them for metadata-heavy workloads.

Some of my Notes / Revisions:

Migration flow tweaks (keeps your rolling-consolidation idea)

  1. Prep in Windows (DrivePool)

  • Your “empty 4–5 drives, fill others” approach is good.

  • Optional but recommended: run chkdsk /f on each NTFS volume before shutdown.

  1. Build first Unraid boot with empty drives

  1. Copy from NTFS (Unassigned Devices) → Unraid
    Mount NTFS read-only in Unassigned Devices Plugin. Copy with rsync:

# example: NTFS drive mounted at /mnt/disks/WD10
# copy into a user share named "media"
rsync -aHAXv --info=progress2 --preallocate --numeric-ids \
      --inplace \
      /mnt/disks/WD10/PoolPart.*/ /mnt/user/media/

Notes:

  • -aHAX preserves hardlinks, ACLs, xattrs (keep what’s there).

  • --preallocate reduces fragmentation; --inplace avoids temp space spikes.

  • For very slow SMR, add --no-compress.

  • Do not mix /mnt/diskX and /mnt/user on the same copy command (classic “user share copy bug” rule). Your source is /mnt/disks so you’re safe.

  1. Verify, then add the emptied drive to the array/pool
    After each copy:

# quick verification pass (no rewrites)
rsync -aHAXvn --delete /mnt/disks/WD10/PoolPart.*/ /mnt/user/media/

If the dry-run shows nothing to copy/delete, you’re good. Now stop array → assign the just-emptied disk → format → continue.

  1. Permissions sweep once at the end
    Use Tools → Docker Safe New Perms (from Fix Common Problems) on your media/document shares to normalize to nobody:users.

    1. chmod 777 -R * && chown nobody:users -R *

Share layout (Unraid array + pools)

  • frigate (recordings): point to the Purple disk (or a “purple” pool/dataset).

    • Include disks: only the Purple (or set Primary storage: the Purple pool).

    • Keep frigate’s DB on the SSD cache/pool (e.g., appdata/frigate).

  • documents (mirrored): place this on a mirror pool (ZFS or btrfs RAID1) made from the 2×8 TB Reds.

  • media (unprotected): send to the XFS array disks (all except Purple and the mirrored Reds).

    Review the Docs:

No image preview

Manage storage | Unraid Docs

No image preview

Shares | Unraid Docs

A key feature of Unraid is the management of shares. Shares are folders or drives on your Unraid server that can be accessed over a network. You can create as many shares as you want on your Unraid se

My ZFS setup Recommendation (min on Unraid 6.12+)

Unraid now supports named pools. You can create a ZFS pool in the GUI (recommended) or CLI. Here’s the practical layout:

Pools and datasets

  1. Pool safe (ZFS mirror) for documents/photos

    • Devices: the two 8 TB Reds.

    • Pool properties (GUI → set per dataset after creation):

      • compression=lz4

      • xattr=sa

      • atime=off

      • recordsize=128K (good default for mixed small/medium files)

    • Datasets:

      • safe/documents (Primary storage for your “documents” share)

      • Optional: safe/photos if you want a separate share

    • Snapshots: enable regular snapshots (e.g., daily, keep 30). You can script with User Scripts:

      zfs snapshot -r safe@daily-$(date +%F)
      # prune: zfs list -t snap; zfs destroy safe@daily-YYYY-MM-DD
      
    • Off-box backups: later you can zfs send | zfs receive to another ZFS machine/NAS or to a USB backup drive with ZFS.

  2. Pool purple (single-disk ZFS or XFS) for Frigate recordings

    • Device: 4 TB WD Purple.

    • If ZFS:

      • recordsize=1M (video)

      • compression=lz4

      • xattr=sa, atime=off

      • Keep sync=standard (don’t disable sync unless you fully accept data-loss risk on power loss).

    • Put Frigate clips/recordings at purple/frigate-recordings. Point the Frigate share to this dataset.

  3. Pool cache (SSD, single-device)

    • Device: 512 GB NVMe/SATA SSD.

    • ZFS or btrfs are both fine here. If ZFS:

      • compression=lz4, xattr=sa, atime=off, recordsize=16K64K are fine for DBs.

    • Datasets:

      • cache/appdata, cache/system, cache/domains

    • Set the Appdata/Systems/Domains shares: Primary storage: cache; Mover: Prefer/Only.

  4. Array (unprotected XFS disks) for Plex media

    • All remaining HDDs (including SMR) as individual XFS disks, no parity.

    • Share mediaPrimary storage: Array; Allocation Most-free; Split level automatic.

    • Exclude the Purple and the 2×8 TB Reds from media if you want a hard separation.

Wiring shares to pools (Storage settings in each share)

  • documents → Primary storage: safe (ZFS mirror). Mover: Only/Prefer safe.

  • photos (if separate) → Primary storage: safe.

  • frigate:

    • appdata/frigatecache

    • frigate/recordingspurple
      In Frigate’s config, point clips/recordings to /mnt/purple/frigate-recordings (or to the share that maps there).

  • media → Primary storage: Array.

Optional CLI creation (if you prefer)

Do this only once; GUI is safer and keeps Unraid in sync. (Better with zfs master plugin!)

# Mirror pool (two 8TB Reds)
zpool create -f -o ashift=12 safe mirror /dev/disk/by-id/RED_8TB_A /dev/disk/by-id/RED_8TB_B
zfs set compression=lz4 safe
zfs set xattr=sa safe
zfs set atime=off safe
zfs create safe/documents
zfs set recordsize=128K safe/documents

# Purple pool for Frigate
zpool create -f -o ashift=12 purple /dev/disk/by-id/PURPLE_4TB
zfs set compression=lz4 purple
zfs set xattr=sa purple
zfs set atime=off purple
zfs create purple/frigate-recordings
zfs set recordsize=1M purple/frigate-recordings

# Cache pool (single SSD)
zpool create -f -o ashift=12 cache /dev/disk/by-id/SSD_512G
zfs set compression=lz4 cache
zfs set xattr=sa cache
zfs set atime=off cache
zfs create cache/appdata
zfs create cache/system
zfs create cache/domains

Other Docker/ Frigate placement tips

  • DB (SQLite) and thumbnails on SSD (/mnt/cache/appdata/frigate). (asuming one primary location for storage! per unraid shares doc...)

  • Recordings on Purple (/mnt/purple/frigate-recordings), recordsize=1M.

  • If you ever see dropped frames or slow clips, confirm the recordings path isn’t accidentally on the array.

?trying to setup PLex and *Arrs stack... I recommend using docker compose:
example ars compose setup...
https://forums.unraid.net/topic/194760-dockers-fail-to-communicate-on-unraid-72/#findComment-1588190


Preclear & health

  • Before adding any drive to array/pools: run Preclear Disks (plugin) or at least a long SMART test. You’ll catch early failures.


Backups & “what ifs”

  • Documents/Photos: ZFS mirror + snapshots + periodic send/receive to an external ZFS disk is the best “DrivePool duplication” analogue—and more robust.

  • Media: you’ve accepted risk; if you later change your mind, you can add one parity and keep the rest unprotected, or move media into a ZFS pool with RAIDZ.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.