WholesaleBackup Blog: The Latest Online Backup News and Opinion

How to create an Amazon EBS storage device > 1TB

Amazon EBS presently has a maximum size limit of 1TB.  With the Wholesalebackup online backup server you can mount multiple 1TB devices and manage your users across them from the administrative web portal.  However, there maybe times when you need to have a larger than 1TB partition, such as when you have a single backup client who utilizes more than 1TB of storage for their backups.

Fortunately you can create a software RAID partition and mount it.  Here is an example of how to mount two 1TB volumes as a single 2TB software RAID0 in Ubuntu (this assumes the RAID was manually created, partitioned, and formatted):

Create a file /etc/init.d/mntmyparitions, which runs automatically at reboot:

    #!/bin/bash
    depmod -a
    modprobe raid0
    mdadm --assemble --verbose /dev/md1 /dev/sdi /dev/sdm
    mount /jail/home1

Be sure the above file has 'x' permission, i.e.
    chmod +x /etc/init.d/mntmyparitions

In /etc/fstab then we have

    /dev/md1  /jail/home1 ext4 defaults,nobootwait 0 0

We suggest you read up on, and use the nobootwait option with EBS on Amazon EC2.

Note: you'll probably want to use parted instead of fdisk to do the partioning given size limitations of fdisk...
 

Restoring a Microsoft SQL Server dbase (MDF/LDF) backed up as files

In our new WholesaleBackup client release (when running in experimental mode), whether or not you select an entire VSS Component to backup, the WholesaleBackup client will activate the Component’s Writer, so for example, if you select a single SQL Server .MDB and .LDF file or an Exchange .EDB file, the backup of that file will occur using the corresponding VSS Component if the file is specified as being served by the Component.  What this means is that whereas formerly, selecting an .MDB & .LDF file would insure it was in a “crash consistent state” but all its data might not be written to disk (and thus the backup), now the file would be backed up via Microsoft’s “SQLServer Writer” which means it is in a known restorable synchronized state. 

So, assuming you selected some Microsoft SQL Server MDF and LDF files to backup, how do you restore them?  Restoring Microsoft SQL Server databases from MDF/LDF files is straightforward using Microsoft SQL Server Studio Management Express.  The procedure is simply one of replacement and attachment:

  1. Restore the .MDF and _1.LDF files to a “New Location” using our software client.
  2. In Microsoft SQL Server Studio Management Express right-click on the database you will be restoring in left tree-view, make note of the location of its files (it maybe something like C:\Program Files (x86)\Microsoft SQL Server\MSSQL.1\MSSQL\Data), and pick Detach.
  3. Copy the .MDF and _1.LDF file from step 1 to the location of the files you detached in the previous step and be sure the permissions on the two resultant files are the same as the files you overwrote (else you will get an error in the next step).
  4. In Microsoft SQL Server Management Studio Express Right-click on Databases in left tree-view and pick Attach and then choose the .MDF file you replaced in previous step.

Please contact us to get a copy of the document entitled "Backing up VSS Writer Components, including Microsoft Exchange..." for more information.

Plugin components now available for Exchange, Oracle, SQL, etc.

Divinsa LLC’s WholesaleBackup software client, since it’s first version, has utilized the Microsoft Volume Shadow Copy Service (VSS) framework for backing up open files in what Microsoft terms as a “crash consistent state” (i.e. backups of all open files will be at a specific moment in time consistent with what has been written to disk at that time, as if the computer crashed at that point).

The WholesaleBackup client software now supports, in experimental mode, the VSS Component API for backing up, in a safe integral state, collections of files and folders associated with some application Component, such as Microsoft Exchange and Oracle.

The implementation of every VSS Component Writer was done by the application vendor itself (for example Microsoft, Oracle, VMware, etc.), thus the actual file backup process provided by a VSS Component is implemented by the actual author of the associated application.  Backup utilities that support Microsoft’s VSS interface are called Readers and are abstracted from details which the application vendor’s specific backup procedure requires, thus allowing a well written Reader to backup dozens of different applications using a single method.

The WholesaleBackup software client is now a VSS Reader that makes standardized calls to the VSS API, and thus WholesaleBackup can now backup any application, including some operating system functions supported by Microsoft, which have implemented a VSS Writer for their files.  WholesaleBackup’s VSS Reader backs up files in “full copy” mode by default, or optionally "full mode", and then WholesaleBackup will either use full or differential methods to transmit those files to the backup servers using the method you have specified within WholesaleBackup (the default is differential, a.k.a. delta block, to minimize the client’s Internet bandwidth).

Please contact us to get a copy of a short document describing how to utilize this new feature.

 

Dedicated plugin for Microsoft Exchange Backup/Restore is in the works

We've provided for backing up and restoring Microsoft Exchange using Microsoft's utilities and VSS (Volume Shadow Copy Services) writer.  The number one requested feature is for WholesaleBackup to provide a simple plugin for backing up Microsoft Exchange, which I am pleased to share is now in the works.  Please contact us if you are interested in participating in our beta program for this feature.

 

Storage Quotas

