Setting up a M93p mini offsite backup server, with power and cost calculations
This blog post will cover:
- what I'm doing for my offsite backup system using a M93p mini PC;
- how much energy it uses;
- how much it costs every year; and
- how that compares against commercial services.
At the end, there are some bonus scribbles about:
- how I fixed a problem with suspend (it would keep turning off instead of suspending);
- how to reset the BIOS variables / 'CMOS memory'; and
- how I configured my BIOS.
Motivation🔗
I need to do a better job at keeping backups, because realistically it's only a matter of time until something bad happens and I lose something that I consider sentimentally important.
I think basically everyone should consider having off-site backups — backups that aren't in your home — which would not be lost in the event of a fire, theft, or so on, alongside your main home for the data.
Perhaps an obvious solution would be to rent some online storage space at some server provider / cloud provider.
This can work, but the following issues arise:
- You may not want to trust some cloud providers to not lock your account out at the worst time.
(Example: A certain big company starting with G is slightly notorious for locking out accounts on a whim and yet not having any kind of customer support. In a disaster scenario, you may be logging in from a different location or you may not have one of your devices for multi-step authentication. That could just be the red flag that locks you out.) - You may not trust the privacy of such a provider.
- This can be worked around to some extent with encryption, which I suggest anyway, but I still would hesitate to give money to the forces of evil if I could avoid it.
- If you have a lot of data, costs quickly add up.
For a while I have been renting space at HostBrr (5 TB, approx. £8.83/month) and iHostArt (7 TB, approx. £8.42/month) — having two in order not to keep all my eggs in one basket! This has been fine as a medium-term 'something is better than nothing' solution, but:
- Although these are actually CHEAP providers, this is costing me roughly £207 per year for 2 offsites.
- These providers feel a bit less professional than major providers, so without wanting to be mean, I am not sure how much confidence I have in relying on them.
- My internet speed is poor, which makes backing up (especially the initial backup) awkward and if I ever need to do a full restore, that will also take a long time.
Bring it under control: Bring it in house🔗
It occurred to me that buying my own hardware is probably the only way to cut the cost here.
Yet, because I want to keep the backups automatic, an online solution is needed — i.e. I need to be thinking of buying a server or two, not just external hard drives that I could pretend I remember to plug in every so often.
The whole point is having it off-site, so I'll have to beg friends/family to take in the servers. That then means they need to be compact/unintrusive and not too electrically thirsty!
For my first mini-server I've found a second-hand Lenovo ThinkCentre M93p on eBay — for a little under £50 (including power supply, bought separately — all the sellers of these things don't seem to include the power supplies for whatever reason).
Size-wise, this fits the bill; it's truly tiny as far as PCs go and it shouldn't be too intrusive. Specs-wise, this has an Intel i5-4590T, 8 GB of DDR3 RAM and a 240 GB Solid State Drive. This sounds ample. The power supply is rated for 65 W and it has the rectangular connector that I see on some Lenovo laptops (kind of funny to see it on a desktop).
Since the Solid State Drive is just 240 GB and there isn't space inside it for any big 3.5 inch hard drives, I'll use the SSD for the operating system and connect an external 8 TB USB 3.0 hard drive.
I purchased this ('Seagate Backup Plus Hub') for £130 from Currys in 2019; there might have been a deal going on at the time. I can find 8 TB for £144 these days, or 10 TB for £180. (Interestingly you can even get 4 TB NVMe SSDs for £200 these days...)
Power characteristics🔗
Electricity is expensive in this country, so it seemed worth trying to figure out how much of other peoples' leccy I was going to end up spending.
I am using a cheap mains power meter — not laboratory-grade calibrated equipment, but it should be fine for an illustration.
Standalone🔗
First I started with just the M93p PC — no external hard disk. I performed a few basic tests:
- how much power is used with the computer off?
- how about when it's suspended?
- how about when it's on, but not doing anything taxing (idle)?
- how about when running single-threaded
sysbench cpu run
, using the powersave CPU governor (cpupower frequency-set -g powersave
)? - how about when running single-threaded
sysbench cpu run
, using the ondemand CPU governor (cpupower frequency-set -g ondemand
)? - how about when running 4-threaded
sysbench cpu run --threads=4
, using the powersave CPU governor (cpupower frequency-set -g powersave
)? - how about when running 4-threaded
sysbench cpu run --threads=4
, using the ondemand CPU governor (cpupower frequency-set -g ondemand
)?
Test | Power consumption | Relevant metric | Comparison |
---|---|---|---|
Off | 0.3 W | ||
Suspend | 1.2 W | Compared to Off: +0.9 W | |
On/Idle | 9.7 W | Compared to Off: +9.4 W | |
cpu sysbench (1 thread, powersave) | 11.5 W | 240 events/s | Compared to Idle: +1.8 W |
cpu sysbench (1 thread, ondemand) | 19.8 W | 892 events/s | Compared to Idle: +10.1 W Compared to 1 thread, powersave: +72% power, +271% performance |
cpu sysbench (4 threads; powersave) | 14.1 W | 958 events/s | Compared to 1 thread, powersave: +2.6 W (+23% power), +299% performance |
cpu sysbench (4 threads; ondemand) | 29.4 W | 3119 events/s | Compared to 1 thread, powersave: +17.9 W (+156% power), +1100% performance Compared to 1 thread, ondemand: +9.6 W (+48% power), +250% performance Compared to 4 threads, powersave: +15.3 W (+109% power), +226% performance |
Table 1: Power consumption measurements (no external hard disk connected)
I suspect that sysbench is not a great substitute for a domain-specific benchmark, but at the moment this is the best I can easily do — just don't read too much into the performance upticks.
Disk Connected🔗
I then connected the external hard drive, including its own mains-fed power supply (output rating: 12 V @ 3 A).
The measurements are for both the PC itself and the external hard drive's power supply.
- I measured the power consumption with the PC off and with the disk connected (both power supplies for the PC and the disk were connected to the mains and under measurement). The disk isn't spinning at this point.
- I booted the PC and instructed the disk to spin down with
hd-idle -t /dev/sdb
and measured the power consumption of the whole system. - I then spun up the disk but otherwise left the machine idle. I measured again.
- I then started a full sequential read of the disk with
dd if=/dev/sdb of=/dev/null bs=1M
and measured once more. Although the CPU won't technically be idle in this situation, I assume for the sake of simplicity that it also won't be loaded enough to matter.
Test | Power consumption | Relevant metric | Comparison |
---|---|---|---|
Off | 1.0 W | Compared to Off (Standalone): +0.7 W | |
On/Idle, Disk Spun down | 11.2 W | Compared to On/Idle (Standalone): +1.5 W | |
On/Idle, Disk Spinning | 16.4 W | Compared to On/Idle (Standalone): +6.7 W Compared to Spun down: +5.2 W | |
Sequential Disk Read | 21.4 W | 190 MB/s read speed, CPU in powersave | Compared to Idle/Spun down: +10.2 W Compared to Idle/Spinning: +5.0 W |
Table 2: Power consumption measurements (with external hard disk connected)
I didn't want to disturb the data on the disk so I didn't perform a write test. However, I hope these numbers are illustrative enough anyway.
Rough calculations for my expected usage pattern🔗
I expect my usage pattern to include, each day, 23 hours in the Off state and (up to) 1 hour receiving a backup over the network.
In the absence of measurements in real-world conditions, let's build a somewhat pessimistic estimate:
During the active hour, disk activity will be the main type of load, perhaps with some CPU intensive cryptography to handle the encrypted TLS or SSH connection. Let's take the 21.4 W reading from the Sequential Disk Read test (as my closest illustration of disk write) and add 10.1 W, which is the difference between Idle and the single-threaded ondemand cpu sysbench (my best pessimistic guess for an illustration of the CPU use/cryptographic operations). This gives us 31.5 W total.
During the 23 other hours, the Off (with Disk Connected) reading for 1.0 W applies.
Approx daily consumption is therefore: 44.5 W·h (Watt-hour).
Approx annual consumption is therefore: 16.3 kW·h (kiloWatt-hour)
At a rate of 22.36p/kW·h (including VAT, taken from a MoneySavingExpert article about the July 2024 price cap — thankfully less than the last rate I remember), this gives an annual electricity cost of about £3.64. I may have been working with rough numbers but I feel happy enough calling it £5 for the sake of simplicity. It shouldn't break the bank to bribe someone that much to adopt one of these servers into their home :-).
The bottom line — does this make sense to do?🔗
It's hard to put an exact figure on the cost of one of these systems, because hard drives fail, usually unpredictably.
A pessimistic take could be that we should expect to replace the disk every 2 years since the warranty is 2 years long.
On the other hand, I would have higher hopes and expectations for the M93p mini PC itself — say 5 to 10 years.
What | Cost | Expected Annual Cost |
---|---|---|
Replacement of 8TB HDD every warranty period | £144 every 2 years | £72 per year |
Replacement of M93p Mini PC every 5 years | £50 every 5 years | £10 per year |
Electricity | £5 per year | |
Total | £87 per year |
Table 3: Sum of expected costs for this 8 TB M93p system
Let's have a quick comparison against some of the other providers.
Storage System/Service | Annual Cost | Annual Cost per TB | Note |
---|---|---|---|
This 8 TB M93p System | £87 [expected] | £10.89 [expected] | Cost will vary depending on luck/hardware failures. |
iHostArt 7 TB Storage VPS | £101 | £14.42 | |
Backblaze S3-compatible (US$6/TB·month) | varies based on usage | £56.76 | Unlike a fixed-disk system, you don't pay for space you don't use! |
Wasabi S3-compatible (US$6.99/TB·month) | varies based on usage | £66.12 | Unlike a fixed-disk system, you don't pay for space you don't use! |
Amazon S3 (US$0.023/GB·month) | varies based on usage | £260.98 | Unlike a fixed-disk system, you don't pay for space you don't use! Price inclusive of VAT. Minimum 90 days of storage per object. Upload and download requests are chargeable. Seems like roughly £85.10 to actually transfer a TB back to your computer over the Internet. |
Amazon S3 Glacier Deep Archive (US$0.00099/GB·month) | varies based on usage | £11.23 | Unlike a fixed-disk system, you don't pay for space you don't use! Price inclusive of VAT. 12 hour restoration time. Minimum 90 days of storage per object. Upload and download requests are chargeable. Seems like roughly £2.36 to retrieve a TB in 'Bulk' mode, plus £85.10 to actually transfer it back to your computer over the Internet. |
Table 4: Cost comparison of this 8 TB M93p system against commercial services
Under this model, there isn't that much difference between this and renting space from iHostArt (mentioned in the intro — 7 TB not 8 TB, but close enough) which is £101 per year. It mostly comes down to which system you trust more, or whether you're feeling lucky at dodging disk deaths. I suspect the self-hosted system will win with larger storage volumes though; for example 16 TB disks (e.g. Seagate Exos) are readily available for less than twice the price of the 8 TB disks, you just need to find a caddy to use it as an external drive.
Compared to the bigger name commercial providers, there is quite a drastic difference.
Amazon's S3 'Glacier Deep Archive' service is the only big name I know of that appears to come close — it has a 12 hour retrieval time but almost matches my system on expected cost.
That is, unless you actually want to read your data out, at which point you can expect to pay £87 per terabyte(!) to pull it out of Amazon's deathgrip — mostly due to Amazon's standard egress fees rather than the actual cost of retrieval from the archive.
For a backup of last resort which you hope to never need to restore from, I am sure it could make sense for some, but it's not for me. I admittedly can't be sure I haven't missed some more hidden fees buried in fine print. The £85.10 egress fee was pretty non-obvious to me until I looked at online comments talking about it, only the £2.36 fee (already costly enough) was discoverable to me as a non-Amazon specialist.
Overall, I think I'm happy with the theory of my system and I'm willing to go ahead with it. What will be particularly useful to me is the ability to have physical access to the drive from time to time, meaning I can bypass stuffing my backups or restores through my narrow Internet pipe and can do bulk loads much quicker.
Scribbles🔗
Some of this information may be useful to me or others for reference.
Problem with suspend🔗
I was having trouble with suspending the M93p ThinkCentre: it would reboot instead of resuming from suspend.
The solution that worked for me was updating the BIOS. Without Windows installed, the option that worked for me was to do this within FreeDOS. I can't remember anymore if I tried the CD image on a USB stick or not
You can get the BIOS upgrade files from Lenovo's site (direct .zip file, direct instructions .txt).
The DOS one is called 'Flash UEFI BIOS update – EFI Shell utility'. From the name it sounds like it is supposed to be used from the EFI Shell but I am not sure how to get to the EFI Shell on this machine... The readme calls it a DOS package though and it worked for me, so you can overlook that.
- Install FreeDOS on a USB stick (I put it on my Ventoy USB stick)
- Put the BIOS files on another USB stick
- Plug in the BIOS files USB stick before booting FreeDOS. This is needed because the BIOS 'mounts' the flash drive first and then hands it over to FreeDOS.
In the short time I used FreeDOS, I did not figure out how to mount the USB stick within FreeDOS but in either case it is more effort, so don't bother. - Switch to the drive with
D:
flash2 IMAGEFB.ROM
I noticed there are other fun options like being able to edit the serial number, machine make & model, boot logo, etc but I didn't bother with that. I have read online since doing this that on some other Lenovo models, setting the serial number and machine model to 'INVALID' will bypass some boot-time restrictions on which PCIe network cards you're allowed to use, but I suggest you search around for someone else's blog post where they tried that if you want more information. Other than that, there seems to be an option to clear the BIOS settings: /clr
After the BIOS upgrade was complete, it then rebooted itself... And happily resume now worked!!!
BIOS Settings to set🔗
Settings in bold are the ones I consider most important.
- Advanced
- Intel(R) Manageability Control → DISABLED (I don't need/want IME stuff as far as I can avoid it)
- Intel(R) SIPP Support (Stable Image Platform Program) → DISABLED (I don't want to present an old CPU/Chipset revision ID to the operating system, that just sounds needlessly self-misleading. Maybe it makes sense on some other OSes but I trust Linux to know how to use revision IDs best.)
- Power
- After Power Loss → Power On (Otherwise a power cut will knock my system offline and need manual intervention)
- Enhanced Power Saving Mode → Enabled (Says it will reduce power use in the off state, at the cost of disabling any wakeup source other than the RTC Alarm. Great, that's actually exactly what I want, particularly since it knocks off the IME in the Off state)
- Security
- Secure Boot → Disabled (I don't care to have life made hard by Secure Boot; it's mostly only there for Windows 8 Certification anyway)
- TCG Security Feature → Disabled (I don't think I want anything to do with the Trusted Platform Module; nothing I do uses it, may as well disable)
- Startup
- CSM → don't care, can disable for all I want. But having it enabled is useful for booting FreeDOS etc.
- Boot Priority → UEFI First
- Quick Boot → Disabled (I like the splash screen because it helps you to know what buttons to push)
- Keyboardless Operation → Enabled (Otherwise using it as a server will be troublesome; without switching this on, it will trigger the Error boot sequence instead when there's no keyboard)
- Startup Device Menu Prompt → Enabled
The button to get the menu on boot is Enter, but the menu has a self-destructing timer that is paused/resumed by the Enter key as well, so if you spam it blindly you will just keep resuming the timer and eventually it will continue the boot sequence anyway.
Light Teardown and 'CMOS memory' reset🔗
As part of my suspend troubleshooting, I opened the machine and reset the 'CMOS memory', the battery-backed volatile RAM which stores the time for the real-time clock and BIOS settings.
Note this did not solve my issue, but it's always nice to have a look inside anyway.
The case was pretty elegant, needing just one screw to come off before you could slide the top case off at an angle (this is all described in the manual).
The jumper header for resetting the 'CMOS memory' was pretty fiddly as it was recessed and I had to use some fine tweezers to pull it out (being careful not to drop it...) and they would just slip against it most of the time.
The manual has the full procedure for this, but you just boot with the jumper in the reset position and wait until it beeps multiple times. Then you turn the power off and move the jumper back.