Manual upgrade of CrashPlan on NexentaStor
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 http://download.crashplan.com/installs/linux/install/CrashPlan/CrashPlan_3.2.1_Linux.tgz
$ wget http://download.crashplan.com/installs/solaris/install/CrashPlan/CrashPlan_3.2.1_Solaris.tar.gz
Now untar the Linux version, which results in a
$ tar zxfs CrashPlan_3.2.1_Linux.tgz
and the Solaris version which creates a
$ 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
crashplan-conf.old file to help you recall the answer to the questions the installer will throw at you.
$ cd CrashPlan-install
$ sudo ./install.sh
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
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 ...
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.
Default archive location:
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/libjtux.so /opt/crashplan/libjtux.so
Then, back in our root shell, we copy our original CrashPlan configuration back into the new installation.
% mkdir conf.new
% cp -R conf/* conf.new/
% rm -rf conf
% mv ../crashplan-conf.old/ ./conf
and start CrashPlan,
% /etc/init.d/crashplan start
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.