Exploring btrfs for backups Part 6: Backup Drives and changing RAID levels VM

Hard drives are relatively cheap, especially nowadays. But I still want to stay within my budget as I setup my backups and system redundancies. So, ideally, for my backup RAID I’d take advantage of btrs’ ability to change RAID types on the fly and start off with one drive. Then I’d add another and go to RAID1. Then another and RAID5. Finally, the fourth drive and RAID6. At that point I’d have to be under some sort of Job-like God/Devil curse if all my drives failed at once, negating the point of the RAID. The best thinking right now is that you want to have backups, but want to try not to have to use them because of both offline time and the fact that a restore is never as clean as you hope it’ll be.

Let’s get started! I’ve added a third drive to my VM. Time to format and partition the drive. I do this with gParted. Interestingly, after the last post – gParted is a bit confused about what’s going on – again, btrfs isn’t exactly transparent with what it’s doing, especially when you have RAID setup. It shows the data as being stored on the second hard drive and nothing on the first one. The fact that sdb1 and sdb2 are unknown file systems and empty seems to go along with what I said yesterday about the fact that I don’t think it was properly set up to be able to boot from that system should the main hard drive die. So if you followed along with part 5 – make sure you take care of that if you’re doing RAID on your boot hard drive.

OK, now that the partition is created, I create a backup directory under /media/backup. Then I create a btrfs subvolume there.

$ sudo mount -t btrfs /dev/sdc1 /media/backup/
$ sudo btrfs subvolume create /media/backup/backups
Create subvolume '/media/backup/backups'
$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.83GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 1 FS bytes used 208.00KiB
 devid 1 size 8.00GiB used 855.00MiB path /dev/sdc1

Looks like I’m in a good place. Just need to add this to fstab. Alright, everything should now be set to grow this into a RAID1. Time to shut off the VM to add another hard drive.

Alright, so far everything is working correctly. I created a couple folders and a file to make sure the data survives in tact. So, in yesterday’s post I said I wouldn’t be using the sfdisk thing, but I think it’s probably a great shortcut to make sure everything is right in case I do something weird in gParted.

$ sudo sfdisk -d /dev/sdc | sudo sfdisk /dev/sdd
sfdisk: Checking that no-one is using this disk right now ...
sfdisk: OK
Disk /dev/sdd: 1044 cylinders, 255 heads, 63 sectors/track
sfdisk: /dev/sdd: unrecognized partition table type
Old situation:
sfdisk: No partitions found
New situation:
Units: sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdd1 1 16777215 16777215 ee GPT
/dev/sdd2 0 - 0 0 Empty
/dev/sdd3 0 - 0 0 Empty
/dev/sdd4 0 - 0 0 Empty
sfdisk: Warning: partition 1 does not end at a cylinder boundary
sfdisk: Warning: no primary partition is marked bootable (active)
This does not matter for LILO, but the DOS MBR will not boot this disk.
Successfully wrote the new partition table
Re-reading the partition table ...
sfdisk: If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)
Looks good. Time to add it to btrfs. Strangely, it doesn't appear to work. (Complains there isn't an sdd1)  Ok, let's try gParted, then.
$ sudo btrfs device add -f /dev/sdd1 /media/backup/

I had to use -f because I’d put a btrfs partition on there – I probably should have selected unallocated or something. Let’s make sure this makes sense:

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.84GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 2 FS bytes used 208.00KiB
 devid 1 size 8.00GiB used 855.00MiB path /dev/sdc1
 devid 2 size 8.00GiB used 0.00 path /dev/sdd1

Looks good to me. Time to RAID1 it.

$ sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /media/backup/
Done, had to relocate 5 out of 5 chunks

It took 30 seconds because there wasn’t really anything to move.

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.84GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 2 FS bytes used 464.00KiB
 devid 1 size 8.00GiB used 1.28GiB path /dev/sdc1
 devid 2 size 8.00GiB used 1.28GiB path /dev/sdd1

And, checking the RAID levels:

$ sudo btrfs fi df /media/backup/
Data, RAID1: total=1.00GiB, used=320.00KiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=128.00KiB
unknown, single: total=16.00MiB, used=0.00

Excellent! But this isn’t anything special over yesterday’s post. Now let’s add a third backup harddrive. This time I go straight for gParted and use a partition type of unformatted.

Now a quick check that my files are there:

$ tree /media/backup/
/media/backup/
├── test1
└── test2
 └── Iamintest2

Yup! Let’s keep going.

$ sudo btrfs device add /dev/sde1 /media/backup/

