22 Mar How to mount an Oracle Object Storage Bucket as File System on a Linux VM
This will be a blog post mostly for me on how to mount an Oracle Object Storage on an OCI VM system, as I want to have the steps at my hand.
Create Object Storage Bucket
So the first thing to do is create the Object Storage, you can do this by going to the Hamburger Menu –> Storage–>Object Storage & Archive Storage. Once in that location, select the compartment and click on Create Bucket
When you get to the create page, select a name, which in my case is bucket-rene-ace. I have also selected Auto Tiering to bring down the costs of my bucket for OCI to move infrequently used objects to a lower-tiered storage.
Now that the bucket is created, be sure to copy the namespace as I you will be needing it when mounting the storage bucket.
After I created the Object Storage Bucket, I need to install the package s3fs-fuse in my VM.
[opc@instance-20230321-1244 ~]$ sudo yum install automake fuse fuse-devel gcc-c++ git libcurl-devel libxml2-devel make openssl-devel -y Ksplice for Oracle Linux 8 (x86_64) 8.4 MB/s | 2.0 MB 00:00 MySQL 8.0 for Oracle Linux 8 (x86_64) 12 MB/s | 2.8 MB 00:00 ... Complete!
Once I have installed the packages above, I will download s3fs-fuse from git and install it.
[opc@instance-20230321-1244 ~]$ git clone https://github.com/s3fs-fuse/s3fs-fuse.git Cloning into 's3fs-fuse'... remote: Enumerating objects: 8950, done. remote: Counting objects: 100% (206/206), done. remote: Compressing objects: 100% (125/125), done. remote: Total 8950 (delta 117), reused 141 (delta 77), pack-reused 8744 Receiving objects: 100% (8950/8950), 5.38 MiB | 6.97 MiB/s, done. Resolving deltas: 100% (6360/6360), done. [opc@instance-20230321-1244 ~]$ cd s3fs-fuse [opc@instance-20230321-1244 s3fs-fuse]$ ./autogen.sh --- Make commit hash file ------- ... [opc@instance-20230321-1244 s3fs-fuse]$ ./configure checking build system type... x86_64-pc-linux-gnu checking host system type... x86_64-pc-linux-gnu ... [opc@instance-20230321-1244 s3fs-fuse]$ make make all-recursive make: Entering directory '/home/opc/s3fs-fuse' Making all in src ... [opc@instance-20230321-1244 s3fs-fuse]$ sudo make install ... Making install in src make: Entering directory '/home/opc/s3fs-fuse/src' make: Entering directory '/home/opc/s3fs-fuse/src' [opc@instance-20230321-1244 s3fs-fuse]# ls /usr/local/bin/s3fs /usr/local/bin/s3fs
Create Customer Secret Key for s3fs MOUNT
After installing s3fs, I need to create the customer secret key that will be utilized for accessing the Object Storage. For that, I need to go to my profile
I will click on Customer Secret Keys and then Generate Secret Key
I give it the name of reneace-bucket, and it will generate a Key, make sure to copy that key off to the side.When the secret is generated, copy the Access Key off to the side as well.
CREATE A PASSWORD FILE TO MOUNT WITH S3FS
Back to the VM, I create a password file called passwd-reneace-s3fs that will have the Access Key and the Secret Key generated above, separated by a semicolon.
<Access Key>: <Secret Key>
[opc@instance-20230321-1244 ~]$ vi .passwd-reneace-s3fs [opc@instance-20230321-1244 ~]$ chmod 600 .passwd-reneace-s3fs [opc@instance-20230321-1244 ~]$ cat .passwd-reneace-s3fs 393**************************:zuLey1******************P4
MOUNT The OBJECT STORAGE BUCKET WITH S3FS
I now have everything in place to mount my object storage in my VM , you need to use the following nomenclature to be able to mount your Object Storage. I also added the entry in fstab, so that it is mounted when the VM is rebooted
sudo s3fs <bucket_name> <local_path> -o endpoint=<oci_region_name> -o passwd_file=.passwd-s3fs -o url=https://<object_storage_namespace>.compat.objectstorage.<oci_region_name>.oraclecloud.com/ -onomultipart -o use_path_request_style.
[opc@instance-20230321-1244 ~]$ sudo /usr/local/bin/s3fs bucket-rene-ace /home/opc/reneace_bucket/ -o endpoint=ca-toronto-1 -o passwd_file=.passwd-reneace-s3fs -o url=https://yz2****.compat.objectstorage.ca-toronto-1.oraclecloud.com/ -onomultipart -o use_path_request_style -o allow_other[opc@instance-20230321-1244 ~]$ cd reneace_bucket [opc@instance-20230321-1244 reneace_bucket]$ ls [opc@instance-20230321-1244 reneace_bucket]$ echo "Hello Bucket" > hello.txt [opc@instance-20230321-1244 reneace_bucket]$ cat hello.txt Hello Bucket [opc@instance-20230321-1244 ~]$ cat /etc/fstab | grep bucket s3fs#bucket-rene-ace /home/opc/reneace_bucket fuse _netdev,allow_other,nomultipart,use_path_request_style,passwd_file=/home/opc/.passwd-reneace-s3fs,url=https://yz2*******.compat.objectstorage.ca-toronto-1.oraclecloud.com/ 0 0
And as you can see, now I have the file I created above in my Object Storage Bucket.
The steps are not complex, but I just wanted to have them in one place. I hope they help you if you ever run into this post.