Reduce overnight drive wake-ups by identifying the exact scheduled task that touches media, then limiting its frequency, scope, or file-level work.
A media server can wake sleeping HDDs even when its database and cache live on SSD because a scheduled library scan may traverse directories, probe files, refresh artwork, generate previews, validate paths, or process items that never reach a stable state. Start by correlating the first disk access with one task and one log entry. Changing spindown timers before proving the trigger usually hides the pattern without reducing the underlying reads.
Prove Which Scheduled Task Wakes the Drives
Record the exact wake time from disk telemetry, system logs, or power monitoring, then compare it with the media server’s scheduled-task history. Disable only one suspected task for one night so the result remains attributable.
A Jellyfin report found the scheduled library scan was repeatedly processing the full library twice per day and spending hours probing media. The useful clue was that the same full scan kept repeating rather than an isolated playback request.
If the drives wake before the library scan starts, inspect another task such as chapter-image extraction, trickplay generation, intro analysis, metadata refresh, backup, SMART testing, filesystem scrub, or a download organizer. Do not blame the media server until its process or container appears in the first-access evidence.
Separate Full Library Scans From Real-Time Monitoring
Check whether the library uses both periodic full scans and filesystem monitoring. Real-time monitoring can import ordinary additions quickly on supported local filesystems, while a scheduled full scan remains useful as a lower-frequency safety net.
Jellyfin has long treated scheduled scanning and real-time monitoring as separate mechanisms. A project issue notes that real-time monitoring can detect new media while a scheduled task provides interval-based discovery.
On reliable local storage, test real-time monitoring with one newly added file and reduce the full scan frequency only after that file appears correctly. On NFS, SMB, rclone, merger filesystems, and some container-mounted paths, event delivery may be incomplete, so keep a periodic scan at a time that matches the storage policy.
Find Tasks That Read Media Contents Instead of Only Directory Names
Inspect the scanner log for media probing, checksum reads, chapter extraction, subtitle analysis, trickplay generation, loudness analysis, and repeated metadata refresh. Directory enumeration may cause a short wake, while reading parts of every file can keep an entire array active for hours.
The repeated-scan case above reported substantial reads from each media file during probing, which explains why the job did more than check filenames. Another issue shows the same entries being reprocessed on every scan instead of reaching a stable state.
Fix the first item that changes on every run: an unavailable path, permission failure, malformed sidecar, unstable timestamp, duplicate library root, or metadata record that is repeatedly removed and recreated. A shorter schedule will not help if each scan still treats the same content as new.
Keep Metadata on SSD Without Assuming That Stops Every Wake-Up
Place the application database, cache, posters, and active metadata on SSD when the platform supports it. This reduces small random reads during browsing and keeps routine database maintenance away from capacity disks.
Storage separation is not a complete guarantee. A Jellyfin regression report documented HDD wake-ups while viewing library details even with cache and metadata on NVMe, showing that the server may still touch source media for some operations.
After moving app data, watch which source paths are opened during browsing and scans. Keep posters, previews, and databases off the media disks where practical, but treat any remaining source-file access as a separate behavior to diagnose rather than proof that the SSD move failed.
Reduce Frequency, Scope, and Overlapping Work
Run full scans only as often as the library needs them, and avoid scheduling them at the same time as backups, scrubs, preview generation, or media imports. Scan individual libraries or folders when the platform allows targeted refreshes.
Disable broad metadata replacement during routine scans unless metadata actually needs rebuilding. A normal incremental scan should not repeatedly regenerate chapter images, trickplay files, posters, and episode identification for unchanged media.
Use a staggered schedule: imports first, a targeted library refresh after the import window, and heavyweight derivative jobs on a separate day or only on demand. This produces a predictable wake period instead of several short wake-ups throughout the night.
Check Mount Availability Before the Media Service Starts
A missing network or pooled mount can expose an empty local directory at the expected path. The media server may scan that fallback, remove items, and then rescan everything when the real share returns.
Drive or mount interruptions can make a media library disappear and force expensive reconstruction. A Jellyfin issue describes library loss after a mount disconnected, which is the failure mode a startup dependency should prevent.
Configure the container or service to start after required mounts are active and populated. Add a mount-presence check that looks for a known marker or expected filesystem type, then stop the scan when the storage path is unavailable instead of treating an empty directory as a valid library.
Verify Several Nights of Stable Idle Behavior
After each change, record task start and finish times, disk power state, read volume, largest log entries, and whether newly added media still appears. One quiet night is not enough if the reduced scan runs only every few days.
The ZimaSpace guide to choosing HDD and SSD roles in a NAS provides the storage-layout context for keeping active app data away from sleeping media disks.
The adjustment is successful when scheduled maintenance occurs in one known window, unchanged libraries no longer receive repeated file-level work, imports are still detected, and the HDDs remain idle outside playback, verified scans, backups, or storage-health tasks.
Support & Tips
More to Read

Why Does a Docker Volume Restore Recreate File Contents but Drop Extended Attributes?
A volume-restore diagnosis covering xattr inventory, tar and Rsync options, namespaces, destination support, privileges, labels, app metadata, and tests.

Why Does a Running Container Keep Its Old Memory Limit After the Compose File Changes?
A memory-limit diagnosis covering live cgroups, restart versus recreation, Compose fields, hard and soft limits, parent scopes, swap, and runtime heaps.

Why Does Restarting a Reverse Proxy Invalidate Every Session for One Self-Hosted App?
A session-loss diagnosis covering restart scope, cookie ownership, secret rotation, cache-backed sessions, sticky routing, auth gateways, and recovery.

