소스 정보
- 저장소
- tools-only/X-Skills
- 최근 소스 활동
- 2026년 2월 9일 04:36
- 감지된 SKILL.md 언어
- 영어
- 스타
- 7
- 포크
- 1
설치 방법
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
소스 파일 검토
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
메뉴
기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.
설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
직접 명령은 검토 Prompt를 거치지 않습니다. 실행하기 전에 소스를 확인하세요.
npx skills add https://github.com/tools-only/X-Skills --skill incident-p0-disk-full명령은 한 줄로 유지됩니다. 복사하기 전에 가로로 스크롤해 전체 내용을 확인하세요.
로컬 사본을 원하시나요? SkillsMP에서 현재 제공할 수 있는 파일을 다운로드하세요.
SOC 직업 분류 기준
SKILL.md 표시 중
| name | incident-p0-disk-full |
| description | Emergency response for SOP-203 P0 - Disk Space Emergency |
| model | sonnet |
🚨 CRITICAL: Disk Space at 100% or >95%
You are responding to a disk space emergency that threatens database operations.
If disk is at 100%:
Act NOW to free space!
# Overall disk usage
df -h
# PostgreSQL data directory
du -sh /var/lib/postgresql/16/main
# Find largest directories
du -sh /var/lib/postgresql/16/main/* | sort -rh | head -10
# Find largest files
find /var/lib/postgresql/16/main -type f -size +100M -exec ls -lh {} \; | sort -k5 -rh | head -20
# Check log sizes
du -sh /var/log/postgresql/
# Check WAL directory
du -sh /var/lib/postgresql/16/main/pg_wal/
ls -lh /var/lib/postgresql/16/main/pg_wal/ | wc -l
# Check for temp files
du -sh /tmp/
find /tmp -type f -size +10M -ls
# Database sizes
sudo -u postgres psql -c "
SELECT
datname,
pg_size_pretty(pg_database_size(datname)) AS size,
pg_database_size(datname) AS size_bytes
FROM pg_database
ORDER BY size_bytes DESC;"
# PostgreSQL logs older than 7 days
sudo find /var/log/postgresql/ -name "*.log" -mtime +7 -delete
# Compress recent logs
sudo gzip /var/log/postgresql/*.log
# Clear syslog/journal
sudo journalctl --vacuum-time=7d
# Check space recovered
df -h
Expected recovery: 1-5 GB
⚠️ ONLY if you have confirmed backups!
# Check WAL retention settings
sudo -u postgres psql -c "SHOW wal_keep_size;"
# List old WAL files
ls -lh /var/lib/postgresql/16/main/pg_wal/ | tail -50
# Archive WAL files (pgBackRest will help)
sudo -u postgres pgbackrest --stanza=main --type=full backup
# Clean archived WALs (CAREFUL!)
sudo -u postgres pg_archivecleanup /var/lib/postgresql/16/main/pg_wal \
$(ls /var/lib/postgresql/16/main/pg_wal/ | grep -v '\.history' | head -1)
# Check space
df -h
Expected recovery: 5-20 GB
# Quick vacuum (recovers space within tables)
sudo -u postgres vacuumdb --all --analyze
# Check largest tables
sudo -u postgres psql -c "
SELECT
schemaname,
tablename,
pg_size_pretty(pg_total_relation_size(schemaname||'.'||tablename)) AS size
FROM pg_tables
WHERE schemaname NOT IN ('pg_catalog', 'information_schema')
ORDER BY pg_total_relation_size(schemaname||'.'||tablename) DESC
LIMIT 10;"
# Full vacuum on bloated tables (SLOW, locks table)
sudo -u postgres psql -d [database] -c "VACUUM FULL [table_name];"
# Check space
df -h
Expected recovery: Variable, depends on bloat
# Clear PostgreSQL temp files
sudo rm -rf /var/lib/postgresql/16/main/pgsql_tmp/*
# Clear system temp
sudo rm -rf /tmp/*
# Clear old backups (if local copies exist)
ls -lh /opt/fairdb/backups/
# Delete old local backups if remote backups are confirmed
df -h
⚠️ ONLY with customer approval!
# List databases and last access
sudo -u postgres psql -c "
SELECT
datname,
pg_size_pretty(pg_database_size(datname)) AS size,
(SELECT max(query_start) FROM pg_stat_activity WHERE datname = d.datname) AS last_activity
FROM pg_database d
WHERE datname NOT IN ('template0', 'template1', 'postgres')
ORDER BY pg_database_size(datname) DESC;"
# Identify inactive databases (last_activity is NULL or very old)
# BEFORE DROPPING: Backup!
sudo -u postgres pg_dump [database_name] | gzip > /opt/fairdb/backups/emergency-backup-[database_name].sql.gz
# Drop database (IRREVERSIBLE!)
sudo -u postgres psql -c "DROP DATABASE [database_name];"
Contabo/VPS Provider:
# After resize, expand filesystem
sudo resize2fs /dev/sda1 # Adjust device as needed
# Verify
df -h
# Create new volume/mount point
# Move PostgreSQL data directory
sudo systemctl stop postgresql
sudo rsync -av /var/lib/postgresql/ /mnt/new-volume/postgresql/
sudo mv /var/lib/postgresql /var/lib/postgresql.old
sudo ln -s /mnt/new-volume/postgresql /var/lib/postgresql
sudo systemctl start postgresql
# Enable compression for tables (PostgreSQL 14+)
ALTER TABLE [table_name] SET COMPRESSION lz4;
# Rewrite table to apply compression
VACUUM FULL [table_name];
# Set autovacuum more aggressively
ALTER TABLE [table_name] SET (autovacuum_vacuum_scale_factor = 0.05);
Add to cron (crontab -e):
# Check disk space every hour
0 * * * * /opt/fairdb/scripts/check-disk-space.sh
Create script /opt/fairdb/scripts/check-disk-space.sh:
#!/bin/bash
THRESHOLD=80
USAGE=$(df -h /var/lib/postgresql | awk 'NR==2 {print $5}' | sed 's/%//')
if [ "$USAGE" -gt "$THRESHOLD" ]; then
echo "WARNING: Disk usage at ${USAGE}%" | mail -s "FairDB Disk Warning" your-email@example.com
fi
Edit /etc/logrotate.d/postgresql:
/var/log/postgresql/*.log {
daily
rotate 7
compress
delaycompress
notifempty
missingok
}
-- Set database size limits
ALTER DATABASE customer_db_001 SET max_database_size = '10GB';
# Check PostgreSQL status
sudo systemctl status postgresql
# Test connections
sudo -u postgres psql -c "SELECT 1;"
# Run health check
/opt/fairdb/scripts/pg-health-check.sh
# Disk Space Emergency - YYYY-MM-DD
## Initial State
- Disk usage: X%
- Free space: XGB
- Affected services: [list]
## Actions Taken
- [List each action with space recovered]
## Final State
- Disk usage: X%
- Free space: XGB
- Time to resolution: X minutes
## Root Cause
[Why did disk fill up?]
## Prevention
- [ ] Implement monitoring
- [ ] Set up log rotation
- [ ] Schedule regular cleanups
- [ ] Consider storage upgrade
# Install monitoring script
sudo cp /opt/fairdb/scripts/check-disk-space.sh /etc/cron.hourly/
# Set up alerts
# (Configure email/Slack notifications)
Disk at 100%?
├─ Yes → Priority 1 & 2 (Logs + WAL) IMMEDIATELY
│ ├─ Space freed? → Continue to monitoring
│ └─ Still full? → Priority 3 (Vacuum) + Consider Priority 5
│
└─ Disk at 85-99%?
├─ Priority 1 (Logs) + Schedule Priority 3 (Vacuum)
└─ Plan long-term solution (resize disk)
Ask user:
df -h)"Then immediately execute Rapid Assessment and Emergency Space Recovery procedures.
Remember: Time is critical. Database writes are failing. Act fast but safely!