claude-home/networking/examples/nas-mount-configuration.md
Cal Corum 4b7eca8a46
All checks were successful
Reindex Knowledge Base / reindex (push) Successful in 3s
docs: add YAML frontmatter to all 151 markdown files
Adds title, description, type, domain, and tags frontmatter to every
doc for improved KB semantic search. The description field is prepended
to every search chunk, and domain/type/tags enable filtered queries.

Type values: context, guide, runbook, reference, troubleshooting
Domain values match directory structure (networking, docker, etc.)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-12 09:00:44 -05:00

236 lines
8.0 KiB
Markdown

---
title: "NAS SMB Mount Optimization"
description: "Optimized TrueNAS SMB 3.1.1 mount configs achieving 103 MB/s on tdarr-server and 85 MB/s on workstation, with buffer tuning, cache strategy, and stability notes."
type: reference
domain: networking
tags: [cifs, smb, truenas, nas, performance, fstab, tdarr]
---
# NAS Mount Configuration - TrueNAS SMB Optimization
## Overview
This document contains the optimized SMB mount configurations for TrueNAS (10.10.0.35) across multiple systems in the homelab. These optimizations provide significant performance improvements over default SMB settings.
## TrueNAS System Details
- **IP Address**: 10.10.0.35
- **System**: TrueNAS Server
- **SMB Version**: 3.1.1 (optimized from 3.0)
- **Available Shares**: `/media` and `/cals-files`
## Performance Results
### Before Optimization
- **Tdarr Server**: 61.8 MB/s
- **Local Workstation**: 11.1 MB/s
### After Optimization
- **Tdarr Server**: 103 MB/s (67% improvement)
- **Local Workstation**: 85.4 MB/s (669% improvement)
## Optimized Mount Configurations
### Tdarr Server (ubuntu-ct - 10.10.0.43)
**File**: `/etc/fstab`
```bash
//10.10.0.35/media /mnt/truenas-share cifs vers=3.1.1,cache=loose,credentials=/root/.truenascreds,rsize=16777216,wsize=16777216,bsize=4194304,actimeo=30,closetimeo=5,echo_interval=30
```
**Active Mount Options** (negotiated):
```
vers=3.1.1,cache=loose,rsize=8388608,wsize=8388608,bsize=4194304,
actimeo=30,closetimeo=5,echo_interval=30
```
### Local Workstation (nobara-pc)
**File**: `/etc/fstab`
```bash
//10.10.0.35/media /mnt/media cifs credentials=/home/cal/.samba_credentials,uid=1000,gid=1000,vers=3.1.1,cache=loose,rsize=16777216,wsize=16777216,bsize=4194304,actimeo=30,closetimeo=5,echo_interval=30,noperm 0 0
//10.10.0.35/cals-files /mnt/cals-files cifs credentials=/home/cal/.samba_credentials,uid=1000,gid=1000,vers=3.1.1,cache=loose,rsize=16777216,wsize=16777216,bsize=4194304,actimeo=30,closetimeo=5,echo_interval=30,noperm 0 0
```
**Active Mount Options** (negotiated):
```
vers=3.1.1,cache=loose,rsize=8388608,wsize=8388608,bsize=4194304,
actimeo=30,closetimeo=5,echo_interval=30,noperm
```
## Key Optimization Parameters
### Protocol Version
- **Setting**: `vers=3.1.1`
- **Previous**: `vers=3.0`
- **Benefit**: Latest SMB protocol with performance improvements and better security
### Cache Strategy
- **Setting**: `cache=loose`
- **Previous**: `cache=strict`
- **Benefit**: Better read performance, less strict consistency requirements
### Buffer Sizes
- **Read Size**: `rsize=16777216` (requested) → `rsize=8388608` (negotiated)
- **Write Size**: `wsize=16777216` (requested) → `wsize=8388608` (negotiated)
- **Block Size**: `bsize=4194304` (4MB, up from 1MB)
- **Previous**: `rsize=4194304,wsize=4194304,bsize=1048576`
- **Benefit**: Larger buffers reduce network round trips
### Connection Timeouts
- **Attribute Cache**: `actimeo=30` (30 seconds, up from 1 second)
- **Close Timeout**: `closetimeo=5` (5 seconds, up from 1 second)
- **Echo Interval**: `echo_interval=30` (30 seconds, down from 60 seconds)
- **Benefit**: Better connection persistence, fewer reconnections
## Credential Files
### Tdarr Server
**File**: `/root/.truenascreds`
```
username=plex
password=[password]
domain=
```
### Local Workstation
**File**: `/home/cal/.samba_credentials`
```
username=plex
password=[password]
domain=
```
**Security**: Both files should be owned by root with 600 permissions:
```bash
sudo chown root:root /path/to/credentials
sudo chmod 600 /path/to/credentials
```
## Mount Commands
### Apply New Configuration
```bash
# Unmount existing mounts
sudo umount /mnt/media
sudo umount /mnt/cals-files
# Mount with new optimized settings
sudo mount /mnt/media
sudo mount /mnt/cals-files
```
### Verify Mount Options
```bash
mount | grep -E 'media|cals-files'
```
### Test Performance
```bash
# Test read performance (100MB test)
time dd if="/mnt/media/path/to/large/file.mkv" bs=1M count=100 of=/dev/null
```
## Troubleshooting
### Common Issues
**Mount Error: Device or resource busy**
- Solution: Unmount existing mount first: `sudo umount /mnt/media`
**Parse Error in fstab**
- Check for missing `//` before IP address
- Ensure no spaces in comma-separated options
- Verify all commas are present between options
**Permission Denied**
- Verify credential file exists and has correct permissions (600)
- Check username/password in credential file
- Ensure TrueNAS user has access to the share
**Slow Performance After Changes**
- Verify new mount options are active: `mount | grep media`
- Test with different file sizes to confirm improvement
- Check network connectivity: `ping 10.10.0.35`
### Performance Testing Commands
```bash
# Quick performance test (50MB)
time dd if="/mnt/media/Movies/[movie-file]" bs=1M count=50 of=/dev/null
# Larger performance test (100MB)
time dd if="/mnt/media/Movies/[movie-file]" bs=1M count=100 of=/dev/null
# Monitor network during transfer
iftop -i eth0
```
## Backup and Rollback
### Before Making Changes
```bash
# Backup fstab
sudo cp /etc/fstab /etc/fstab.backup-$(date +%Y%m%d-%H%M%S)
```
### Rollback if Needed
```bash
# Restore from backup
sudo cp /etc/fstab.backup-YYYYMMDD-HHMMSS /etc/fstab
# Remount
sudo umount /mnt/media
sudo mount /mnt/media
```
## System-Specific Notes
### Tdarr Integration
- **Unmapped Node Architecture**: Node downloads files from Tdarr server at optimized 103 MB/s
- **Cache Directory**: Uses local NVMe storage for maximum transcoding performance
- **No Direct NAS Access**: Unmapped nodes don't directly access NAS mounts
### Local Workstation Usage
- **Media Browsing**: 85.4 MB/s for fast local media access
- **File Management**: Significantly faster file operations
- **Backup Operations**: Improved speeds for large file transfers
## Future Expansion
When adding new systems, use these optimized settings as the baseline:
```bash
//10.10.0.35/media /mnt/media cifs credentials=/path/to/creds,uid=1000,gid=1000,vers=3.1.1,cache=loose,rsize=16777216,wsize=16777216,bsize=4194304,actimeo=30,closetimeo=5,echo_interval=30,noperm 0 0
```
Adjust `uid`, `gid`, and credential path as needed for each system.
## System Stability Considerations (2025-08-11)
### Critical Stability Issue
During intensive transcoding operations with network storage, CIFS mount failures can escalate to **kernel-level crashes** requiring hard system reboot. This occurs when:
- Large files (10GB+ remux) are streamed over CIFS during transcoding
- Network connectivity issues cause CIFS timeouts and reconnection failures
- Container processes (like tdarr-ffmpeg) experience memory corruption in CIFS operations
### Resilience Improvements
For production systems performing intensive file operations over CIFS, see:
- **[CIFS Mount Resilience Fixes](cifs-mount-resilience-fixes.md)** - Enhanced timeout handling and error recovery
- **[Tdarr Container Fixes](../docker/tdarr-container-fixes.md)** - Unmapped architecture to eliminate CIFS streaming during transcoding
- **[Crash Analysis](../docker/crash-analysis-summary.md)** - Complete incident analysis and prevention strategies
### Recommended Configuration Updates
While the optimized settings above provide excellent performance, add these resilience parameters for stability:
- **Timeout handling**: `timeo=15,retrans=3` - Prevent 90-second hangs
- **Interruption support**: `intr` - Allow kernel to interrupt hung operations
- **Smaller buffers during issues**: Consider reducing buffer sizes during network instability
## Related Documentation
- [SSH Key Management](ssh-key-management.md) - For secure access to systems
- [Tdarr Troubleshooting](../docker/tdarr-troubleshooting.md) - For Tdarr-specific issues
- [Network Troubleshooting](ssh-troubleshooting.md) - For general network issues
- **[CIFS Resilience Fixes](cifs-mount-resilience-fixes.md)** - Critical stability improvements
- **[Tdarr Container Security](../docker/tdarr-container-fixes.md)** - Prevent kernel crashes
---
*Last updated: August 11, 2025*
*Performance improvements: Tdarr Server 67% faster, Local Workstation 669% faster*
*Stability improvements: Added kernel crash prevention measures*