Clearly, the title is an attention-grabbing headline that
might imply either lying or something that I didn’t mention – and you’d be
exactly right. The basic idea is I have 4TB in “Linux ISOs” (no, it doesn’t
involve anything illegal or 18+. Get your mind out of the gutter.) that I would
like to store, however my main desktop only has a 1TB drive an and 80GB drive,
my old desktop only has an 80GB drive, and my laptops obviously won’t have
enough storage. While drives can now be found in the range of $35-50 per TB, in
the interest of saving money I will be attempting to take advantage of what I
have right now to create an “infinitely expandable” (more on that later) 4TB
network share.
Obviously, this network share will have some limitations
that I am already aware of. Allow me to explain how it works, and then discuss
not only the obvious limitations but also other possible limitations with this
design. However, you can’t be free, so the goal will be to minimize limitations
without beating the cost of $0.00 (not including power costs and the cost of
equipment I already have).
The idea is that a Raspberry Pi connected to a local network
can act as an FTP server, but only cache the most accessed files on an external
80GB hard drive. The rest of the files can be stored on a Google Drive account
(which I have without paying for) or an Amazon Cloud account (which is
relatively cheap for unlimited storage). The data can be encrypted in the cloud
and accessed via rclone, and as such if a file needs to be streamed it can
easily be done.
This brings me to my first limitation: network speed. Using
a Raspberry Pi means that even via Ethernet, the connection is limited to 100
Mbps throughput, which is 12 MB/s. While this should be enough for most files,
it may not be enough to stream some higher quality videos like uncompressed
videos or videos recorded in 4K HDR wide gamut format. In addition, this is
usually not enough to run programs over a network drive, and more than likely
would quickly encounter difficulties.
So how can we optimize the speed of a network drive? My
current situation is completely wireless: there are no wired connections to the
router; all connections, including my desktop, is through a wireless
connection. In addition, there is approximately 30 to 40 feet of space between
my room (where all my devices are located) and the garage (where the router is
located), as well as 3 or 4 walls. As a result, the WiFi connection is often
weak, and at peak intervals, I get around 30 Mbps download and 40 Mbps upload
on an 80/80 connection. A wired connection test does in fact show around 70 to
80 Mbps download and uploads speed, so clearly the signal strength is a factor
in the slower speeds. I do not want to spend money on devices like WiFi
repeaters, even though often times the speed will drop to as slow as 5 Mbps or
lower, which is often unacceptable on download.
To optimize the speed, clearly the biggest limitation is the
network speed, as that could use some severe improvement before considerations
to upgrading the internet connection speed are made. In addition, equipment
upgrades would be more useful than a monthly internet package upgrade, however,
as both cost additional money, neither will be considered in favor of free.
Although I plan to detail this more in a separate, unrelated
series of posts as well as videos, for now I have selected the option of
creating my own network. By taking advantage of one Raspberry Pi and an old
laptop, I can create an ad hoc network that provides an internet connection to
all the devices in my room as well as live management of the individual
internet connection speed of each device, so it can optimize for the most important
use cases first. It works by using the Raspberry Pi to connect to my home WiFi
network on one WiFi adapter, and using a second WiFi adapter to broadcast a
local network within my room. This can be placed on the edge of my room to
receive the best signal possible while still providing optimal wireless
connection within my room. The old laptop is a 2000s-era laptop originally
running Windows 95 that I will install a Linux-based operating system on and use
as a network server – it can be used as network-connected testing environment
to run server software, as well as connect any USB to network hardware like
printers and hard drives.
Comments
Post a Comment
Hey! Keep the comments section cordial please, thanks!