Hacker News new | ask | show | jobs
by amq 3176 days ago
Wouldn't it be simpler to have the smallest possible instance run an NFS server? This would also have an additional bonus of scalability.

Edit: or use AWS EFS

3 comments

NFS is nice but a single instance can easily become network bound, especially on AWS. It also introduces a single point of failure for that instance, and clustered NFS can be fragile.
EFS is far more expensive than EBS. Price it out; you'll see.
It is 3X more expensive ($0.30/gb vs $0.10/gb for us-east), but it's replicated across AZ's (so is more durable than EBS which is only replicated within an AZ), and you only pay for what you use, you don't need to overprovision the EBS volume to account for peak dataset size.

And since it's shared, you don't need to replicate data across multiple nodes... so if 10 compute nodes needs access to the data set, they can all just read it from the same EFS filesystem, no need to download it 10 times to each compute node.

So EFS can still be very cost effective compared to EBS.

Are you counting the impact on the ENI's available bandwidth and additional instance costs needed for more network throughput? As I understand it, EFS requests are issued through the front end interface, while EBS requests go through the storage backplane interface.

Also, NFS has different behavior with respect to buffer caching that needs to be taken into account. It often does not cache as effectively as block storage does.

And while we are talking about costs, make sure you check for unused WBA volumes frequently, as you still pay for them if they aren't attached/used - and sometimes a dev will create a provisioned iops drive and forget to delete it and you pay a lot for those volumes..
EFS is also slower than EBS, for I/O intensive workloads is not recommended.

A positive thing with EFS is that it can be shared across AZ while EBS needs to be snapshotted and then imported to the other AZ.