November 2020 Summary

This month, I finished up most of my data management troubles, though I do need to revisit my RAID-1 and backup systems again in 2021. I need to learn how to do proper maintenance on the new BTRFS RAID-1 arrangement I’m using for redundant storage of my project data, and I still need to set up the rsnapshot mirror of the drive.

But I decided to get back into production work with a few “warm up” projects.

Nov 2, 2020 at 4:00 PM

Redundant Dual Drives Installed

So, following a recommendation from Andrew Pam, I purchased two 1 TB SATA drives and installed these as a redundant pair with BTRFS. This will be my new project data drive (which I mount as “/project”).

I was surprised at how easy this was. And I think I actually made it a little more complicated than strictly necessary, because I created partitions on the drives, rather than just using them directly (which BTRFS can do).

This is on Ubuntu Studio 20.04 (which is mostly the same as Ubuntu 20.04, it’s just the version with extra multimedia tools and XFCE desktop).

The hardest part was that this was one more drive than I had SATA power supply cables for. Fixing that required a little soldering. I built an adapter to go from the old-style 4-pin ATA molex connectors on my current supply to four additional SATA power supply plugs, using cables from my old burned-out power supply and a fan power adapter (so now I actually have three extra SATA connectors).

The software part was very easy.

First of all, I need to install the btrfs-progs package:

# apt install btrfs-progs

This provides the mkfs.btrfs and other tools I need for using BTRFS filesystems.

I used parted to put GPT labels on the two new drives:

# parted /dev/sda
(parted) mklabel gpt
(parted) quit
#

This did the first one, which was mounted on /dev/sda, the other was on /dev/sde.

I then used cfdisk to create single large partitions on each drive. This part I did mostly out of habit, before I realized BTRFS doesn’t really need it. But it can work with partitions, so there was no need to undo it.

Making the file system was easy, and shockingly fast. With Ext4, the process takes time making superblocks, so the formatting takes a couple of minutes. With BTRFS, it finished almost immediately. For a moment, I thought it hadn’t worked:

# mkfs.btrfs -m raid1 -d raid1 -L PROJECT /dev/sda1 /dev/sde1

Had I not created the partitions, I could just as easily have let it work on the bare block devices by specifying /dev/sda and /dev/sde instead. However, with the partitions already existing, mkfs.btrfs will complain and abort, to avoid accidentally overwriting an existing filesystem. There is an option to force it, if need be, but I didn’t.

Then I added a line to my /etc/fstab to mount the new drive:

LABEL=PROJECT /project btrfs defaults 0 0

You’ll note that I mount drives by label, rather than using device names (which can change easily during the boot process with newer configurations) or UUIDs (which are recommended in most modern documentation, but are hard to change or remember).

I find these a lot more convenient, and have been using them with Ext2 to Ext4 filesystem mounts for years without any trouble. The only real gotcha that I run into is that I must ensure that each drive has a unique label, otherwise it can be unpredictable which drive will get mounted (I suspect it will mount the first drive in device-name order with the given label, but I’ve actually never tested it).

In this case, of course, the PROJECT label no longer applies to an individual block device, but to the combined filesystem provided by BTRFS. I was unsure if this would work, but it turns out to work just fine!

Then I copied the data from recovered /project data onto the new drive:

# cd /snapshot/recover_project/project_recon2/
# cp -arpv * /project/

Where “/snapshot/recover_project/project_recon2/” was my data reconstructed with ddrescue and my offline backup from March 2020 (the 2nd attempt — I had tried to include an earlier backup that covered more data, but it had a lot of irrelevant stuff in it, so I decided not to use it).

The last step in recovering the data is merging the recovered data from the Lunatics source tree into a fresh checkout from the SVN server. This was necessary, because the old working copy was corrupted (that’s how I discovered that my drive was starting to fail).

What I’ve Learned

My take-home message from this drive failure is that it isn’t enough for me to simply have backups I can use to recover, because the recovery process takes too long. I need to have full redundancy so that restoration is quick in the future in this kind of incident.

I still want to have a snapshot system as well. BTRFS provides a way to do this in the filesystem itself, but I’m thinking of sticking with the rsnapshot system that I’m used to, particularly since it will make an independent 3rd copy of the filesystem on a conventional Ext4 partition. I don’t really expect BTRFS to fail, but it is technically still considered “experimental”.

Nov 18, 2020 at 4:00 PM

Spacesuit Crate

Spacesuit crate prop for S1E01-Prolog.

Spacesuit crate prop for S1E01-Prolog.