No errors this time. As always, a double-check.

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.85GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 3 FS bytes used 464.00KiB
 devid 1 size 8.00GiB used 1.28GiB path /dev/sdc1
 devid 2 size 8.00GiB used 1.28GiB path /dev/sdd1
 devid 3 size 8.00GiB used 0.00 path /dev/sde1

Perfect. Time for RAID5!

$ sudo btrfs balance start -dconvert=raid5 -mconvert=raid5 /media/backup/
Done, had to relocate 3 out of 3 chunks

Again, a quick finish because not many files there; 10-20 seconds. So, the checks:

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.85GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 3 FS bytes used 720.00KiB
 devid 1 size 8.00GiB used 1.16GiB path /dev/sdc1
 devid 2 size 8.00GiB used 1.16GiB path /dev/sdd1
 devid 3 size 8.00GiB used 1.16GiB path /dev/sde1

And RAID check:

$ sudo btrfs fi df /media/backup/
Data, RAID5: total=2.00GiB, used=576.00KiB
System, RAID5: total=64.00MiB, used=16.00KiB
Metadata, RAID5: total=256.00MiB, used=128.00KiB
unknown, single: total=16.00MiB, used=0.00

Alright. No issues expected with that. So let’s see if RAID6 is just as easy. Created another file so see if RAID5 overhead caused any issues. None that I could see, but I’m not exactly running this on a critical database or something.

$ tree /media/backup/
/media/backup/
├── test1
│   └── hahaha
└── test2
 └── Iamintest2

OK. let’s get to it! gParted again. Add the device:

$ sudo btrfs device add /dev/sdf1 /media/backup/

And the usual checks:

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.85GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 4 FS bytes used 720.00KiB
 devid 1 size 8.00GiB used 1.16GiB path /dev/sdc1
 devid 2 size 8.00GiB used 1.16GiB path /dev/sdd1
 devid 3 size 8.00GiB used 1.16GiB path /dev/sde1
 devid 4 size 8.00GiB used 0.00 path /dev/sdf1

Looks fine. Also, just realized they don’t do the CS thing of counting from 0. OK, moment of truth:

sudo btrfs balance start -dconvert=raid6 -mconvert=raid6 /media/backup/
Done, had to relocate 3 out of 3 chunks

Alright! Balance check:

$ sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.85GiB
 devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3
Label: 'Backup' uuid: 7042f4b7-9815-44f4-aef9-81103fc5855b
 Total devices 4 FS bytes used 720.00KiB
 devid 1 size 8.00GiB used 1.16GiB path /dev/sdc1
 devid 2 size 8.00GiB used 1.16GiB path /dev/sdd1
 devid 3 size 8.00GiB used 1.16GiB path /dev/sde1
 devid 4 size 8.00GiB used 1.16GiB path /dev/sdf1

And RAID check:

$ sudo btrfs fi df /media/backup/
Data, RAID6: total=2.00GiB, used=576.00KiB
System, RAID6: total=64.00MiB, used=16.00KiB
Metadata, RAID6: total=256.00MiB, used=128.00KiB
unknown, single: total=16.00MiB, used=0.00

Perfect. So, it’s just that easy. This has been a great demonstration for me because it means I can buy my harddrives little by little instead of all at once. Sure, all at once is nicer in that you don’t have to take hours doing your balancing, but sometimes that’s just not an option and it’s nice to know that btrfs can handle it on a live system. No offline time necessary.

With my current grad school load, the next post will most likely be me converting my home subvolume on SuperMario to RAID1. Then, probably this winter, setting up my backup drive on SuperMario and setting up my Snap-in-Time scripts to send snapshots from the main system to the backup drive.  See ya then!

Exploring btrfs for backups Part 5: RAID1 on the Main Disks in the VM

So, back when I started this project, I laid out that one of the reasons I wanted to use btrfs on my home directory (don’t think it’s ready for / just yet) is that with RAID1, btrfs is self-healing. Obviously, magic can’t be done, but a checksum is stored as part of the data’s metadata and if the file doesn’t match the checksum on one disk, but does on the other, the file can be fixed. This can help protect against bitrot, which is the biggest thing that’s going to keep our children’s digital photos from lasting as long as the ones printed on archival paper. So, like I did the first time, I’ll first be trying it out in a Fedora VM that mostly matches my version, kernel, and btrfs-progs version. So, I went and added another virtual hard drive of the same size to my VM.

btrfs-RAID1-two hard drives in VirtualBox Next comes a part that I won’t be doing on my real machine because I don’t have root on the non-VM system I want to RAID1:

