Archive for March, 2012

Manual upgrade of CrashPlan on NexentaStor

March 31st, 2012 No comments

Thanks to some useful recipes and particularly these concise intructions I’ve been successfully running CrashPlan on my NexentaStor NAS server for a good while now, and very reliable it has been too. Although CrashPlan is not supported on Nexenta (Solaris kernel with Debian userspace) it’s straightforward to select the right components from the Linux and OpenSolaris installers and get a working system.

The only aspect of this hybrid install the doesn’t work correctly is the auto-upgrade feature of CrashPlan. Occasionally, CrashPlan will fail because of the autoupdate process. Sometimes, a simple server restart – skipping the upgrade – is sufficient, but other times it’s actually necessary to upgrade the server. This process is documenting below.

This shows a manual upgrade from CrashPlan 3.0.3 to CrashPlan 3.2.1.

Login as root into the Nexenta Management Console (nmc) and take a ZFS snapshot in case we screw up:

nmc@manod:/$ setup appliance checkpoint
Option ? create
Created rollback checkpoint 'rootfs-nmu-003'

Then, as logged in as admin at a regular bash shell, remove the unpacked previous versions:

$ cd downloads/
$ rm -rf CrashPlan
$ rm -rf CrashPlan-install

Next, download the latest CrashPlan installers for both Linux and Solaris:

$ wget
$ wget

Now untar the Linux version, which results in a Crashplan-install directory,

$ tar zxfs CrashPlan_3.2.1_Linux.tgz

and the Solaris version which creates a Crashplan,

$ tar zxfs CrashPlan_3.2.1_Solaris.tar.gz

Open a second shell as root and prepare the ground for installing the new Crashplan:

The CrashPlan installer doesn’t like installing a newer version over the top of an existing version, so you’ll have to remove the old version, taking care to preserve your configuration. Previously, I’d installed CrashPlan into /opt/crashplan, so I did:

% cd /opt/
% mkdir crashplan-conf.old
% cp -R crashplan/conf/* crashplan-conf.old

The remove the original installation:

% rm -rf crashplan

Back in the original admin shell run the installer. Refer to your existing my.service.xml in crashplan-conf.old file to help you recall the answer to the questions the installer will throw at you.

$ cd CrashPlan-install
$ sudo ./

After the lengthly EULA you’ll get:

Do you accept and agree to be bound by the EULA? (yes/no) yes

What directory do you wish to install CrashPlan to? [/usr/local/crashplan] /opt/crashplan
/opt/crashplan does not exist. Create /opt/crashplan? (y/n) [y] y

What directory do you wish to link the CrashPlan executable to? [/usr/local/bin]

What directory do you wish to store backups in? [/opt/crashplan/manifest] /volumes/welshpool/crashplan/backupArchives

What directory contains your SYSV init scripts? [/etc/init.d]

What directory contains your runlevel init links? [/etc/rc.d] /etc/rc3.d

Your selections:
CrashPlan will install to: /opt/crashplan
And put links to binaries in: /usr/local/bin
And store datas in: /volumes/welshpool/crashplan/backupArchives
Your init.d dir is: /etc/init.d
Your current runlevel directory is: /etc/rc3.d

Is this correct? (y/n) [y] y

Unpacking /./CrashPlan_3.2.1.cpi ...
44127 blocks
ln: creating symbolic link `/usr/local/bin/CrashPlanDesktop' to `/opt/crashplan/bin/CrashPlanDesktop': File exists
ln: creating symbolic link `/etc/rc3.d/S99crashplan' to `/etc/init.d/crashplan': File exists
cat: /proc/sys/fs/inotify/max_user_watches: No such file or directory

Your Linux system is currently configured to watch files in real time.
We recommend using a larger value; see the CrashPlan support site for details

ps: unknown output format: -o cmd
usage: ps [ -aAdefHlcjLPyZ ] [ -o format ] [ -t termlist ]
[ -u userlist ] [ -U userlist ] [ -G grouplist ]
[ -p proclist ] [ -g pgrplist ] [ -s sidlist ] [ -z zonelist ] [-h lgrplist]
'format' is one or more of:
user ruser group rgroup uid ruid gid rgid pid ppid pgid sid taskid ctid
pri opri pcpu pmem vsz rss osz nice class time etime stime zone zoneid
f s c lwp nlwp psr tty addr wchan fname comm args projid project pset lgrp
Starting CrashPlan Engine ... Using standard startup

CrashPlan has been installed and the Service has been started automatically.

Press Enter to complete installation.

Important directories:
Default archive location:

Start Scripts:
sudo /opt/crashplan/bin/CrashPlanEngine start|stop

You can run the CrashPlan Desktop UI locally as your own user or connect
a remote Desktop UI to this Service via port-forwarding and manage it
remotely. Instructions for remote management are in the readme files
placed in your installation directory:

To start the Desktop UI:

Installation is complete. Thank you for installing CrashPlan for Linux.

Actually, CrashPlan will not have started at this point. First we need to fix our installation by copying a couple of files from the Solaris installer over the top of those the Linux installer has just put in place:

$ cd ../CrashPlan
$ sudo cp root/opt/sfw/crashplan/bin/CrashPlanEngine /opt/crashplan/bin/CrashPlanEngine
$ sudo cp root/opt/sfw/crashplan/ /opt/crashplan/

Then, back in our root shell, we copy our original CrashPlan configuration back into the new installation.

% mkdir
% cp -R conf/*
% rm -rf conf
% mv ../crashplan-conf.old/ ./conf

and start CrashPlan,

% /etc/init.d/crashplan start

CrashPlan GUI

I’m running a headless CrashPlan server with the graphical client running on Windows. The client manages to update itself without incident, so no further action is needed.

Categories: nexentastor Tags: ,