In implementing account based storage quotas we faced two alternatives, the first was to use native quota managed packages in Linux itself (see http://www.yolinux.com/TUTORIALS/LinuxTutorialQuotas.html for example) or to implement alerting and management at a higher level.  To ease the burden on support and server administrators we elected to implement quotas at our application level rather then utilize the file system level.  This has resulted in a simple and robust implementation which you can customize!

WholesaleBackup's implementation is straight-forward and open source.  If you enable a quota for a backup account, it is checked each time a backup transaction occurs, and if the user is over the quota you set, your backup server administrative alert email account (which you specified at installation time) is sent an email indicating that quota has been exceeded for that user.  From the WholesaleBackup web portal you can easily edit the quota value, frequency of alerts, and see when an alert was last sent.  In addition, all alerts are logged for future reference.  

You can easily extend our implementation, since we've provided the schema for the underlying database as well as the simple script which checks for quota conditions and sends email alerts, to perform more sophisticated processing such as suspending accounts and emailing clients directly.

Seeding Local Backups and Restores using Onsite Devices

WholesaleBackup is an online backup solution (backups and restore happen over a network at network speeds).  Occasionally we’re asked about how one would go about seeding a large backup or restore using a device to increase speed of the first “full” backup or a large restore.

One has two options for seeding backups.  Using our software client one can perform a full 'seed' backup to local media and then transport the encrypted files to your backup server and populating them there, or one can create a dedicated portable backup server to take onto client sites.  The former method is described in our documentation, so we'll describe the later here.

Since our backup server’s architecture is a lean and mean backup device resident on Ubuntu, one can setup a small and portable WholesaleBackup server in less than an hour for just a few hundred dollars (there is no additional cost to WholesaleBackup for this as your licensing fee includes this feature).  One can then take this server onsite, make a tweak to the user’s hosts file (on Windows this is C:\Windows\System32\drivers\etc\hosts) to point the location of your backup server’s FQDN to be the local IP address of your mini backup server, and then do your client’s first full backup locally at LAN speeds.  You’d then take your server to your data center and create user with same username/password on your main server and just recursively rsync or scp the user’s home directory from your mini/portable backup server to your main backup server.  You’ll also want to remember to remove the change you made to the user’s local host file!

Of course you can do the same in reverse for local restores, but a simpler option would be to mount a USB drive on your Linux backup server (be sure to format it with a Windows file system which Linux can write to, such as FAT32) and then do a server side restore of the user’s data from the web-console to the USB drive.  Of course you’ll need to know the user’s encryption key to do this.  You can then ship your customer the USB drive.   A good resource for mounting USB drives in Ubuntu can be found at: https://help.ubuntu.com/community/Mount/USB

Load-Balanced and High-Availability Online Backup - Architectural Considerations

We’ve received a number of inquiries lately asking about scaling and redundancy (load-balancing and high-availability).  The WholesaleBackup Server Manual covers these topics, but we felt a high-level overview would be a good topic for a blog entry.

A decent quad-core server should be able to handle several hundred backup clients.  Disk I/O performance is the single most important factor in choosing hardware, in particular the server’s storage devices (both RAID controller cards and the physical disk drives) ability to handle multiple simultaneous readers and writers is critical.  We suggest you think ahead when making hardware purchases and configuring it.  For example, RAID10 is typically much quicker to rebuild multi-terabyte arrays then RAID5 or RAID6, so in the event of a disk failure (which is inevitable) you’ll be much happier with RAID10.  In addition, SAS drives typically handle multiple simultaneous readers better than SATA drives and SCSI and eSATA interfaces are much faster then USB.

If your server’s disk controller card and chassis will support it, you can add additional disk drives and make them available in Linux at any time.  If you run out of local storage capacity, it is straightforward to setup a Linux NAS or SAN and remote mount that network storage via NFS to your backup server (the file systems need to be Linux formatted).

Our backup server will automatically backup it’s key meta-data to the /backup/ directory, which you can then backup or sync to another device.  We also provide a script that automatically replicates this data to an Amazon EC2 Cloud server (the script will fire up the server, replicate the data, and then automatically stop the server to save you $s).  It is straightforward to modify this script to replicate to a server of your choosing.

The WholesaleBackup Server is architected for scaling and redundancy and can be thought of as having four major components:

  • A MySQL database containing meta-data about every account’s backups and restores.  This is not mission critical data for a customer to backup and restore, rather it is created for you in supporting your clients and their ability to access their backup logs from a web portal.  This database is typically configured to run on one of your backup servers though it can be run on a separate machine.  If you desire you can custom configure replication of your MySQL database to an additional server using standard MySQL and Linux replication methods (there is nothing custom about our implementation which would preclude this).   If general your clients will be able to backup and restore, even if this database is offline, although we do support some load-balancing schemes that require to database to be online to perform optimally.
  • A web-portal consisting of PHP and HTML pages which connect to the MySQL database.  This portal is specifically created for you to support your clients and for them to be able to access their backup logs when away from the software client.  Typically this web-infrastructure runs on the same server as the MySQL database, though that need not be the case.   Multiple servers can host these pages if you wish to implement high availability for your support web portal (though this is not requqired for your client’s backups and restores).
  • The storage device(s) that hold the actual customer’s data, logs, and meta-data.  The devices can be local to the backup server(s) or remotely attached via NFS.  If you are using multiple storage devices, our support web-portal allows you to move customers between these devices.
  • The actual backup server(s) running WholesaleBackup Server software.

A typical scenario then is for new WholesaleBackup Server customers to setup a single backup server with all four components on it, and then be sure that the /backup/ directory is safely backed up (or synced) to a separate device.   As one adds more users one may add more storage (either local or remote) and when the server’s processing ability (RAM and CPU) become maxed out after several hundred clients, one then adds a second server, and a third and so one. 

So the question then is, how are multiple backup servers supported?  Conceptually you have a few choices:

  1. Setup different backup server implementations (such as backup1.mydomain.com, backup2.mydomain.com, etc.) and create unique software client installers for each where you manage where each client backups up to.  This scenario requires the minimum amount of configuration effort on your part but there will be a separate support web-portal and database for each backup server.  This is a non-load-balanced implementation.
  2. Each backup server supports backups for certain client accounts, specifically those whose underlying storage device is mounted on that server.  So, when a client makes a request to WholesaleBackup to connect to your infrastructure our load-balancer makes a secure http call to one of your servers to request the network destination for that specific user, which is then returned back to the client so they can execute their backup/restore operation with the server that has access to their data.  This approach is most commonly used in Cloud implementations (which often have limitations on the size and number of volumes you can cross mount and which suffer from the Linux kernel bug described in #3 below) or when you want to minimize cross-mounting ‘slow’ network storage volumes or devices that aren’t fast enough to handle many simultaneous readers and writers.
  3. Each backup server can provide backup and restore capability to every one of your clients, so each server must have all your storage devices mounted (either locally or remotely via NFS) so every backup account’s data is visible to each backup server.  This approach is most commonly used in implementations on your own hardware where you have extremely fast SAN or NAS devices with cross-mounted network storage volumes and is often the best if you are striving for ISO of Six Sigma compliance. In this scenario one needs to direct each client to a backup server either via:
    1. A simple DNS round-robin scheme or a dedicated load-balancing device (such as a box running pfsense).
    2. Sophisticated load-balancing mechanisms that look at the load of each backup server to determine where to direct a backup client (this is sometimes scripted with BSD machines running pf or by using a commercial load-balancing device such as made by f5 or other vendor).
    3. Please NOTE that there is a bug in the Linux kernel, which has not been fixed as of January 2012, with NFS buffers over-running and causing server crashes; we have seen this bug manifest itself on Amazon EC2 instances in high backup traffic situations where NFS mounts are being accessed from multiple backup servers simultaneously; if you think you may scale to this level and you are using EC2 servers we suggest you utilize scenario #2 above instead of this method of load-balancing.

In each of the above scenarios, the backup servers will need to be configured appropriately such as for Linux account replication if required, access to your MySQL backup server, potentially accepting load-balancing calls from your load-balancer or the one which WholesaleBackup provides, etc.  Given the intricacies of configuring and testing enterprise level load-balancing and high-availability schemes with multiple backup servers, you’ll need to enter into a professional services engagement with a trained WholesaleBackup engineer to configure and support load-balanced configurations #2 and #3 above.  

To get started, we suggest you setup a single backup server, knowing that our solution will scale as your business scales.  When you've hit several hundred users and exhausted the resources of your first server then it's time to add a second server and make some decisions as to whether to go with option #2 or #3 above (you can change between them so no decision is permanent)...

The following graph show’s four under-utilized backup servers (e03 – e06) plus a MySQL/web-server (e01) in production in the Amazon EC2 Cloud using load-balancing scheme #2 listed above.

 

White Label Online Backup

What is "White Label Online Backup"?

We get a lot of questions about what we mean when we say white label online backup. Simply put, "white labeling" means that we don't put our brand on our backup software, and instead put your brand on our online backup software, so your clients see an application that runs under your name, and has your logo. 

In the case of our Windows white label online backup software, we customize the following fields:

  • Logo image 
  • Application title (appears on the top right of the application when it's running)
  • Application name (This is the name on the application when its running, or int he task manager)
  • Installer Title
  • Installer splash pages
  • help url (our server automatically puts up a help page for you!)
  • license agreement

White Label Online Backup the WholesaleBackup way!

Then we do some things that the competition does not!

WholesaleBackup also gives you the ability to customize what's initially selected for backup as well - so that means when the installer runs, it automatically selects certain files for backup based on your custom specifications. This is a large timesaver, as you can opt to select files that could be very hard for an end-user to find, or make a build that's setup to backup a certain application only (are you listening software vendors?  Offer embedded backup!). Along with our other competitive unique features, our low startup costs, and low licensing costs, you can't go wrong by trying it out.

WholesaleBackup also updates your custom client with each new build that we produce. Because we use modern software development methods like Agile / Scrum, we deliver rapid updates to our software, and you always will have a fresh install ready to go. 

What other White Label Online Backup does not offer

Do you want to install your own server or integrate backup into your own environment, or customize your own server, or provide a service that assures your customers that you personally secure their data? Many so-called white label backup vendors only allow you to backup to their servers, not deploy your own backup server, and this is where we stand alone: using our Quickstart Package you can have your own white label online backup server as well. 

What we do not customize!

There are a few things we don't customize, as they're nearly invisible, but we know that by highlighting those, that we can earn your trust and keep it by being totally transparent. The icon for the application is not custom, as we have found that it's very difficult for most people to build icon sets that look good, and also that our use of a generic icon ends up relating to the backup product only, not the overall brand. In addition, our engine and service executables run as 2xdataservice and 2xdataengine, while the main application runs as YourBrand.exe. People see this application, and only see the other stuff if they run a tasklist when a backup is running. We find that customizing the application name causes issues with how easily we can release product, and drives our (and your) costs up, so it is not worth the additional cost. Our focus is good business for you and for us!

 

What Next? We offer three programs to help you get started.

  1. If you want to use your own hardware, choose our White Label Online Backup Software Partner Program.
  2. If you want to become a reseller of our online backup service, start with our White Label Online Backup Reseller Program.
  3. If you'd like to have your own server provisioned in the Cloud, look into our White Label Online Backup Cloud Partner Program.

Safely Close Outlook before Backup

If you're using our software, you DO NOT NEED this script ;-) 

That's because our software uses VSS properly to backup Outlook files, even though many other top-level backup applications fail to backup Outlook pst files. But if you're trying to cobble something together, as was a recent poster on Spiceworks, then you may need this advice. So here it is:

How to Safely Close Outlook Before Running Backup on a PST file

  1. Create a visual basic script (let's call it outlookcloser.vbs) in a directory, with the following code:
    On Error Resume Next
    
    Set Outlook = GetObject(, "Outlook.Application")
    If Err = 0 Then
    Outlook.Quit()
    Set Outlook = Nothing
    End If
    Wscript.Quit
  2. Create a batch file (let's call it StopOutlookBatch.bat) in the same directory, with the following contents, except that you need to ensure that the outlook file location matches yours, and that the backup destination (c:\outback\outlook.pst) is the right one, and exists:
    @echo off
    REM run the command to gracefully close outlook - THIS SHOULD BE IN THE SAME DIR!
    cscript.exe outlookcloser.vbs //B //nologo
    choice /T 10 /D y > nul
    REM copy the outlook file - VERIFY THAT THIS IS THE RIGHT FILE FOR THE PROFILE!
    robocopy.exe C:\Users\USER\AppData\Local\Microsoft\Outlook\ C:\outback\ outlook.pst
  3. Run the batch file, which will stop outlook, then copy the file to the specified location, from where you can process it further as required.

Marketing Online Backup: Why Commodity Online Backup hurts more than it helps

Online Backup Pricing: Is a $59/year customer worth $55 to acquire?

When you see execution that doesn't make sense, it's natural to think that it's the product of poor thinking, but I have found over the years that each person and organization lives in a reality different than mine, and that one man's stupid is another's smart. So I am not going to say that the recent moves on Carbonite's IPO are stupid, but I will admit I don't understand them.  

Carbonite's recent comments about customer acquisition costs, disclosed during their IPO, are roughly $55 per customer, each of which brings in $59 a year, and on average stays with Carbonite 5 years, according to Reuters recent article. However, a more deep look directly at the IPO filing shows Carbonite's extremely high cost of customer acquisition, pegged at $91.68. 

Online Backup Speculation?

Basically if Carbonite hadn't spent investor's money, and now the market's money, they could not provide backup at their current price points, which means there's a speculator of sorts in the online backup market, driving prices below what's sustainable and good for the market. 

After the IPO completed, many wondered aloud why Carbonite went forward when instead of raising $122m as projected, they had to settle for $62.5m. CNET (and others) opined that ". . .if [Carbonite] didn't go public now and raise what money it could, it wouldn't have been around to go public later. . ." Carbonite has lost money every quarter since it was funded, and spends a huge amount on acquiring customers. 

So if they're spending so much on customer acquisition, operating for 5+ years at a loss, then going to the IPO market in a firestorm to get another cash infusion, what does that tell us? 

Carbonite's Prices are too Low.

Well, there are probably hundreds of other conclusions, but that's mine: they need to charge 2-3x to make enough money to cover losses and actually be a company that I would invest in. 

Your customers should be nervous if you are as cheap as Carbonite. 

In a recent post on MSP Online Backup Pricing, I covered a few reasons why you should charge more than these commodity rates for even the simplest of online backup services without support, and the recent news after the IPO only makes that more clear: having a company "safeguard" your data when they are not profitable may not be the best choice for real data security. 

Remember, price according to value, and educate your customers!

MSP Online Backup Service Pricing

You would think that pricing your online backup service would be simple: determine your costs, add a reasonable margin, and viola!  Increasing price competition from cheap commodity online backup vendors complicates the exercise, though. Naturally these services want to advertise the strength of their offerings and provide a service to many consumers, but the scale of their advertising has created great confusion in the marketplace against which a dose of reason must be injected.

I was reading a great post by the Harry McCracken at TechnologizerMozy’s New Pricing is a Small Price Hike, or a Big Price Hike, or a Price Cut, Depending on How You Look at It, which linked to some scary reference pages that talk about some of the un-marketed facts about the cheap online backup solutions. Customers will hear that they can get "Unlimited Backup" for a few dollars per month, and compare your price points to that offer, but this is really comparing apples to apple seeds!  Many people ask us about the differences between what a good online backup service will offer vs these cheap commodity online backup services, so here is the summary list, followed by some discussion on each point below:

  • Business-class upload speeds
  • Unlimited upload speeds vs throttling
  • Fast restores
  • Live and responsive customer service
  • Setup assistance
  • Proactive backup monitoring and alerting by a tech support person

Business-class upload speeds:

According to the Carbonite website reviewed 2011 August 29th, Carbonite limits upload speeds. If I understand their webpage correctly, they say that all uploads are limited to 2mbps. My home connection has upload speeds of 5mbps, and our test backup server regularly sees individual customers at 50mbps. The difference in backup times can be staggering: the same upload that takes 1 hour at 50mbps will take over a day if you backed up to Carbonite! Think about this: limited to 2mbps, your backup wouldn't get done fast enough to do daily backups. But that's not the worst news: In bright red text the page says that those speeds are the maximum speeds that can be achieved, which I am guessing means you won't see those speeds unless conditions are perfect for fast uploads. 

Unlimited upload speeds vs throttling:

The same webpage says that Carbonite limits upload speeds for customers that have larger datasets. While you start at up to 2mbps only, that drops to 512kbps if you hit 35GB, and again drops to 100kbps if you hit 200GB. Just for the sake of clarifying this, the same dataset that takes 1 hour at 50mbps will take roughly 21 days at 100kbps! To make this more real, consider that the dataset we're now talking about would include changes of roughly 21GB per day. Many of our partners have customers who have individual databases that are larger than that, and must be backed up daily. Plainly, commodity online backup can't backup that kind of data. 

Fast Restores:

Not only does WholesaleBackup provide technology to its partners that can start downloads of restored files immediately without having to rebuild files during the restore operation, but our partners usually have faster potential download speeds than the low Carbonite restore bandwidth of 10mbps for restores. I will let you do the math on this one, but its pretty simple: you should charge your customers a fair amount for your service because they will get their data back faster from you than a commodity online backup service. Average households in the US have doubled their bandwidth in the last year to 7.5 mbps according to a recent CISCO report, and are expected to grow to 28mbps by 2015. Now imagine that we start talking about business backups rather than just household backups. It's clear that businesses have better internet connections than the average household, and also clear that for a large restore, you don't want your downloads limited by the backup provider!

Customer Support (Lumping the last 3 bullet points):

An informal poll of several of our partners' call center data shows that an average backup customer gets about 3-5 hours of customer support per year as part of their subscription. This may be for help during installation, dealing with issues with their internet connection or computer not backing up because the hard drive is full or has viruses, and also assistance with restores. At a typical IT consulting rate of $150/hour, that is a value of $450-750 a year which your customer would have to pay if they went with a commodity online backup vendor. If you add the $750 on top of say $50 a year, the backup service now costs $800 a year or $70 a month, which isn't all that competitive anymore. 

Add to this the datapoint that by far the biggest issue with online backup are the kind of errors that actually compromise the machine so it stops backing up, and the ugly issue of who watches your backup raises its head. If nobody is making sure you're backing up, your backup is worth nothing. And backups, like anything else, can fail. So paying for a service that monitors your backups and calls you when they're not working, or just fixes them, is worth a great deal of your customers' time, because if they spend 5 minutes a day checking it, that adds up to 31 hours a year, which even at the average wage of $21/hour adds up to another $651 a year. So now our cheap backup service costs: $50 + $750 + $651 = $1451, plus offers slow restores and limited uploads.

 

If that still sounds like a good deal to your customers, send them my way as I have a few bridges to sell!

 

So How should you price your service?

Oddly enough, after all the above math, I would still advise you doing the following: figure out how much your costs are, and then determine a fair markup, and charge that for your service. If you hear complaints on price, use the above to help your customers realize that when they see a cheap price, it often means they get a cheap result. When you compute your price, think about the following:

  • your time to administer the solution
  • tech support time to help customers
  • bandwidth fees for the service
  • computers required to run the service, using whatever amortization schedule you use internally
  • Annual replacement goods like hard drives that you might replace annually
  • Hosting fees (or electricity, rack space opportunity costs, and network)
  • Your time required to do billing and service billing questions

 

 

Online Backup Service Software Automated Failover

How to set up Failover for your Online Backup Service Software

So it's time to talk about failover. For our purposes, we're going to assume that you're using WholesaleBackup in the Amazon EC2 cloud infrastructure, and want to setup failover in a different region (say US-east vs US-west). We could try to snapshot our volumes, and then convert them, or even try to sync them using s3, but those approaches have several drawbacks: the largest drawback is that they send too much information to be efficient, which means they take a long time, and also they are very complicated to setup from a data integrity perspective. Lastly, to save money we want to setup a cold failover so that we can turn off the failover instance when not needed, and turn it on and repoint DNS if needed. 

WholesaleBackup ships with the capability to sync failover information including the system database, user metadata, and system settings), and is setup to start and stop a failover server running in Amazon's EC2 infrastructure. 

However, you may want to extend the failover to include data replication for your customers' data. That's what we're going to cover now. 

Some quick definitions:

  • Hot failover means you keep your failover machine synced, and on, and have some DNS switching or IP failover set up to immediately take up load from the first backup server. We support this for a backup cluster, but for the purposes of a remote (say bicoastal) setup, it doesn't make much sense for most backup providers. Rather they want a warm (the failover server can be going in a few seconds, with a service interruption) or a cold (it takes a few minutes to get it going). As far as this tutorial is concerned, let's define cold as meaning that you will switch off (stop) the Amazon instance that is the slave server to save money. Hot means the slave server keeps running - this will be your default setting if you're not using Amazon's API to shut down your slave server after the data sync.
  • Master server is the regular server that's running, and the slave is the one that you want to turn on should the master fail.

So let's talk about how to set it all up:

  1. Install a failover server in Amazon EC2, including the WholesaleBackup server software (configure it EXACTLY the same as the master server, including replicating the storage sizes, and paths, and assign it an elastic IP. Note the region and the instance id from the Amazon console, as well as the Amazon elastic IP, as you will configure the master server with those. You should initially sync the key user files before installing the WholesaleBackup app: /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow.
  2. On the Master server, setup password-less (using public/private keys) access to the slave server by issuing the command:
    <PRE>ssh-copy-id support@SLAVESERVER</PRE>
    Then ssh into the slave machine twice to test it - the first time it may prompt you to cache the key (say yes), but the second time it should not prompt for anything, rather you should automatically be logged in from the master machine to the slave machine:
    <PRE> ssh support@SLAVESERVER</PRE>
  3. Do the exact same steps as #3, except in reverse: from the slave server to the master. (i.e. replace the user and machine with the master server).
  4. Setup the Amazon EC2 Command Line API and your x509 keys on the master server. Note where you locate your x509 certs. Check out this tutorial which tells you How to Setup Amazon EC2 Api Command line tools for instructions. 
  5. On the master server, edit the /etc/divinsa/failoverconfig file,  change the setting to indicate you want to turn failover on, add in whether you have a hot or cold failover set up, the Amazon info including the target region, instance id, and where you placed your keys. You will also want to designate the user for the ssh sseion for replication, as well as any other settings that need changing.
  6. On the master server, issue the following command to change permissions to allow the failover script to be run: chmod u+x /usr/local/bin/Dexportforfailover
  7. On the slave server, change /etc/divinsa/failoverconfig to indicate that this server is a slave server (so it will accept changes) by ( this is the "3" value at the top of the failover section).
  8. On the slave server, issue the following command to allow execute permissions on the Import Script: chmod u+x /usr/local/bin/Dimportforfailover 

You're now setup to replicate user's metadata and the database to your failover server. n the instance of an outage, you can redirect your users to that server, and they will be able to backup. 

For many people that's sufficient, as they have other ways to replicate their data like drbd or a replicated filesystem. But if you also need a simple way to replicate your data, and sufficient bandwidth, it may be as simple as setting up rsync to sync the data from your master to your slave server. Here's how:

  1. Make certain that both servers have the same capacity storage volumes, and that they are named exactly the same.
  2. Change the configuration settings for failover to indicate that you want to sync all user data by setting SYNCALLUSERDATA="1"

Of course, you will need to make sure that the operating system updates and other key underlying elements are also synced, and above all, make sure to test that the syncronization is working as you would expect. 

 

How to test?

  1. Note what time you ahve the sync setup to run, as this will affect what you should expect. 
  2. On a machine that has a current backup client and account on your master server, make sure the client is shut down, and modify the hosts file (usually at c:\Windows\system32\drivers\etc\hosts ) and add a line that has the IP of your failover server and the name of the failover server. This will force the windows operating system to resolve the master server's ip as the slave server rather than the regular ip value for the master server. 
  3. Make sure the slave server is running.
  4. Open the backup client, and do a connection test. If that is successful, then try to do a test restore of some files backed up recently, but only if you are doing full data syncronization. If you are only syncronizing metadata, then you should try to backup something. If these operations work, then everything is ok. 

How to automate Amazon AWS Cloud Backups with cron and snapshot script, including deletions

One of our partners asked me today about how to backup the EBS volumes running on their Amazon AWS instance by automating snapshots, like in this discussion: http://aws.amazon.com/articles/1663?_encoding=UTF8&jiveRedirect=1.

In our case we've got to backup a MySQL database, plus some other directories, and we want to snapshot those. Since MySQL's files are not necessarily going to be in a consistent state through the snapshot window, we should also backup the database. Let's tackle that first.

Backing up the MySQL database with a cron job, and setup crontab lines for daily, monthly, and weekly snapshots:

  1. use crontab -e to edit your crontab
  2. Add a line to backup the database every day at 10:12am (this is usually a low load time for online backup), and a line for daily, weekly, and monthly snapshots:
    12 10 * * * /usr/bin/mysqldump --add-drop-table -uroot -pSHHHHHHHH divinsamgmtdb > /var/backup/divinsamgmdb.sql
    
    17 13 * * * /root/snapshotscripts/managesnapshots daily >/var/log/dailysnapshots 2>&1
    
    20 13 * * 0 /root/snapshotscripts/managesnapshots weekly >/var/log/weeklysnapshots 2>&1
    
    23 13 1 * * /root/snapshotscripts/managesnapshots monthly >/var/log/monthlysnapshots 2>&1
  3. Make sure you have a directory called /var/backup and that the drive has enough space.
  4. Verify that /var/backup is actually on your / (root) partition as that's the one we're going to backup using Amazon snapshots.

Install Amazon EC2 API Command line tools on your Ubuntu server

This is covered on the web in many places, so here is a great link to walk you through it (scroll down a bit): https://help.ubuntu.com/community/EC2StartersGuide

Deploy and customize the following script to create snapshots:

  1. Create a file called /root/snapshotscripts/managesnapshots and paste the following script into it:
    #!/bin/bash
    
    		# backups and and deletes given a dailysnapshotlist (or monthly or weekly - make sure you run the cron accordingly)
    
    		
    
    		# Set env variables for Amazon as cron may run without them
    
    		export EC2_PRIVATE_KEY=/root/.ec2/YOURFILE.pem
    
    		export EC2_CERT=/root/.ec2/YOURCERT.pem
    
    		export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
    
    		
    
    		#if no $1, exit
    
    		if [[ $1 == "daily" ]] || [[ $1 == "monthly" ]] || [[ $1 == "weekly" ]]
    
    		then
    
    		  export runtype="$1"
    
    		else
    
    		  printf "Usage: managesnapshots daily|weekly|monthly\n"
    
    		  exit 1
    
    		fi
    
    		
    
    		#set date time stamp for temp files
    
    		export dts=$(date +"%m-%d-%Y")
    
    		
    
    		while read volume_id description daily weekly monthly
    
    		do
    
    		  #exit loop if no values - otherwise get infinite loop
    
    		  [ -z $volume_id ] && break;
    
    		  # skip lines with comments in them
    
    		  if [[ $volume_id =~ ^#.* ]]
    
    		  then
    
    		    true
    
    		  else
    
    		    #add runtype into the ec2 description so we can search for snapshot types for deletions later
    
    		    export description=$(echo "$description $runtype")
    
    		    #add 1 to the keepdays so the tail command get s right number of rows ($$ uses variable substitution)
    
    		    case $runtype in
    
    		     daily)
    
    		       export keepdays=$daily
    
    		       ;;
    
    		     monthly)
    
    		       export keepdays=$monthly
    
    		       ;;
    
    		     weekly)
    
    		       export keepdays=$weekly
    
    		       ;;
    
    		     *)
    
    		       exit 2
    
    		       ;;
    
    		    esac
    
    		    export tailnumber=$(($keepdays + 1))
    
    		    if [ $keepdays != 0 ]
    
    		      then
    
    		      # create the snapshot for today
    
    		      echo "snapshotting $volume_id -- $description"
    
    		      /usr/bin/ec2-create-snapshot "$volume_id" -d "$description"
    
    		      #delete the older shapshots now
    
    		      #get the snapshots that are older than the ones we want to keep
    
    		      printf "checking for snapshots to delete from $volume_id\n"
    
    		      /usr/bin/ec2-describe-snapshots --filter volume-id="$volume_id" | grep $runtype | sort -r -k 5 | tail -n +${tailnumber} > /var/tmp/delsnapshots$dts
    
    		      while read deleteline
    
    		      do
    
    		        #get snapshot_id
    
    		        export snapshot_id=$(echo $deleteline | awk '{print $2}')
    
    		        #delete the older snapshot
    
    		        printf "deleting snapshot $snapshot_id for $volume_id -- $description\n"
    
    		        /usr/bin/ec2-delete-snapshot "$snapshot_id"
    
    		      done < /var/tmp/delsnapshots$dts
    
    		      rm /var/tmp/delsnapshots$dts
    
    		    fi
    
    		  fi
    
    		done < /root/snapshotscripts/snapshotlist
    
    		echo "end"
    
    		exit 0
  2. Now Create a file to list the volumes you want to snapshot, called /root/snapshotscripts/snapshotlist, and past the following contents, then modify them so that each line lists a volumeid of the volumes you want to backup, which instance they're on and which device(for tagging purposes so that you have a note atached to each snapshot), and how many daily, weekly, and monthly images you wish to keep:
    #volume_id description keepdays_daily weekly monthly [don't_use_spaces_in_values_-->_they_are_the_delimiter!]
    
    		vol-dcsdssa6 WSBU_Serv01:/dev/sda1 3 3 3
    
    		vol-32fja92r WSBU_Serv02:/dev/sda1 6 6 6
    
    		vol-89asd0fe WSBU_Serv03:/dev/sda1 3 3 3
  3. make sure these are readable only by root, and that they're exectable only by root:
    chown -R root:root /root/snapshotscripts/
    
    		chmod -R 700 /root/snapshotscripts/

OK - you're now done!

Some notes and caveats: you should check to see that the script works in your environment, as even a small typo or configuration change can wreak havoc. Verify that you have snapshots by restoring one and testing it!

There will be logfiles in /var/log/ so you can see errors if they were logged and progress notes as they were logged.

You can also manually run the commands to test them, like:

 

/root/snapshotscripts/managesnapshots daily

 

 


 

 

MSP Online Backup: What to look for when selecting a platform

It's hard to choose software when you're a MSP providing online backup. 

There are many choices, so getting priorities straight helps when choosing what you're going to base your business on. Here are some tips on MSP Online Backup Software: you can prioritize these as it suits you, which hopefully makes your own analysis easier. CQFZZ57FRH9H

  1. White Label or Private Label Remote Backup Client: If you're an MSP, you need to place your brand front and center, first because it's easier to sell Managed Services to a customer when they see the add-on service as yours, and second because you want to remind them that your service is comprehensive, and that the online backup is not just some commodity consumer-grade junk that costs $5.95 a year and is worth much less. 
  2. Proactive Monitoring: Since you are on the hook to manage your customers' systems, make it simple for yourself by choosing a package that alerts you when you need to take action. A central management console which can show you accounts which have not backed up in a certain time, or which have errors, and excellent logfiles which enable you to identify potential problems in a few simple clicks will  save you money and aggravation in spades, and reduce your support costs while ensuring that you can restore when you need to: after all, it's human error which usually makes backups unreliable, so having the system monitor can greatly reduce problems. At the minimum, the alerts should tell you which clients have not backed up in a few days (you hopefully can set tolerance limits per client), which clients have not sent data in a certain number of days, and which clients have errors. 
  3. Multiple Billing Metrics: Some customers want to be billed by how much they are storing, but many customers now want to pay based on what they protect. Since most online backup platforms for MSPs provide some kind of compression, there may be multiple of each metric. Add de-duplication to the mix, and things get downright complicated. Our experience says that customers will complain about their bill if it's based on compression, deduping, or other technology not under their control. If you bill them based on what they've selected to backup (i.e. what they're protecting) those arguments are much less, and so you have lower customer questions and complaints, and generally higher satisfaction as customers' data grows. 
  4. Integration into your ticketing system: Most MSPs have a trouble ticket system, almost all of which provide some kind of gateway for other apps to create tickets. Many are email based, others are web-service based. Whatever the case, make sure the backup system can automatically create relevant and actionable tickets: you don't want to reinvent your tech support operations based on a backup platform.
  5. FAST restores (I personally place this at the top of the list). Before you buy any platform, test how fast it restores. Some of this will be dependent on network performance, but unless you're interested in reselling a backup service, the network will be the same no matter which platform you choose. Simply testing one file doesn't give you the whole story though. Let's say you backup a database daily for 20 days. Many MSP online backup servers will store 1 original file, plus 19 incremental diffs (patches which must be applied to the original file in sequence to recreate the most recent copy). So when you go to restore, you have to wait until the database is rebuilt 19 times (once for each patch) before the most recent copy is available to begin download. Seems simple, right?  What if the database is 5GB or 10GB?  Writing a 10GB file 20 times means some serious delay, and when you get into larger businesses where there are many such files, or a few very large files, means you had better test your intended system: there's nothing like having to call your customer every 10 minutes for 5 hours while the server rebuilds a file (that's 30 calls, for the math impaired ;-) to tell them "Just a few more minutes."
  6. RELIABLE restores! Along with the long restore issue, there's another big issue when dealing with storing only differentials on the server: one can't compare checksums on the most recent file to ensure everything is as it should be. One bad patch in the string of 28, and there's no file to restore!!!  Even worse, the only time you're going to know this is if you do a restore (when you don't need more bad news anyways). So look for software that keeps full copies for changing files.

 

So make sure whatever you do, put the potential solutions you're testing through their paces, and buy the one that's going to make you the most money, and let you sleep at night. 

Private Label Online Backup

 

How to create a Private Label Online Backup Client: Put your logo on our backup client and start providing online backup service

WholesaleBackup can private label the online backup client software for you. Once done with the initial configuration, WholesaleBackup will build a custom installer for you and keep it updated for as long as you are an OEM software subscriber.  To make it easy to setup, we require one image and a few text fields, which you can simply email us. Also, it's simple to develop and test your private label online backup client by simply following the below instructions on your local copy of wholesalebackup, which you can download and install for FREE here: Private Label Online Backup Free Trial

So what do you need to send us to create your client? 

  1. all the URLs you created for our pre-install check list, including a help URL (for an example please see http://help.e01.divinsa.net/help.php)
  2. a default .SEL backup selections file (if you don’t want to use our defaults)
  3. the text to use in our software product’s title bar
    1. e.g. Divinsa® - Fully Managed Online Backup™
  4. application name
    1. e.g. Divinsa
  5. application version name (used for installer title and installer splash)
    1. e.g. Divinsa Online Backup
  6. Installer application name
    1. e.g. Divinsa’s online backup software
  7. your company name
    1. e.g. Divinsa LLC
  8. a license text file if you don’t want to use the generic WholesaleBackup default (see LICENSE.OEM in the program directory of an standard Divinsa trial install for the default)
  9. custom default backup selections if you don’t want to use the generic WholesaleBackup default (see SELECTIONS.OEM in the program directory of an standard Divinsa trial install for the default). This means your custom backup client can backup folders and files by default, so that your end-users don't even have to manually select files.
    1. after registration, the contents of SELECTIONS.OEM are used to populate initial selections file;  if the string #$USERSELECTIONS$# is found in that file then one additional selection is added to end of file:

      + "\\?\%USERS%\" - <.*\\My Data Sources\\.*> - <.*My Music\\.*> - <.*My Videos\\.*> - <.*My Pictures\\.*> - <.*(Photos|photos)\\.*> - <.*(Pictures|pictures)\\.*> - <.*My eBooks\\.*> - <.*Cookies\\.*> - <.*My PSP Files\\.*> - <.*My PSP8 Files\\.*> - <.*My Received Files\\.*> - <.*History\\.*> - <.*My Stationery\\.*> - <.*My Albums\\.*> - <.*Downloads\\.*> - <.*Google Gadgets\\.*> - <.*Updater5\\.*> - <.*s Music\\.+> - <.*s Videos\\.+> - <.*s Pictures\\.+>"

      where %USERS% is replaced with corresponding value for that machine at time of registration (e.g. C:\Users or C:\Documents and Settings")
  10. the strip-bar JPEG logo of dimensions EXACTLY equal to 622x40
    1. Please note we are not able to create, edit, convert, resize or fix the logo file you provide so please hire your own graphic designer and please give them the exact specifications.  An example logo strip bar is below:

If you would like to see (preview) how your build will  look, it’s simple: download and install a WholesaleBackup Private Label Onlinb Backup Client build (Private Label Online Backup Free Trial.)

  1. edit or replace the following files in the program directory with the information from above: LOGO.OEM, TITLE.OEM, …
  2. re-run Divinsa.exe and it will use the OEM files above (with the exception of the SELECTIONS.OEM)
  3. To see changes to the installer, executable name, and install folder you will need to contact WholesaleBackup to add the information into WholesaleBackup’s automated installer build system.

Pages

Subscribe to WholesaleBackup Blog: The Latest Online Backup News and Opinion