#>sudo sfdisk -d /dev/sda | sudo sfdisk /dev/sdb
[sudo] password for ermesa: [sudo] password for ermesa: 
sfdisk: Checking that no-one is using this disk right now ...
sfdisk: OK
Disk /dev/sdb: 1044 cylinders, 255 heads, 63 sectors/track
sfdisk: /dev/sdb: unrecognized partition table type
Old situation:
sfdisk: No partitions found
Sorry, try again.
New situation:
Units: sectors of 512 bytes, counting from 0
Device Boot Start End #sectors Id System
/dev/sdb1 * 2048 1026047 1024000 83 Linux
/dev/sdb2 1026048 2703359 1677312 82 Linux swap / Solaris
/dev/sdb3 2703360 16777215 14073856 83 Linux
/dev/sdb4 0 - 0 0 Empty
sfdisk: Warning: partition 1 does not end at a cylinder boundary
sfdisk: Warning: partition 2 does not start at a cylinder boundary
sfdisk: Warning: partition 2 does not end at a cylinder boundary
sfdisk: Warning: partition 3 does not start at a cylinder boundary
sfdisk: Warning: partition 3 does not end at a cylinder boundary
Successfully wrote the new partition table
Re-reading the partition table ...
sfdisk: If you created or changed a DOS partition, /dev/foo7, say, then use dd(1)
to zero the first 512 bytes: dd if=/dev/zero of=/dev/foo7 bs=512 count=1
(See fdisk(8).)

OK, so now I have to install grub. Again, I wouldn’t do this on SuperMario, but since the VM has btrfs on the whole system, I’m going to do it here.

#>sudo grub2-install /dev/sdb
Installation finished. No error reported.

Excellent. Now the btrfs-specific parts.

#> sudo btrfs device add /dev/sdb1 /

Before the (hopefully) last step, let’s see what this gives us in the current btrfs filesystem:

 #>sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.82GiB
 devid 1 size 6.71GiB used 4.07GiB path /dev/sda3
 devid 2 size 500.00MiB used 0.00 path /dev/sdb1

Oh, this allowed me to catch something. It should have been sdb3 before not 1. Let me see if this fixes things.

#>sudo btrfs device delete /dev/sdb1 /
#> sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 1 FS bytes used 2.82GiB
 devid 1 size 6.71GiB used 4.07GiB path /dev/sda3

OK, good. That appears to have put us back where we started. Let me try the correct parameters this time.

#>sudo btrfs device add /dev/sdb3 /
#> sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.82GiB
 devid 1 size 6.71GiB used 4.07GiB path /dev/sda3
 devid 2 size 6.71GiB used 0.00 path /dev/sdb3

Much better. See that both devices are the same size? Good. A df shows me that /boot is on sda1. So I’m not 100% convinced we’ll end up with a system that can boot no matter which hard drive fails. I’m not going to worry about that since in SuperMario I’ll just be doing a home drive, but you may want to check documenation if you’re doing this for your boot hard drive as well. Time for the final command to turn it into a RAID 1:

#>sudo btrfs balance start -dconvert=raid1 -mconvert=raid1 /

That hammers the system for a while. I got the following error:

ERROR: error during balancing '/' - Read-only file system

I wonder what happened. And we can see that it truly was not balanced.

#>sudo btrfs fi show
Label: 'fedora' uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
 Total devices 2 FS bytes used 2.88GiB
 devid 1 size 6.71GiB used 5.39GiB path /dev/sda3
 devid 2 size 6.71GiB used 3.34GiB path /dev/sdb3

Hmm. Checking dmesg shows that it’s a systemd issue. I’ll reboot the VM in case the filesystem ended up in a weird state. It has definitely been acting a bit strange. The fact that it doesn’t want to reboot isn’t encouraging. Since it’s just a VM, I decide to go for a hard reset. When I tried to run it again, it said operation now in progress. I guess it saw that it wasn’t able to complete it last time? I’m not sure. If so, that’d be awesome. And maybe that’s why the reboot wouldn’t happen? But it gave me errors, so that’s a bit unintuitive if that’s what was going on.

Here’s what dmesg showed:

