ããã¯ããªã«ãããããŠæžãããã®ïŒ
Amazon S3ãã±ããããã¡ã€ã«ã·ã¹ãã ã«ããŠã³ã䜿ããããšæãããšãããã®ã§ãããs3fsãã¡ãã£ãšè©ŠããŠãããããªãšæããŸããŠã
ãªã¢ãŒãã®ã¹ãã¬ãŒãžããã¡ã€ã«ã·ã¹ãã ãšããŠããŠã³ãããŠããããäœæ¥ã¯ãããããšããæã®éžæè¢ãšããŠã¯NFSããªãšæãã®ã§ããã
ã¡ãã£ãšé¢åãªã®ã§ãæ§èœãå¯çšæ§ãæ±ããããŠããªããã°ãAmazon S3äºæã®ã¹ãã¬ãŒãžããã¡ã€ã«ã·ã¹ãã ãšããŠããŠã³ãããã®ã
ããããªãšã
Amazon S3ãã±ãããããŠã³ãããéžæè¢
Amazon S3ãã±ãããããŠã³ãããéžæè¢ãšããŠã¯ã以äžããããŸãã
- Mountpoint for Amazon S3
- s3fs
- Goofys
äžèŠãAWSã®æäŸããMountpoint for Amazon S3ãããã®ããªãšæãã®ã§ããã
Mountpoint for Amazon S3 – 一般公開されており、本番環境のワークロードにも対応可能 | Amazon Web Services ブログ
Mountpoint for Amazon S3 の使用 - Amazon Simple Storage Service
çŸæç¹ã®ææ°çã§ããv1.5.0ã«ãããŠãå€æŽæäœã¯ãµããŒããããŠããªãã®ã§ãã¡ãã£ãšåŸ®åŠã§ãã
but probably not the right fit for applications that:
ã»use file operations that S3 doesn't natively support, like directory renaming or symlinks
ã»make edits to existing files (don't work on your Git repository or run vim in Mountpoint ð)
https://github.com/awslabs/mountpoint-s3/blob/v1.5.0/README.md
Goofysã«ã€ããŠã¯ããã§ã«éçºãæ¢ãŸã£ãŠããæ§åã§ãã
s3fsã¯ãŸã ãŸã éçºãç¶ããŠããããªã®ãšããã¡ã€ã«ã®å€æŽãªã©ãã§ãããã ã£ãã®ã§ä»åã¯ãã¡ãã«ããŸãã
ãŸããAmazon S3ã®ä»£ããã«MinIOãããŠã³ãããããšæããŸãã
MinIO | S3 & Kubernetes Native Object Storage for AI
s3fs
s3fsã¯ãLinuxãmacOSããã³FreeBSDã§FUSEïŒãŠãŒã¶ãŒç©ºéã®ãã¡ã€ã«ã·ã¹ãã ïŒçµç±ã§Amazon S3ãã±ãããããŠã³ãã§ãããã®ã§ãã
GitHub - s3fs-fuse/s3fs-fuse: FUSE-based file system backed by Amazon S3
s3fsã®ç¹åŸŽã¯ãã¡ãã
- ãã¡ã€ã«ããã£ã¬ã¯ããªãã·ã³ããªãã¯ãªã³ã¯ãã¢ãŒããuidïŒgidãæ¡åŒµå±æ§ã®èªã¿åãïŒæžã蟌ã¿ãå«ãPOSIXã®ãµãã»ãã
- Amazon S3ããã³ãã®ä»Amazon S3ããŒã¹ã®ãªããžã§ã¯ã ã¹ãã¢ãšã®äºææ§
- ã©ã³ãã æžã蟌ã¿ããã³è¿œèšãå¯èœ
- 倧ããªãã¡ã€ã«ã®ãã«ãããŒãã¢ããããŒããå¯èœ
- ãªããŒã ãå¯èœïŒãµãŒããŒãµã€ãã®ã³ããŒãå©çšïŒ
- ãªãã·ã§ã³ã§ãµãŒããŒãµã€ãæå·åãå¯èœ
- MD5ããã·ã¥ã«ããããŒã¿ã®æŽåæ§ç¢ºèª
- ã€ã³ã¡ã¢ãªãŒã¡ã¿ããŒã¿ãã£ãã·ã¥
- ããŒã«ã«ãã£ã¹ã¯ããŒã¿ãã£ãã·ã¥
- ãŠãŒã¶ãŒæå®ã®ãªãŒãžã§ã³ã®å©çšïŒAmazon GovCloudãå«ãïŒ
- v2ãŸãã¯v4眲åã«ããèªèšŒ
ã€ã³ã¹ããŒã«æ¹æ³ãšããŠããOSã®ããã±ãŒãžç®¡çã·ã¹ãã çã§ç°¡åã«ã€ã³ã¹ããŒã«å¯èœãªããã§ãã
- Amazon Linux
- Arch Linux
- DebianïŒUbuntu Linux
- Fedora
- Gentoo
- RHELïŒCentOS
- SUSEïŒopenSUSE
- macOSïŒHomebrewïŒ
- FreeBSD
WindowsãèšèŒã¯ãããŸãããã³ã³ãã€ã«ããããšã«ãªãããã§ãã
äžæ¹ã§ã以äžã®ãããªå¶éäºé ããããŸãã
- ãã¡ã€ã«ãžã®ã©ã³ãã æžã蟌ã¿ãŸãã¯è¿œèšã¯ããªããžã§ã¯ãå šäœã®æžãæããšãªããã«ãããŒãã¢ããããŒãããã
- ãããã¯ãŒã¯ç°å¢ã«ãã£ãŠã¯ããã£ã¬ã¯ããªã®ãªã¹ãã£ã³ã°ãªã©ã¡ã¿ããŒã¿æäœã®ããã©ãŒãã³ã¹ãäœäžãã
- AWS以å€ã®ãããã€ããŒã®å Žåã§çµææŽåæ§ã䜿ã£ãŠãããã®ã¯ãäžæçã«å€ãããŒã¿ãèŠããããšããã
- ãã¡ã€ã«ããã£ã¬ã¯ããªãã¢ãããã¯ã«ãªããŒã ã§ããªã
- åããã±ãããããŠã³ãããã¯ã©ã€ã¢ã³ãéã§ã®èª¿æŽã¯è¡ãããªã
- ããŒããªã³ã¯ã¯ãµããŒãããªã
- inotifyã¯ããŒã«ã«ã®å€æŽã®ã¿ãæ€åºããä»ã®ã¯ã©ã€ã¢ã³ããããŒã«ã«ããå€æŽãæ€åºããªã
ãšããããã§ãå€æŽãå¯èœã ãšãã£ãŠããªããžã§ã¯ãã¹ãã¬ãŒãžãšããæ§è³ªäžããã©ãŒãã³ã¹çã«ã¯äžå©ã ã£ãããè€æ°ã®ã¢ã¯ã»ã¹ã«å¯Ÿãã
調æŽã¯è¡ãããªããšãã£ããããã泚æç¹ã§ããã
NFSçã䜿ã£ãŠãçžå¿ã«ãã¬ãŒããªãã¯ãããŸããã
ããã¥ã¡ã³ãã¯ãã¡ãã
Home · s3fs-fuse/s3fs-fuse Wiki · GitHub
ããŒã¹ãšãªãAmazon S3ã§ã®äœ¿ãæ¹ãèšå®ã¯ãã¡ãã§ããã
Fuse Over Amazon · s3fs-fuse/s3fs-fuse Wiki · GitHub
åçš®Amazon S3äºæã®ãªããžã§ã¯ãã¹ãã¬ãŒãžã§ã®äœ¿ãæ¹ãæžãããŠããŸãã
Non Amazon S3 · s3fs-fuse/s3fs-fuse Wiki · GitHub
FAQãèŠãŠãããæ¹ãããã§ãããã
FAQ · s3fs-fuse/s3fs-fuse Wiki · GitHub
ã¡ãªã¿ã«ãGoogle Cloud Strorageåãã®ããŒãžããã£ããããŸãã
Google Cloud Storage · s3fs-fuse/s3fs-fuse Wiki · GitHub
ä»åã¯ããã¡ãã®s3fsã䜿ã£ãŠãããŸãã
ç°å¢
ä»åã®ç°å¢ã¯ããã¡ãã
$ lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 22.04.4 LTS Release: 22.04 Codename: jammy $ uname -srvmpio Linux 5.15.0-101-generic #111-Ubuntu SMP Tue Mar 5 20:16:58 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
ä»åã¯ãã®Ubuntu Linux 22.04 LTSã2ã€çšæããçæ¹ã«ã¯MinIOãã€ã³ã¹ããŒã«ããŠãããçæ¹ã«ã¯s3fsãã€ã³ã¹ããŒã«ããŠMinIOã
ãã¡ã€ã«ã·ã¹ãã ãšããŠããŠã³ãããŸãã
MinIOãã€ã³ã¹ããŒã«ããæ¹ã®ãµãŒããŒã®IPã¢ãã¬ã¹ã¯ã192.168.33.11ãšããŸãã
MinIOãã€ã³ã¹ããŒã«ãã
ãŸãã¯MinIOãã€ã³ã¹ããŒã«ããŸãã
MinIO | Code and downloads to create high performance object storage
$ curl -LO https://dl.min.io/server/minio/release/linux-amd64/minio_20240321231343.0.0_amd64.deb $ sudo dpkg -i minio_20240321231343.0.0_amd64.deb
ããŒãžã§ã³ã
$ minio --version minio version RELEASE.2024-03-21T23-13-43Z (commit-id=7fd76dbbb71eeba0dd1d7c16e7d96ec1a9deba52) Runtime: go1.21.8 linux/amd64 License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html> Copyright: 2015-2024 MinIO, Inc.
ããŒã¿çšã®ãã£ã¬ã¯ããªãäœæããŠèµ·åã
$ mkdir data $ MINIO_ROOT_USER=admin MINIO_ROOT_PASSWORD=password minio server data --console-address ":9001"
管çãŠãŒã¶ãŒã®ååãšãã¹ã¯ãŒãã¯ãããŠã³ããŒãããŒãžã®ãµã³ãã«ãšåãadmin
ïŒpassword
ãšããŸãã
MinIOã®ã¯ã©ã€ã¢ã³ããã€ã³ã¹ããŒã«ã
$ curl -LO https://dl.min.io/client/mc/release/linux-amd64/mcli_20240320210729.0.0_amd64.deb $ sudo dpkg -i mcli_20240320210729.0.0_amd64.deb
ããŒãžã§ã³ã
$ mcli --version mcli version RELEASE.2024-03-20T21-07-29Z (commit-id=9043bbf545d244b2dee9eefc5031d5dca1ccf78f) Runtime: go1.21.8 linux/amd64 Copyright (c) 2015-2024 MinIO, Inc. License GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
MinIOãµãŒããŒãžã®æ¥ç¶èšå®ãããŠããã±ãããäœæããŠãããŸãã
$ mcli alias set myminio http://localhost:9000 admin password $ mcli mb myminio/my-bucket
ãã¡ã€ã«ã®äœæãšã¢ããããŒãã
$ echo 'Hello World' > hello.txt $ mcli cp hello.txt myminio/my-bucket/hello.txt
MinIOã®æäœã¯ãããŸã§ã§ãã
s3fsãã€ã³ã¹ããŒã«ããŠMinIOã®ãã±ãããããŠã³ããã
ããã§ã¯ãs3fsãã€ã³ã¹ããŒã«ããŠMinIOã®ãã±ãããããŠã³ãããŸãããã
ãŸãã¯s3fsã®ã€ã³ã¹ããŒã«ã
$ sudo apt install s3fs
ãšãŠãç°¡åã«ã€ã³ã¹ããŒã«ã§ããŸããã
ããŒãžã§ã³ã
$ s3fs --version Amazon Simple Storage Service File System V1.90 (commit:unknown) with GnuTLS(gcrypt) Copyright (C) 2010 Randy Rizun <rrizun@gmail.com> License GPL2: GNU GPL version 2 <https://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law.
ãã«ããèŠãŠã¿ãŸãã
$ s3fs --help Usage: s3fs BUCKET:[PATH] MOUNTPOINT [OPTION]...
ãã±ããåã ãã§ã¯ãªãããã¹ãæå®ããŠããŠã³ãã§ãããã§ããã
ã§ã¯ãããã¥ã¡ã³ãã«ãããšããã«MinIOãžããŠã³ããæå®ããŠã¿ãŸãã
$ s3fs my-bucket -o url=http://192.168.33.11:9000 -o use_path_request_style s3fs: missing MOUNTPOINT argument. Usage: s3fs BUCKET:[PATH] MOUNTPOINT [OPTION]...
Non Amazon S3 · s3fs-fuse/s3fs-fuse Wiki · GitHub
ããŠã³ããã€ã³ãã®æå®ã足ããŸããããšãã©ããããã®ããŒãžã«ã¯ãªãã·ã§ã³ãäžå¿ã«èšèŒããŠããããã§ããã
ããŠã³ããã€ã³ããªããã£ã¬ã¯ããªãäœæããŠ
$ mkdir mountpoint
ããŠã³ãã
$ s3fs my-bucket mountpoint -o url=http://192.168.33.11:9000 -o use_path_request_style s3fs: could not determine how to establish security credentials.
ä»åºŠã¯ã¯ã¬ãã³ã·ã£ã«ããªããšèšãããŸãããããã¯ããã§ããã
ã¯ã¬ãã³ã·ã£ã«ã¯ã©ãã§æå®ããã®ã§ãããïŒãã®ãããã«æžããŠãããŸãã
- Examples
passwd_file
ã³ãã³ãã©ã€ã³ãªãã·ã§ã³AWS_ACCESS_KEY_ID
ããã³AWS_SECRET_ACCESS_KEY
ç°å¢å€æ°${HOME}/.aws/credentials
${HOME}/.passwd-s3fs
/etc/passwd-s3fs
ãã¡ã€ã«ã§æå®ããå Žåã¯ããã¡ã€ã«ã®ææè ã®ã¿ãã¢ã¯ã»ã¹å¯èœãªããã«èšå®ããå¿ èŠããããŸãã
$ echo 'admin:password' > $HOME/.passwd-s3fs $ chmod 600 $HOME/.passwd-s3fs
å床å®è¡ã
$ s3fs my-bucket mountpoint -o url=http://192.168.33.11:9000 -o use_path_request_style
ä»åºŠã¯ããŸããããŸããã
$ ll mountpoint åèš 5 drwx------ 1 xxxxx xxxxx 0 1æ 1 1970 ./ drwxr-x--- 5 xxxxx xxxxx 4096 3æ 23 21:50 ../ -rw-r----- 1 xxxxx xxxxx 12 3æ 23 21:49 hello.txt $ cat mountpoint/hello.txt Hello World
ãã¡ã€ã«ã®å€æŽãã§ããŸãã
$ echo 'Hello World!!' > mountpoint/hello.txt $ cat mountpoint/hello.txt Hello World!!
æ¢ãæ¹ã¯âŠããããªãã£ãã®ã§ããã»ã¹ãkill
ããŸããâŠã
ããã§1床ãã¯ã¬ãã³ã·ã£ã«ãåé€ããŠãããŸãã
$ rm .passwd-s3fs
OSã®èµ·åæã«ããŠã³ããã
OSã®èµ·åæã«ããŠã³ãããããã«ã¯ã以äžã®ããã«/etc/fstab
ã«è¿œèšããŸãã
my-bucket /path/to/mountpoint fuse.s3fs _netdev,allow_other,passwd_file=/path/to/.passwd-s3fs,use_path_request_style,url=http://[MinIOãåäœãããŠãããµãŒããŒ]:9000 0 0
è¿œèšåŸã¯OSãåèµ·åãããã以äžã®ã³ãã³ãã§åæ ããŸãã
$ sudo mount -a
ãããã«
Amazon S3äºæã®ãªããžã§ã¯ãã¹ãã¬ãŒãžMinIOããs3fsã§ããŠã³ãããŠã¿ãŸããã
ã¯ã¬ãã³ã·ã£ã«ã®æå®æ¹æ³ãç¬ç¹ïŒã ã£ãããããããã§ãç¹ã«å°ãããšãªãå°å ¥ã§ããŸããã
ãªããžã§ã¯ãã¹ãã¬ãŒãžãããŠã³ããããšãããšããã§æ³šæç¹ã¯ããã®ã§ããã䜿ãããšããã§ã¯äœ¿ããããšããããèŠããŠããããã§ããã