Skip to content

RustFS

๐Ÿš€2.3x faster than MinIO for 4KB object payloads. RustFS is an open-source, S3-compatible high-performance object storage system supporting migration and coexistence with other S3-compatible platforms such as MinIO and Ceph.

Installing RustFS with Docker

RustFS๋Š” ๊ณ ์„ฑ๋Šฅ์˜ 100% S3 ํ˜ธํ™˜ ์˜คํ”ˆ ์†Œ์Šค ๋ถ„์‚ฐ ๊ฐ์ฒด ์Šคํ† ๋ฆฌ์ง€ ์‹œ์Šคํ…œ์ž…๋‹ˆ๋‹ค.

๋‹จ์ผ ๋…ธ๋“œ ๋‹จ์ผ ๋””์Šคํฌ(SNSD) ๋ฐฐํฌ ๋ชจ๋“œ์—์„œ ๋ฐฑ์—”๋“œ๋Š” ์ถ”๊ฐ€์ ์ธ ๋ฐ์ดํ„ฐ ์ค‘๋ณต ์—†์ด ์ œ๋กœ ์ด๋ ˆ์ด์ € ์ฝ”๋”ฉ์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ ๋กœ์ปฌ ํ…Œ์ŠคํŠธ ๋ฐ ์†Œ๊ทœ๋ชจ ์‹œ๋‚˜๋ฆฌ์˜ค์— ์ ํ•ฉํ•ฉ๋‹ˆ๋‹ค.

์ด ๋ฌธ์„œ์—์„œ๋Š” RustFS ๊ณต์‹ Linux ๋ฐ”์ด๋„ˆ๋ฆฌ ํŒจํ‚ค์ง€๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ, ์‚ฌ์šฉ์ž ์ •์˜ Dockerfile์„ ํ†ตํ•ด RustFS์™€ ๋Ÿฐํƒ€์ž„ ํ™˜๊ฒฝ์„ ์ปจํ…Œ์ด๋„ˆ๋กœ ํŒจํ‚ค์ง•ํ•˜๊ณ , ์›ํด๋ฆญ ์„œ๋น„์Šค ์‹œ์ž‘์„ ์œ„ํ•ด ๋ฐ์ดํ„ฐ ๋ณผ๋ฅจ ๋ฐ ํ™˜๊ฒฝ ๋ณ€์ˆ˜๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•ฉ๋‹ˆ๋‹ค.

ํ•„์ˆ˜ ์กฐ๊ฑด

  1. ํ˜ธ์ŠคํŠธ ์š”๊ตฌ ์‚ฌํ•ญ
    • Docker๊ฐ€ ์„ค์น˜๋˜์–ด ์žˆ๊ณ (20.10 ์ด์ƒ) ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•˜๊ณ  ์ปจํ…Œ์ด๋„ˆ๋ฅผ ์ •์ƒ์ ์œผ๋กœ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
    • /mnt/rustfs/data ๊ฐ์ฒด ๋ฐ์ดํ„ฐ๋ฅผ ๋งˆ์šดํŠธํ•˜๊ธฐ ์œ„ํ•œ ๋กœ์ปฌ ๊ฒฝ๋กœ (๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ๊ฒฝ๋กœ)
  2. ๋„คํŠธ์›Œํฌ ๋ฐ ๋ฐฉํ™”๋ฒฝ
  • ํ˜ธ์ŠคํŠธ ํฌํŠธ 9000์ด ์™ธ๋ถ€์—์„œ ์ ‘๊ทผ ๊ฐ€๋Šฅํ•˜๋„๋ก ์—ด๋ ค ์žˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค (๋˜๋Š” ์‚ฌ์šฉ์ž ์ง€์ • ํฌํŠธ์™€ ์ผ์น˜ํ•˜๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค).
  1. ๊ตฌ์„ฑ ํŒŒ์ผ ์ค€๋น„
    • ํ˜ธ์ŠคํŠธ์—์„œ ์ˆ˜์‹  ํฌํŠธ, ๊ด€๋ฆฌ์ž ๊ณ„์ •, ๋ฐ์ดํ„ฐ ๊ฒฝ๋กœ ๋“ฑ์„ ์ •์˜ํ•˜์‹ญ์‹œ์˜ค /etc/rustfs/config.toml
  2. RustFS ์ปจํ…Œ์ด๋„ˆ๋Š” ๋ฃจํŠธ๊ฐ€ ์•„๋‹Œ rustfs ์‚ฌ์šฉ์ž ID (10001) ๋กœ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. Docker๋ฅผ ์‹คํ–‰ํ•˜์—ฌ ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ๋ฅผ Docker ์ปจํ…Œ์ด๋„ˆ์— ๋งˆ์šดํŠธํ•˜๋Š” ๊ฒฝ์šฐ -v, ํ˜ธ์ŠคํŠธ ๋””๋ ‰ํ† ๋ฆฌ์˜ ์†Œ์œ ์ž๊ฐ€ 10001๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ๋Š”์ง€ ํ™•์ธํ•˜์‹ญ์‹œ์˜ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ถŒํ•œ ๊ฑฐ๋ถ€ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