[ 224.975078] BTRFS info (device sda3): found 12404 extents
[ 243.538313] BTRFS info (device sda3): found 12404 extents
[ 244.061442] BTRFS info (device sda3): relocating block group 389611520 flags 1
[ 354.881373] BTRFS info (device sda3): found 14154 extents
[ 387.088152] BTRFS info (device sda3): found 14154 extents
[ 387.450010] BTRFS info (device sda3): relocating block group 29360128 flags 36
[ 404.492103] hrtimer: interrupt took 3106176 ns
[ 417.499860] BTRFS info (device sda3): found 8428 extents
[ 417.788591] BTRFS info (device sda3): relocating block group 20971520 flags 34
[ 418.079598] BTRFS info (device sda3): found 1 extents
[ 418.832913] BTRFS info (device sda3): relocating block group 12582912 flags 1
[ 421.570949] BTRFS info (device sda3): found 271 extents
[ 425.489926] BTRFS info (device sda3): found 271 extents
[ 426.188314] BTRFS info (device sda3): relocating block group 4194304 flags 4
[ 426.720475] BTRFS info (device sda3): relocating block group 0 flags 2

So it does look like it’s working on that. When it was done, I had:

#>sudo btrfs fi show
Label: ‘fedora’ uuid: e5d5f485-4ca8-4846-b8ad-c00ca8eacdd9
Total devices 2 FS bytes used 2.83GiB
devid 1 size 6.71GiB used 3.62GiB path /dev/sda3
devid 2 size 6.71GiB used 3.62GiB path /dev/sdb3

It’s encouraging that the same space is taken up on each drive. But how to confirm it’s RAID1? The answer is found in btrfs’ version of df. btrfs needs its own version because, as of right now, a lot of what makes it an awesome COW filesystem means that the usual GNU programs don’t truly know how much free space you have. So, let’s try it:

#>sudo btrfs fi df /
Data, RAID1: total=3.34GiB, used=2.70GiB
System, RAID1: total=32.00MiB, used=16.00KiB
Metadata, RAID1: total=256.00MiB, used=133.31MiB
unknown, single: total=48.00MiB, used=0.00

I’m slightly nervous about the “unknown” entry – but a quick Google shows that it’s no big deal.

3.15 has this commit, it's the cause of the unknown.  We'll roll the progs patch 
into the next progs release, but it's nothing at all to worry about.

-chris

Author: David Sterba <dsterba <at> suse.cz>
Date:   Fri Feb 7 14:34:12 2014 +0100

    btrfs: export global block reserve size as space_info

    Introduce a block group type bit for a global reserve and fill the space
    info for SPACE_INFO ioctl. This should replace the newly added ioctl
    (01e219e8069516cdb98594d417b8bb8d906ed30d) to get just the 'size' part
    of the global reserve, while the actual usage can be now visible in the
    'btrfs fi df' output during ENOSPC stress.

    The unpatched userspace tools will show the blockgroup as 'unknown'.

    CC: Jeff Mahoney <jeffm <at> suse.com>
    CC: Josef Bacik <jbacik <at> fb.com>
    Signed-off-by: David Sterba <dsterba <at> suse.cz>
    Signed-off-by: Chris Mason <clm <at> fb.com>

So, there you go, relatively simple to setup a RAID1 on a btrfs system. Took just under an hour – but it was only 3 GB to balance. Larger  drive takes longer (which is why RAID6 is better as you can have another drive fail while you are balancing in your replacement drive) The best thing is that it all runs on a live system so you don’t need to suffer being unable to use the computer while the balance runs. Again, if you’re doing this on your boot drive, use Google to confirm that the /boot and all that is setup correctly or you won’t quite have the redudancy protection you think you do. Next time’s going to get a bit interesting as I simulate what I want to do with my backup btrfs hard drives. After that it’ll either be more Snap-In-Time code or my live migration to RAID1 on my home btrfs subvolume.

Review: Limbus, Inc.

