พื้นที่จัดเก็บสื่อของ Matrix Synapse อาจใช้พื้นที่ดิสก์มากกว่าฐานข้อมูลของโฮมเซิร์ฟเวอร์ เนื่องจากเก็บไฟล์หลายประเภท ได้แก่ สื่อที่ผู้ใช้ภายในอัปโหลด รูปภาพขนาดย่อ สื่อที่แคชไว้จากโฮมเซิร์ฟเวอร์ระยะไกล และทรัพยากรที่ใช้สำหรับการแสดงตัวอย่าง URL วิธีแก้ไขที่ถูกต้องไม่ใช่การลบไฟล์แบบสุ่มออกจากไดเร็กทอรีสื่อ แต่ให้ระบุไฟล์ที่ใช้พื้นที่มากขึ้นก่อน จากนั้นใช้ Admin API หรือการควบคุมการเก็บรักษาข้อมูลของ Synapse เพื่อให้เมตาเดต้าของฐานข้อมูลและไฟล์บนดิสก์มีความสอดคล้องกัน
ณ เดือนตุลาคม 2026 เวอร์ชันปัจจุบันของ Synapse คือ 1.162 และเอกสารการจัดการสื่ออย่างเป็นทางการประกอบด้วย API สำหรับการสอบถามข้อมูลสื่อ การลบสื่อในเครื่อง การล้างแคชสื่อระยะไกล และการกำหนดค่าการเก็บรักษาอัตโนมัติ ตรวจสอบเวอร์ชัน Synapse อย่างเป็นทางการหากการติดตั้งของคุณเก่ากว่ามาก เนื่องจากพฤติกรรมของปลายทางและตัวเลือกการกำหนดค่าอาจแตกต่างกันไปในแต่ละเวอร์ชัน
รายการตรวจสอบการคัดกรองเบื้องต้นอย่างรวดเร็ว
| คำถาม | สิ่งที่ต้องตรวจสอบ | การดำเนินการที่ดีที่สุดถัดไป |
| พื้นที่จัดเก็บไฟล์ใกล้เต็มแล้วจริงหรือเปล่า? | df -h | ตรวจสอบว่าระบบไฟล์ที่เชื่อมต่อใดมีที่เก็บข้อมูลสื่ออยู่ |
| Synapse Media เป็นผู้บริโภคหลักใช่หรือไม่? | du -sh <media_store_path> | เปรียบเทียบกับโฟลเดอร์ขนาดใหญ่อื่นๆ ก่อนที่จะลบอะไรก็ตาม |
| แคชระยะไกลเป็นหมวดหมู่ที่ใหญ่ที่สุดใช่หรือไม่? | du -sh <media_store_path>/* | sort -h | ลบข้อมูลสื่อระยะไกลเก่าออกก่อน โดยปกติแล้วจะสามารถดึงข้อมูลกลับมาได้อีกครั้ง |
| สื่อของผู้ใช้ในพื้นที่ถือเป็นหมวดหมู่หลักใช่หรือไม่? | รายการสื่อและข้อมูลอายุ/ขนาดจาก Admin API | กำหนดนโยบายการเก็บรักษาข้อมูลสื่อท้องถิ่นอย่างรอบคอบ การลบข้อมูลถือเป็นการถาวร |
| การเติบโตจะกลับมาอีกหรือไม่? | media_retentionขีดจำกัดการอัปโหลด การตรวจสอบ | เพิ่มระบบแจ้งเตือนการเก็บรักษาข้อมูลและความจุอัตโนมัติ |
1. ยืนยันว่าพื้นที่ดิสก์ไม่เพียงพอเนื่องจากที่เก็บสื่อ (Media Repository)
เริ่มจากระบบไฟล์ ไม่ใช่ Synapse รันคำสั่ง:
df -h
du -sh /path/to/media_store
เส้นทางนี้ขึ้นอยู่กับการmedia_store_pathติดตั้ง การตั้งค่าของ Synapse จะกำหนดไดเร็กทอรีที่ใช้สำหรับรูปภาพและไฟล์แนบที่อัปโหลด และค่าเริ่มต้นที่ระบุไว้คือเส้นทางmedia_storeสัมพัทธ์กับไดเร็กทอรีข้อมูลของ Synapse แพ็คเกจการแจกจ่ายและการใช้งานคอนเทนเนอร์มักจะกำหนดเส้นทางที่ชัดเจน ดังนั้นควรตรวจสอบการกำหนดค่าจริงของคุณแทนที่จะคาดเดาตำแหน่ง
คำบรรยายภาพ: เปรียบเทียบการใช้งานระบบไฟล์กับขนาดของพื้นที่จัดเก็บสื่อ Synapse ที่กำหนดค่าไว้ ก่อนตัดสินใจว่าการล้างข้อมูลสื่อเป็นวิธีแก้ไขที่ถูกต้องหรือไม่
หากดิสก์ใกล้เต็ม ให้หลีกเลี่ยงการดำเนินการแบบเรียกซ้ำขนาดใหญ่ที่สร้างไฟล์ชั่วคราวหรือไฟล์สำรองข้อมูลขนาดใหญ่บนระบบไฟล์เดียวกัน หากคุณมีความเสี่ยงที่จะพื้นที่ไม่เพียงพอในทันที ให้หยุดงานที่เขียนข้อมูลจำนวนมากที่ไม่เกี่ยวข้องก่อน หรือเพิ่มพื้นที่จัดเก็บชั่วคราว จากนั้นจึงดำเนินการล้างข้อมูลอย่างเป็นระบบ
2. ตรวจสอบการตั้งค่าสื่อที่ใช้งานอยู่และระบุว่าส่วนใดกำลังเติบโต
เปิดไฟล์ที่ใช้งานอยู่homeserver.yamlและค้นหาmedia_store_pathนอกจากนี้ โปรดตรวจสอบและบล็อก ที่มีอยู่ทั้งหมด คู่มือการกำหนดค่า Synapse อย่างเป็นทางการได้ อธิบายตัวเลือกเหล่านี้ไว้แล้วmax_upload_sizemedia_storage_providersmedia_retention
คำบรรยายภาพ: โปรดตรวจสอบให้แน่ใจว่าอุปกรณ์ที่ใช้งานอยู่ ถูกต้อง media_store_pathก่อนทำการวัดหรือเปลี่ยนแปลงพื้นที่จัดเก็บข้อมูล ตัวอย่างการตั้งค่าแสดงอยู่ในภาพนี้
ขั้นตอนต่อไป ให้วัดขนาดของไดเร็กทอรีย่อยระดับแรก:
du -sh /path/to/media_store/* 2>/dev/null | sort -h
เอกสารประกอบการใช้งานคลังเก็บสื่อของ Synapse อธิบายถึงหมวดหมู่สำคัญๆ บนดิสก์ ไฟล์ที่อัปโหลดในเครื่องจะถูกจัดเก็บไว้ด้านล่างlocal_content, ภาพขนาดย่อในเครื่องจะถูกจัดเก็บไว้ด้านล่างlocal_thumbnails, ไฟล์ระยะไกลที่แคชไว้จะถูกจัดเก็บไว้ด้านล่างremote_content, ภาพขนาดย่อจากไฟล์ระยะไกลจะถูกจัดเก็บไว้ด้านล่าง , และremote_thumbnailข้อมูลตัวอย่าง URL จะถูกจัดเก็บไว้ด้านล่างurl_cacheและurl_cache_thumbnails
คำบรรยายภาพ: การวิเคราะห์ขนาดในระดับไดเร็กทอรีช่วยให้แยกแยะแคชระยะไกลที่กู้คืนได้ออกจากไฟล์ที่ผู้ใช้อัปโหลดในเครื่อง ซึ่งอาจเป็นสำเนาเดียวที่จัดเก็บไว้โดยโฮมเซิร์ฟเวอร์ของคุณ
อย่าใช้rm -rfภายในไดเร็กทอรีเหล่านี้เป็นวิธีการล้างข้อมูลตามปกติ Synapse ยังติดตามไฟล์มีเดียในฐานข้อมูลด้วย การข้ามเส้นทางการล้างข้อมูลที่รองรับอาจทำให้เมตาเดต้าที่อ้างอิงถึงไฟล์ที่ไม่มีอยู่แล้วหลงเหลืออยู่ หรือลบเนื้อหาที่ผู้ใช้ยังคงคาดหวังว่าจะได้รับคืน
3. เรียกคืนแคชสื่อระยะไกลก่อน เมื่อแคชนั้นเป็นผู้ใช้งานหลัก
โดยปกติแล้ว สื่อระยะไกลที่ถูกแคชไว้ถือเป็นที่ที่มีความเสี่ยงต่ำที่สุดในการเรียกคืนพื้นที่จัดเก็บ Synapse จะจัดเก็บสำเนาของสื่อที่โฮสต์โดยโฮมเซิร์ฟเวอร์อื่นไว้แต่เดิม API อย่างเป็นทางการสำหรับการล้างแคชสื่อระยะไกลจะลบสื่อระยะไกลที่ถูกแคชไว้ซึ่งมีการเข้าถึงครั้งล่าสุดก่อนเวลาที่กำหนด หากผู้ใช้ร้องขอสื่อนั้นอีกครั้ง Synapse จะร้องขอจากโฮมเซิร์ฟเวอร์ต้นทางอีกครั้ง
API สำหรับผู้ดูแลระบบต้องการโทเค็นการเข้าถึงของผู้ดูแลระบบเซิร์ฟเวอร์ Synapse แนะนำให้เก็บโทเค็นนี้/_synapse/admin/...ไว้เป็นความลับจากการเข้าถึงของบุคคลภายนอก และเรียกใช้งานภายในเครื่องตามปกติ โปรดดู คำแนะนำอย่างเป็นทางการเกี่ยว กับAPI สำหรับผู้ดูแลระบบ
ตัวอย่างเช่น คำนวณจุดตัดที่ 30 วันที่ผ่านมา และล้างแคชระยะไกลที่เก่ากว่านั้น:
export SYNAPSE_ADMIN_TOKEN='your-admin-token'
CUTOFF_MS=$(( $(date -d '30 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/purge_media_cache?before_ts=$CUTOFF_MS"
การตอบสนองจะรวมถึงdeletedจำนวนครั้ง การตัดยอดจะอิงตามการเข้าถึงครั้งล่าสุด ไม่ใช่เพียงแค่เวลาแก้ไขไฟล์ เลือกช่วงเวลาที่ตรงกับระยะเวลาที่ผู้ใช้มักจะเรียกดูย้อนหลัง เนื้อหาจากเซิร์ฟเวอร์ระยะไกลที่ถูกลบไปแล้วจะสามารถดึงกลับมาได้อีกครั้งก็ต่อเมื่อเซิร์ฟเวอร์ต้นทางยังคงให้บริการอยู่เท่านั้น
4. ปฏิบัติต่อสื่อท้องถิ่นเสมือนเป็นข้อมูลถาวร เว้นแต่คุณจะมีนโยบายการเก็บรักษาข้อมูล
ไฟล์มีเดียในเครื่องนั้นแตกต่างออกไป เนื่องจากถูกอัปโหลดไปยังโฮมเซิร์ฟเวอร์ของคุณ การลบไฟล์เหล่านั้นอาจทำให้ไฟล์แนบ รูปภาพ หรือการอ้างอิง MXC อื่นๆ เสียหายอย่างถาวร ก่อนที่จะลบไฟล์มีเดียในเครื่องจำนวนมาก โปรดตรวจสอบรายการตัวอย่างหรือไฟล์มีเดียของผู้ใช้ผ่านทาง Admin API ก่อน
ในการค้นหาข้อมูลเกี่ยวกับสื่อที่ต้องการ:
curl -sS -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/example.org/MEDIA_ID"
การตอบสนองอาจรวมถึงmedia_lengthประเภทcreated_tsMIME last_access_tsและสถานะการกักกันเอกสาร API อย่างเป็นทางการของ Media Adminได้กำหนดฟิลด์เหล่านี้และการดำเนินการลบที่รองรับไว้
คำบรรยายภาพ: ตรวจสอบข้อมูลเมตาของสื่อก่อนใช้กฎการลบ เพื่อให้การตัดสินใจเกี่ยวกับอายุและขนาดของไฟล์นั้นอิงตามบันทึกของ Synapse แทนที่จะเป็นเวลาประทับของระบบไฟล์
Synapse สามารถลบสื่อในเครื่องโดยอิงจากวันที่เข้าถึงครั้งล่าสุด และอาจเลือกอิงตามขนาดไฟล์ได้ด้วย:
CUTOFF_MS=$(( $(date -d '180 days ago' +%s) * 1000 ))
curl -sS -X POST -H "Authorization: Bearer $SYNAPSE_ADMIN_TOKEN" "http://127.0.0.1:8008/_synapse/admin/v1/media/delete?before_ts=$CUTOFF_MS&size_gt=0&keep_profiles=true"
before_tsคือการประทับเวลาแบบ Unix ในหน่วยมิลลิวินาที ซึ่งหมายถึงการเข้าถึงครั้งล่าสุดsize_gtคือค่าเกณฑ์ไบต์ ค่าเริ่มต้นคือศูนย์ คือค่าkeep_profiles=trueเริ่มต้นและจะคงสื่อที่ยังคงใช้เป็นภาพโปรไฟล์หรือภาพห้องไว้ รักษาการป้องกันนี้ไว้เว้นแต่คุณจะมีเหตุผลเฉพาะที่จะลบภาพเหล่านั้น
นอกจากนี้ คุณยังสามารถแสดงรายการหรือลบสื่อที่อัปโหลดโดยผู้ใช้ภายในเครื่องเฉพาะรายได้ด้วยคำสั่ง/_synapse/admin/v1/users/<user_id>/mediaนี้ ซึ่งมีประโยชน์เมื่อบัญชีใดบัญชีหนึ่งมีการเติบโตที่ผิดปกติ โปรดตรวจสอบเอกสาร API การจัดการผู้ใช้ก่อนใช้งานคำสั่งลบ โดยเฉพาะอย่างยิ่งพารามิเตอร์การจัดลำดับและขีดจำกัด
5. ป้องกันไม่ให้พื้นที่จัดเก็บข้อมูลสื่อเต็มดิสก์อีกครั้ง
เปิดใช้งานการเก็บรักษาข้อมูลสื่ออัตโนมัติ
สำหรับการควบคุมอย่างต่อเนื่อง Synapse มีฟังก์ชันต่างๆ ให้ใช้งานmedia_retentionตัวอย่างที่อิงตามรูปแบบการกำหนดค่าอย่างเป็นทางการมีดังนี้:
media_retention:
local_media_lifetime: 180d
remote_media_lifetime: 30d
สื่อจะถูกลบได้เมื่อไม่มีการเข้าถึงเป็นระยะเวลาตามที่กำหนดไว้ หากไม่เคยมีการเข้าถึงเลย Synapse จะใช้เวลาที่สร้างสื่อนั้นเป็นหลัก ทั้งไฟล์ต้นฉบับและภาพขนาดย่อจะถูกลบออก หากไม่ได้ระบุระยะเวลาการใช้งานหรือตั้งค่าเป็นค่าว่าง หมวดหมู่นั้นจะไม่ถูกลบออกโดยอัตโนมัติ
เลือกค่าในเครื่องอย่างระมัดระวัง: ต่างจากแคชระยะไกล สื่อในเครื่องที่ถูกลบไปแล้วจะไม่สามารถกู้คืนได้โดยการขอไฟล์ต้นฉบับจากโฮมเซิร์ฟเวอร์อื่น สื่อที่ถูกกักกันจะไม่ถูกลบโดยการเก็บรักษาอัตโนมัติ และสื่อในเครื่องที่ได้รับการป้องกันก็จะไม่รวมอยู่ในนั้นด้วย ตามเอกสารการกำหนดค่า
ใช้ตัวควบคุมการอัปโหลดเพื่อรองรับการเติบโตในอนาคต
max_upload_sizeระบบจะจำกัดการอัปโหลดแต่ละครั้ง แต่ไม่ได้จำกัดขนาดพื้นที่เก็บข้อมูลโดยรวม Synapse เวอร์ชันปัจจุบันยังรองรับmedia_upload_limitsการจำกัดปริมาณการอัปโหลดของผู้ใช้ในช่วงเวลาที่กำหนดด้วย การควบคุมเหล่านี้ช่วยลดการเติบโตของข้อมูล แต่ไม่ได้ทดแทนการเก็บรักษาหรือการตรวจสอบความจุ
ควรพิจารณาใช้บริการจัดเก็บข้อมูลจากผู้ให้บริการรายอื่นเมื่อระบบไฟล์ในเครื่องเป็นคอขวด
Synapse รองรับฟังก์ชันmedia_storage_providersต่างๆ รวมถึงตัวจัดการระบบไฟล์ที่สามารถวางสื่อไว้ในไดเร็กทอรีอื่นได้ ซึ่งจะเป็นประโยชน์เมื่อคุณมีวอลุ่มหรือระดับพื้นที่จัดเก็บข้อมูลเฉพาะ การเปลี่ยนแปลงนี้เป็นการเปลี่ยนแปลงสถาปัตยกรรมพื้นที่จัดเก็บข้อมูล ไม่ใช่คำสั่งล้างข้อมูลฉุกเฉิน ดังนั้นควรทดสอบการสำรองข้อมูล สิทธิ์การเข้าถึง การเข้าถึงของผู้ปฏิบัติงาน และพฤติกรรมการกู้คืนก่อนที่จะย้ายสื่อที่ใช้งานจริง
การตรวจสอบหลังการทำความสะอาด
หลังจากทำการล้างข้อมูลแล้ว โปรดตรวจสอบทั้งความจุและพฤติกรรมของแอปพลิเคชัน:
df -h
du -sh /path/to/media_store
du -sh /path/to/media_store/* 2>/dev/null | sort -h
- เปิดไฟล์แนบที่เพิ่งอัปโหลดไปยังเครื่องคอมพิวเตอร์ของคุณในโปรแกรม Matrix Client
- เปิดไฟล์แนบระยะไกลเก่าๆ และตรวจสอบว่าสามารถดึงข้อมูลนั้นมาได้อีกครั้งหรือไม่
- ตรวจสอบบันทึกของ Synapse เพื่อหาข้อผิดพลาดเกี่ยวกับ media-worker หรือระบบไฟล์
- หากคุณใช้ตัวจัดการสื่อโดยเฉพาะ โปรดตรวจสอบให้แน่ใจว่าคำขอ Admin API ถูกส่งไปยังตัวจัดการคลังสื่อแล้ว เอกสารประกอบตัวจัดการสื่อของ Synapse จะแสดงรายการเอนด์พอยต์ผู้ดูแลระบบเฉพาะสำหรับสื่อต่างๆ ที่ต้องจัดการไว้ในนั้น
- บันทึกขนาดของพื้นที่จัดเก็บข้อมูลสื่อหลังจากทำการล้างข้อมูลแล้ว และเปรียบเทียบอีกครั้งหลังจากนั้นหลายวันเพื่อวัดอัตราการเติบโตที่แท้จริง
ข้อมูลอ้างอิงการตัดสินใจอย่างรวดเร็ว
| อะไรคือขนาดใหญ่? | คำตอบที่ต้องการ | ความเสี่ยงหลัก |
remote_content/remote_thumbnail | ล้างแคชระยะไกลตามเวลาการเข้าถึงครั้งล่าสุด จากนั้นตั้งค่าremote_media_lifetime. | สื่อเก่าจะต้องดาวน์โหลดใหม่ และอาจไม่สามารถใช้งานได้หากแหล่งที่มาไม่ให้บริการสื่อนั้นอีกต่อไป |
local_content/local_thumbnails | กำหนดกฎการเก็บรักษาข้อมูลทางธุรกิจ ตรวจสอบเมตาเดต้าของสื่อ จากนั้นใช้ API การจัดการสื่อในเครื่อง | การลบเนื้อหาที่จัดเก็บไว้บนเซิร์ฟเวอร์ของคุณเป็นการลบถาวร |
| แคชแสดงตัวอย่าง URL | ตรวจสอบพฤติกรรมการแสดงตัวอย่าง URL และการล้างข้อมูล Synapse ในปัจจุบันก่อนที่จะเข้าไปแก้ไขด้วยตนเอง | การลบไฟล์ระบบด้วยตนเองอาจทำให้ข้อมูลเมตาที่จัดเก็บไว้ไม่ตรงกัน |
| ทุกหมวดหมู่ยังคงเติบโตอย่างต่อเนื่อง | เพิ่มmedia_retentionการควบคุมการอัปโหลด การตรวจสอบ หรือพื้นที่จัดเก็บสื่อโดยเฉพาะ | การแก้ไขปัญหาเพียงอย่างเดียวเป็นการเพียงแค่ชะลอเหตุการณ์ที่อาจทำให้เกิดความเสียหายต่อกำลังการผลิตครั้งต่อไปเท่านั้น |
สรุป
เมื่อพื้นที่จัดเก็บสื่อของ Matrix Synapse เต็มดิสก์ ขั้นแรกให้ตรวจสอบว่าสื่อประเภทใดเป็นสาเหตุ โดยปกติแล้วแคชระยะไกลจะเป็นเป้าหมายแรกที่ปลอดภัยที่สุด เนื่องจาก Synapse มี API สำหรับการล้างข้อมูลโดยเฉพาะ และโดยปกติสามารถดึงเนื้อหานั้นกลับมาได้อีกครั้ง ส่วนสื่อในเครื่องนั้นจำเป็นต้องมีนโยบายที่เข้มงวดกว่ามาก เพราะอาจเป็นสำเนาเดียวของไฟล์แนบที่อยู่บนเซิร์ฟเวอร์ เมื่อกู้คืนพื้นที่ว่างได้ทันทีแล้ว ให้กำหนดค่าmedia_retentionและตรวจสอบอัตราการเติบโตของพื้นที่จัดเก็บสื่อ เพื่อให้การล้างข้อมูลกลายเป็นการบำรุงรักษาที่คาดการณ์ได้ แทนที่จะเป็นเหตุฉุกเฉิน