Mount JuiceFS at Boot Time
Linux
Copy juicefs
as /sbin/mount.juicefs
, then edit /etc/fstab
with following line:
<META-URL> <MOUNTPOINT> juicefs _netdev[,<MOUNT-OPTIONS>] 0 0
For the format of <META-URL>
, please refer to the "How to Set Up Metadata Engine" document, such as redis://localhost:6379/1
. Then replace <MOUNTPOINT>
with the path you want JuiceFS to mount, e.g. /jfs
. If you want to set mount options, separate the options list with commas and replace [,<MOUNT-OPTIONS>]
. Here is an example:
redis://localhost:6379/1 /jfs juicefs _netdev,max-uploads=50,writeback,cache-size=204800 0 0
By default, CentOS 6 will NOT mount network file system after boot, run following command to enable it:
sudo chkconfig --add netfs
Automating Mounting with systemd.mount
If you're using JuiceFS and need to apply settings like database access password, S3 access key, and secret key, which are hidden from the command line using environment variables for security reason, it may not be easy to configure them in the /etc/fstab
file. In such cases, you can utilize systemd to mount your JuiceFS instance.
Here's how you can set up your systemd configuration file:
Create the file
/etc/systemd/system/juicefs.mount
and add the following content:[Unit]
Description=Juicefs
Before=docker.service
[Mount]
Environment="ALICLOUD_ACCESS_KEY_ID=mykey" "ALICLOUD_ACCESS_KEY_SECRET=mysecret" "META_PASSWORD=mypassword"
What=mysql://juicefs@(mysql.host:3306)/juicefs
Where=/juicefs
Type=juicefs
Options=_netdev,allow_other,writeback_cache
[Install]
WantedBy=remote-fs.target
WantedBy=multi-user.targetFeel free to modify the options and environments according to your needs.
Enable and start the JuiceFS mount using the following commands:
ln -s /usr/local/bin/juicefs /sbin/mount.juicefs
systemctl enable juicefs.mount
systemctl start juicefs.mount
After completing these steps, you will be able to access /juicefs
and store your files there.
macOS
Create a file named io.juicefs.<NAME>.plist
under ~/Library/LaunchAgents
. Replace <NAME>
with JuiceFS file system name. Add following contents to the file (again, replace NAME
, PATH-TO-JUICEFS
, META-URL
, MOUNTPOINT
and MOUNT-OPTIONS
with appropriate value):
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>io.juicefs.NAME</string>
<key>ProgramArguments</key>
<array>
<string>PATH-TO-JUICEFS</string>
<string>mount</string>
<string>META-URL</string>
<string>MOUNTPOINT</string>
<string>MOUNT-OPTIONS</string>
</array>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
If there are multiple mount options, they can be set in multiple lines, for example:
<string>--max-uploads</string>
<string>50</string>
<string>--cache-size</string>
<string>204800</string>
Use following commands to load the file created in the previous step and test whether the loading is successful. Please make sure the metadata engine is running properly.
launchctl load ~/Library/LaunchAgents/io.juicefs.<NAME>.plist
launchctl start ~/Library/LaunchAgents/io.juicefs.<NAME>
ls <MOUNTPOINT>
If mount failed, you can add following configuration to io.juicefs.<NAME>.plist
file for debug purpose:
<key>StandardOutPath</key>
<string>/tmp/juicefs.out</string>
<key>StandardErrorPath</key>
<string>/tmp/juicefs.err</string>
Use following commands to reload the latest configuration and inspect the output:
launchctl unload ~/Library/LaunchAgents/io.juicefs.<NAME>.plist
launchctl load ~/Library/LaunchAgents/io.juicefs.<NAME>.plist
cat /tmp/juicefs.out
cat /tmp/juicefs.err
If you install Redis server by Homebrew, you could use following command to start it at boot:
brew services start redis
Then add following configuration to io.juicefs.<NAME>.plist
file for ensure Redis server is loaded:
<key>KeepAlive</key>
<dict>
<key>OtherJobEnabled</key>
<string>homebrew.mxcl.redis</string>
</dict>