Initial commit: NAS backup, NFS mount docs, NVMe fix docs

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-03-06 15:51:09 +01:00
co-authored by Claude Opus 4.6
commit f223d76cbf
11 changed files with 218 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# System
Scripts and documentation for system administration tasks.
## NAS Backup
`nas-backup.sh` — rsyncs `/data/backup/` (gitea + postgres) to the NFS-mounted NAS at `/mnt/nas/backup/` every 15 minutes.
- **Timer**: `~/.config/systemd/user/nas-backup.timer`
- **Service**: `~/.config/systemd/user/nas-backup.service`
- **Sudoers**: `/etc/sudoers.d/nas-backup` (passwordless rsync)
```bash
# Check status
systemctl --user status nas-backup.timer
systemctl --user list-timers nas-backup.timer
# Run manually
systemctl --user start nas-backup.service
# View logs
journalctl --user -u nas-backup.service
```
## NFS NAS Mount
`nfs-nas-mount.md` — NAS connection details and mount configuration for `nas.local.pmagnus.dk:/omarchy` at `/mnt/nas`.
## NVMe Freeze Fix
`nvme-fix-plan.md` — Fix for Kingston SNV2S2000G freezes caused by NVMe deep power state transitions. Applied via `nvme_core.default_ps_max_latency_us=5000` kernel parameter.
+13
View File
@@ -0,0 +1,13 @@
[Unit]
Description=Elephant
After=graphical-session.target
[Service]
Type=simple
ExecStart=elephant
Restart=on-failure
[Install]
WantedBy=graphical-session.target
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=Fetch Medium Daily Digest emails
[Service]
Type=oneshot
ExecStart=/home/pmp/ai/medium/fetch-mail.sh
+9
View File
@@ -0,0 +1,9 @@
[Unit]
Description=Fetch Medium emails daily at 6:30
[Timer]
OnCalendar=*-*-* 06:30:00
Persistent=true
[Install]
WantedBy=timers.target
+6
View File
@@ -0,0 +1,6 @@
[Unit]
Description=Rsync backup to NAS
[Service]
Type=oneshot
ExecStart=/home/pmp/ai/system/nas-backup.sh
+9
View File
@@ -0,0 +1,9 @@
[Unit]
Description=Rsync backup to NAS every 15 minutes
[Timer]
OnCalendar=*:0/15
Persistent=true
[Install]
WantedBy=timers.target
+9
View File
@@ -0,0 +1,9 @@
[Unit]
Description=Omarchy Battery Monitor Check
After=graphical-session.target
[Service]
Type=oneshot
ExecStart=%h/.local/share/omarchy/bin/omarchy-battery-monitor
Environment=DISPLAY=:0
LogLevelMax=warning
+11
View File
@@ -0,0 +1,11 @@
[Unit]
Description=Omarchy Battery Monitor Timer
Requires=omarchy-battery-monitor.service
[Timer]
OnBootSec=1min
OnUnitActiveSec=30sec
AccuracySec=10sec
[Install]
WantedBy=timers.target
Executable
+14
View File
@@ -0,0 +1,14 @@
#!/usr/bin/env bash
set -euo pipefail
SRC="/data/backup/"
DEST="/mnt/nas/backup/"
# Ensure NAS is mounted
if ! mountpoint -q /mnt/nas; then
echo "NAS not mounted at /mnt/nas, skipping backup" >&2
exit 1
fi
mkdir -p "$DEST"
sudo rsync -a --delete --no-group --no-perms --no-owner "$SRC" "$DEST"
+34
View File
@@ -0,0 +1,34 @@
# NFS NAS Mount
## NAS Details
- **Hostname**: `nas.local.pmagnus.dk`
- **IP**: `192.168.50.112`
- **Protocol**: NFSv4.1
## Available NFS Exports
All exports are accessible from `192.168.50.0/24`:
- `/vol01`, `/vm`, `/umbrel`, `/pve`, `/omarchy`, `/k8s`, `/docker`, `/Dev1Partition1`, `/data`, `/citadel`, `/btcdata`
## Current Mount
- **Source**: `nas.local.pmagnus.dk:/omarchy`
- **Mount point**: `/mnt/nas`
- **Options**: `rw,relatime,vers=4.1,rsize=1048576,wsize=1048576,hard,proto=tcp`
- **Size**: 7.1T total, 127G used (2%)
- **Contents**: `backup/`, `@Recycle/`
## Useful Commands
```bash
# Show NAS exports
showmount -e nas.local.pmagnus.dk
# Mount
sudo mount -t nfs nas.local.pmagnus.dk:/omarchy /mnt/nas
# Persistent mount (add to /etc/fstab)
nas.local.pmagnus.dk:/omarchy /mnt/nas nfs defaults,_netdev 0 0
```
## Notes
- This machine: `192.168.50.42` on `enp88s0`
- `nmap` is not installed; use `ip neigh show` for network discovery
- `sudo` requires a terminal (not available from Claude Code)
+76
View File
@@ -0,0 +1,76 @@
# NVMe Freeze Fix Plan — Kingston SNV2S2000G
## Problem
System freezes and SSHD becomes unresponsive due to NVMe I/O write timeouts.
The Kingston SNV2S2000G firmware fails to wake from deep power states (PS3/PS4) in time,
causing the kernel to abort I/O operations and eventually hard-lock the system.
- 152 NVMe I/O timeout errors logged in previous boot (Feb 17-20)
- 1 NVMe controller reset (Feb 19 09:41)
- 52 unsafe shutdowns (hard power-offs from freezes)
- SMART health: PASSED — drive is not failing, firmware power management is the issue
## Root Cause
NVMe Autonomous Power State Transition (APST) puts the drive into PS3/PS4.
Exit latencies (5ms / 70ms) exceed what the firmware can reliably handle,
causing write and flush operations to time out.
## Fix: Disable Deep NVMe Power States
### Step 1 — Apply kernel parameter
Run with sudo in a terminal:
```bash
sudo sed -i 's|rootfstype=btrfs|rootfstype=btrfs nvme_core.default_ps_max_latency_us=5000|' /boot/limine.conf
```
### Step 2 — Verify the change
```bash
grep nvme_core /boot/limine.conf
```
Every `cmdline:` line should now end with `nvme_core.default_ps_max_latency_us=5000`.
### Step 3 — Reboot
```bash
sudo reboot
```
### Step 4 — Confirm after reboot
```bash
# Verify kernel parameter is active
cat /proc/cmdline | grep nvme_core
# Monitor for NVMe errors (should show nothing new)
journalctl -b -k | grep -i 'nvme.*timeout'
```
## Monitoring
Watch for recurrence over the next few days:
```bash
# Check for any NVMe timeouts in current boot
journalctl -b -k | grep -i 'nvme.*timeout'
# Check SMART data periodically
sudo smartctl -a /dev/nvme0
```
## If Freezes Continue
1. Try a stricter latency limit: change `5000` to `0` (disables all power state transitions)
2. Check for Kingston firmware updates for SNV2S2000G (current: SBK00104)
3. If nothing helps, the drive may need replacement despite passing SMART checks
## Drive Info
- Model: KINGSTON SNV2S2000G (2TB)
- Serial: 50026B7784F6ACF9
- Firmware: SBK00104
- Percentage Used: 5%
- Bootloader: Limine
- Config: /boot/limine.conf