์ „์ฒด ๋งค๊ฐœ๋ณ€์ˆ˜ ๊ตฌ์„ฑ ์˜ˆ์‹œ

docker run -d \
  --name rustfs_container \
  -p 9000:9000 \
  -p 9001:9001 \
  -v /mnt/rustfs/data:/data \
  -e RUSTFS_ACCESS_KEY=rustfsadmin \
  -e RUSTFS_SECRET_KEY=rustfsadmin \
  -e RUSTFS_CONSOLE_ENABLE=true \
  -e RUSTFS_SERVER_DOMAINS=example.com \
  rustfs/rustfs:latest \
  --address :9000 \
  --console-enable \
  --server-domains example.com \
  --access-key rustfsadmin \
  --secret-key rustfsadmin \
  /data

Caddy ์‚ฌ์šฉ์‹œ /health ์ ‘๊ทผ ๊ธˆ์ง€

Caddyfile ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ ์šฉ:

rustfs.you.domain.com {
    @health path /health
    respond @health 404
    reverse_proxy 127.0.0.1:9000
}

docker compose ์—์„œ ๋ฒ„ํ‚ท ์ƒ์„ฑํ•˜๋Š” ๋ฐฉ๋ฒ•

docker compose run --rm --entrypoint sh createbucket -c "
  aws --endpoint-url http://rustfs:9000 s3 mb s3://datasets;
  aws --endpoint-url http://rustfs:9000 s3 mb s3://registry"

Troubleshooting

RequestTimeTooSkewed

{"ok":false,"code":"INVALID_CREDENTIALS","message":"S3 list failed: 403 <?xml version=\"1.0\" encoding=\"UTF-8\"?><Error><Code>RequestTimeTooSkewed</Code><Message>request time is too far from server time</Message></Error>"}

์ž๊ฒฉ ์ฆ๋ช… ๋ฌธ์ œ๊ฐ€ ์•„๋‹ˆ๋ผ ์‹œ๊ณ„ ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.

<Code>RequestTimeTooSkewed</Code><Message>request time is too far from server time</Message>

SigV4๋Š” ์„œ๋ช…์— ๋“ค์–ด๊ฐ„ X-Amz-Date์™€ ์„œ๋ฒ„ ์‹œ๊ฐ์˜ ์ฐจ์ด๊ฐ€ ยฑ15๋ถ„์„ ๋„˜์œผ๋ฉด ์š”์ฒญ์„ 403์œผ๋กœ ๊ฑฐ๋ถ€ํ•ฉ๋‹ˆ๋‹ค. ์ฆ‰, ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋ชจ๋‘ ์ •์ƒ์œผ๋กœ ๋งŒ๋“ค๋ฉด ๋œ๋‹ค.

List of Object Storage Softwares

Favorite site