If I’m not mistaken, this is the final outstanding prop to model for Episode 1.

I took quite awhile to get around to doing this one, since I had decided to model it myself, and I was kind of intimidated by all the great mechanical modeling on this project by Sathish Kumar, Chris Kuhn, and Andrew Pray (who made the model of the actual spacesuit you see here — I just posed it and applied the armature modifier to put into this storage position).

I guess I was afraid I wouldn’t be able to make a model that would stand up next to theirs, but I’m pretty happy with this result. In any case, it’s only featured in a couple of shots.

Although the outer layer of a spacesuit is fabric (US suits are generally woven Kevlar on the outside), the suit is stiff because of the neoprene “pressure bottle” parts inside which are about as rigid as an automotive tire, with flexible accordion joints to allow it to bend where it needs to. So an empty suit doesn’t compress much beyond one with a person in it, which made this part pretty easy. I thought I might have to tweak the mesh after posing it, but other than removing the helmet, I really didn’t have to.

If I’m not mistaken, this is the final outstanding prop to model for Episode 1.

I took quite awhile to get around to doing this one, since I had decided to model it myself, and I was kind of intimidated by all the great mechanical modeling on this project by Sathish Kumar, Chris Kuhn, and Andrew Pray (who made the model of the actual spacesuit you see here — I just posed it and applied the armature modifier to put into this storage position).

I guess I was afraid I wouldn’t be able to make a model that would stand up next to theirs, but I’m pretty happy with this result. In any case, it’s only featured in a couple of shots.

Although the outer layer of a spacesuit is fabric (US suits are generally woven Kevlar on the outside), the suit is stiff because of the neoprene “pressure bottle” parts inside which are about as rigid as an automotive tire, with flexible accordion joints to allow it to bend where it needs to. So an empty suit doesn’t compress much beyond one with a person in it, which made this part pretty easy. I thought I might have to tweak the mesh after posing it, but other than removing the helmet, I really didn’t have to.

Nov 26, 2020 at 1:01 PM

Warmup – Revised Titles

After recovering from all the crises in October with clunky upgrades and failed hard drive, I decided to do some “warm up” production work — easy stuff I just hadn’t gotten around to finishing.

So among those, I refactored the main titles (mainly moving the source files to keep them together and upgrading the file to Kdenlive 19), and then also tweaked a few things that bugged me. There is now a character portrait for “Sergei Titov” (voiced by Sergei Oleinik).

And I had tried to do something clever with Rosalyn and my names for the “Producer” and “Script Editor” credits, which did not work all that well.

Bear in mind, the titles are still subject to possible changes. And of course, there are also end-titles which are specific to the episode. The main credits are for the series — or at least the “pilot arc”, which is still planned to run for three episodes.

Also, the three animated space sequences have been re-timed and rendered at a full 30fps in this version (previous versions were slowed down in Kdenlive, and thus were at a “chunkier” lower frame rate). I also composited them slightly differently to get a little more glint and glare from the sunlight.

Just little things, but I think it looks better than it did.

After recovering from all the crises in October with clunky upgrades and failed hard drive, I decided to do some “warm up” production work — easy stuff I just hadn’t gotten around to finishing.

So among those, I refactored the main titles (mainly moving the source files to keep them together and upgrading the file to Kdenlive 19), and then also tweaked a few things that bugged me. There is now a character portrait for “Sergei Titov” (voiced by Sergei Oleinik).

And I had tried to do something clever with Rosalyn and my names for the “Producer” and “Script Editor” credits, which did not work all that well.

Bear in mind, the titles are still subject to possible changes. And of course, there are also end-titles which are specific to the episode. The main credits are for the series — or at least the “pilot arc”, which is still planned to run for three episodes.

Also, the three animated space sequences have been re-timed and rendered at a full 30fps in this version (previous versions were slowed down in Kdenlive, and thus were at a “chunkier” lower frame rate). I also composited them slightly differently to get a little more glint and glare from the sunlight.

Just little things, but I think it looks better than it did.

2.5D “Waving” Shot

I also worked on the “2.5D” shot of Sergei, Hiromi, and Georgiana waving to the crowd before getting onto the elevator up to the Soyuz. I decided to do this using a 2D workflow, based on images of the steps up to the elevator, rather than trying to use the launchpad model, because it wasn’t quite accurate that close up. This was a pretty easy solution, and it was nice to still have some 2D workflow in the project — I had once intended to do a lot more of it this way.

Screen Capture of Waving Shot

Screen capture of “waving” shot from the S1E01-Prolog LA/”Launch” sequence, showing the layered 2D composition.