blockmine 1.21.0 → 1.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/README.md +469 -0
- package/.claude/agents/auth-route-debugger.md +118 -0
- package/.claude/agents/auth-route-tester.md +93 -0
- package/.claude/agents/auto-error-resolver.md +97 -0
- package/.claude/agents/build-optimizer.md +236 -0
- package/.claude/agents/code-architecture-reviewer.md +83 -0
- package/.claude/agents/code-refactor-master.md +94 -0
- package/.claude/agents/cost-optimizer.md +134 -0
- package/.claude/agents/deployment-orchestrator.md +113 -0
- package/.claude/agents/documentation-architect.md +82 -0
- package/.claude/agents/frontend-error-fixer.md +77 -0
- package/.claude/agents/iac-code-generator.md +71 -0
- package/.claude/agents/incident-responder.md +346 -0
- package/.claude/agents/infrastructure-architect.md +31 -0
- package/.claude/agents/kubernetes-specialist.md +56 -0
- package/.claude/agents/migration-planner.md +181 -0
- package/.claude/agents/network-architect.md +196 -0
- package/.claude/agents/plan-reviewer.md +52 -0
- package/.claude/agents/refactor-planner.md +63 -0
- package/.claude/agents/security-scanner.md +102 -0
- package/.claude/agents/web-research-specialist.md +78 -0
- package/.claude/commands/cost-analysis.md +315 -0
- package/.claude/commands/dev-docs-update.md +55 -0
- package/.claude/commands/dev-docs.md +51 -0
- package/.claude/commands/incident-debug.md +247 -0
- package/.claude/commands/infra-plan.md +81 -0
- package/.claude/commands/migration-plan.md +478 -0
- package/.claude/commands/route-research-for-testing.md +37 -0
- package/.claude/commands/security-review.md +66 -0
- package/.claude/hooks/CONFIG.md +448 -0
- package/.claude/hooks/README.md +163 -0
- package/.claude/hooks/SKILL_ACTIVATION_COMPLETE.md +226 -0
- package/.claude/hooks/WINDOWS_HOOKS_README.md +151 -0
- package/.claude/hooks/add-skill-activation-banners.ts +132 -0
- package/.claude/hooks/comprehensive-skill-test.ts +1315 -0
- package/.claude/hooks/error-handling-reminder.sh +12 -0
- package/.claude/hooks/error-handling-reminder.ts +222 -0
- package/.claude/hooks/k8s-manifest-validator.sh +56 -0
- package/.claude/hooks/package-lock.json +556 -0
- package/.claude/hooks/package.json +16 -0
- package/.claude/hooks/post-tool-use-tracker.ps1 +174 -0
- package/.claude/hooks/post-tool-use-tracker.sh +183 -0
- package/.claude/hooks/security-policy-check.sh +247 -0
- package/.claude/hooks/skill-activation-prompt.ps1 +10 -0
- package/.claude/hooks/skill-activation-prompt.sh +10 -0
- package/.claude/hooks/skill-activation-prompt.ts +141 -0
- package/.claude/hooks/stop-build-check-enhanced.sh +130 -0
- package/.claude/hooks/terraform-validator.sh +53 -0
- package/.claude/hooks/test-input.json +7 -0
- package/.claude/hooks/test-skill-activation.ts +427 -0
- package/.claude/hooks/trigger-build-resolver.sh +79 -0
- package/.claude/hooks/tsc-check.sh +173 -0
- package/.claude/hooks/tsconfig.json +19 -0
- package/.claude/settings.json +55 -0
- package/.claude/settings.local.json +27 -14
- package/.claude/skills/README.md +507 -0
- package/.claude/skills/api-engineering/SKILL.md +63 -0
- package/.claude/skills/api-engineering/resources/api-versioning.md +88 -0
- package/.claude/skills/api-engineering/resources/graphql-patterns.md +106 -0
- package/.claude/skills/api-engineering/resources/rate-limiting.md +118 -0
- package/.claude/skills/api-engineering/resources/rest-api-design.md +105 -0
- package/.claude/skills/backend-dev-guidelines/SKILL.md +306 -0
- package/.claude/skills/backend-dev-guidelines/resources/architecture-overview.md +451 -0
- package/.claude/skills/backend-dev-guidelines/resources/async-and-errors.md +307 -0
- package/.claude/skills/backend-dev-guidelines/resources/complete-examples.md +638 -0
- package/.claude/skills/backend-dev-guidelines/resources/configuration.md +275 -0
- package/.claude/skills/backend-dev-guidelines/resources/database-patterns.md +224 -0
- package/.claude/skills/backend-dev-guidelines/resources/middleware-guide.md +213 -0
- package/.claude/skills/backend-dev-guidelines/resources/routing-and-controllers.md +756 -0
- package/.claude/skills/backend-dev-guidelines/resources/sentry-and-monitoring.md +336 -0
- package/.claude/skills/backend-dev-guidelines/resources/services-and-repositories.md +789 -0
- package/.claude/skills/backend-dev-guidelines/resources/testing-guide.md +235 -0
- package/.claude/skills/backend-dev-guidelines/resources/validation-patterns.md +754 -0
- package/.claude/skills/budget-and-cost-management/SKILL.md +850 -0
- package/.claude/skills/build-engineering/SKILL.md +431 -0
- package/.claude/skills/build-engineering/resources/artifact-repositories.md +72 -0
- package/.claude/skills/build-engineering/resources/build-caching.md +96 -0
- package/.claude/skills/build-engineering/resources/build-pipelines.md +105 -0
- package/.claude/skills/build-engineering/resources/build-security.md +95 -0
- package/.claude/skills/build-engineering/resources/build-systems.md +389 -0
- package/.claude/skills/build-engineering/resources/compilation-optimization.md +201 -0
- package/.claude/skills/build-engineering/resources/dependency-management.md +73 -0
- package/.claude/skills/build-engineering/resources/monorepo-builds.md +110 -0
- package/.claude/skills/build-engineering/resources/performance-optimization.md +113 -0
- package/.claude/skills/build-engineering/resources/reproducible-builds.md +82 -0
- package/.claude/skills/cloud-engineering/SKILL.md +675 -0
- package/.claude/skills/cloud-engineering/resources/aws-patterns.md +742 -0
- package/.claude/skills/cloud-engineering/resources/azure-patterns.md +714 -0
- package/.claude/skills/cloud-engineering/resources/cleared-cloud-environments.md +987 -0
- package/.claude/skills/cloud-engineering/resources/cloud-cost-optimization.md +757 -0
- package/.claude/skills/cloud-engineering/resources/cloud-networking.md +1058 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security-tools.md +1530 -0
- package/.claude/skills/cloud-engineering/resources/cloud-security.md +990 -0
- package/.claude/skills/cloud-engineering/resources/gcp-patterns.md +758 -0
- package/.claude/skills/cloud-engineering/resources/migration-strategies.md +820 -0
- package/.claude/skills/cloud-engineering/resources/multi-cloud-strategies.md +670 -0
- package/.claude/skills/cloud-engineering/resources/oci-patterns.md +1198 -0
- package/.claude/skills/cloud-engineering/resources/serverless-patterns.md +795 -0
- package/.claude/skills/cloud-engineering/resources/well-architected-frameworks.md +966 -0
- package/.claude/skills/cybersecurity/SKILL.md +409 -0
- package/.claude/skills/cybersecurity/resources/security-architecture.md +266 -0
- package/.claude/skills/database-engineering/SKILL.md +61 -0
- package/.claude/skills/database-engineering/resources/backup-and-recovery.md +72 -0
- package/.claude/skills/database-engineering/resources/database-replication.md +63 -0
- package/.claude/skills/database-engineering/resources/postgresql-fundamentals.md +70 -0
- package/.claude/skills/database-engineering/resources/query-optimization.md +68 -0
- package/.claude/skills/devsecops/SKILL.md +374 -0
- package/.claude/skills/devsecops/resources/ci-cd-security.md +204 -0
- package/.claude/skills/devsecops/resources/compliance-automation.md +530 -0
- package/.claude/skills/devsecops/resources/compliance-frameworks.md +2322 -0
- package/.claude/skills/devsecops/resources/container-security.md +915 -0
- package/.claude/skills/devsecops/resources/cspm-integration.md +1440 -0
- package/.claude/skills/devsecops/resources/policy-enforcement.md +619 -0
- package/.claude/skills/devsecops/resources/secrets-management.md +755 -0
- package/.claude/skills/devsecops/resources/security-monitoring.md +146 -0
- package/.claude/skills/devsecops/resources/security-scanning.md +887 -0
- package/.claude/skills/devsecops/resources/security-testing.md +203 -0
- package/.claude/skills/devsecops/resources/supply-chain-security.md +518 -0
- package/.claude/skills/devsecops/resources/vulnerability-management.md +481 -0
- package/.claude/skills/devsecops/resources/zero-trust-architecture.md +177 -0
- package/.claude/skills/documentation-as-code/SKILL.md +323 -0
- package/.claude/skills/documentation-as-code/resources/api-documentation.md +90 -0
- package/.claude/skills/documentation-as-code/resources/changelog-management.md +79 -0
- package/.claude/skills/documentation-as-code/resources/diagram-generation.md +44 -0
- package/.claude/skills/documentation-as-code/resources/docs-as-code-workflow.md +99 -0
- package/.claude/skills/documentation-as-code/resources/documentation-automation.md +68 -0
- package/.claude/skills/documentation-as-code/resources/documentation-sites.md +79 -0
- package/.claude/skills/documentation-as-code/resources/markdown-best-practices.md +162 -0
- package/.claude/skills/documentation-as-code/resources/openapi-specification.md +77 -0
- package/.claude/skills/documentation-as-code/resources/readme-engineering.md +60 -0
- package/.claude/skills/documentation-as-code/resources/technical-writing-guide.md +202 -0
- package/.claude/skills/engineering-management/SKILL.md +356 -0
- package/.claude/skills/engineering-management/resources/career-ladders.md +609 -0
- package/.claude/skills/engineering-management/resources/hiring-and-assessment.md +555 -0
- package/.claude/skills/engineering-management/resources/one-on-one-guides.md +609 -0
- package/.claude/skills/engineering-management/resources/resource-planning.md +557 -0
- package/.claude/skills/engineering-management/resources/team-organization-patterns.md +491 -0
- package/.claude/skills/engineering-management/resources/technical-interviews.md +474 -0
- package/.claude/skills/engineering-operations-management/SKILL.md +817 -0
- package/.claude/skills/error-tracking/SKILL.md +379 -0
- package/.claude/skills/frontend-dev-guidelines/SKILL.md +403 -0
- package/.claude/skills/frontend-dev-guidelines/resources/common-patterns.md +331 -0
- package/.claude/skills/frontend-dev-guidelines/resources/complete-examples.md +872 -0
- package/.claude/skills/frontend-dev-guidelines/resources/component-patterns.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/data-fetching.md +767 -0
- package/.claude/skills/frontend-dev-guidelines/resources/file-organization.md +502 -0
- package/.claude/skills/frontend-dev-guidelines/resources/loading-and-error-states.md +501 -0
- package/.claude/skills/frontend-dev-guidelines/resources/performance.md +406 -0
- package/.claude/skills/frontend-dev-guidelines/resources/routing-guide.md +364 -0
- package/.claude/skills/frontend-dev-guidelines/resources/styling-guide.md +428 -0
- package/.claude/skills/frontend-dev-guidelines/resources/typescript-standards.md +418 -0
- package/.claude/skills/general-it-engineering/SKILL.md +393 -0
- package/.claude/skills/general-it-engineering/resources/asset-management.md +712 -0
- package/.claude/skills/general-it-engineering/resources/automation-orchestration.md +817 -0
- package/.claude/skills/general-it-engineering/resources/business-continuity.md +786 -0
- package/.claude/skills/general-it-engineering/resources/change-management.md +715 -0
- package/.claude/skills/general-it-engineering/resources/enterprise-monitoring.md +729 -0
- package/.claude/skills/general-it-engineering/resources/help-desk-operations.md +738 -0
- package/.claude/skills/general-it-engineering/resources/incident-service-management.md +834 -0
- package/.claude/skills/general-it-engineering/resources/it-governance.md +753 -0
- package/.claude/skills/general-it-engineering/resources/itil-framework.md +503 -0
- package/.claude/skills/general-it-engineering/resources/service-management.md +669 -0
- package/.claude/skills/infrastructure-architecture/SKILL.md +328 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-decision-records.md +505 -0
- package/.claude/skills/infrastructure-architecture/resources/architecture-patterns.md +528 -0
- package/.claude/skills/infrastructure-architecture/resources/capacity-planning.md +453 -0
- package/.claude/skills/infrastructure-architecture/resources/cleared-environment-architecture.md +773 -0
- package/.claude/skills/infrastructure-architecture/resources/cost-architecture.md +499 -0
- package/.claude/skills/infrastructure-architecture/resources/data-architecture.md +501 -0
- package/.claude/skills/infrastructure-architecture/resources/disaster-recovery.md +535 -0
- package/.claude/skills/infrastructure-architecture/resources/migration-architecture.md +512 -0
- package/.claude/skills/infrastructure-architecture/resources/multi-region-design.md +608 -0
- package/.claude/skills/infrastructure-architecture/resources/reference-architectures.md +562 -0
- package/.claude/skills/infrastructure-architecture/resources/security-architecture.md +538 -0
- package/.claude/skills/infrastructure-architecture/resources/system-design-principles.md +489 -0
- package/.claude/skills/infrastructure-architecture/resources/workload-classification.md +1000 -0
- package/.claude/skills/infrastructure-strategy/SKILL.md +924 -0
- package/.claude/skills/network-engineering/SKILL.md +385 -0
- package/.claude/skills/network-engineering/resources/dns-management.md +738 -0
- package/.claude/skills/network-engineering/resources/load-balancing.md +820 -0
- package/.claude/skills/network-engineering/resources/network-architecture.md +546 -0
- package/.claude/skills/network-engineering/resources/network-security.md +921 -0
- package/.claude/skills/network-engineering/resources/network-troubleshooting.md +749 -0
- package/.claude/skills/network-engineering/resources/routing-switching.md +373 -0
- package/.claude/skills/network-engineering/resources/sdn-networking.md +695 -0
- package/.claude/skills/network-engineering/resources/service-mesh-networking.md +777 -0
- package/.claude/skills/network-engineering/resources/tcp-ip-protocols.md +444 -0
- package/.claude/skills/network-engineering/resources/vpn-connectivity.md +672 -0
- package/.claude/skills/observability-engineering/SKILL.md +101 -0
- package/.claude/skills/observability-engineering/resources/apm-tools.md +97 -0
- package/.claude/skills/observability-engineering/resources/correlation-strategies.md +87 -0
- package/.claude/skills/observability-engineering/resources/distributed-tracing.md +98 -0
- package/.claude/skills/observability-engineering/resources/logs-aggregation.md +118 -0
- package/.claude/skills/observability-engineering/resources/observability-cost-optimization.md +141 -0
- package/.claude/skills/observability-engineering/resources/opentelemetry.md +110 -0
- package/.claude/skills/platform-engineering/SKILL.md +555 -0
- package/.claude/skills/platform-engineering/resources/architecture-overview.md +600 -0
- package/.claude/skills/platform-engineering/resources/container-orchestration.md +916 -0
- package/.claude/skills/platform-engineering/resources/cost-optimization.md +634 -0
- package/.claude/skills/platform-engineering/resources/developer-platforms.md +670 -0
- package/.claude/skills/platform-engineering/resources/gitops-automation.md +650 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-as-code.md +778 -0
- package/.claude/skills/platform-engineering/resources/infrastructure-standards.md +708 -0
- package/.claude/skills/platform-engineering/resources/multi-tenancy.md +602 -0
- package/.claude/skills/platform-engineering/resources/platform-security.md +711 -0
- package/.claude/skills/platform-engineering/resources/resource-management.md +592 -0
- package/.claude/skills/platform-engineering/resources/service-mesh.md +628 -0
- package/.claude/skills/release-engineering/SKILL.md +393 -0
- package/.claude/skills/release-engineering/resources/artifact-management.md +108 -0
- package/.claude/skills/release-engineering/resources/build-optimization.md +84 -0
- package/.claude/skills/release-engineering/resources/ci-cd-pipelines.md +411 -0
- package/.claude/skills/release-engineering/resources/deployment-strategies.md +197 -0
- package/.claude/skills/release-engineering/resources/pipeline-security.md +62 -0
- package/.claude/skills/release-engineering/resources/progressive-delivery.md +83 -0
- package/.claude/skills/release-engineering/resources/release-automation.md +68 -0
- package/.claude/skills/release-engineering/resources/release-orchestration.md +77 -0
- package/.claude/skills/release-engineering/resources/rollback-strategies.md +66 -0
- package/.claude/skills/release-engineering/resources/versioning-strategies.md +59 -0
- package/.claude/skills/route-tester/SKILL.md +392 -0
- package/.claude/skills/skill-developer/ADVANCED.md +197 -0
- package/.claude/skills/skill-developer/HOOK_MECHANISMS.md +306 -0
- package/.claude/skills/skill-developer/PATTERNS_LIBRARY.md +152 -0
- package/.claude/skills/skill-developer/SKILL.md +430 -0
- package/.claude/skills/skill-developer/SKILL_RULES_REFERENCE.md +315 -0
- package/.claude/skills/skill-developer/TRIGGER_TYPES.md +305 -0
- package/.claude/skills/skill-developer/TROUBLESHOOTING.md +514 -0
- package/.claude/skills/skill-rules.json +2940 -0
- package/.claude/skills/sre/SKILL.md +464 -0
- package/.claude/skills/sre/resources/alerting-best-practices.md +282 -0
- package/.claude/skills/sre/resources/capacity-planning.md +226 -0
- package/.claude/skills/sre/resources/chaos-engineering.md +193 -0
- package/.claude/skills/sre/resources/disaster-recovery.md +232 -0
- package/.claude/skills/sre/resources/incident-management.md +436 -0
- package/.claude/skills/sre/resources/observability-stack.md +240 -0
- package/.claude/skills/sre/resources/on-call-runbooks.md +167 -0
- package/.claude/skills/sre/resources/performance-optimization.md +108 -0
- package/.claude/skills/sre/resources/reliability-patterns.md +183 -0
- package/.claude/skills/sre/resources/slo-sli-sla.md +464 -0
- package/.claude/skills/sre/resources/toil-reduction.md +145 -0
- package/.claude/skills/systems-engineering/SKILL.md +648 -0
- package/.claude/skills/systems-engineering/resources/automation-patterns.md +771 -0
- package/.claude/skills/systems-engineering/resources/configuration-management.md +998 -0
- package/.claude/skills/systems-engineering/resources/linux-administration.md +672 -0
- package/.claude/skills/systems-engineering/resources/networking-fundamentals.md +982 -0
- package/.claude/skills/systems-engineering/resources/performance-tuning.md +871 -0
- package/.claude/skills/systems-engineering/resources/powershell-scripting.md +482 -0
- package/.claude/skills/systems-engineering/resources/security-hardening.md +739 -0
- package/.claude/skills/systems-engineering/resources/shell-scripting.md +915 -0
- package/.claude/skills/systems-engineering/resources/storage-management.md +628 -0
- package/.claude/skills/systems-engineering/resources/system-monitoring.md +787 -0
- package/.claude/skills/systems-engineering/resources/troubleshooting-guide.md +753 -0
- package/.claude/skills/systems-engineering/resources/windows-administration.md +738 -0
- package/.claude/skills/technical-leadership/SKILL.md +728 -0
- package/CHANGELOG.md +90 -54
- package/README.md +94 -0
- package/backend/docs/SECRETS_DOCUMENTATION.md +327 -0
- package/backend/jest.config.js +59 -0
- package/backend/package-lock.json +6129 -0
- package/backend/package.json +16 -4
- package/backend/prisma/migrations/20251026104609_add_websocket_api/migration.sql +33 -0
- package/backend/prisma/schema.prisma +33 -0
- package/backend/src/__tests__/core/DependencyService.test.js +336 -0
- package/backend/src/__tests__/core/UserService.test.js +875 -0
- package/backend/src/__tests__/repositories/BaseRepository.test.js +146 -0
- package/backend/src/__tests__/repositories/BotRepository.test.js +118 -0
- package/backend/src/__tests__/repositories/CommandRepository.test.js +132 -0
- package/backend/src/__tests__/repositories/EventGraphRepository.test.js +93 -0
- package/backend/src/__tests__/repositories/GroupRepository.test.js +155 -0
- package/backend/src/__tests__/repositories/PermissionRepository.test.js +130 -0
- package/backend/src/__tests__/repositories/PluginRepository.test.js +107 -0
- package/backend/src/__tests__/repositories/ServerRepository.test.js +80 -0
- package/backend/src/__tests__/repositories/UserRepository.test.js +128 -0
- package/backend/src/__tests__/secretsFilter.test.js +425 -0
- package/backend/src/__tests__/services/BotLifecycleService.test.js +411 -0
- package/backend/src/__tests__/services/BotProcessManager.test.js +285 -0
- package/backend/src/__tests__/services/CacheManager.test.js +125 -0
- package/backend/src/__tests__/services/CommandExecutionService.test.js +460 -0
- package/backend/src/__tests__/services/ResourceMonitorService.test.js +207 -0
- package/backend/src/__tests__/services/TelemetryService.test.js +291 -0
- package/backend/src/__tests__/setup.js +25 -0
- package/backend/src/api/routes/apiKeys.js +181 -0
- package/backend/src/api/routes/bots.js +49 -7
- package/backend/src/api/routes/plugins.js +2 -1
- package/backend/src/api/routes/system.js +174 -0
- package/backend/src/container.js +82 -0
- package/backend/src/core/BotManager.js +142 -871
- package/backend/src/core/BotManager.old.js +1093 -0
- package/backend/src/core/BotProcess.js +1092 -858
- package/backend/src/core/EventGraphManager.js +280 -198
- package/backend/src/core/GraphExecutionEngine.js +321 -325
- package/backend/src/core/MessageQueue.js +27 -6
- package/backend/src/core/NodeRegistry.js +37 -1134
- package/backend/src/core/PluginManager.js +62 -12
- package/backend/src/core/PrismaService.js +32 -0
- package/backend/src/core/UserService.js +3 -3
- package/backend/src/core/__tests__/PrismaService.test.js +24 -0
- package/backend/src/core/commands/README.md +305 -0
- package/backend/src/core/commands/dev.js +13 -7
- package/backend/src/core/commands/ping.js +10 -4
- package/backend/src/core/commands/whois.js +63 -0
- package/backend/src/core/config/validation.js +27 -0
- package/backend/src/core/constants/graphTypes.js +21 -0
- package/backend/src/core/node-registries/actions.js +132 -0
- package/backend/src/core/node-registries/arrays.js +137 -0
- package/backend/src/core/node-registries/bot.js +23 -0
- package/backend/src/core/node-registries/data.js +290 -0
- package/backend/src/core/node-registries/debug.js +26 -0
- package/backend/src/core/node-registries/events.js +187 -0
- package/backend/src/core/node-registries/flow.js +139 -0
- package/backend/src/core/node-registries/logic.js +45 -0
- package/backend/src/core/node-registries/math.js +42 -0
- package/backend/src/core/node-registries/objects.js +98 -0
- package/backend/src/core/node-registries/strings.js +153 -0
- package/backend/src/core/node-registries/time.js +113 -0
- package/backend/src/core/node-registries/users.js +79 -0
- package/backend/src/core/nodes/{action_bot_look_at.js → actions/bot_look_at.js} +36 -36
- package/backend/src/core/nodes/{action_bot_set_variable.js → actions/bot_set_variable.js} +32 -32
- package/backend/src/core/nodes/{action_send_log.js → actions/send_log.js} +28 -23
- package/backend/src/core/nodes/{action_send_message.js → actions/send_message.js} +32 -32
- package/backend/src/core/nodes/actions/send_websocket_response.js +33 -0
- package/backend/src/core/nodes/arrays/get_next.js +35 -0
- package/backend/src/core/nodes/{data_cast.js → data/cast.js} +8 -0
- package/backend/src/core/nodes/data/datetime_literal.js +27 -0
- package/backend/src/core/nodes/data/entity_info.js +69 -0
- package/backend/src/core/nodes/data/get_nearby_entities.js +32 -0
- package/backend/src/core/nodes/data/get_nearby_players.js +64 -0
- package/backend/src/core/nodes/{data_get_user_field.js → data/get_user_field.js} +1 -1
- package/backend/src/core/nodes/data/type_check.js +53 -0
- package/backend/src/core/nodes/{debug_log.js → debug/log.js} +16 -16
- package/backend/src/core/nodes/{flow_branch.js → flow/branch.js} +15 -15
- package/backend/src/core/nodes/{flow_break.js → flow/break.js} +14 -14
- package/backend/src/core/nodes/flow/delay.js +43 -0
- package/backend/src/core/nodes/{flow_for_each.js → flow/for_each.js} +39 -39
- package/backend/src/core/nodes/{flow_sequence.js → flow/sequence.js} +16 -16
- package/backend/src/core/nodes/{flow_switch.js → flow/switch.js} +47 -47
- package/backend/src/core/nodes/{flow_while.js → flow/while.js} +1 -1
- package/backend/src/core/nodes/logic/__tests__/compare.test.js +83 -0
- package/backend/src/core/nodes/math/__tests__/operation.test.js +65 -0
- package/backend/src/core/nodes/strings/__tests__/concat.test.js +89 -0
- package/backend/src/core/nodes/time/__tests__/now.test.js +24 -0
- package/backend/src/core/nodes/time/add.js +33 -0
- package/backend/src/core/nodes/time/compare.js +35 -0
- package/backend/src/core/nodes/time/diff.js +29 -0
- package/backend/src/core/nodes/time/format.js +32 -0
- package/backend/src/core/nodes/time/now.js +18 -0
- package/backend/src/core/nodes/{user_check_blacklist.js → users/check_blacklist.js} +37 -37
- package/backend/src/core/nodes/{user_get_groups.js → users/get_groups.js} +36 -36
- package/backend/src/core/nodes/{user_get_permissions.js → users/get_permissions.js} +36 -36
- package/backend/src/core/nodes/{user_set_blacklist.js → users/set_blacklist.js} +37 -37
- package/backend/src/core/services/BotLifecycleService.js +596 -0
- package/backend/src/core/services/BotProcessManager.js +163 -0
- package/backend/src/core/services/CacheManager.js +111 -0
- package/backend/src/core/services/CommandExecutionService.js +351 -0
- package/backend/src/core/services/ResourceMonitorService.js +90 -0
- package/backend/src/core/services/TelemetryService.js +124 -0
- package/backend/src/core/services/ValidationService.js +132 -0
- package/backend/src/core/services/__tests__/ValidationService.test.js +148 -0
- package/backend/src/core/services.js +20 -5
- package/backend/src/core/system/CommandContext.js +84 -0
- package/backend/src/core/system/Transport.js +78 -0
- package/backend/src/core/utils/__tests__/jsonParser.test.js +44 -0
- package/backend/src/core/utils/jsonParser.js +18 -0
- package/backend/src/core/utils/secretsFilter.js +262 -0
- package/backend/src/core/utils/variableParser.js +89 -0
- package/backend/src/core/validation/__tests__/nodeSchemas.test.js +175 -0
- package/backend/src/core/validation/nodeSchemas.js +112 -0
- package/backend/src/lib/prisma.js +2 -4
- package/backend/src/real-time/botApi/handlers/commandHandlers.js +28 -0
- package/backend/src/real-time/botApi/handlers/graphHandlers.js +99 -0
- package/backend/src/real-time/botApi/handlers/graphWebSocketHandlers.js +147 -0
- package/backend/src/real-time/botApi/handlers/index.js +43 -0
- package/backend/src/real-time/botApi/handlers/messageHandlers.js +66 -0
- package/backend/src/real-time/botApi/handlers/statusHandlers.js +17 -0
- package/backend/src/real-time/botApi/handlers/userHandlers.js +141 -0
- package/backend/src/real-time/botApi/index.js +40 -0
- package/backend/src/real-time/botApi/middleware.js +79 -0
- package/backend/src/real-time/botApi/utils.js +54 -0
- package/backend/src/real-time/socketHandler.js +6 -2
- package/backend/src/repositories/BaseRepository.js +43 -0
- package/backend/src/repositories/BotRepository.js +42 -0
- package/backend/src/repositories/CommandRepository.js +53 -0
- package/backend/src/repositories/EventGraphRepository.js +40 -0
- package/backend/src/repositories/GroupRepository.js +69 -0
- package/backend/src/repositories/PermissionRepository.js +48 -0
- package/backend/src/repositories/PluginRepository.js +42 -0
- package/backend/src/repositories/ServerRepository.js +27 -0
- package/backend/src/repositories/UserRepository.js +48 -0
- package/backend/src/server.js +3 -0
- package/backend/src/test-refactor.js +85 -0
- package/frontend/dist/assets/index-CfTo92bP.css +1 -0
- package/frontend/dist/assets/index-CiFD5X9Z.js +8344 -0
- package/frontend/dist/index.html +2 -2
- package/frontend/package.json +0 -5
- package/package.json +2 -1
- package/frontend/dist/assets/index-B9GedHEa.js +0 -8352
- package/frontend/dist/assets/index-zLiy9MDx.css +0 -1
- package/nul +0 -0
- /package/backend/src/core/nodes/{action_http_request.js → actions/http_request.js} +0 -0
- /package/backend/src/core/nodes/{array_add_element.js → arrays/add_element.js} +0 -0
- /package/backend/src/core/nodes/{array_contains.js → arrays/contains.js} +0 -0
- /package/backend/src/core/nodes/{array_find_index.js → arrays/find_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_by_index.js → arrays/get_by_index.js} +0 -0
- /package/backend/src/core/nodes/{array_get_random_element.js → arrays/get_random_element.js} +0 -0
- /package/backend/src/core/nodes/{array_remove_by_index.js → arrays/remove_by_index.js} +0 -0
- /package/backend/src/core/nodes/{bot_get_position.js → bot/get_position.js} +0 -0
- /package/backend/src/core/nodes/{data_array_literal.js → data/array_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_boolean_literal.js → data/boolean_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_get_argument.js → data/get_argument.js} +0 -0
- /package/backend/src/core/nodes/{data_get_bot_look.js → data/get_bot_look.js} +0 -0
- /package/backend/src/core/nodes/{data_get_entity_field.js → data/get_entity_field.js} +0 -0
- /package/backend/src/core/nodes/{data_get_server_players.js → data/get_server_players.js} +0 -0
- /package/backend/src/core/nodes/{data_get_variable.js → data/get_variable.js} +0 -0
- /package/backend/src/core/nodes/{data_length.js → data/length.js} +0 -0
- /package/backend/src/core/nodes/{data_make_object.js → data/make_object.js} +0 -0
- /package/backend/src/core/nodes/{data_number_literal.js → data/number_literal.js} +0 -0
- /package/backend/src/core/nodes/{data_string_literal.js → data/string_literal.js} +0 -0
- /package/backend/src/core/nodes/{logic_compare.js → logic/compare.js} +0 -0
- /package/backend/src/core/nodes/{logic_operation.js → logic/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_operation.js → math/operation.js} +0 -0
- /package/backend/src/core/nodes/{math_random_number.js → math/random_number.js} +0 -0
- /package/backend/src/core/nodes/{object_create.js → objects/create.js} +0 -0
- /package/backend/src/core/nodes/{object_delete.js → objects/delete.js} +0 -0
- /package/backend/src/core/nodes/{object_get.js → objects/get.js} +0 -0
- /package/backend/src/core/nodes/{object_has_key.js → objects/has_key.js} +0 -0
- /package/backend/src/core/nodes/{object_set.js → objects/set.js} +0 -0
- /package/backend/src/core/nodes/{string_concat.js → strings/concat.js} +0 -0
- /package/backend/src/core/nodes/{string_contains.js → strings/contains.js} +0 -0
- /package/backend/src/core/nodes/{string_ends_with.js → strings/ends_with.js} +0 -0
- /package/backend/src/core/nodes/{string_equals.js → strings/equals.js} +0 -0
- /package/backend/src/core/nodes/{string_length.js → strings/length.js} +0 -0
- /package/backend/src/core/nodes/{string_matches.js → strings/matches.js} +0 -0
- /package/backend/src/core/nodes/{string_split.js → strings/split.js} +0 -0
- /package/backend/src/core/nodes/{string_starts_with.js → strings/starts_with.js} +0 -0
|
@@ -0,0 +1,628 @@
|
|
|
1
|
+
# Storage Management
|
|
2
|
+
|
|
3
|
+
Comprehensive guide to Linux storage management covering LVM operations, RAID configurations, filesystem selection, backup strategies, and capacity planning.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Storage Architecture](#storage-architecture)
|
|
8
|
+
- [LVM Operations](#lvm-operations)
|
|
9
|
+
- [RAID Configurations](#raid-configurations)
|
|
10
|
+
- [Filesystem Selection](#filesystem-selection)
|
|
11
|
+
- [Backup Strategies](#backup-strategies)
|
|
12
|
+
- [Snapshot Management](#snapshot-management)
|
|
13
|
+
- [Performance Monitoring](#performance-monitoring)
|
|
14
|
+
- [Capacity Planning](#capacity-planning)
|
|
15
|
+
|
|
16
|
+
## Storage Architecture
|
|
17
|
+
|
|
18
|
+
### Storage Stack
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
Applications
|
|
22
|
+
↓
|
|
23
|
+
Filesystem (ext4, xfs, btrfs)
|
|
24
|
+
↓
|
|
25
|
+
Logical Volume (LVM)
|
|
26
|
+
↓
|
|
27
|
+
RAID (mdadm)
|
|
28
|
+
↓
|
|
29
|
+
Physical Devices (SSD, HDD)
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
### Disk Information
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# List block devices
|
|
36
|
+
lsblk
|
|
37
|
+
lsblk -f # With filesystem info
|
|
38
|
+
|
|
39
|
+
# Disk details
|
|
40
|
+
sudo fdisk -l
|
|
41
|
+
sudo parted -l
|
|
42
|
+
|
|
43
|
+
# Disk usage
|
|
44
|
+
df -h
|
|
45
|
+
df -i # Inode usage
|
|
46
|
+
|
|
47
|
+
# SMART info (disk health)
|
|
48
|
+
sudo apt install smartmontools
|
|
49
|
+
sudo smartctl -a /dev/sda
|
|
50
|
+
sudo smartctl -H /dev/sda # Health summary
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## LVM Operations
|
|
54
|
+
|
|
55
|
+
### LVM Concepts
|
|
56
|
+
|
|
57
|
+
```
|
|
58
|
+
Physical Volumes (PV) → Volume Groups (VG) → Logical Volumes (LV)
|
|
59
|
+
/dev/sda1, /dev/sdb1 → vg_data → lv_data, lv_logs
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
### Creating LVM
|
|
63
|
+
|
|
64
|
+
```bash
|
|
65
|
+
# 1. Create physical volume
|
|
66
|
+
sudo pvcreate /dev/sdb
|
|
67
|
+
sudo pvcreate /dev/sdc
|
|
68
|
+
|
|
69
|
+
# View PVs
|
|
70
|
+
sudo pvdisplay
|
|
71
|
+
sudo pvs
|
|
72
|
+
|
|
73
|
+
# 2. Create volume group
|
|
74
|
+
sudo vgcreate vg_data /dev/sdb /dev/sdc
|
|
75
|
+
|
|
76
|
+
# View VGs
|
|
77
|
+
sudo vgdisplay
|
|
78
|
+
sudo vgs
|
|
79
|
+
|
|
80
|
+
# 3. Create logical volume
|
|
81
|
+
sudo lvcreate -L 100G -n lv_data vg_data
|
|
82
|
+
# Or use percentage
|
|
83
|
+
sudo lvcreate -l 100%FREE -n lv_data vg_data
|
|
84
|
+
|
|
85
|
+
# View LVs
|
|
86
|
+
sudo lvdisplay
|
|
87
|
+
sudo lvs
|
|
88
|
+
|
|
89
|
+
# 4. Create filesystem
|
|
90
|
+
sudo mkfs.ext4 /dev/vg_data/lv_data
|
|
91
|
+
|
|
92
|
+
# 5. Mount
|
|
93
|
+
sudo mkdir -p /mnt/data
|
|
94
|
+
sudo mount /dev/vg_data/lv_data /mnt/data
|
|
95
|
+
|
|
96
|
+
# 6. Add to fstab
|
|
97
|
+
echo '/dev/vg_data/lv_data /mnt/data ext4 defaults 0 2' | sudo tee -a /etc/fstab
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Extending LVM
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
# Add new disk to VG
|
|
104
|
+
sudo pvcreate /dev/sdd
|
|
105
|
+
sudo vgextend vg_data /dev/sdd
|
|
106
|
+
|
|
107
|
+
# Extend logical volume
|
|
108
|
+
sudo lvextend -L +50G /dev/vg_data/lv_data
|
|
109
|
+
# Or use all free space
|
|
110
|
+
sudo lvextend -l +100%FREE /dev/vg_data/lv_data
|
|
111
|
+
|
|
112
|
+
# Resize filesystem
|
|
113
|
+
# ext4
|
|
114
|
+
sudo resize2fs /dev/vg_data/lv_data
|
|
115
|
+
|
|
116
|
+
# xfs
|
|
117
|
+
sudo xfs_growfs /mnt/data
|
|
118
|
+
|
|
119
|
+
# All in one (extend LV and resize FS)
|
|
120
|
+
sudo lvextend -L +50G -r /dev/vg_data/lv_data
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### Reducing LVM (ext4 only, not xfs)
|
|
124
|
+
|
|
125
|
+
```bash
|
|
126
|
+
# CAUTION: Back up data first!
|
|
127
|
+
# Cannot shrink mounted filesystem
|
|
128
|
+
|
|
129
|
+
# 1. Unmount
|
|
130
|
+
sudo umount /mnt/data
|
|
131
|
+
|
|
132
|
+
# 2. Check filesystem
|
|
133
|
+
sudo e2fsck -f /dev/vg_data/lv_data
|
|
134
|
+
|
|
135
|
+
# 3. Resize filesystem first
|
|
136
|
+
sudo resize2fs /dev/vg_data/lv_data 50G
|
|
137
|
+
|
|
138
|
+
# 4. Reduce LV
|
|
139
|
+
sudo lvreduce -L 50G /dev/vg_data/lv_data
|
|
140
|
+
|
|
141
|
+
# 5. Remount
|
|
142
|
+
sudo mount /dev/vg_data/lv_data /mnt/data
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### LVM Snapshots
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
# Create snapshot (10G for changes)
|
|
149
|
+
sudo lvcreate -L 10G -s -n lv_data_snap /dev/vg_data/lv_data
|
|
150
|
+
|
|
151
|
+
# Mount snapshot
|
|
152
|
+
sudo mkdir -p /mnt/snap
|
|
153
|
+
sudo mount /dev/vg_data/lv_data_snap /mnt/snap
|
|
154
|
+
|
|
155
|
+
# Use for backup
|
|
156
|
+
tar -czf /backup/data-$(date +%Y%m%d).tar.gz -C /mnt/snap .
|
|
157
|
+
|
|
158
|
+
# Remove snapshot
|
|
159
|
+
sudo umount /mnt/snap
|
|
160
|
+
sudo lvremove /dev/vg_data/lv_data_snap
|
|
161
|
+
|
|
162
|
+
# Revert to snapshot (restore)
|
|
163
|
+
sudo umount /mnt/data
|
|
164
|
+
sudo lvconvert --merge /dev/vg_data/lv_data_snap
|
|
165
|
+
# Reboot to complete merge
|
|
166
|
+
sudo reboot
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Removing LVM
|
|
170
|
+
|
|
171
|
+
```bash
|
|
172
|
+
# 1. Unmount
|
|
173
|
+
sudo umount /mnt/data
|
|
174
|
+
|
|
175
|
+
# 2. Remove LV
|
|
176
|
+
sudo lvremove /dev/vg_data/lv_data
|
|
177
|
+
|
|
178
|
+
# 3. Remove VG
|
|
179
|
+
sudo vgremove vg_data
|
|
180
|
+
|
|
181
|
+
# 4. Remove PV
|
|
182
|
+
sudo pvremove /dev/sdb /dev/sdc
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
## RAID Configurations
|
|
186
|
+
|
|
187
|
+
### RAID Levels
|
|
188
|
+
|
|
189
|
+
```
|
|
190
|
+
RAID 0 (Striping)
|
|
191
|
+
- Min disks: 2
|
|
192
|
+
- Capacity: Sum of all disks
|
|
193
|
+
- Performance: Excellent (read/write)
|
|
194
|
+
- Redundancy: None
|
|
195
|
+
- Use: Non-critical data, temp storage
|
|
196
|
+
|
|
197
|
+
RAID 1 (Mirroring)
|
|
198
|
+
- Min disks: 2
|
|
199
|
+
- Capacity: Size of smallest disk
|
|
200
|
+
- Performance: Good read, normal write
|
|
201
|
+
- Redundancy: Can lose N-1 disks
|
|
202
|
+
- Use: Critical data, boot drives
|
|
203
|
+
|
|
204
|
+
RAID 5 (Striping + Parity)
|
|
205
|
+
- Min disks: 3
|
|
206
|
+
- Capacity: (N-1) × disk size
|
|
207
|
+
- Performance: Good read, moderate write
|
|
208
|
+
- Redundancy: Can lose 1 disk
|
|
209
|
+
- Use: File servers, general storage
|
|
210
|
+
|
|
211
|
+
RAID 6 (Striping + Double Parity)
|
|
212
|
+
- Min disks: 4
|
|
213
|
+
- Capacity: (N-2) × disk size
|
|
214
|
+
- Performance: Good read, slower write
|
|
215
|
+
- Redundancy: Can lose 2 disks
|
|
216
|
+
- Use: Large arrays, critical data
|
|
217
|
+
|
|
218
|
+
RAID 10 (Mirror + Stripe)
|
|
219
|
+
- Min disks: 4
|
|
220
|
+
- Capacity: (N/2) × disk size
|
|
221
|
+
- Performance: Excellent
|
|
222
|
+
- Redundancy: Can lose 1 disk per mirror
|
|
223
|
+
- Use: Databases, high performance
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
### Creating RAID with mdadm
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Install mdadm
|
|
230
|
+
sudo apt install mdadm
|
|
231
|
+
|
|
232
|
+
# RAID 1 (mirror)
|
|
233
|
+
sudo mdadm --create /dev/md0 --level=1 --raid-devices=2 /dev/sdb /dev/sdc
|
|
234
|
+
|
|
235
|
+
# RAID 5
|
|
236
|
+
sudo mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/sdb /dev/sdc /dev/sdd
|
|
237
|
+
|
|
238
|
+
# RAID 10
|
|
239
|
+
sudo mdadm --create /dev/md0 --level=10 --raid-devices=4 /dev/sdb /dev/sdc /dev/sdd /dev/sde
|
|
240
|
+
|
|
241
|
+
# Check status
|
|
242
|
+
cat /proc/mdstat
|
|
243
|
+
sudo mdadm --detail /dev/md0
|
|
244
|
+
|
|
245
|
+
# Create filesystem
|
|
246
|
+
sudo mkfs.ext4 /dev/md0
|
|
247
|
+
|
|
248
|
+
# Mount
|
|
249
|
+
sudo mkdir -p /mnt/raid
|
|
250
|
+
sudo mount /dev/md0 /mnt/raid
|
|
251
|
+
|
|
252
|
+
# Save configuration
|
|
253
|
+
sudo mdadm --detail --scan | sudo tee -a /etc/mdadm/mdadm.conf
|
|
254
|
+
sudo update-initramfs -u
|
|
255
|
+
|
|
256
|
+
# Add to fstab
|
|
257
|
+
echo '/dev/md0 /mnt/raid ext4 defaults 0 2' | sudo tee -a /etc/fstab
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
### RAID Maintenance
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
# Monitor RAID
|
|
264
|
+
cat /proc/mdstat
|
|
265
|
+
sudo mdadm --detail /dev/md0
|
|
266
|
+
|
|
267
|
+
# Check for errors
|
|
268
|
+
sudo mdadm --examine /dev/sdb
|
|
269
|
+
dmesg | grep md
|
|
270
|
+
|
|
271
|
+
# Replace failed disk
|
|
272
|
+
# 1. Mark disk as failed (if not auto-detected)
|
|
273
|
+
sudo mdadm /dev/md0 --fail /dev/sdb
|
|
274
|
+
|
|
275
|
+
# 2. Remove failed disk
|
|
276
|
+
sudo mdadm /dev/md0 --remove /dev/sdb
|
|
277
|
+
|
|
278
|
+
# 3. Physically replace disk
|
|
279
|
+
|
|
280
|
+
# 4. Add new disk
|
|
281
|
+
sudo mdadm /dev/md0 --add /dev/sdb
|
|
282
|
+
|
|
283
|
+
# 5. Monitor rebuild
|
|
284
|
+
watch cat /proc/mdstat
|
|
285
|
+
|
|
286
|
+
# Stop RAID
|
|
287
|
+
sudo umount /mnt/raid
|
|
288
|
+
sudo mdadm --stop /dev/md0
|
|
289
|
+
|
|
290
|
+
# Remove RAID
|
|
291
|
+
sudo mdadm --remove /dev/md0
|
|
292
|
+
sudo mdadm --zero-superblock /dev/sdb /dev/sdc
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
## Filesystem Selection
|
|
296
|
+
|
|
297
|
+
### Filesystem Comparison
|
|
298
|
+
|
|
299
|
+
```
|
|
300
|
+
ext4
|
|
301
|
+
- Mature, stable
|
|
302
|
+
- Max file: 16TB
|
|
303
|
+
- Max volume: 1EB
|
|
304
|
+
- Good general performance
|
|
305
|
+
- No built-in compression
|
|
306
|
+
- Use: General purpose, boot drives
|
|
307
|
+
|
|
308
|
+
xfs
|
|
309
|
+
- High performance
|
|
310
|
+
- Max file: 8EB
|
|
311
|
+
- Max volume: 8EB
|
|
312
|
+
- Excellent for large files
|
|
313
|
+
- Cannot shrink
|
|
314
|
+
- Use: Large files, databases, NFS
|
|
315
|
+
|
|
316
|
+
btrfs
|
|
317
|
+
- Modern features
|
|
318
|
+
- Snapshots, compression
|
|
319
|
+
- Self-healing with redundancy
|
|
320
|
+
- CoW (Copy-on-Write)
|
|
321
|
+
- Still maturing
|
|
322
|
+
- Use: Advanced features needed
|
|
323
|
+
|
|
324
|
+
ZFS
|
|
325
|
+
- Enterprise features
|
|
326
|
+
- Built-in RAID
|
|
327
|
+
- Compression, deduplication
|
|
328
|
+
- High memory usage
|
|
329
|
+
- Licensing concerns
|
|
330
|
+
- Use: Enterprise storage
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
### Creating Filesystems
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
# ext4
|
|
337
|
+
sudo mkfs.ext4 /dev/sdb1
|
|
338
|
+
sudo mkfs.ext4 -L "data_volume" /dev/sdb1 # With label
|
|
339
|
+
|
|
340
|
+
# xfs
|
|
341
|
+
sudo mkfs.xfs /dev/sdb1
|
|
342
|
+
sudo mkfs.xfs -L "data_volume" /dev/sdb1
|
|
343
|
+
|
|
344
|
+
# btrfs
|
|
345
|
+
sudo mkfs.btrfs /dev/sdb1
|
|
346
|
+
sudo mkfs.btrfs -L "data_volume" /dev/sdb1
|
|
347
|
+
|
|
348
|
+
# Check filesystem
|
|
349
|
+
sudo fsck.ext4 /dev/sdb1
|
|
350
|
+
sudo xfs_repair /dev/sdb1
|
|
351
|
+
sudo btrfs check /dev/sdb1
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
### Filesystem Tuning
|
|
355
|
+
|
|
356
|
+
```bash
|
|
357
|
+
# ext4 optimization
|
|
358
|
+
# Reserve less space for root (default 5%)
|
|
359
|
+
sudo tune2fs -m 1 /dev/sdb1
|
|
360
|
+
|
|
361
|
+
# Disable access time updates
|
|
362
|
+
# Add to /etc/fstab
|
|
363
|
+
/dev/sdb1 /data ext4 noatime,nodiratime 0 2
|
|
364
|
+
|
|
365
|
+
# xfs optimization
|
|
366
|
+
# Mount options in /etc/fstab
|
|
367
|
+
/dev/sdb1 /data xfs noatime,nodiratime,logbufs=8,logbsize=256k 0 2
|
|
368
|
+
|
|
369
|
+
# View filesystem info
|
|
370
|
+
sudo tune2fs -l /dev/sdb1 # ext4
|
|
371
|
+
sudo xfs_info /dev/sdb1 # xfs
|
|
372
|
+
```
|
|
373
|
+
|
|
374
|
+
## Backup Strategies
|
|
375
|
+
|
|
376
|
+
### Backup Methods
|
|
377
|
+
|
|
378
|
+
#### 1. rsync Backups
|
|
379
|
+
|
|
380
|
+
```bash
|
|
381
|
+
# Basic rsync backup
|
|
382
|
+
rsync -avz --delete /source/ /backup/
|
|
383
|
+
|
|
384
|
+
# Remote backup
|
|
385
|
+
rsync -avz -e ssh /source/ user@backup-server:/backup/
|
|
386
|
+
|
|
387
|
+
# Exclude files
|
|
388
|
+
rsync -avz --exclude='*.tmp' --exclude='cache/' /source/ /backup/
|
|
389
|
+
|
|
390
|
+
# Incremental backup with hard links
|
|
391
|
+
rsync -avz --link-dest=/backup/2024-01-01/ /source/ /backup/2024-01-02/
|
|
392
|
+
|
|
393
|
+
# Backup script with rotation
|
|
394
|
+
#!/bin/bash
|
|
395
|
+
SOURCE="/data"
|
|
396
|
+
BACKUP_DIR="/backup"
|
|
397
|
+
DATE=$(date +%Y-%m-%d)
|
|
398
|
+
LATEST="$BACKUP_DIR/latest"
|
|
399
|
+
|
|
400
|
+
# Create backup with hard links to previous
|
|
401
|
+
rsync -avz --delete --link-dest="$LATEST" "$SOURCE/" "$BACKUP_DIR/$DATE/"
|
|
402
|
+
|
|
403
|
+
# Update latest link
|
|
404
|
+
rm -f "$LATEST"
|
|
405
|
+
ln -s "$DATE" "$LATEST"
|
|
406
|
+
|
|
407
|
+
# Delete backups older than 30 days
|
|
408
|
+
find "$BACKUP_DIR" -maxdepth 1 -type d -mtime +30 -exec rm -rf {} \;
|
|
409
|
+
```
|
|
410
|
+
|
|
411
|
+
#### 2. tar Backups
|
|
412
|
+
|
|
413
|
+
```bash
|
|
414
|
+
# Create archive
|
|
415
|
+
tar -czf backup-$(date +%Y%m%d).tar.gz /data
|
|
416
|
+
|
|
417
|
+
# Incremental backup
|
|
418
|
+
tar -czf full-backup.tar.gz -g snapshot.file /data
|
|
419
|
+
# Later incremental
|
|
420
|
+
tar -czf inc-backup.tar.gz -g snapshot.file /data
|
|
421
|
+
|
|
422
|
+
# Extract
|
|
423
|
+
tar -xzf backup.tar.gz -C /restore/
|
|
424
|
+
|
|
425
|
+
# Verify
|
|
426
|
+
tar -tzf backup.tar.gz
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
#### 3. restic (Modern Backup Tool)
|
|
430
|
+
|
|
431
|
+
```bash
|
|
432
|
+
# Install restic
|
|
433
|
+
sudo apt install restic
|
|
434
|
+
|
|
435
|
+
# Initialize repository
|
|
436
|
+
restic init --repo /backup/restic
|
|
437
|
+
|
|
438
|
+
# Backup
|
|
439
|
+
restic backup /data --repo /backup/restic
|
|
440
|
+
|
|
441
|
+
# List snapshots
|
|
442
|
+
restic snapshots --repo /backup/restic
|
|
443
|
+
|
|
444
|
+
# Restore
|
|
445
|
+
restic restore latest --target /restore --repo /backup/restic
|
|
446
|
+
|
|
447
|
+
# Forget old backups
|
|
448
|
+
restic forget --keep-daily 7 --keep-weekly 4 --keep-monthly 6 --repo /backup/restic
|
|
449
|
+
restic prune --repo /backup/restic
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
#### 4. Borg Backup
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
# Install
|
|
456
|
+
sudo apt install borgbackup
|
|
457
|
+
|
|
458
|
+
# Initialize
|
|
459
|
+
borg init --encryption=repokey /backup/borg
|
|
460
|
+
|
|
461
|
+
# Create backup
|
|
462
|
+
borg create /backup/borg::$(date +%Y-%m-%d) /data
|
|
463
|
+
|
|
464
|
+
# List archives
|
|
465
|
+
borg list /backup/borg
|
|
466
|
+
|
|
467
|
+
# Restore
|
|
468
|
+
borg extract /backup/borg::2024-01-01
|
|
469
|
+
|
|
470
|
+
# Prune old backups
|
|
471
|
+
borg prune /backup/borg --keep-daily=7 --keep-weekly=4 --keep-monthly=6
|
|
472
|
+
```
|
|
473
|
+
|
|
474
|
+
### Backup Strategy (3-2-1 Rule)
|
|
475
|
+
|
|
476
|
+
```
|
|
477
|
+
3 copies of data
|
|
478
|
+
2 different media types
|
|
479
|
+
1 offsite copy
|
|
480
|
+
|
|
481
|
+
Example:
|
|
482
|
+
- Original data on server
|
|
483
|
+
- Local backup on NAS
|
|
484
|
+
- Cloud backup (AWS S3, Backblaze B2)
|
|
485
|
+
```
|
|
486
|
+
|
|
487
|
+
## Snapshot Management
|
|
488
|
+
|
|
489
|
+
### LVM Snapshots (covered above)
|
|
490
|
+
|
|
491
|
+
### btrfs Snapshots
|
|
492
|
+
|
|
493
|
+
```bash
|
|
494
|
+
# Create snapshot
|
|
495
|
+
sudo btrfs subvolume snapshot /mnt/data /mnt/data/.snapshots/$(date +%Y-%m-%d)
|
|
496
|
+
|
|
497
|
+
# List snapshots
|
|
498
|
+
sudo btrfs subvolume list /mnt/data
|
|
499
|
+
|
|
500
|
+
# Delete snapshot
|
|
501
|
+
sudo btrfs subvolume delete /mnt/data/.snapshots/2024-01-01
|
|
502
|
+
|
|
503
|
+
# Automated snapshots
|
|
504
|
+
#!/bin/bash
|
|
505
|
+
SUBVOL="/mnt/data"
|
|
506
|
+
SNAP_DIR="$SUBVOL/.snapshots"
|
|
507
|
+
|
|
508
|
+
mkdir -p "$SNAP_DIR"
|
|
509
|
+
|
|
510
|
+
# Create snapshot
|
|
511
|
+
sudo btrfs subvolume snapshot -r "$SUBVOL" "$SNAP_DIR/$(date +%Y-%m-%d-%H%M%S)"
|
|
512
|
+
|
|
513
|
+
# Keep only last 7 days
|
|
514
|
+
find "$SNAP_DIR" -maxdepth 1 -type d -mtime +7 | while read snap; do
|
|
515
|
+
sudo btrfs subvolume delete "$snap"
|
|
516
|
+
done
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
## Performance Monitoring
|
|
520
|
+
|
|
521
|
+
### Disk Performance
|
|
522
|
+
|
|
523
|
+
```bash
|
|
524
|
+
# I/O statistics
|
|
525
|
+
iostat -x 1 5
|
|
526
|
+
|
|
527
|
+
# Key metrics:
|
|
528
|
+
# - %util: Disk utilization
|
|
529
|
+
# - await: Average wait time
|
|
530
|
+
# - r/s, w/s: Read/write per second
|
|
531
|
+
# - rkB/s, wkB/s: Throughput
|
|
532
|
+
|
|
533
|
+
# Per-process I/O
|
|
534
|
+
sudo iotop
|
|
535
|
+
sudo iotop -oPa # Accumulated I/O
|
|
536
|
+
|
|
537
|
+
# Disk latency
|
|
538
|
+
sudo ioping /dev/sda
|
|
539
|
+
|
|
540
|
+
# Benchmark disk
|
|
541
|
+
# Write test
|
|
542
|
+
dd if=/dev/zero of=/tmp/testfile bs=1G count=1 oflag=direct
|
|
543
|
+
|
|
544
|
+
# Read test
|
|
545
|
+
dd if=/tmp/testfile of=/dev/null bs=1G count=1 iflag=direct
|
|
546
|
+
|
|
547
|
+
# Better benchmarking with fio
|
|
548
|
+
sudo apt install fio
|
|
549
|
+
fio --name=random-read --ioengine=libaio --iodepth=16 --rw=randread --bs=4k --direct=1 --size=1G --numjobs=4 --runtime=60 --group_reporting
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
## Capacity Planning
|
|
553
|
+
|
|
554
|
+
### Monitoring Disk Usage
|
|
555
|
+
|
|
556
|
+
```bash
|
|
557
|
+
# Disk usage
|
|
558
|
+
df -h
|
|
559
|
+
du -sh /*
|
|
560
|
+
du -sh /var/* | sort -h
|
|
561
|
+
|
|
562
|
+
# Find large files
|
|
563
|
+
find / -type f -size +1G -exec ls -lh {} \; 2>/dev/null
|
|
564
|
+
|
|
565
|
+
# Disk usage trends
|
|
566
|
+
# Use monitoring tools (Prometheus + Grafana)
|
|
567
|
+
# Or cron job
|
|
568
|
+
cat > /usr/local/bin/disk-usage-log.sh <<'EOF'
|
|
569
|
+
#!/bin/bash
|
|
570
|
+
echo "$(date +%Y-%m-%d,%H:%M:%S),$(df / | tail -1 | awk '{print $5}')" >> /var/log/disk-usage.csv
|
|
571
|
+
EOF
|
|
572
|
+
|
|
573
|
+
chmod +x /usr/local/bin/disk-usage-log.sh
|
|
574
|
+
|
|
575
|
+
# Add to cron (hourly)
|
|
576
|
+
0 * * * * /usr/local/bin/disk-usage-log.sh
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
### Capacity Planning
|
|
580
|
+
|
|
581
|
+
```bash
|
|
582
|
+
# Calculate growth rate
|
|
583
|
+
# Analyze disk-usage.csv
|
|
584
|
+
awk -F, '{print $1,$3}' /var/log/disk-usage.csv | \
|
|
585
|
+
awk 'NR>1 {print ($2-prev)/(NR-1); prev=$2}'
|
|
586
|
+
|
|
587
|
+
# Predict when disk will be full
|
|
588
|
+
# Based on growth rate and current usage
|
|
589
|
+
# Alert when > 80% full
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
### Cleanup Strategies
|
|
593
|
+
|
|
594
|
+
```bash
|
|
595
|
+
# Log rotation (automatic)
|
|
596
|
+
# /etc/logrotate.d/myapp
|
|
597
|
+
/var/log/myapp/*.log {
|
|
598
|
+
daily
|
|
599
|
+
rotate 14
|
|
600
|
+
compress
|
|
601
|
+
delaycompress
|
|
602
|
+
notifempty
|
|
603
|
+
create 0640 myapp myapp
|
|
604
|
+
}
|
|
605
|
+
|
|
606
|
+
# Clean package cache
|
|
607
|
+
sudo apt clean
|
|
608
|
+
sudo yum clean all
|
|
609
|
+
|
|
610
|
+
# Clean systemd journal
|
|
611
|
+
sudo journalctl --vacuum-time=30d
|
|
612
|
+
sudo journalctl --vacuum-size=1G
|
|
613
|
+
|
|
614
|
+
# Remove old kernels
|
|
615
|
+
sudo apt autoremove --purge
|
|
616
|
+
|
|
617
|
+
# Clean temp files
|
|
618
|
+
sudo find /tmp -type f -atime +7 -delete
|
|
619
|
+
sudo find /var/tmp -type f -atime +30 -delete
|
|
620
|
+
```
|
|
621
|
+
|
|
622
|
+
---
|
|
623
|
+
|
|
624
|
+
**Related Topics:**
|
|
625
|
+
- See [linux-administration.md](linux-administration.md) for filesystem basics
|
|
626
|
+
- See [performance-tuning.md](performance-tuning.md) for I/O optimization
|
|
627
|
+
- See [troubleshooting-guide.md](troubleshooting-guide.md) for disk issues
|
|
628
|
+
- See [automation-patterns.md](automation-patterns.md) for backup automation
|