6bcb721eb4
Sjednocení ukládání příloh do jednoho blob storu na Tower1 (SeaweedFS Filer), content-addressed cesta /mail-attachments/ab/cd/<sha256> přes sdílený seaweed_store.py. Tři zdroje, jeden dedup: - mailstore: mailstore_attachments_poc.py (pole seaweed_attachments[]) - Graph: 3_download_attachments v1.4→v1.5 (upload při stažení nové přílohy; attachments_index dostává seaweed_path/url/synced_at) + backfill graph - JNJ: jnj_tower_ingest v1.2→v1.3 (upload při parse .msg; attachments[] dostává sha256/seaweed_path/url + doc-level seaweed_synced_at) + backfill jnj Backfill skripty jsou idempotentní (batch+resume, --retry-errors). Výpadek SeaweedFS žádnou pipeline neshodí (jen warning, doplní backfill). Ověřeno: 114 726 objektů / 53.3 GB, 0 nesynchronizovaných dokumentů, globální dedup mezi větvemi funguje. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
3.4 KiB
3.4 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| project-seaweedfs | SeaweedFS na Tower1 (192.168.1.50) — kontejner, rozdělení dat, noční backup filer metadat na tower .76 |
|
SeaweedFS „na hraní" na Tower1 Unraid (192.168.1.50, root, heslo Vlado7309208104++; SSH jen heslem, klíč nejde). Postaveno 2026-06-12.
- Kontejner
seaweedfs(chrislusf/seaweedfs, host network),weed server -filer -s3: master :9333, volume :8080, filer :8888, S3 :8333 (anonymní). Limit volume = 30 GB (ne 1 GB — dřívější údaj v Triliu byl chybný; ověřeno z/dir/statuspole Version="30GB"), max 50 slotů → efektivní strop ~1,5 TB, pod tím array ~11,5 TB volných. Kapacita není omezení. - Upload do Fileru:
PUTraw tělo (POST multipart na první zápis timeoutuje!).requestsi v python-runner kontejneru. Dedup podle SHA-256 obsahu. Cesta/mail-attachments/ab/cd/<hash>(content-addressed, ab=hash[:2], cd=hash[2:4]). - Sdílený modul
seaweed_store.py(/scripts/seaweed_store.pyna Unraidu .76) — jednotné schéma cesty/URL/PUT pro obě větve příloh, takže identický obsah z Graphu i mailstore skončí na téže cestě a globálně se dedupuje. Funkcestore(sha256, data, mime) -> (path, url, uploaded). - Tři větve příloh → jeden blob store (globální dedup přes SHA-256, vše přes
seaweed_store.py):- mailstore:
mailstore/mailstore_attachments_poc.py(běží z toweru .76), zapisuje poleseaweed_attachments[]do mail dokumentů v Mongoemaily. - Graph pipeline:
3_download_attachments_v1.5.pypři uložení nové přílohy zároveň pushne do SeaweedFS; doemaily.attachments_index(dedup dle SHA-256=_id) zapíšeseaweed_path/seaweed_url/seaweed_synced_at. Jednorázový backfill:seaweed_attachments_backfill_graph.py(čte/mnt/Emails/<mbox>/Attachments/). - JNJ pipeline (vbuzalka@its.jnj.com, viz python-runner/graph-email-import):
EmailsImport/jnj_tower_ingest_v1.3.pypři parse.msgz/mnt/JNJEMAILSnahraje binárku přílohy do SeaweedFS, doattachments[]v mail doc zapíšesha256/seaweed_path/seaweed_url+ doc-levelseaweed_synced_at. Jednorázový backfill:EmailsImport/seaweed_attachments_backfill_jnj.py(znovuotevře.msgpřes importlib reuseopen_message+extract_attachments). Disk/.msg zůstávají paralelně. Viz project-mailstore a project-python-runner.
- mailstore:
- Bloby: share
SeaweedFS→/mnt/user/SeaweedFS/data, array disk9–11 pod paritou (useCache=no). Filer leveldb + master raft:/mnt/cache2tb0225dec/appdata/seaweedfs/(SSD, bez parity). - Noční backup filer metadat: cron 03:30 na Tower1 (
/boot/config/plugins/dynamix/seaweedfs-backup.cron) spouští/boot/config/scripts/seaweedfs_meta_backup.sh—fs.meta.savepřes weed shell → scp na tower 192.168.1.76 do/mnt/user/Backup/Critical/SeaweedFS/daily/(drží 7), neděle navícweekly/(drží 4). Log/var/log/seaweedfs_backup.log. Restore:fs.meta.load. - Tower (.76, root heslo 7309208104) a Tower1 mají vyměněné SSH klíče — z Tower1 na tower jde psát přímo.
- Pozor: Unraid flash
/bootje VFAT (case-insensitive) — share cfgseaweedfs.cfgvsSeaweedFS.cfgje tentýž soubor. Share nastavení za běhu měníemcmd "query&string"(jeden argument, nutnéshareNameOrig+cmdEditShare=Apply), live stav v/var/local/emhttp/shares.ini.