]> pere.pagekite.me Git - homepage.git/commitdiff
Publish.
authorPetter Reinholdtsen <pere@hungry.com>
Wed, 9 Apr 2014 09:24:22 +0000 (09:24 +0000)
committerPetter Reinholdtsen <pere@hungry.com>
Wed, 9 Apr 2014 09:24:22 +0000 (09:24 +0000)
blog/data/2014-04-09-nice-s3ql.txt

index 59bf76d0a42ccc2067aa9c3edfb329462bc0764e..87e9f1d787e761cf6d5a1e9e94389ab920e2a6e8 100644 (file)
@@ -1,34 +1,35 @@
 Title: s3ql, a locally mounted cloud file system - nice free software
 Tags: english, debian, personvern, sikkerhet
-Date: 2014-04-09 11:20
+Date: 2014-04-09 11:30
 
-<p>For a while now, I have been looking for a sensible off site backup
-solution to use at home.  My requirements are cheap and locally
-encrypted (in other words, I keep the keys, the storage provider do
-not have access to my private files).  One idea me and my friends have
-had over the years have been to use Google mail as storage, writing a
-Linux block device storing blocks as emails in the mail service
-provided by Google, and thus get heaps of free space.  On top of this
-one can add encryption, RAID and volume management to have lots of
-(fairly slow, I admit that) cheap and encrypted storage.  But I never
-found time to implement such system.  But the last few weeks I have
-looked at a system called
+<p>For a while now, I have been looking for a sensible offsite backup
+solution for use at home.  My requirements are simple, it must be
+cheap and locally encrypted (in other words, I keep the encryption
+keys, the storage provider do not have access to my private files).
+One idea me and my friends have had many years ago, before the cloud
+storage providers showed up, have been to use Google mail as storage,
+writing a Linux block device storing blocks as emails in the mail
+service provided by Google, and thus get heaps of free space.  On top
+of this one can add encryption, RAID and volume management to have
+lots of (fairly slow, I admit that) cheap and encrypted storage.  But
+I never found time to implement such system.  But the last few weeks I
+have looked at a system called
 <a href="https://bitbucket.org/nikratio/s3ql/">S3QL</a>, a locally
 mounted network backed file system with the features I need.</p>
 
 <p>S3QL is a fuse file system with a local cache and cloud storage,
 handling several different storage providers, any with Amazon S3,
-Google Drive or OpenStack API.  There are heaps of such providers.  It
-can also use a local directory as storage, which combined with sshfs
-allow for file storage on any ssh server.  S3QL include support for
-encryption, compression, de-duplication, snapshots and immutable file
-systems, allowing me to mount the remote storage as a local mount
-point, look at and use the files as if they were local, while the
-content is stored in the cloud as well.  This allow me to have a
-backup that should survive fire.  The file system can not be shared
-between several machines at the same time, as only one can mount it at
-the time, but any machine with the encryption key and access to the
-storage service can mount it if it is unmounted.</p>
+Google Drive or OpenStack API.  There are heaps of such storage
+providers.  S3QL can also use a local directory as storage, which
+combined with sshfs allow for file storage on any ssh server.  S3QL
+include support for encryption, compression, de-duplication, snapshots
+and immutable file systems, allowing me to mount the remote storage as
+a local mount point, look at and use the files as if they were local,
+while the content is stored in the cloud as well.  This allow me to
+have a backup that should survive fire.  The file system can not be
+shared between several machines at the same time, as only one can
+mount it at the time, but any machine with the encryption key and
+access to the storage service can mount it if it is unmounted.</p>
 
 <p>It is simple to use.  I'm using it on Debian Wheezy, where the
 package is included already.  So to get started, run <tt>apt-get
@@ -36,9 +37,9 @@ install s3ql</tt>.  Next, pick a storage provider.  I ended up picking
 Greenqloud, after reading their nice recipe on
 <a href="https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
 to use s3ql with their Amazon S3 service</a>, because I trust the laws
-in Iceland more than those in USA when it come to keeping my data safe
-and private, and thus would rather spend money on a company in
-Iceland.  Another nice recipe is available from the article
+in Iceland more than those in USA when it come to keeping my personal
+data safe and private, and thus would rather spend money on a company
+in Iceland.  Another nice recipe is available from the article
 <a href="http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
 Filesystem for HPC Storage</a> by Jeff Layton in the HPC section of
 Admin magazine.  When the provider is picked, figure out how to get
@@ -69,7 +70,8 @@ details and password to create it:</p>
 
 <p><blockquote><pre>
 # mkdir -m 700 /var/lib/s3ql-cache
-# mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2   --ssl s3c://s.greenqloud.com:443/bucket-name
+# mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl s3c://s.greenqloud.com:443/bucket-name
 Enter backend login: 
 Enter backend password: 
 Before using S3QL, make sure to read the user's guide, especially
@@ -94,7 +96,8 @@ Wrote 0.00 MB of compressed metadata.
 <p>The next step is mounting the file system to make the storage available.
 
 <p><blockquote><pre>
-# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
+# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
 Using 4 upload threads.
 Downloading and decompressing metadata...
 Reading metadata...
@@ -184,14 +187,17 @@ house.  Uploading 685 MiB with a 100 MiB cache gave me 305 kiB/s,
 which is very close to my upload speed, and downloading the same
 Debian installation ISO gave me 610 kiB/s, close to my download speed.
 Both were measured using <tt>dd</tt>.  So for me, the bottleneck is my
-network, not the file system code.</p>
+network, not the file system code.  I do not know what a good cache
+size would be, but suspect that the cache should e larger than your
+working set.</p>
 
-I mentioned that only one machine can mount the file system at the
+<p>I mentioned that only one machine can mount the file system at the
 time.  If another machine try, it is told that the file system is
-busy:
+busy:</p>
 
 <p><blockquote><pre>
-# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
+# mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
+  --ssl --allow-root s3c://s.greenqloud.com:443/bucket-name /s3ql
 Using 8 upload threads.
 Backend reports that fs is still mounted elsewhere, aborting.
 #
@@ -250,6 +256,15 @@ Store and Transformative Parallel I/O Approach</a>" by Hsing-Bung
 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
 and Pamela Smith.  Please  have a look.</p>
 
+<p>Given my problems with different file systems earlier, I decided to
+check out the mounted S3QL file system to see if it would be usable as
+a home directory (in other word, that it provided POSIX semantics when
+it come to locking and umask handling etc).  Running
+<a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html">my
+test code to check file system semantics, I was happy to discover that
+no error was found.  So the file system can be used for home
+directories, if one chooses to do so.</p>
+
 <p>If you do not want a locally file system, and want something that
 work without the Linux fuse file system, I would like to mention the
 <a href="http://www.tarsnap.com/">Tarsnap service</a>, which also