Limbus, Inc. (Limbus, Inc #1)Limbus, Inc. by Anne C. Petty
My rating: 4 of 5 stars

The best way to describe what I just finished: a series of short stories in genres I may not have read as standalones but which combined into a highly enjoyable book. Not perfectly true as they all tended to have a bit of science fiction and a bit of detective fiction. But I do not think I would have sought many of these out.

If there is one weakness to this anthology, it’s that the first story is so intriguing that I wanted more of a focus from the inner workings of Limbus, Inc. Or at least maybe half of the stories taking place from Limbus’ point of view.

View all my reviews

Review: Red Rising

Red Rising (Red Rising Trilogy, #1)Red Rising by Pierce Brown
My rating: 4 of 5 stars

This book is a little Enders Game, a little Battle Royale, and a little 1984 with a dash of Harry Potter.

I don’t usually write such short reviews, but in some ways, while a lot happens in this book, not very much happens. Which is to say that it’s the first book of a trilogy so nothing huge can get resolved. It’s a lot of setup in 3 parts, each with their own beginning, middle, and end. That’s what Pierce Brown does so well and which keeps me from being TOO upset at the fact that at the end of this book, things are only beginning for the main character. Yet we have already seen him have 3 arcs. He’s grown so much in the approximately 2 years in which the book takes place and yet he also reminds somewhat blinded in simplicity by his goal.

The book, like this review, is awash in contradictions. Another example is in the fact that the final third of the book is populated by about 200 teens who would be considered gifted by our standards and yet also are the jocks of their society. It’s like being the poorest rich kid, you know? In your world you are treated the way middle class people treat the poor. Yet both poor and middle class would kick you for feeling that way. The author, through Darrow is constantly reminding us that even the “brutes” are insanely smart.

Brown has set up an awesome world with a rich history at the end of the first book. The question is whether I or anyone else reading now will care next year when the second book comes out. That’s part of the problem of a pre-planned trilogy – at least for those of us who jump in at the beginning. I imagine those who pick it up later will soar right into book 2 as soon as the first is done.

If the world hasn’t tired of Battle Royale and Hunger Games and the like – this would be a great spin on the idea. It combines the frenetic pace of those movies with a bit of a science fiction element.

Finally, I heard the Recorded Books version. The narrator is a great voice actor. He does a great job with a great many voices. It really did make me feel like I could hear a bunch of different characters.

View all my reviews

Review: Mother Fucking Flowers

Mother Fucking FlowersMother Fucking Flowers by Tammy L. Witzens
My rating: 3 of 5 stars

Let me begin by saying that I enjoyed this book. I won it as part of Goodreads’ FirstReads program. The title looked insane and so did the description; the subject of many an Internet joke and comic strip: if you could go back in time, should you kill Hitler? The Aeon Flux-looking woman on the cover was interesting as well. Unfortunately, I was delayed by a couple weeks in getting the package because I had a business trip. When I did get the book, I was amazed at how thin the package is. Other than, perhaps, The God Engines, this is shortest book I’ve read in a long time.

Perhaps that’s why I was getting worried as the plot seemed to be accelerating towards a climax, not resolving itself within the last 10 pages. There’s a reason for this. Sometimes people like to read the last page of a novel before they dive in; I used to do that when I was younger. Don’t do that with this one, it’ll more or less ruin the point of the book.

A few more points before I get into spoiler territory: The book is written in an almost stream of consciousness/almost Douglas Adams styles that sometimes works beautifully and sometimes derails the book for me. It shows how smart Adams was to deploy the narrative device of the Hitchhiker’s Guide within the eponymous book. Because we aren’t in Daisy’s head. We do have an omniscient narrator who knows what she’s thinking, but the interruptions without the frame of someone telling a story or the guide is a little jarring at times.

As a bit of proof that nothing in life is ever as simple as it seems with an Internet campaign or slogan, although this book is written by a woman, there appears to be more mention of “male gaze” things like breasts than “female gaze” things. Or maybe breasts are both? I don’t know. It struck me a bit as odd, but I’ve really only started to truly learn about these things in the past few years.

OK, spoiler time.

(view spoiler)

In the end it all worked out perfectly as a novella because it turned out to be the dream of a Daisy - the flower. It explains why everyone was "Daisy" - male or female - and why sex with another Daisy was neither masturbation nor incest and produced a seed. It explains why the science kept getting weirder and why the circus scene didn't make sense. It also explains the heroine's lackadaisical attitude (probably at least partially a pun) and the wonky physics. When you look at it all as a combination of a dream and a life lesson (which is the title name drop), it is beautiful as well as being one of those "the journey's the important bit" books. But this as the basis of a whole universe? I don't think I can quite suspend my disbelief like this for another book. Then again, maybe Ms Witzens has some way that'll come out of left field and make it work.

(hide spoiler)]

In the end, while this is very obviously a first novel (the style has hints of being amazing tangled with the awkwardness of the new and there are some weird spelling and grammar errors that especially mess things up because she has some puns in there so it’s important not to confuse homophones), it is a good first novel (or, more properly, novella). I hope lots of people pick it up and enjoy it so Ms Witzens can create more novels and work that storytelling muscle. Based on the kernel of what she has in this book really gripping me (I was dying to get to the end of the book – it was killing me that I was only reading it while walking between offices at work) and the humor mostly working – I think I can see myself really becoming a fan as she matures as a writer. As I said recently in a review of another writer early in his career – I’ve tried to be a creative storyteller time and again and I know it’s extremely hard. Even the best writers get harsh critics telling them they’re washed up; how much harder for the newbie who’s working on his/her style? So I always appreciate when someone goes out on a limb and puts their creative work out there. Also, as a person, Ms Witzens really did something special by writing a personal inscription in my copy of the book. That’s the sign of an author who truly cares. That’s the kind of author that deserves support.

View all my reviews

Review: World War Z: An Oral History of the Zombie War

World War Z: An Oral History of the Zombie WarWorld War Z: An Oral History of the Zombie War by Max Brooks
My rating: 4 of 5 stars

This book deserves all the praise that has been heaped upon it. Brooks does an excellent job putting together a history of both how the zombie virus became an epidemic and how the human race came on top. He gives each character their own voice and style. I really felt as if it were a real documentation of history. I also enjoyed the meta-story told through both the names of the countries/provinces and the introductions to each section.

Like any good work of science fiction it reveals a lot more about us now through its speculation of how we’d act under this situation. The section with the member of the US presidential cabinet really hammers that home.

There isn’t really much more else to say. Like The Walking Dead, this story isn’t really about the zombies, it’s about how they affected the human race. (view spoiler)

View all my reviews

Review: Jam

JamJam by Yahtzee Croshaw
My rating: 5 of 5 stars

I had no idea what to expect when I started reading this book. All I knew was that I found Yahtzee Croshaw’s reviews at Zero Punctuation to be pretty funny. I’d acquired Mogworld and Jam via Humble ebook bundles. I’m not sure, but I think they were in two different bundles. I can’t remember. Anyway, after looking at all the descriptions, it appeared that Jam was just Croshaw’s next novel, not a sequel to Mogworld. So, since the description of Mogworld sounded a little too close to what I do for a living, I went with Jam. It is a standalone book. I ALMOST changed my mind when one of the characters in Jam turned out to be a Mogworld developer, but that was of no consequence. The character may or may not be in both books, but it appears they merely take place in the same universe without any part of Mogworld being necessary before reading jam.

It was interesting that Jam was written in the first person. It’s been a while since I read a book in first person (Red Rising is in the first person, but I’m listening to that in parallel to this one) What makes Jam so incredible to me and made it an automatic 4 stars minimum is that the narrator/main character of Jam is an idiot. He’s a sympathetic idiot, and rarely does it become so grating that you wish for his death.

The next half of a star comes from both the British humor and the setting of Australia. Rarely do I get to read a book set in Australia with Australian protagonists. More often it’s America, England, or some sci-fi/fantasy setting. Just like the Canadians, I thoroughly enjoy this culture that is so close to American, but slightly different. It was also fun, for a change, to have the Americans be the antagonists.

The final half star comes from the fact that Croshaw has a few twists and turns with his narrative. He does what the best comedy writers do – puts the comedy in service of the story, not the other way around. There is genuine pathos and genuine drama to Jam. But, more than that, Croshaw keeps you guessing. This is truly an apocalyptic story – it hits all the beats: the mystery of how it happened, the new society, the death of those who aren’t genre savvy.

If the Venn diagram of people who like apocalyptic stories and British humor has you in the overlapping section, you should buy this book and read it ASAP.

View all my reviews

Review: A Midsummer Night’s Steampunk

A Midsummer Night's SteampunkA Midsummer Night’s Steampunk by Scott E. Tarbet
My rating: 5 of 5 stars

It’s always tough when people redo Shakespeare. Sometimes it works really well and sometimes it’s just horrible. I absolutely loved the way Scott Tarbet resets a Midsummer Night’s Dream in a Steampunk Victorian England. He was able to use Steampunk to handle the existence of fairies in the original and he uses wordplay to deal with stuff like the ass. It was only the love potion that had to resort to hand-waving to work with the story. I didn’t mind it too much.

I think the only thing that gets a LITTLE tiresome is the constant references to how if they didn’t get everyone to cooperate we’d have world war 1 and 2. Having already learned about 15 years ago that all the heads of state were related, it was fun to see the author have a lot of fun with that.

Although it matches with my memory of the original, I do like that both the men and women take turns in the spotlight and all can hold their own. Sometimes the men rescue the women and sometimes the women rescue the men.

I think it’s extra fun with all the Easter Eggs you come across if you know Shakespeare (particularly more than just Midsummer Night’s Dream), but you don’t have to know the original to enjoy this one – I think that’s part of what makes it so successful a remake.

The post-script on the book (from the author and the publisher) make it seem as though this is perhaps his first book. I’d say I can’t wait to see Mr Target tackle an original story, but he makes this book his own (as I mentioned above) in such a way as to lead me to say, I can’t wait to read his next book; whether it takes place in a Steampunk work or not.

View all my reviews

Review: The Silver Ninja: Indoctrination

The Silver Ninja: IndoctrinationThe Silver Ninja: Indoctrination by Wilmar Luna
My rating: 2 of 5 stars

Disclosure: I got this book for free for review.

Let me start with what I liked. Wilmar does a good job creating a believable female hero. She has flaws. She sounds like a woman; not a man with breasts. At the same time not a caricature of womanhood or a ditz. The sisterly relationship seems like a girl’s version of what I’ve seen with my brothers. While the dialog sometimes fell a little flat, the martial spat and relationship and sexual dysfunction seemed realistic.

What I didn’t like but was forgivable:
Almost everything about the suits and physics. Because the story seemed like 2014 + nanotechnology it was harder to suspend my disbelief than if it was a more science fiction world.

The amount of blood she loses and her concusions.

But I can just pretend this is an anime or Michael Bay movie as a book and not worry too much about that.

What made me give it two stars instead of 3 or 4:

Lots of loose plot threads. What were the consequences of government confiscation? Was the computer virus successful? Why was Black Rook involved? Why did he want what the bad guys planned?

The whole time I felt like this was the second book in a trilogy with lots of setup without payoff.

As I mentioned in my status update I have to respectfully disagree with Wilmar that this book can be read without reading the first one. Everything going on between the main characters is based on stuff that happened in the first book. It is hard to understand all the arguments without the context.

Finally, the book never properly setup the climax so that I wanted to keep reading. The only reason I read the first 60% in one go is because I was on a long flight. The only reason I finished is because Wilmar gave it to me for review. That’s not to say it was a horrible book. It was fine. It just wasn’t great. If it’d kept me on my toes that might have been enough for 3 stars.

I love writing but I’ve never been able to finish a novel so I have a lot of respect for what Wilmar has done and how he’s put himself out there. It’s why I wrote such a comprehensive review for a 2 star book. I think there is a good foundation here. I would definitely start with book #1 if you are a new reader. Perhaps if there is a #3 we will get some needed closure. Even if he plans a book #4, perhaps we need to close the book on Black Rook.

View all my reviews

Suddenly Charlie XCX seems to be everywhere. In reality she’s been slowly appearing in and writing lots of pop songs for the past few years. But I had no idea who she was or anything. So I was surprised to find I had “What I Like” from her True Romance album on my computer. Must have been one of those MP3s Rolling Stone used to give away weekly.

Review: The Sword & Sorcery Anthology

The Sword & Sorcery AnthologyThe Sword & Sorcery Anthology by David G. Hartwell
My rating: 4 of 5 stars

I enjoyed all the stories but one on here – the one about the pick-lock. One of my favorites turned out to be the last one, which I think is the shortest story. But the there’s still a very compelling story told. I was disappointed with the GRRM story because I thought it was going to be an original short story. It just just part of a Dany chapter from ASOIAF. But, on the plus side I got to compare how it’s different from the HBO show, I got to see that I enjoy the way GRRM writes, and it was my favorite part – when Dany reveals to the Astaporians that she understands Valarian. As I mentioned in my updates, I enjoyed the Conan story and other than the vocabulary being a bit more formal, not much gives away that it was written 70-80 years ago. Also, having just read Gail Simone’s first Red Sonja arc, it was neat to see one of the stories call out Red Sonya (who Sonja is based on). Other top story was the one with the “Chinese” soldier. But really, lots of them were great.

I’d recommend this to any fan of short stories. It’s a plus if you like fantasy. I’m impartial – I can enjoy it, but rarely seek it out.

View all my reviews

Review: The Mocking Dead Volume 1

The Mocking Dead Volume 1The Mocking Dead Volume 1 by Fred Van Lente
My rating: 3 of 5 stars

Parodies are hard to do well. The worst parodies are unbearable, the best deconstruct the tropes. I was afraid The Mocking Dead would be the former, but since I got it as part of a huge Humble Bundle, it was nearly free for me to check out. Luckily it turned out to be less Scary Movie and more like something Mel Brooks would put together.

It is a competent story that stands alone without any knowledge of what it parodies. While Spaceballs is funnier if you know Star Wars, it’s enjoyable without any knowledge of it. Similarly, the only things The Mocking Dead takes from The Walking Dead are the black and white color scheme and zombies. This saves it from the Family Guy-ization of parodies (eg Scary Movie, Not Another Teen Movie, etc).

However, the greatest original contribution is that of laughing zombies. The art is so perfect – it captures what’s always been horrific about Joker’s laughing serum. Bad guys coming at you with a grin plastered on their face is creepy. Combine that with being undead and laughing and it’s almost terrifying.

The Mocking Dead is not going to be a classic nor is it an awesome comic book. But it’s a good story that pokes fun at zombie tropes and current nerd/pop culture. (With a little politics thrown in for good measure) I’d recommend it for the zombie geek in your life.

View all my reviews

Reviews: Wizzywig: Portrait of a Serial Hacker

Wizzywig: Portrait of a Serial HackerWizzywig: Portrait of a Serial Hacker by Ed Piskor
My rating: 3 of 5 stars

This book is a commentary on the sad state our country has been in since the 70s and 80s when it comes to computer crime. Although there should always be consequences for skirting the law we have often taken it a bit too far. This graphic novel was sad to read in the wake of Aaron Schwartz’ suicide when threatened by law enforcement.

Main character Kevin Phenicle is a combination of a bunch of historical hackers and ends up “being there” at a lot of key events. (Phone phreaking, etc) I missed out on most of this when it happened – partly from being too young and partly from my family’s socioeconomic situation at the time. My family couldn’t afford a computer until I was much older (at least a modern computer – my father did give me a Tandy when I was 8) and we didn’t get a modem until years later. Even then I didn’t associate with the computer nerds. I would have loved to, but didn’t even know that was a sub-culture. I thought I was alone – what a different world from today.

As for the particulars of this story, Kevin Phenicle’s amalgamation means that while there is a story arc and progression, it’s not quite as cohesive as some other stories. The art was fine, if a bit uneven – in some scenes Keven goes from skinny to “fat” or super broad-shouldered. As someone who’s drawn his entire life without getting that good at it, I am not claiming I could do better. Just mentioning that it was a bit uneven.

I’ve mentioned my stance on profanity, smutt, etc in previous reviews. It doesn’t bother me on its own. As I’ve mentioned before, the over-the-top profanity and violence in Pulp Fiction is one of the things I enjoy most about the movie. But, like the famous Supreme Court decision says, obscenity is something you know when you see. In my case, sometimes it seems necessary to the plot and sometimes it seens arbitrary. I don’t know why, but it bothered me a bit in Wizzywig. The profanity and random depictions of sexual acts – it bothered me a bit. I can’t quite put my finger on it other than to say there’s a random scene late in the book in which someone mentions marrying someone and that it was nice and the accompanying image is of the man having sex from behind his wife. Nothing necessarily deviant about that on its own. But it just seemed unecessary to the story, and again, given that this was not an over-the-top crazy porno book, it was irksome.

If my review seems a bit lukewarm, that’s pretty accurate. I appreciated and enjoyed the story Ed Piskor is communicating through the graphic novel because I have a respect and fondness for the hackers who came of age a decade or so before me. But the execution wasn’t something I was a huge fan of.

View all my reviews

Exploring btrfs for backups Part 4: Weekly Culls and Unit Testing

Back in August I finally had some time to do some things I’d been wanting to do with my Snap-in-Time btrfs program for a while now. First of all, I finally added the weekly code. So now my snapshots are cleaned up every three days and then every other week. Next on the docket is quarterly cleanups followed up yearly cleanups. Second, the big thing I’d wanted to do for a while now: come up with unit tests! Much more robust than my debug code and testing scripts, it helped me find corner cases. If you look at my git logs you can see that it helped me little-by-little figure out just what I needed to do as well as when my “fixes” broke other things. Yay! My first personal project with regression testing!

A small note: to accommodate the unit testing, I had to change the file name – so the one you want to use is the one without dashes. I am not 100% sure how to get rid of the old file without losing commit history, but I think it’s not too big of a deal for now.

If I can get my way, the next update will be when I setup the self-healing RAID 1 followed by setting up the backup harddive and btrfs send/receive.

How did we get to the point where certain singing voices are racialized? Everyone I’ve spoken to (and me too) was surprised to discover (a few years ago) that Adelle was not black. Now it’s happening all over again with Meghan Trainor and “All about that Bass”. I’d heard the song at the gym and looked for the music video, when Ms Trainor appeared I was shocked. As was my wife when she walked into the living room. I’ve polled a bunch of others in the office and they were all shocked as well.