Thank you so much. I really 💕 linux. Especially community.
On Sunday, November 7, 2021 at 10:45:09 PM UTC+5:30 [email protected] 
wrote:

> Hello Jaimala,
>
> Ubuntu 20.04 uses systemd for startup scripts.
> Normally mounting can be done via /etc/fstab or 
> https://www.freedesktop.org/software/systemd/man/systemd.mount.html but 
> both variants have problems when using them for S3QL.
>
>
> So you should use a dedicated systemd service unit that has a 
> Conflicts=shutdown.target property and an increased TimeoutStopSec 
> property. With that it gets stopped before the system shuts down and does 
> not get killed prematurely by systemd (otherwise the file system will get 
> stopped while the system shuts down and you sometimes do not have enough 
> time stop the file system – S3QL can take quite some time to stop since it 
> needs to uploads all dirty blocks and its metadata to the cloud storage)
>
> Here is the service unit I am using (for a backend 
> "swiftks://my-backend-url" and a mount point /cloud/data):
> /lib/systemd/system/cloud-data.service
> [Unit]
> Description=Mount s3ql file system
> Requires=nss-lookup.target network.target time-sync.target
> After=nss-lookup.target network.target network-online.target 
> remote-fs-pre.target time-sync.target
> Conflicts=shutdown.target
> #ConditionPathIsDirectory=/cloud/data
>
> [Service]
> Type=notify
> #Type=simple
> ExecStartPre=/usr/local/sbin/pre-mount-cloud-data.sh
> ExecStart=/usr/bin/mount.s3ql --fg --systemd --log none --allow-other 
> --authfile /root/.s3ql/authinfo2 --keep-cache 
> --backend-options=tcp-timeout=20,domain=default --compress zlib-6 
> --max-cache-entries 65536 "swiftks://my-backend-url" "/cloud/data"
> ExecStop=/usr/bin/umount.s3ql "/cloud/data"
> LimitNOFILE=65936
> TimeoutStopSec=10min # <- increase when needed (big cache)
> TimeoutStartSec=10min # <- increase when needed (big file system) 
>
> [Install]
> WantedBy=multi-user.target
>
>
> This unit file references pre-mount-cloud-data.sh. That is a little script 
> that tries to repair the filesystem when it is needed. It is optional (just 
> remove the ExecStartPre line) but quite useful.
> /usr/local/sbin/pre-mount-cloud-data.sh
> #!/bin/bash
>
> # Check for a crashed S3QL
> if ls "/cloud/data" 2>&1 | grep -Fq 'Transport endpoint is not connected'; 
> then
>   fusermount -u "/cloud/data"
> fi
>
> # Check and mount file system
> echo executing fsck.s3ql --batch --log none --authfile 
> /root/.s3ql/authinfo2 --keep-cache 
> --backend-options=tcp-timeout=20,domain=default  "swiftks://my-backend-url"
> /usr/bin/fsck.s3ql --batch --log none --authfile /root/.s3ql/authinfo2 
> --keep-cache --backend-options=tcp-timeout=20,domain=default  
> "swiftks://my-backend-url"
> FSCK_RESULT=$?
> if [[ $FSCK_RESULT != 0 && $FSCK_RESULT != 128 ]]; then
>   echo "fsck.s3ql reported errors! exit code $FSCK_RESULT"
>   exit $FSCK_RESULT
> fi
> exit 0
>
>
>
>
> If you have a service that depend on the file system to be mounted, then 
> create an overwrite file for its service unit and use 
> "After=cloud-data.service" to start the service only when the file system 
> was mounted.
> E.g. for nginx execute "sudo systemctl edit nginx" paste the following in 
> the editor and save&exit:
> [Unit]
> After=cloud-data.service
>
>
> If your file system exits after the TimeoutStartSec then your system does 
> not have the Python bindings for systemd installed. Either (a) try to 
> install them with "apt-get install python3-systemd" or (b) use the 
> Type=simple
> line instead of the Type=notify line in the unit file. Variant (a) is 
> preferred since only with it depending services (see above) work correctly.
>
> You obviously need to change some arguments (e.g. the backend URL or the 
> mount point) before you can use this unit file and its ExecPreStart helper 
> script and you need to create the empty mount point directory once e.g. 
> with "sudo mkdir -p /cloud/data".
>
> Some pointers:
> https://www.freedesktop.org/software/systemd/man/systemd.service.html
> https://www.rath.org/s3ql-docs/mount.html#automatic-mounting
> https://groups.google.com/g/s3ql/search?q=systemd%20mount
> https://www.google.com/search?q=s3ql+systemd+mount
> https://www.brightbox.com/docs/guides/s3ql/
>

-- 
You received this message because you are subscribed to the Google Groups 
"s3ql" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/s3ql/f2ad79eb-178f-44b5-93c8-5b7877a551e1n%40googlegroups.com.

Reply via email to