diff --git a/.github/workflows/docs-check.yml b/.github/workflows/docs-check.yml new file mode 100644 index 00000000..481531bf --- /dev/null +++ b/.github/workflows/docs-check.yml @@ -0,0 +1,17 @@ +name: docs-check + +on: + pull_request: + paths: + - "content/**" + - "scripts/docs-check.mjs" + +jobs: + docs-check: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 22 + - run: node scripts/docs-check.mjs diff --git a/content/about/images/office-location.png b/content/about/images/office-location.png deleted file mode 100644 index ecdcd262..00000000 Binary files a/content/about/images/office-location.png and /dev/null differ diff --git a/content/concepts/glossary.md b/content/concepts/glossary.md index 3dcab0e7..a0a2ef78 100644 --- a/content/concepts/glossary.md +++ b/content/concepts/glossary.md @@ -3,105 +3,107 @@ title: "Glossary" description: "This article introduces commonly used vocabulary in object storage to help users quickly understand object storage" --- -| No. | Term | Description | -|------|--------------------------|--------------------------------------------------------------------------| -| 1 | Object Storage | An architecture where data is stored as objects, replacing traditional file hierarchy structures | -| 2 | Bucket | A container for storing objects with globally unique namespace | -| 3 | Object | Basic storage unit containing data, metadata, and unique identifier (Object Key) | -| 4 | Metadata | Key-value pair information describing object attributes (such as file type, creation time) | -| 5 | S3-Compatible | Storage services compatible with Amazon S3 API standards | -| 6 | Data Durability | The probability that data remains intact and accessible over a period of time (e.g., 99.999999999%) | -| 7 | Replication | Redundancy technology that ensures data safety through multiple copies | -| 8 | Erasure Coding | A method of data protection in which data is broken into fragments, expanded and encoded with redundant data pieces | -| 9 | Cold Storage | Low-cost storage type for infrequently accessed data (such as archived data) | -| 10 | Lifecycle Management | Policies for automatically transitioning/deleting objects (e.g., move to cold storage after 30 days) | -| 11 | Versioning | Retaining historical versions of objects to prevent overwriting | -| 12 | Storage Class | Different performance/cost storage tiers (Standard, Infrequent Access, Archive) | -| 13 | Access Key | Authentication keys for API requests (Access Key ID + Secret Access Key) | -| 14 | Region | Geographic location of storage infrastructure (e.g., East China 1, US West) | -| 15 | Availability Zone (AZ) | Isolated data centers with independent power/network within the same region | -| 16 | Endpoint | Domain address for accessing storage service (e.g., us-east1.rustfs.com) | -| 17 | RESTful API | API design specification based on HTTP protocol | -| 18 | Multipart Upload | Mechanism for splitting large files for upload and merging | -| 19 | Pre-Signed URL | Temporary access links with time validity | -| 20 | Server-Side Encryption (SSE) | Automatic data encryption on server side (SSE-S3/SSE-KMS/SSE-C) | -| 21 | Client-Side Encryption (CSE) | Local encryption on client side before upload | -| 22 | Cross-Region Replication | Automatic object replication across geographic regions | -| 23 | Access Control List (ACL) | Rule list controlling access permissions for buckets/objects | -| 24 | Bucket Policy | JSON-based fine-grained permission control policies | -| 25 | IAM | Identity and Access Management system for centralized user/role permission management | -| 26 | Event Notification | Sending notifications to message queues/function computing when events trigger | -| 27 | Data Lake | Repository for centralized storage of structured/unstructured data | -| 28 | Compliance | Meeting data storage regulatory requirements like GDPR, HIPAA | -| 29 | Logging & Audit | Recording all API operation logs for auditing | -| 30 | Monitoring & Alerting | Real-time monitoring of storage usage/requests with alerting | -| 31 | CORS | Rules controlling browser cross-origin resource access | -| 32 | Transfer Acceleration | Optimizing upload/download speed through edge nodes | -| 33 | CDN Integration | Combining with Content Delivery Network for caching acceleration | -| 34 | Data Export | Process of migrating data to other storage systems | -| 35 | Data Import | Batch data migration from external systems to object storage | -| 36 | Static Website Hosting | Directly hosting HTML/CSS/JS static files through buckets | -| 37 | Hotlink Protection | Technology preventing external websites from stealing resource links | -| 38 | Request Rate Limiting | Controlling API request frequency per user/IP | -| 39 | Tagging | Adding classification tags to buckets/objects for management | -| 40 | Inventory Report | Periodically generated CSV/ORC files listing storage objects | -| 41 | Data Restoration | Restoring data from archive storage to accessible state | -| 42 | Storage Gateway | Access layer mapping object storage as local file system | -| 43 | Data Compression | Compressing data before upload to save storage space | -| 44 | Data Deduplication | Eliminating duplicate data to reduce storage usage | -| 45 | Direct Read Archive | Technology for directly reading archived data without restoration | -| 46 | Bandwidth Control | Limiting download bandwidth to avoid network congestion | -| 47 | Concurrent Connections | Number of simultaneous data transfer connections | -| 48 | Data Migration Service | Automated migration tools (e.g., AWS Snowball) | -| 49 | Client SDK | Developer toolkits for integrating storage services (e.g., Python/Java SDK) | -| 50 | CLI | Command line management tools (e.g., aws s3 cp) | -| 51 | Web Console | Web-based management interface | -| 52 | Data Integrity Check | Verifying transmission integrity through MD5/SHA | -| 53 | Resumable Upload/Download | Continuing transfer from breakpoint after network interruption | -| 54 | Mirror Back to Source | Pulling and saving from specified origin when requested object doesn't exist | -| 55 | Canary Release | Release strategy gradually opening new features to some users | -| 56 | Soft Delete | Marking objects for deletion while maintaining recovery period | -| 57 | Object Lock | Compliance protection mechanism preventing object deletion or overwriting | -| 58 | Watermarking | Adding identification information to images/videos | -| 59 | Thumbnail Generation | Automatically creating thumbnail versions of images | -| 60 | Image Processing | Online cropping/scaling/rotation processing functions | -| 61 | Video Transcoding | Converting video formats/resolutions for different devices | -| 62 | Content Moderation | Automatically detecting inappropriate images/videos/text | -| 63 | Cost Analysis | Calculating costs by storage type/request count dimensions | -| 64 | Usage Monitoring | Real-time dashboard viewing storage/traffic/request counts | -| 65 | Storage Analytics | Tools analyzing storage patterns to optimize costs | -| 66 | Requester Pays | Billing model where data downloader bears the cost | -| 67 | Tiered Storage | Automatically moving data to lower-cost storage tiers | -| 68 | Intelligent Tiering | Automatically selecting optimal storage type based on access patterns | -| 69 | PrivateLink | Accessing object storage through internal network avoiding public exposure | -| 70 | VPC Endpoint | Entry point for securely accessing storage services within Virtual Private Cloud | -| 71 | SSL/TLS | Encrypting data transmission through HTTPS protocol | -| 72 | Client-Side Encryption | Users encrypting data themselves before upload | -| 73 | KMS | Key Management Service for centralized encryption key management | -| 74 | Permission Boundary | Limiting maximum permission scope of IAM roles/users | -| 75 | Temporary Credentials | Short-term valid access tokens (e.g., STS Token) | -| 76 | MFA Delete | Requiring multi-factor authentication to delete data | -| 77 | Immutability | Property preventing data tampering (combined with WORM model) | -| 78 | Legal Hold | Mandatory protection prohibiting data deletion/modification in compliance scenarios | -| 79 | Cross-Account Sharing | Allowing other cloud accounts to access specified storage resources | -| 80 | Prefetch Policy | Loading data into cache in advance to accelerate subsequent access | -| 81 | Cache-Control | Specifying browser/CDN caching behavior through HTTP headers | -| 82 | Delayed Deletion | Delaying deletion operations to prevent accidental actions | -| 83 | Batch Operations | Performing unified operations on multiple objects (delete/copy/restore) | -| 84 | Data Lineage | Metadata records tracking data sources and change history | -| 85 | Data Catalog | Retrieval system storing metadata information | -| 86 | Storage Gateway | Hybrid cloud solution connecting local systems with cloud storage | -| 87 | Hybrid Cloud Storage | Architecture using both local storage and cloud storage | -| 88 | Edge Storage | Providing storage services at edge nodes close to data sources | -| 89 | Multi-Cloud Storage | Storage solutions across different cloud service providers | -| 90 | Storage Federation | Abstraction layer for unified management of multiple storage systems | -| 91 | Object Tag | Adding custom classification tags to objects | -| 92 | Bucket Tag | Adding management/billing related tags to buckets | -| 93 | Storage Quota | Limiting maximum capacity of buckets | -| 94 | Request Throttling | Limiting API requests per unit time | -| 95 | SLA | Service Level Agreement commitments for availability/durability (e.g., 99.9% availability) | -| 96 | Disaster Recovery | Ensuring business continuity through cross-region backups | -| 97 | Storage Topology | Distribution structure of data at physical/logical levels | -| 98 | Proximity Access | Routing user requests to nearest storage nodes | -| 99 | Global Namespace | Unified view management of cross-region buckets | -| 100 | Zero-Copy Migration | Fast data migration through metadata operations | +| Term | Description | +|--------------------------|--------------------------------------------------------------------------| +| Object Storage | An architecture where data is stored as objects, replacing traditional file hierarchy structures | +| Bucket | A container for storing objects with globally unique namespace | +| Object | Basic storage unit containing data, metadata, and unique identifier (Object Key) | +| Metadata | Key-value pair information describing object attributes (such as file type, creation time) | +| S3-Compatible | Storage services compatible with Amazon S3 API standards | +| Data Durability | The probability that data remains intact and accessible over a period of time (e.g., 99.999999999%) | +| Replication | Redundancy technology that ensures data safety through multiple copies | +| Erasure Coding | A method of data protection in which data is broken into fragments, expanded and encoded with redundant data pieces | +| Cold Storage | Low-cost storage type for infrequently accessed data (such as archived data) | +| Lifecycle Management | Policies for automatically transitioning/deleting objects (e.g., move to cold storage after 30 days) | +| Versioning | Retaining historical versions of objects to prevent overwriting | +| Storage Class | Different performance/cost storage tiers (Standard, Infrequent Access, Archive) | +| Access Key | Authentication keys for API requests (Access Key ID + Secret Access Key) | +| Region | Geographic location of storage infrastructure (e.g., East China 1, US West) | +| Availability Zone (AZ) | Isolated data centers with independent power/network within the same region | +| Endpoint | Domain address for accessing storage service (e.g., us-east1.rustfs.com) | +| RESTful API | API design specification based on HTTP protocol | +| Multipart Upload | Mechanism for splitting large files for upload and merging | +| Pre-Signed URL | Temporary access links with time validity | +| Server-Side Encryption (SSE) | Automatic data encryption on server side (SSE-S3/SSE-KMS/SSE-C) | +| Client-Side Encryption (CSE) | Local encryption on client side before upload | +| Cross-Region Replication | Automatic object replication across geographic regions | +| Access Control List (ACL) | Rule list controlling access permissions for buckets/objects | +| Bucket Policy | JSON-based fine-grained permission control policies | +| IAM | Identity and Access Management system for centralized user/role permission management | +| Event Notification | Sending notifications to message queues/function computing when events trigger | +| Data Lake | Repository for centralized storage of structured/unstructured data | +| Compliance | Meeting data storage regulatory requirements like GDPR, HIPAA | +| Logging & Audit | Recording all API operation logs for auditing | +| Monitoring & Alerting | Real-time monitoring of storage usage/requests with alerting | +| CORS | Rules controlling browser cross-origin resource access | +| Transfer Acceleration | Optimizing upload/download speed through edge nodes | +| CDN Integration | Combining with Content Delivery Network for caching acceleration | +| Data Export | Process of migrating data to other storage systems | +| Data Import | Batch data migration from external systems to object storage | +| Static Website Hosting | Directly hosting HTML/CSS/JS static files through buckets | +| Hotlink Protection | Technology preventing external websites from stealing resource links | +| Request Rate Limiting | Controlling API request frequency per user/IP | +| Tagging | Adding classification tags to buckets/objects for management | +| Inventory Report | Periodically generated CSV/ORC files listing storage objects | +| Data Restoration | Restoring data from archive storage to accessible state | +| Storage Gateway | Access layer mapping object storage as a local file system; also a hybrid cloud solution connecting local systems with cloud storage | +| Data Compression | Compressing data before upload to save storage space | +| Data Deduplication | Eliminating duplicate data to reduce storage usage | +| Direct Read Archive | Technology for directly reading archived data without restoration | +| Bandwidth Control | Limiting download bandwidth to avoid network congestion | +| Concurrent Connections | Number of simultaneous data transfer connections | +| Data Migration Service | Automated migration tools (e.g., AWS Snowball) | +| Client SDK | Developer toolkits for integrating storage services (e.g., Python/Java SDK) | +| CLI | Command line management tools (e.g., aws s3 cp) | +| Web Console | Web-based management interface | +| Data Integrity Check | Verifying transmission integrity through MD5/SHA | +| Resumable Upload/Download | Continuing transfer from breakpoint after network interruption | +| Mirror Back to Source | Pulling and saving from specified origin when requested object doesn't exist | +| Canary Release | Release strategy gradually opening new features to some users | +| Soft Delete | Marking objects for deletion while maintaining recovery period | +| Object Lock | Compliance protection mechanism preventing object deletion or overwriting | +| Watermarking | Adding identification information to images/videos | +| Thumbnail Generation | Automatically creating thumbnail versions of images | +| Image Processing | Online cropping/scaling/rotation processing functions | +| Video Transcoding | Converting video formats/resolutions for different devices | +| Content Moderation | Automatically detecting inappropriate images/videos/text | +| Cost Analysis | Calculating costs by storage type/request count dimensions | +| Usage Monitoring | Real-time dashboard viewing storage/traffic/request counts | +| Storage Analytics | Tools analyzing storage patterns to optimize costs | +| Requester Pays | Billing model where data downloader bears the cost | +| Tiered Storage | Automatically moving data to lower-cost storage tiers | +| Intelligent Tiering | Automatically selecting optimal storage type based on access patterns | +| PrivateLink | Accessing object storage through internal network avoiding public exposure | +| VPC Endpoint | Entry point for securely accessing storage services within Virtual Private Cloud | +| SSL/TLS | Encrypting data transmission through HTTPS protocol | +| Client-Side Encryption | Users encrypting data themselves before upload | +| KMS | Key Management Service for centralized encryption key management | +| Permission Boundary | Limiting maximum permission scope of IAM roles/users | +| Temporary Credentials | Short-term valid access tokens (e.g., STS Token) | +| MFA Delete | Requiring multi-factor authentication to delete data | +| Immutability | Property preventing data tampering (combined with WORM model) | +| Legal Hold | Mandatory protection prohibiting data deletion/modification in compliance scenarios | +| Cross-Account Sharing | Allowing other cloud accounts to access specified storage resources | +| Prefetch Policy | Loading data into cache in advance to accelerate subsequent access | +| Cache-Control | Specifying browser/CDN caching behavior through HTTP headers | +| Delayed Deletion | Delaying deletion operations to prevent accidental actions | +| Batch Operations | Performing unified operations on multiple objects (delete/copy/restore) | +| Data Lineage | Metadata records tracking data sources and change history | +| Data Catalog | Retrieval system storing metadata information | +| Hybrid Cloud Storage | Architecture using both local storage and cloud storage | +| Edge Storage | Providing storage services at edge nodes close to data sources | +| Multi-Cloud Storage | Storage solutions across different cloud service providers | +| Storage Federation | Abstraction layer for unified management of multiple storage systems | +| Object Tag | Adding custom classification tags to objects | +| Bucket Tag | Adding management/billing related tags to buckets | +| Storage Quota | Limiting maximum capacity of buckets | +| Request Throttling | Limiting API requests per unit time | +| SLA | Service Level Agreement commitments for availability/durability (e.g., 99.9% availability) | +| Disaster Recovery | Ensuring business continuity through cross-region backups | +| Storage Topology | Distribution structure of data at physical/logical levels | +| Proximity Access | Routing user requests to nearest storage nodes | +| Global Namespace | Unified view management of cross-region buckets | +| Zero-Copy Migration | Fast data migration through metadata operations | +| SNSD (Single-Node Single-Disk) | Deployment topology with one server and one data disk, suited for testing and development; see [Single Node Single Disk Mode](../installation/linux/single-node-single-disk.md) | +| SNMD (Single-Node Multiple-Disk) | Deployment topology with one server and multiple data disks, providing disk-level redundancy via erasure coding; see [Single Node Multiple Disk Mode](../installation/linux/single-node-multiple-disk.md) | +| MNMD (Multiple-Node Multiple-Disk) | Distributed deployment topology across multiple servers and disks, recommended for production; see [Multiple Node Multiple Disk Mode](../installation/linux/multiple-node-multiple-disk.md) | diff --git a/content/features/ai/images/cloud-operations.png b/content/features/ai/images/cloud-operations.png deleted file mode 100644 index 2d777c28..00000000 Binary files a/content/features/ai/images/cloud-operations.png and /dev/null differ diff --git a/content/features/ai/images/data-protection.png b/content/features/ai/images/data-protection.png deleted file mode 100644 index aa6676e0..00000000 Binary files a/content/features/ai/images/data-protection.png and /dev/null differ diff --git a/content/features/ai/images/edge-ai-storage.png b/content/features/ai/images/edge-ai-storage.png deleted file mode 100644 index 64401474..00000000 Binary files a/content/features/ai/images/edge-ai-storage.png and /dev/null differ diff --git a/content/features/ai/images/fault-tolerant-storage.png b/content/features/ai/images/fault-tolerant-storage.png deleted file mode 100644 index 8408a011..00000000 Binary files a/content/features/ai/images/fault-tolerant-storage.png and /dev/null differ diff --git a/content/features/ai/images/lifecycle-management.png b/content/features/ai/images/lifecycle-management.png deleted file mode 100644 index 45081006..00000000 Binary files a/content/features/ai/images/lifecycle-management.png and /dev/null differ diff --git a/content/features/ai/images/llm-storage.png b/content/features/ai/images/llm-storage.png deleted file mode 100644 index bde84430..00000000 Binary files a/content/features/ai/images/llm-storage.png and /dev/null differ diff --git a/content/features/ai/images/object-retention.png b/content/features/ai/images/object-retention.png deleted file mode 100644 index 10a58645..00000000 Binary files a/content/features/ai/images/object-retention.png and /dev/null differ diff --git a/content/features/ai/images/rag-storage.png b/content/features/ai/images/rag-storage.png deleted file mode 100644 index 868e8894..00000000 Binary files a/content/features/ai/images/rag-storage.png and /dev/null differ diff --git a/content/features/ai/images/reliable-storage.png b/content/features/ai/images/reliable-storage.png deleted file mode 100644 index 868e8894..00000000 Binary files a/content/features/ai/images/reliable-storage.png and /dev/null differ diff --git a/content/features/ai/images/training-inference-scale.png b/content/features/ai/images/training-inference-scale.png deleted file mode 100644 index 868e8894..00000000 Binary files a/content/features/ai/images/training-inference-scale.png and /dev/null differ diff --git a/content/features/commvault/images/atomic-metadata.png b/content/features/commvault/images/atomic-metadata.png deleted file mode 100644 index 136cdc48..00000000 Binary files a/content/features/commvault/images/atomic-metadata.png and /dev/null differ diff --git a/content/features/commvault/images/commvault-logo.png b/content/features/commvault/images/commvault-logo.png deleted file mode 100644 index feadea77..00000000 Binary files a/content/features/commvault/images/commvault-logo.png and /dev/null differ diff --git a/content/features/commvault/images/fast-performance.png b/content/features/commvault/images/fast-performance.png deleted file mode 100644 index ebab4db0..00000000 Binary files a/content/features/commvault/images/fast-performance.png and /dev/null differ diff --git a/content/features/commvault/images/scalability.png b/content/features/commvault/images/scalability.png deleted file mode 100644 index baf077ee..00000000 Binary files a/content/features/commvault/images/scalability.png and /dev/null differ diff --git a/content/features/commvault/images/simple-secure.png b/content/features/commvault/images/simple-secure.png deleted file mode 100644 index 6e612195..00000000 Binary files a/content/features/commvault/images/simple-secure.png and /dev/null differ diff --git a/content/features/data-lake/images/decomposition.png b/content/features/data-lake/images/decomposition.png deleted file mode 100644 index 5e03c7a1..00000000 Binary files a/content/features/data-lake/images/decomposition.png and /dev/null differ diff --git a/content/features/data-lake/images/elt-etl.png b/content/features/data-lake/images/elt-etl.png deleted file mode 100644 index 9de50dfe..00000000 Binary files a/content/features/data-lake/images/elt-etl.png and /dev/null differ diff --git a/content/features/data-lake/images/lightweight.png b/content/features/data-lake/images/lightweight.png deleted file mode 100644 index 10a58645..00000000 Binary files a/content/features/data-lake/images/lightweight.png and /dev/null differ diff --git a/content/features/data-lake/images/open-source.png b/content/features/data-lake/images/open-source.png deleted file mode 100644 index 5e03c7a1..00000000 Binary files a/content/features/data-lake/images/open-source.png and /dev/null differ diff --git a/content/features/data-lake/images/rapid-growth.png b/content/features/data-lake/images/rapid-growth.png deleted file mode 100644 index 67659dad..00000000 Binary files a/content/features/data-lake/images/rapid-growth.png and /dev/null differ diff --git a/content/features/data-lake/images/resilience.png b/content/features/data-lake/images/resilience.png deleted file mode 100644 index 9d9c67b6..00000000 Binary files a/content/features/data-lake/images/resilience.png and /dev/null differ diff --git a/content/features/data-lake/images/security.png b/content/features/data-lake/images/security.png deleted file mode 100644 index f60e7086..00000000 Binary files a/content/features/data-lake/images/security.png and /dev/null differ diff --git a/content/features/data-lake/images/simplicity.png b/content/features/data-lake/images/simplicity.png deleted file mode 100644 index d8a9ef1f..00000000 Binary files a/content/features/data-lake/images/simplicity.png and /dev/null differ diff --git a/content/features/data-lake/images/software-defined.png b/content/features/data-lake/images/software-defined.png deleted file mode 100644 index d2e40198..00000000 Binary files a/content/features/data-lake/images/software-defined.png and /dev/null differ diff --git a/content/features/domestic/images/arrow.png b/content/features/domestic/images/arrow.png deleted file mode 100644 index 2d7dda3d..00000000 Binary files a/content/features/domestic/images/arrow.png and /dev/null differ diff --git a/content/features/domestic/images/icon-1.png b/content/features/domestic/images/icon-1.png deleted file mode 100644 index 89d3579d..00000000 Binary files a/content/features/domestic/images/icon-1.png and /dev/null differ diff --git a/content/features/domestic/images/icon-2.png b/content/features/domestic/images/icon-2.png deleted file mode 100644 index a9deb1e4..00000000 Binary files a/content/features/domestic/images/icon-2.png and /dev/null differ diff --git a/content/features/domestic/images/icon-3.png b/content/features/domestic/images/icon-3.png deleted file mode 100644 index 79efca06..00000000 Binary files a/content/features/domestic/images/icon-3.png and /dev/null differ diff --git a/content/features/domestic/images/icon-4.png b/content/features/domestic/images/icon-4.png deleted file mode 100644 index 3463dd09..00000000 Binary files a/content/features/domestic/images/icon-4.png and /dev/null differ diff --git a/content/features/domestic/images/item-1.png b/content/features/domestic/images/item-1.png deleted file mode 100644 index 74b2d787..00000000 Binary files a/content/features/domestic/images/item-1.png and /dev/null differ diff --git a/content/features/domestic/images/item-2.png b/content/features/domestic/images/item-2.png deleted file mode 100644 index 55d996b2..00000000 Binary files a/content/features/domestic/images/item-2.png and /dev/null differ diff --git a/content/features/domestic/images/item-3.png b/content/features/domestic/images/item-3.png deleted file mode 100644 index b9daf84c..00000000 Binary files a/content/features/domestic/images/item-3.png and /dev/null differ diff --git a/content/features/integration/images/integration-hero.svg b/content/features/integration/images/integration-hero.svg deleted file mode 100644 index a2f4865e..00000000 --- a/content/features/integration/images/integration-hero.svg +++ /dev/null @@ -1,13 +0,0 @@ - - - hbr 混合云备份 - - - - - - - - - - \ No newline at end of file diff --git a/content/features/lifecycle/images/s9-1.png b/content/features/lifecycle/images/s9-1.png deleted file mode 100644 index 2d777c28..00000000 Binary files a/content/features/lifecycle/images/s9-1.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/ai-factor-mining.png b/content/features/quantitative-trading/images/ai-factor-mining.png deleted file mode 100644 index da6cbd4e..00000000 Binary files a/content/features/quantitative-trading/images/ai-factor-mining.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/files-icon.png b/content/features/quantitative-trading/images/files-icon.png deleted file mode 100644 index 0b1fe202..00000000 Binary files a/content/features/quantitative-trading/images/files-icon.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/hft-strategy.png b/content/features/quantitative-trading/images/hft-strategy.png deleted file mode 100644 index 5ce40a03..00000000 Binary files a/content/features/quantitative-trading/images/hft-strategy.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/regulatory-compliance.png b/content/features/quantitative-trading/images/regulatory-compliance.png deleted file mode 100644 index edcd0c9c..00000000 Binary files a/content/features/quantitative-trading/images/regulatory-compliance.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/scaling-icon.png b/content/features/quantitative-trading/images/scaling-icon.png deleted file mode 100644 index 6455353e..00000000 Binary files a/content/features/quantitative-trading/images/scaling-icon.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/security-icon.png b/content/features/quantitative-trading/images/security-icon.png deleted file mode 100644 index 79efca06..00000000 Binary files a/content/features/quantitative-trading/images/security-icon.png and /dev/null differ diff --git a/content/features/quantitative-trading/images/speed-icon.png b/content/features/quantitative-trading/images/speed-icon.png deleted file mode 100644 index b1f034dd..00000000 Binary files a/content/features/quantitative-trading/images/speed-icon.png and /dev/null differ diff --git a/content/features/s3-compatibility/images/s1-1.png b/content/features/s3-compatibility/images/s1-1.png deleted file mode 100644 index 3db29425..00000000 Binary files a/content/features/s3-compatibility/images/s1-1.png and /dev/null differ diff --git a/content/features/s3-compatibility/images/s1-2.png b/content/features/s3-compatibility/images/s1-2.png deleted file mode 100644 index 7ae13f13..00000000 Binary files a/content/features/s3-compatibility/images/s1-2.png and /dev/null differ diff --git a/content/features/small-file/images/memory-optimization.png b/content/features/small-file/images/memory-optimization.png deleted file mode 100644 index 0fcbbffd..00000000 Binary files a/content/features/small-file/images/memory-optimization.png and /dev/null differ diff --git a/content/features/veeam/images/backup-performance.png b/content/features/veeam/images/backup-performance.png deleted file mode 100644 index 6e612195..00000000 Binary files a/content/features/veeam/images/backup-performance.png and /dev/null differ diff --git a/content/features/veeam/images/backup-restore.png b/content/features/veeam/images/backup-restore.png deleted file mode 100644 index ad78f904..00000000 Binary files a/content/features/veeam/images/backup-restore.png and /dev/null differ diff --git a/content/features/veeam/images/hardware-agnostic.png b/content/features/veeam/images/hardware-agnostic.png deleted file mode 100644 index 136cdc48..00000000 Binary files a/content/features/veeam/images/hardware-agnostic.png and /dev/null differ diff --git a/content/features/veeam/images/inline-consistency.png b/content/features/veeam/images/inline-consistency.png deleted file mode 100644 index ebab4db0..00000000 Binary files a/content/features/veeam/images/inline-consistency.png and /dev/null differ diff --git a/content/features/veeam/images/metadata-advantage.png b/content/features/veeam/images/metadata-advantage.png deleted file mode 100644 index baf077ee..00000000 Binary files a/content/features/veeam/images/metadata-advantage.png and /dev/null differ diff --git a/content/features/veeam/images/veeam-logo.png b/content/features/veeam/images/veeam-logo.png deleted file mode 100644 index 7202b3e9..00000000 Binary files a/content/features/veeam/images/veeam-logo.png and /dev/null differ diff --git a/content/features/versioning/images/versioning-overview.png b/content/features/versioning/images/versioning-overview.png deleted file mode 100644 index 88be5c82..00000000 Binary files a/content/features/versioning/images/versioning-overview.png and /dev/null differ diff --git a/content/features/video/images/item-1.png b/content/features/video/images/item-1.png deleted file mode 100644 index 64cd8752..00000000 Binary files a/content/features/video/images/item-1.png and /dev/null differ diff --git a/content/features/video/images/item-2.png b/content/features/video/images/item-2.png deleted file mode 100644 index 6cbe1d6d..00000000 Binary files a/content/features/video/images/item-2.png and /dev/null differ diff --git a/content/features/video/images/item-3.png b/content/features/video/images/item-3.png deleted file mode 100644 index 9443a6a7..00000000 Binary files a/content/features/video/images/item-3.png and /dev/null differ diff --git a/content/features/video/images/item-4.png b/content/features/video/images/item-4.png deleted file mode 100644 index 31968230..00000000 Binary files a/content/features/video/images/item-4.png and /dev/null differ diff --git a/content/installation/console-first-steps.md b/content/installation/console-first-steps.md new file mode 100644 index 00000000..53d1d1f2 --- /dev/null +++ b/content/installation/console-first-steps.md @@ -0,0 +1,66 @@ +--- +title: "Console: First Steps" +description: "Sign in to the RustFS Console for the first time, create a bucket, and upload your first object." +--- + +Once your RustFS server is running, the embedded web console is the fastest way to verify the installation and start working with your data. This short tutorial walks you through your first session. + +## 1. Open the Console + +The console listens on port `9001` by default. In your browser, open: + +```text +http://:9001 +``` + +For a local test install, that is `http://127.0.0.1:9001`. + +## 2. Sign In + +Sign in with the credentials configured at install time: + +- If you used the [Linux quick-start script](./linux/quick-start.md), the access key and secret key were printed at the end of the installation output. +- If you started RustFS via Docker or a systemd unit, use the values of `RUSTFS_ACCESS_KEY` and `RUSTFS_SECRET_KEY` from your configuration (see the [Docker guide](./docker/index.md)). + +> For production deployments, change any default credentials before exposing the console. See the [Security Checklist](./checklists/security-checklists.md). + +## 3. A Quick Tour + +After signing in you land on the console home page, which shows: + +- **Buckets** — a list of your buckets, with a **Create Bucket** button in the top left. +- **Usage overview** — object count and storage consumption at a glance. +- **Access Keys** — management of programmatic credentials (see step 6). + +## 4. Create Your First Bucket + +1. On the home page, in the top left corner, select **Create Bucket**. +2. Enter a bucket name (for example `my-first-bucket`) and click **Create**. + +![bucket creation](../management/bucket/images/bucket-creation-by-ui.png) + +Full details, including `mc` and API alternatives, are in [Bucket Creation](../management/bucket/creation.md). + +## 5. Upload Your First Object + +1. Click the bucket you just created. +2. In the top right corner, select **Upload File/Folder**. +3. Choose one or more local files and click **Start Upload**. + +![object creation from ui](../management/object/images/upload_file_from_ui.png) + +Click the uploaded object to view its details — size, ETag, content type, and a shareable link. + +![object details info](../management/object/images/object_details_info.png) + +More options are covered in [Object Creation](../management/object/creation.md). + +## 6. Create Access Keys for Applications + +The console sign-in credentials are administrator credentials — applications should use their own keys instead. Go to **Access Keys** in the console to create a scoped access key / secret key pair for your S3 clients and SDKs. See [Access Key Management](../administration/iam/access-token.md) for the full walkthrough. + +## Next Steps + +- Point any S3-compatible client at `http://:9000` (the S3 API port) with your new access keys. +- Explore [IAM management](../administration/iam/index.md) to add users and policies. +- Review the [production checklists](./checklists/index.md) before going live. diff --git a/content/installation/linux/images/console.jpg b/content/installation/linux/images/console.jpg index 05da6f9c..8d34eadf 100644 Binary files a/content/installation/linux/images/console.jpg and b/content/installation/linux/images/console.jpg differ diff --git a/content/installation/linux/images/multiple-node-multiple-disk.jpg b/content/installation/linux/images/multiple-node-multiple-disk.jpg deleted file mode 100644 index 346663e8..00000000 Binary files a/content/installation/linux/images/multiple-node-multiple-disk.jpg and /dev/null differ diff --git a/content/installation/linux/images/single-node-multiple-disk.jpg b/content/installation/linux/images/single-node-multiple-disk.jpg deleted file mode 100644 index cc9943d2..00000000 Binary files a/content/installation/linux/images/single-node-multiple-disk.jpg and /dev/null differ diff --git a/content/installation/linux/images/single-node-single-disk.jpg b/content/installation/linux/images/single-node-single-disk.jpg deleted file mode 100644 index 872234a6..00000000 Binary files a/content/installation/linux/images/single-node-single-disk.jpg and /dev/null differ diff --git a/content/installation/macos/index.md b/content/installation/macos/index.md index bbfca02b..044d10e9 100644 --- a/content/installation/macos/index.md +++ b/content/installation/macos/index.md @@ -24,7 +24,7 @@ On macOS, you can use three methods for installation: ## 2. Download -Go to the official website download page and download the latest RustFS installation package. +Download the latest release from [GitHub Releases](https://github.com/rustfs/rustfs/releases) or the [official download page](https://rustfs.com/download/). ## 3. Modify Permissions diff --git a/content/installation/windows/index.md b/content/installation/windows/index.md index 60ec7932..20c21adc 100644 --- a/content/installation/windows/index.md +++ b/content/installation/windows/index.md @@ -17,7 +17,7 @@ Windows startup **mode** only supports single-node single-disk mode, more suitab ## 2. Download -Go to the official website download page and download the latest RustFS installation package. +Download the latest release from [GitHub Releases](https://github.com/rustfs/rustfs/releases) or the [official download page](https://rustfs.com/download/). ## 3. Modify Permissions diff --git a/content/management/object/images/object_details_info.png b/content/management/object/images/object_details_info.png index 2524e14d..d93dff4e 100644 Binary files a/content/management/object/images/object_details_info.png and b/content/management/object/images/object_details_info.png differ diff --git a/docs-review/reports/07-image-hygiene-manifest.md b/docs-review/reports/07-image-hygiene-manifest.md new file mode 100644 index 00000000..33cf53cb --- /dev/null +++ b/docs-review/reports/07-image-hygiene-manifest.md @@ -0,0 +1,90 @@ +# Image Hygiene Manifest + +Date: 2026-07-15 + +## Deleted unreferenced images (59 files, 3,603,522 bytes / 3519 KB reclaimed) + +Referenced set computed by scanning all `.md`/`.mdx` files under `content/` (plus `src/` and site config files) for `![](...)`, `src="..."`, plain image links, and any basename mention. Only files with zero references were deleted. + +| File | Size (bytes) | +|---|---:| +| content/about/images/office-location.png | 818,374 | +| content/features/ai/images/cloud-operations.png | 31,844 | +| content/features/ai/images/data-protection.png | 49,848 | +| content/features/ai/images/edge-ai-storage.png | 34,468 | +| content/features/ai/images/fault-tolerant-storage.png | 47,904 | +| content/features/ai/images/lifecycle-management.png | 21,278 | +| content/features/ai/images/llm-storage.png | 30,549 | +| content/features/ai/images/object-retention.png | 24,897 | +| content/features/ai/images/rag-storage.png | 23,855 | +| content/features/ai/images/reliable-storage.png | 23,855 | +| content/features/ai/images/training-inference-scale.png | 23,855 | +| content/features/commvault/images/atomic-metadata.png | 13,713 | +| content/features/commvault/images/commvault-logo.png | 9,376 | +| content/features/commvault/images/fast-performance.png | 8,184 | +| content/features/commvault/images/scalability.png | 62,632 | +| content/features/commvault/images/simple-secure.png | 14,367 | +| content/features/data-lake/images/decomposition.png | 485,557 | +| content/features/data-lake/images/elt-etl.png | 21,263 | +| content/features/data-lake/images/lightweight.png | 24,897 | +| content/features/data-lake/images/open-source.png | 485,557 | +| content/features/data-lake/images/rapid-growth.png | 39,682 | +| content/features/data-lake/images/resilience.png | 17,268 | +| content/features/data-lake/images/security.png | 560,723 | +| content/features/data-lake/images/simplicity.png | 35,193 | +| content/features/data-lake/images/software-defined.png | 22,564 | +| content/features/domestic/images/arrow.png | 2,203 | +| content/features/domestic/images/icon-1.png | 2,236 | +| content/features/domestic/images/icon-2.png | 3,853 | +| content/features/domestic/images/icon-3.png | 3,222 | +| content/features/domestic/images/icon-4.png | 1,098 | +| content/features/domestic/images/item-1.png | 25,654 | +| content/features/domestic/images/item-2.png | 32,252 | +| content/features/domestic/images/item-3.png | 37,860 | +| content/features/integration/images/integration-hero.svg | 1,269 | +| content/features/lifecycle/images/s9-1.png | 31,844 | +| content/features/quantitative-trading/images/ai-factor-mining.png | 27,890 | +| content/features/quantitative-trading/images/files-icon.png | 1,083 | +| content/features/quantitative-trading/images/hft-strategy.png | 39,902 | +| content/features/quantitative-trading/images/regulatory-compliance.png | 26,356 | +| content/features/quantitative-trading/images/scaling-icon.png | 1,069 | +| content/features/quantitative-trading/images/security-icon.png | 3,222 | +| content/features/quantitative-trading/images/speed-icon.png | 2,661 | +| content/features/s3-compatibility/images/s1-1.png | 41,968 | +| content/features/s3-compatibility/images/s1-2.png | 37,201 | +| content/features/small-file/images/memory-optimization.png | 37,955 | +| content/features/veeam/images/backup-performance.png | 14,367 | +| content/features/veeam/images/backup-restore.png | 7,493 | +| content/features/veeam/images/hardware-agnostic.png | 13,713 | +| content/features/veeam/images/inline-consistency.png | 8,184 | +| content/features/veeam/images/metadata-advantage.png | 62,632 | +| content/features/veeam/images/veeam-logo.png | 8,557 | +| content/features/versioning/images/versioning-overview.png | 26,894 | +| content/features/video/images/item-1.png | 755 | +| content/features/video/images/item-2.png | 2,148 | +| content/features/video/images/item-3.png | 1,145 | +| content/features/video/images/item-4.png | 1,800 | +| content/installation/linux/images/multiple-node-multiple-disk.jpg | 111,502 | +| content/installation/linux/images/single-node-multiple-disk.jpg | 33,163 | +| content/installation/linux/images/single-node-single-disk.jpg | 18,668 | + +## Resized referenced images (>300 KB, width >1600px, `sips --resampleWidth 1600`) + +| File | Width before | Bytes before | Bytes after | Note | +|---|---:|---:|---:|---| +| content/installation/linux/images/console.jpg | 3782 | 325,340 | 324,678 | still >300 KB after resize (JPEG, dense screenshot) | +| content/management/object/images/object_details_info.png | 3004 | 350,027 | 181,391 | now under 300 KB | + +## Referenced images still >300 KB but not resized (width <= 1600px, left untouched per policy) + +| File | Width | Bytes | +|---|---:|---:| +| content/about/images/vision-values.png | 1282 | 1,408,094 | +| content/features/ai/images/ai-performance.png | 1040 | 799,170 | +| content/features/cloud-native/images/multi-cloud-architecture.png | 1416 | 987,713 | +| content/features/data-lake/images/data-lake-architecture.png | 1440 | 351,922 | +| content/features/industry/images/cold-backup-solution.png | 1008 | 307,914 | +| content/features/industry/images/multi-cloud-solution.png | 1008 | 323,330 | +| content/features/industry/images/ssd-hdd-solution.png | 1008 | 323,929 | +| content/features/video/images/solution.png | 1320 | 533,392 | +| content/installation/linux/images/console.jpg | 3782->1600 | 324,678 (after resize) | diff --git a/package.json b/package.json index ad2b06ee..8cfef2cd 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "dev": "waku dev", "build": "waku build", "start": "waku start", - "types:check": "fumadocs-mdx && tsc --noEmit" + "types:check": "fumadocs-mdx && tsc --noEmit", + "docs:check": "node scripts/docs-check.mjs" }, "dependencies": { "@base-ui/react": "^1.6.0", diff --git a/scripts/docs-check.mjs b/scripts/docs-check.mjs new file mode 100644 index 00000000..d0567f37 --- /dev/null +++ b/scripts/docs-check.mjs @@ -0,0 +1,184 @@ +#!/usr/bin/env node +/** + * docs-check.mjs — lightweight documentation hygiene checks for content/. + * + * Checks: + * 1. Orphan pages — .md/.mdx files not referenced by any meta.json + * (and not an index.md of a referenced folder) + * 2. Broken links — relative .md links pointing to nonexistent files + * 3. Code fences — fenced code blocks without a language + * 4. Banned strings — placeholder IPs, fake regions, leaked paths, marketing claims + * 5. Large images — referenced images larger than 300 KB + * + * No external dependencies. Exits non-zero if any check fails. + */ + +import fs from 'node:fs'; +import path from 'node:path'; + +const ROOT = path.resolve(path.dirname(new URL(import.meta.url).pathname), '..'); +const CONTENT = path.join(ROOT, 'content'); + +const BANNED_STRINGS = [ + '12.34.56.78', + 'cn-east-1', + 'password.txt', + '100% S3', + '100% secure', + 'rustfs-admin', + '/Users/jhma', +]; + +const IMAGE_SIZE_LIMIT = 300 * 1024; // 300 KB + +// ---------- helpers ---------- + +function walk(dir, out = []) { + for (const entry of fs.readdirSync(dir, { withFileTypes: true })) { + const full = path.join(dir, entry.name); + if (entry.isDirectory()) walk(full, out); + else out.push(full); + } + return out; +} + +const allFiles = walk(CONTENT); +const mdFiles = allFiles.filter((f) => /\.(md|mdx)$/.test(f)); +const metaFiles = allFiles.filter((f) => path.basename(f) === 'meta.json'); + +const rel = (f) => path.relative(ROOT, f); + +// ---------- check 1: orphan pages ---------- + +const referencedPages = new Set(); // absolute paths of referenced .md files +const referencedFolders = new Set(); // absolute paths of referenced folders + +// content/index.md is the site root; folders that own a meta.json count as referenced. +referencedFolders.add(CONTENT); + +for (const metaFile of metaFiles) { + let meta; + try { + meta = JSON.parse(fs.readFileSync(metaFile, 'utf8')); + } catch { + continue; + } + const pages = Array.isArray(meta.pages) ? meta.pages : []; + for (const entry of pages) { + if (typeof entry !== 'string') continue; + if (/^---.*---$/.test(entry)) continue; // separator + const link = entry.match(/\]\((\/[^)]+)\)/); // [Title](/url) + if (link) { + const url = link[1].replace(/[#?].*$/, ''); + const base = path.join(CONTENT, url); + referencedPages.add(`${base}.md`); + referencedPages.add(`${base}.mdx`); + referencedPages.add(path.join(base, 'index.md')); + referencedPages.add(path.join(base, 'index.mdx')); + } else if (!entry.startsWith('[')) { + // bare folder/page ref, relative to the meta.json's folder (root meta uses content/) + const base = path.resolve(path.dirname(metaFile), entry); + referencedFolders.add(base); + referencedPages.add(`${base}.md`); + referencedPages.add(`${base}.mdx`); + } + } +} + +const orphans = []; +for (const file of mdFiles) { + if (referencedPages.has(file)) continue; + if (/^index\.(md|mdx)$/.test(path.basename(file)) && referencedFolders.has(path.dirname(file))) { + continue; + } + orphans.push(rel(file)); +} + +// ---------- per-file scans (checks 2–5) ---------- + +const brokenLinks = []; +const bareFences = []; +const bannedHits = []; +const largeImages = []; +const seenLargeImages = new Set(); + +for (const file of mdFiles) { + const text = fs.readFileSync(file, 'utf8'); + const lines = text.split('\n'); + const dir = path.dirname(file); + + // code fences without language + let inFence = false; + lines.forEach((line, i) => { + const fence = line.match(/^\s*(```+|~~~+)(.*)$/); + if (!fence) return; + if (inFence) { + inFence = false; + } else { + inFence = true; + if (fence[2].trim() === '') bareFences.push(`${rel(file)}:${i + 1}`); + } + }); + + // banned strings + lines.forEach((line, i) => { + for (const banned of BANNED_STRINGS) { + if (line.includes(banned)) bannedHits.push(`${rel(file)}:${i + 1} contains "${banned}"`); + } + }); + + // relative .md links: [text](path.md) — skip http(s), absolute, and anchors + for (const m of text.matchAll(/\]\(([^)\s]+?\.mdx?)(?:#[^)]*)?\)/g)) { + const target = m[1]; + if (/^(https?:)?\/\//.test(target) || target.startsWith('/')) continue; + const resolved = path.resolve(dir, decodeURIComponent(target)); + if (!fs.existsSync(resolved)) brokenLinks.push(`${rel(file)} -> ${target}`); + } + + // referenced images + const imageRefs = [ + ...text.matchAll(/!\[[^\]]*\]\(([^)\s]+)\)/g), + ...text.matchAll(/src=["']([^"']+)["']/g), + ]; + for (const m of imageRefs) { + const target = m[1]; + if (/^(https?:)?\/\//.test(target) || target.startsWith('data:')) continue; + const resolved = target.startsWith('/') + ? path.join(ROOT, 'public', target) + : path.resolve(dir, decodeURIComponent(target)); + if (!fs.existsSync(resolved) || seenLargeImages.has(resolved)) continue; + const size = fs.statSync(resolved).size; + if (size > IMAGE_SIZE_LIMIT) { + seenLargeImages.add(resolved); + largeImages.push(`${rel(resolved)} (${(size / 1024).toFixed(0)} KB, referenced by ${rel(file)})`); + } + } +} + +// ---------- report ---------- + +let failed = false; + +function report(title, items) { + if (items.length === 0) { + console.log(`PASS ${title}`); + return; + } + failed = true; + console.log(`FAIL ${title} (${items.length})`); + for (const item of items.sort()) console.log(` - ${item}`); +} + +console.log(`docs-check: scanned ${mdFiles.length} pages, ${metaFiles.length} meta.json files\n`); +report('Orphan pages (not referenced by any meta.json)', orphans); +report('Broken relative .md links', brokenLinks); +report('Code fences without a language', bareFences); +report('Banned strings', bannedHits); +report(`Referenced images larger than ${IMAGE_SIZE_LIMIT / 1024} KB`, largeImages); + +console.log(''); +if (failed) { + console.log('docs-check: FAILED'); + process.exit(1); +} +console.log('docs-check: OK');