1 <!DOCTYPE html PUBLIC
"-//W3C//DTD XHTML 1.0 Strict//EN"
2 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
3 <html xmlns=
"http://www.w3.org/1999/xhtml" dir=
"ltr">
5 <meta http-equiv=
"Content-Type" content=
"text/html;charset=utf-8" />
6 <title>Petter Reinholdtsen: S3QL, a locally mounted cloud file system - nice free software
</title>
7 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/style.css" />
8 <link rel=
"stylesheet" type=
"text/css" media=
"screen" href=
"http://people.skolelinux.org/pere/blog/vim.css" />
15 <a href=
"http://people.skolelinux.org/pere/blog/">Petter Reinholdtsen
</a>
23 <div class=
"title">S3QL, a locally mounted cloud file system - nice free software
</div>
24 <div class=
"date"> 9th April
2014</div>
25 <div class=
"body"><p>For a while now, I have been looking for a sensible offsite backup
26 solution for use at home. My requirements are simple, it must be
27 cheap and locally encrypted (in other words, I keep the encryption
28 keys, the storage provider do not have access to my private files).
29 One idea me and my friends had many years ago, before the cloud
30 storage providers showed up, was to use Google mail as storage,
31 writing a Linux block device storing blocks as emails in the mail
32 service provided by Google, and thus get heaps of free space. On top
33 of this one can add encryption, RAID and volume management to have
34 lots of (fairly slow, I admit that) cheap and encrypted storage. But
35 I never found time to implement such system. But the last few weeks I
36 have looked at a system called
37 <a href=
"https://bitbucket.org/nikratio/s3ql/">S3QL
</a>, a locally
38 mounted network backed file system with the features I need.
</p>
40 <p>S3QL is a fuse file system with a local cache and cloud storage,
41 handling several different storage providers, any with Amazon S3,
42 Google Drive or OpenStack API. There are heaps of such storage
43 providers. S3QL can also use a local directory as storage, which
44 combined with sshfs allow for file storage on any ssh server. S3QL
45 include support for encryption, compression, de-duplication, snapshots
46 and immutable file systems, allowing me to mount the remote storage as
47 a local mount point, look at and use the files as if they were local,
48 while the content is stored in the cloud as well. This allow me to
49 have a backup that should survive fire. The file system can not be
50 shared between several machines at the same time, as only one can
51 mount it at the time, but any machine with the encryption key and
52 access to the storage service can mount it if it is unmounted.
</p>
54 <p>It is simple to use. I'm using it on Debian Wheezy, where the
55 package is included already. So to get started, run
<tt>apt-get
56 install s3ql
</tt>. Next, pick a storage provider. I ended up picking
57 Greenqloud, after reading their nice recipe on
58 <a href=
"https://greenqloud.zendesk.com/entries/44611757-How-To-Use-S3QL-to-mount-a-StorageQloud-bucket-on-Debian-Wheezy">how
59 to use S3QL with their Amazon S3 service
</a>, because I trust the laws
60 in Iceland more than those in USA when it come to keeping my personal
61 data safe and private, and thus would rather spend money on a company
62 in Iceland. Another nice recipe is available from the article
63 <a href=
"http://www.admin-magazine.com/HPC/Articles/HPC-Cloud-Storage">S3QL
64 Filesystem for HPC Storage
</a> by Jeff Layton in the HPC section of
65 Admin magazine. When the provider is picked, figure out how to get
66 the API key needed to connect to the storage API. With Greencloud,
67 the key did not show up until I had added payment details to my
70 <p>Armed with the API access details, it is time to create the file
71 system. First, create a new bucket in the cloud. This bucket is the
72 file system storage area. I picked a bucket name reflecting the
73 machine that was going to store data there, but any name will do.
74 I'll refer to it as
<tt>bucket-name
</tt> below. In addition, one need
75 the API login and password, and a locally created password. Store it
76 all in ~root/.s3ql/authinfo2 like this:
80 storage-url: s3c://s.greenqloud.com:
443/bucket-name
81 backend-login: API-login
82 backend-password: API-password
83 fs-passphrase: local-password
84 </pre></blockquote></p>
86 <p>I create my local passphrase using
<tt>pwget
50</tt> or similar,
87 but any sensible way to create a fairly random password should do it.
88 Armed with these details, it is now time to run mkfs, entering the API
89 details and password to create it:
</p>
92 # mkdir -m
700 /var/lib/s3ql-cache
93 # mkfs.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
94 --ssl s3c://s.greenqloud.com:
443/bucket-name
96 Enter backend password:
97 Before using S3QL, make sure to read the user's guide, especially
98 the 'Important Rules to Avoid Loosing Data' section.
99 Enter encryption password:
100 Confirm encryption password:
101 Generating random encryption key...
102 Creating metadata tables...
112 Compressing and uploading metadata...
113 Wrote
0.00 MB of compressed metadata.
114 #
</pre></blockquote></p>
116 <p>The next step is mounting the file system to make the storage available.
119 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
120 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
121 Using
4 upload threads.
122 Downloading and decompressing metadata...
132 Mounting filesystem...
134 Filesystem Size Used Avail Use% Mounted on
135 s3c://s.greenqloud.com:
443/bucket-name
1.0T
0 1.0T
0% /s3ql
137 </pre></blockquote></p>
139 <p>The file system is now ready for use. I use rsync to store my
140 backups in it, and as the metadata used by rsync is downloaded at
141 mount time, no network traffic (and storage cost) is triggered by
142 running rsync. To unmount, one should not use the normal umount
143 command, as this will not flush the cache to the cloud storage, but
144 instead running the umount.s3ql command like this:
149 </pre></blockquote></p>
151 <p>There is a fsck command available to check the file system and
152 correct any problems detected. This can be used if the local server
153 crashes while the file system is mounted, to reset the "already
154 mounted" flag. This is what it look like when processing a working
158 # fsck.s3ql --force --ssl s3c://s.greenqloud.com:
443/bucket-name
159 Using cached metadata.
160 File system seems clean, checking anyway.
161 Checking DB integrity...
162 Creating temporary extra indices...
163 Checking lost+found...
164 Checking cached objects...
165 Checking names (refcounts)...
166 Checking contents (names)...
167 Checking contents (inodes)...
168 Checking contents (parent inodes)...
169 Checking objects (reference counts)...
170 Checking objects (backend)...
171 ..processed
5000 objects so far..
172 ..processed
10000 objects so far..
173 ..processed
15000 objects so far..
174 Checking objects (sizes)...
175 Checking blocks (referenced objects)...
176 Checking blocks (refcounts)...
177 Checking inode-block mapping (blocks)...
178 Checking inode-block mapping (inodes)...
179 Checking inodes (refcounts)...
180 Checking inodes (sizes)...
181 Checking extended attributes (names)...
182 Checking extended attributes (inodes)...
183 Checking symlinks (inodes)...
184 Checking directory reachability...
185 Checking unix conventions...
186 Checking referential integrity...
187 Dropping temporary indices...
188 Backing up old metadata...
198 Compressing and uploading metadata...
199 Wrote
0.89 MB of compressed metadata.
201 </pre></blockquote></p>
203 <p>Thanks to the cache, working on files that fit in the cache is very
204 quick, about the same speed as local file access. Uploading large
205 amount of data is to me limited by the bandwidth out of and into my
206 house. Uploading
685 MiB with a
100 MiB cache gave me
305 kiB/s,
207 which is very close to my upload speed, and downloading the same
208 Debian installation ISO gave me
610 kiB/s, close to my download speed.
209 Both were measured using
<tt>dd
</tt>. So for me, the bottleneck is my
210 network, not the file system code. I do not know what a good cache
211 size would be, but suspect that the cache should e larger than your
214 <p>I mentioned that only one machine can mount the file system at the
215 time. If another machine try, it is told that the file system is
219 # mount.s3ql --cachedir /var/lib/s3ql-cache --authfile /root/.s3ql/authinfo2 \
220 --ssl --allow-root s3c://s.greenqloud.com:
443/bucket-name /s3ql
221 Using
8 upload threads.
222 Backend reports that fs is still mounted elsewhere, aborting.
224 </pre></blockquote></p>
226 <p>The file content is uploaded when the cache is full, while the
227 metadata is uploaded once every
24 hour by default. To ensure the
228 file system content is flushed to the cloud, one can either umount the
229 file system, or ask S3QL to flush the cache and metadata using
233 # s3qlctrl upload-meta /s3ql
234 # s3qlctrl flushcache /s3ql
236 </pre></blockquote></p>
238 <p>If you are curious about how much space your data uses in the
239 cloud, and how much compression and deduplication cut down on the
240 storage usage, you can use s3qlstat on the mounted file system to get
245 Directory entries:
9141
248 Total data size:
22049.38 MB
249 After de-duplication:
21955.46 MB (
99.57% of total)
250 After compression:
21877.28 MB (
99.22% of total,
99.64% of de-duplicated)
251 Database size:
2.39 MB (uncompressed)
252 (some values do not take into account not-yet-uploaded dirty blocks in cache)
254 </pre></blockquote></p>
256 <p>I mentioned earlier that there are several possible suppliers of
257 storage. I did not try to locate them all, but am aware of at least
258 <a href=
"https://www.greenqloud.com/">Greenqloud
</a>,
259 <a href=
"http://drive.google.com/">Google Drive
</a>,
260 <a href=
"http://aws.amazon.com/s3/">Amazon S3 web serivces
</a>,
261 <a href=
"http://www.rackspace.com/">Rackspace
</a> and
262 <a href=
"http://crowncloud.net/">Crowncloud
</A>. The latter even
263 accept payment in Bitcoin. Pick one that suit your need. Some of
264 them provide several GiB of free storage, but the prize models are
265 quite different and you will have to figure out what suits you
268 <p>While researching this blog post, I had a look at research papers
269 and posters discussing the S3QL file system. There are several, which
270 told me that the file system is getting a critical check by the
271 science community and increased my confidence in using it. One nice
273 "
<a href=
"http://www.lanl.gov/orgs/adtsc/publications/science_highlights_2013/docs/pg68_69.pdf">An
274 Innovative Parallel Cloud Storage System using OpenStack’s SwiftObject
275 Store and Transformative Parallel I/O Approach
</a>" by Hsing-Bung
276 Chen, Benjamin McClelland, David Sherrill, Alfred Torrez, Parks Fields
277 and Pamela Smith. Please have a look.</p>
279 <p>Given my problems with different file systems earlier, I decided to
280 check out the mounted S3QL file system to see if it would be usable as
281 a home directory (in other word, that it provided POSIX semantics when
282 it come to locking and umask handling etc). Running
283 <a href="http://people.skolelinux.org/pere/blog/Testing_if_a_file_system_can_be_used_for_home_directories___.html
">my
284 test code to check file system semantics</a>, I was happy to discover that
285 no error was found. So the file system can be used for home
286 directories, if one chooses to do so.</p>
288 <p>If you do not want a locally file system, and want something that
289 work without the Linux fuse file system, I would like to mention the
290 <a href="http://www.tarsnap.com/
">Tarsnap service</a>, which also
291 provide locally encrypted backup using a command line client. It have
292 a nicer access control system, where one can split out read and write
293 access, allowing some systems to write to the backup and others to
294 only read from it.</p>
296 <p>As usual, if you use Bitcoin and want to show your support of my
297 activities, please send Bitcoin donations to my address
298 <b><a href="bitcoin:
15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b
">15oWEoG9dUPovwmUL9KWAnYRtNJEkP1u1b</a></b>.</p>
301 <div class="tags
">Tags: <a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian</a>, <a href="http://people.skolelinux.org/pere/blog/tags/english
">english</a>, <a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software</a>, <a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern</a>, <a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet</a>.</div>
319 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2019/
01/
">January (3)</a></li>
326 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
01/
">January (1)</a></li>
328 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
02/
">February (5)</a></li>
330 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
03/
">March (5)</a></li>
332 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
04/
">April (3)</a></li>
334 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
06/
">June (2)</a></li>
336 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
07/
">July (5)</a></li>
338 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
08/
">August (3)</a></li>
340 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
09/
">September (3)</a></li>
342 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
10/
">October (5)</a></li>
344 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
11/
">November (2)</a></li>
346 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2018/
12/
">December (4)</a></li>
353 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
01/
">January (4)</a></li>
355 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
02/
">February (3)</a></li>
357 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
03/
">March (5)</a></li>
359 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
04/
">April (2)</a></li>
361 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
06/
">June (5)</a></li>
363 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
07/
">July (1)</a></li>
365 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
08/
">August (1)</a></li>
367 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
09/
">September (3)</a></li>
369 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
10/
">October (5)</a></li>
371 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
11/
">November (3)</a></li>
373 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2017/
12/
">December (4)</a></li>
380 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
01/
">January (3)</a></li>
382 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
02/
">February (2)</a></li>
384 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
03/
">March (3)</a></li>
386 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
04/
">April (8)</a></li>
388 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
05/
">May (8)</a></li>
390 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
06/
">June (2)</a></li>
392 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
07/
">July (2)</a></li>
394 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
08/
">August (5)</a></li>
396 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
09/
">September (2)</a></li>
398 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
10/
">October (3)</a></li>
400 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
11/
">November (8)</a></li>
402 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2016/
12/
">December (5)</a></li>
409 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
01/
">January (7)</a></li>
411 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
02/
">February (6)</a></li>
413 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
03/
">March (1)</a></li>
415 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
04/
">April (4)</a></li>
417 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
05/
">May (3)</a></li>
419 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
06/
">June (4)</a></li>
421 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
07/
">July (6)</a></li>
423 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
08/
">August (2)</a></li>
425 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
09/
">September (2)</a></li>
427 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
10/
">October (9)</a></li>
429 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
11/
">November (6)</a></li>
431 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2015/
12/
">December (3)</a></li>
438 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
01/
">January (2)</a></li>
440 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
02/
">February (3)</a></li>
442 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
03/
">March (8)</a></li>
444 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
04/
">April (7)</a></li>
446 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
05/
">May (1)</a></li>
448 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
06/
">June (2)</a></li>
450 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
07/
">July (2)</a></li>
452 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
08/
">August (2)</a></li>
454 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
09/
">September (5)</a></li>
456 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
10/
">October (6)</a></li>
458 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
11/
">November (3)</a></li>
460 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2014/
12/
">December (5)</a></li>
467 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
01/
">January (11)</a></li>
469 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
02/
">February (9)</a></li>
471 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
03/
">March (9)</a></li>
473 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
04/
">April (6)</a></li>
475 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
05/
">May (9)</a></li>
477 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
06/
">June (10)</a></li>
479 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
07/
">July (7)</a></li>
481 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
08/
">August (3)</a></li>
483 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
09/
">September (5)</a></li>
485 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
10/
">October (7)</a></li>
487 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
11/
">November (9)</a></li>
489 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2013/
12/
">December (3)</a></li>
496 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
01/
">January (7)</a></li>
498 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
02/
">February (10)</a></li>
500 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
03/
">March (17)</a></li>
502 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
04/
">April (12)</a></li>
504 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
05/
">May (12)</a></li>
506 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
06/
">June (20)</a></li>
508 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
07/
">July (17)</a></li>
510 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
08/
">August (6)</a></li>
512 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
09/
">September (9)</a></li>
514 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
10/
">October (17)</a></li>
516 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
11/
">November (10)</a></li>
518 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2012/
12/
">December (7)</a></li>
525 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
01/
">January (16)</a></li>
527 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
02/
">February (6)</a></li>
529 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
03/
">March (6)</a></li>
531 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
04/
">April (7)</a></li>
533 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
05/
">May (3)</a></li>
535 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
06/
">June (2)</a></li>
537 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
07/
">July (7)</a></li>
539 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
08/
">August (6)</a></li>
541 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
09/
">September (4)</a></li>
543 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
10/
">October (2)</a></li>
545 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
11/
">November (3)</a></li>
547 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2011/
12/
">December (1)</a></li>
554 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
01/
">January (2)</a></li>
556 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
02/
">February (1)</a></li>
558 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
03/
">March (3)</a></li>
560 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
04/
">April (3)</a></li>
562 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
05/
">May (9)</a></li>
564 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
06/
">June (14)</a></li>
566 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
07/
">July (12)</a></li>
568 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
08/
">August (13)</a></li>
570 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
09/
">September (7)</a></li>
572 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
10/
">October (9)</a></li>
574 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
11/
">November (13)</a></li>
576 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2010/
12/
">December (12)</a></li>
583 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
01/
">January (8)</a></li>
585 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
02/
">February (8)</a></li>
587 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
03/
">March (12)</a></li>
589 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
04/
">April (10)</a></li>
591 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
05/
">May (9)</a></li>
593 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
06/
">June (3)</a></li>
595 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
07/
">July (4)</a></li>
597 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
08/
">August (3)</a></li>
599 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
09/
">September (1)</a></li>
601 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
10/
">October (2)</a></li>
603 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
11/
">November (3)</a></li>
605 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2009/
12/
">December (3)</a></li>
612 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
11/
">November (5)</a></li>
614 <li><a href="http://people.skolelinux.org/pere/blog/archive/
2008/
12/
">December (7)</a></li>
625 <li><a href="http://people.skolelinux.org/pere/blog/tags/
3d-printer
">3d-printer (16)</a></li>
627 <li><a href="http://people.skolelinux.org/pere/blog/tags/amiga
">amiga (1)</a></li>
629 <li><a href="http://people.skolelinux.org/pere/blog/tags/aros
">aros (1)</a></li>
631 <li><a href="http://people.skolelinux.org/pere/blog/tags/bankid
">bankid (4)</a></li>
633 <li><a href="http://people.skolelinux.org/pere/blog/tags/bitcoin
">bitcoin (10)</a></li>
635 <li><a href="http://people.skolelinux.org/pere/blog/tags/bootsystem
">bootsystem (17)</a></li>
637 <li><a href="http://people.skolelinux.org/pere/blog/tags/bsa
">bsa (2)</a></li>
639 <li><a href="http://people.skolelinux.org/pere/blog/tags/chrpath
">chrpath (2)</a></li>
641 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian
">debian (166)</a></li>
643 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian edu
">debian edu (158)</a></li>
645 <li><a href="http://people.skolelinux.org/pere/blog/tags/debian-handbook
">debian-handbook (4)</a></li>
647 <li><a href="http://people.skolelinux.org/pere/blog/tags/digistan
">digistan (10)</a></li>
649 <li><a href="http://people.skolelinux.org/pere/blog/tags/dld
">dld (17)</a></li>
651 <li><a href="http://people.skolelinux.org/pere/blog/tags/docbook
">docbook (25)</a></li>
653 <li><a href="http://people.skolelinux.org/pere/blog/tags/drivstoffpriser
">drivstoffpriser (4)</a></li>
655 <li><a href="http://people.skolelinux.org/pere/blog/tags/english
">english (397)</a></li>
657 <li><a href="http://people.skolelinux.org/pere/blog/tags/fiksgatami
">fiksgatami (23)</a></li>
659 <li><a href="http://people.skolelinux.org/pere/blog/tags/fildeling
">fildeling (14)</a></li>
661 <li><a href="http://people.skolelinux.org/pere/blog/tags/freeculture
">freeculture (33)</a></li>
663 <li><a href="http://people.skolelinux.org/pere/blog/tags/freedombox
">freedombox (9)</a></li>
665 <li><a href="http://people.skolelinux.org/pere/blog/tags/frikanalen
">frikanalen (20)</a></li>
667 <li><a href="http://people.skolelinux.org/pere/blog/tags/h264
">h264 (20)</a></li>
669 <li><a href="http://people.skolelinux.org/pere/blog/tags/intervju
">intervju (42)</a></li>
671 <li><a href="http://people.skolelinux.org/pere/blog/tags/isenkram
">isenkram (16)</a></li>
673 <li><a href="http://people.skolelinux.org/pere/blog/tags/kart
">kart (20)</a></li>
675 <li><a href="http://people.skolelinux.org/pere/blog/tags/kodi
">kodi (4)</a></li>
677 <li><a href="http://people.skolelinux.org/pere/blog/tags/ldap
">ldap (9)</a></li>
679 <li><a href="http://people.skolelinux.org/pere/blog/tags/lego
">lego (4)</a></li>
681 <li><a href="http://people.skolelinux.org/pere/blog/tags/lenker
">lenker (8)</a></li>
683 <li><a href="http://people.skolelinux.org/pere/blog/tags/lsdvd
">lsdvd (2)</a></li>
685 <li><a href="http://people.skolelinux.org/pere/blog/tags/ltsp
">ltsp (1)</a></li>
687 <li><a href="http://people.skolelinux.org/pere/blog/tags/mesh network
">mesh network (8)</a></li>
689 <li><a href="http://people.skolelinux.org/pere/blog/tags/multimedia
">multimedia (42)</a></li>
691 <li><a href="http://people.skolelinux.org/pere/blog/tags/nice free software
">nice free software (11)</a></li>
693 <li><a href="http://people.skolelinux.org/pere/blog/tags/norsk
">norsk (301)</a></li>
695 <li><a href="http://people.skolelinux.org/pere/blog/tags/nuug
">nuug (192)</a></li>
697 <li><a href="http://people.skolelinux.org/pere/blog/tags/offentlig innsyn
">offentlig innsyn (34)</a></li>
699 <li><a href="http://people.skolelinux.org/pere/blog/tags/open311
">open311 (2)</a></li>
701 <li><a href="http://people.skolelinux.org/pere/blog/tags/opphavsrett
">opphavsrett (73)</a></li>
703 <li><a href="http://people.skolelinux.org/pere/blog/tags/personvern
">personvern (108)</a></li>
705 <li><a href="http://people.skolelinux.org/pere/blog/tags/raid
">raid (2)</a></li>
707 <li><a href="http://people.skolelinux.org/pere/blog/tags/reactos
">reactos (1)</a></li>
709 <li><a href="http://people.skolelinux.org/pere/blog/tags/reprap
">reprap (11)</a></li>
711 <li><a href="http://people.skolelinux.org/pere/blog/tags/rfid
">rfid (3)</a></li>
713 <li><a href="http://people.skolelinux.org/pere/blog/tags/robot
">robot (11)</a></li>
715 <li><a href="http://people.skolelinux.org/pere/blog/tags/rss
">rss (1)</a></li>
717 <li><a href="http://people.skolelinux.org/pere/blog/tags/ruter
">ruter (6)</a></li>
719 <li><a href="http://people.skolelinux.org/pere/blog/tags/scraperwiki
">scraperwiki (2)</a></li>
721 <li><a href="http://people.skolelinux.org/pere/blog/tags/sikkerhet
">sikkerhet (55)</a></li>
723 <li><a href="http://people.skolelinux.org/pere/blog/tags/sitesummary
">sitesummary (4)</a></li>
725 <li><a href="http://people.skolelinux.org/pere/blog/tags/skepsis
">skepsis (5)</a></li>
727 <li><a href="http://people.skolelinux.org/pere/blog/tags/standard
">standard (58)</a></li>
729 <li><a href="http://people.skolelinux.org/pere/blog/tags/stavekontroll
">stavekontroll (6)</a></li>
731 <li><a href="http://people.skolelinux.org/pere/blog/tags/stortinget
">stortinget (12)</a></li>
733 <li><a href="http://people.skolelinux.org/pere/blog/tags/surveillance
">surveillance (55)</a></li>
735 <li><a href="http://people.skolelinux.org/pere/blog/tags/sysadmin
">sysadmin (4)</a></li>
737 <li><a href="http://people.skolelinux.org/pere/blog/tags/usenix
">usenix (2)</a></li>
739 <li><a href="http://people.skolelinux.org/pere/blog/tags/valg
">valg (9)</a></li>
741 <li><a href="http://people.skolelinux.org/pere/blog/tags/verkidetfri
">verkidetfri (15)</a></li>
743 <li><a href="http://people.skolelinux.org/pere/blog/tags/video
">video (73)</a></li>
745 <li><a href="http://people.skolelinux.org/pere/blog/tags/vitenskap
">vitenskap (4)</a></li>
747 <li><a href="http://people.skolelinux.org/pere/blog/tags/web
">web (42)</a></li>
753 <p style="text-align: right
">
754 Created by <a href="http://steve.org.uk/Software/chronicle
">Chronicle v4.6</a>