3 ms·
Why do they fundamentally need to be network attached storage instead of local to the VM?
by vlovich123 3y ago
Why do they fundamentally need to be network attached storage instead of local to the VM?
- Filligree 3y agoThey don't. Some cloud providers (i.e. Hetzner) let you rent VMs with locally attached NVMe, which is dramatically faster than network-attached even factoring in the VM tax. Of course then you have a single point of failure, in the PCIe fabric of the machine you're running on if not the NVMe itself. But if you have good backups, which you should, then the juice really isn't worth the squeeze for NAS storage.
- ssl-3 3y agoA network adds more points of failure. It does not reduce them.
- supriyo-biswas 3y agoA network attached, replicated storage hedges against data loss but increases latency; however most customers usually prefer higher latency to data loss. As an example, see the highly upvoted fly.io thread[1] with customers complaining about the same thing. [1] https://news.ycombinator.com/item?id=36808296 https://news.ycombinator.com/item?id=36808296
- ssl-3 3y agoLocally-attached, replicated storage also hedges against data loss.
- supriyo-biswas 3y agoRAID rebuild times make it an unviable option and customers typically expect problematic VMs to be live-migrated to other hosts with the disks still having their intended data. The self hosted version of this is GlusterFS and Ceph, which have the same dynamics as EBS and its equivalents in other cloud providers.
- mike_hearn 3y agoWith NVMe SSDs? What makes RAID unviable in that environment?
- dijit 3y agoThis depends, like all things. When you say RAID, what level? Software-raid or hardware raid? What controller? Let's take best-case: RAID10, small enough (but many) NVMe drives and an LVM/Software RAID like ZFS, which is data aware so only rebuilds actual data: rebuilds will degrade performance enough potentially that your application can become unavailable if your IOPS are 70%+ of maximum. That's an ideal scenario, if you use hardware raid which is not data-aware then your rebuild times depend entirely on the size of the drive being rebuilt and it can punish IOPs even more during the rebuild. But it will affect your CPU less. There's no panacea. Most people opt for higher latency distributed storage where the RAID is spread across an enormous amount of drives, which makes rebuilds much less painful.
- timc3 3y agoWhat I used to do was swap machines over from the one with failing disks to a live spare (slave in the old frowned upon terminology), do the maintenance and then replicate from the now live spare back if I had confidence it was all good. Yes it’s costly having the hardware to do that as it mostly meant multiple machines as I always wanted to be able to rebuild one whilst having at least two machines online.
- dijit 3y agoIf you are doing this with your own hardware it is still less costly than cloud even if it mostly sits idle. Cloud is approx 5x sticker cost for compute if its sustained. Your discounts may vary, rue the day those discounts are taken away because we are all sufficiently locked in.
- crazygringo 3y agoA network adds more points of failures but also reduces user-facing failures overall when properly architected. If one CPU attached to storage dies, another can take over and reattach -- or vice-versa. If one network link dies, it can be rerouted around.
- bombcar 3y agoUsing a SAN (which is what networked storage is, after all) also lets you get various "tricks" such as snapshots, instant migration, etc for "free".
- Retric 3y agoRedundancy, local storage is a single point of failure. You can use local SSD’s as slow RAM, but anything on it can go away at any moment.
- cduzz 3y agoI've seen SANs get nuked by operator error or by environmental issues (overheated DC == SAN shuts itself down). Distributed clusters of things can work just fine on ephemeral local storage (aka local storage). A kafka cluster or an opensearch cluster will be fine using instance local storage, for instance. As with everything else.... "it depends"
- pclmulqdq 3y agoReliability. SSDs break and screw up a lot more frequently and more quickly than CPUs. Amazon has published a lot on the architecture of EBS, and they go through a good analysis of this. If you have a broken disk and you locally attach, you have a broken machine. RAID helps you locally, but fundamentally relies on locality and low latency (and maybe custom hardware) to minimize the time window where you get true data corruption on a bad disk. That is insufficient for cloud storage.
- vlovich123 3y agoSure, but there's plenty of software that's written to use distributed unreliable storage similar to how cloud providers write their own software (e.g. Kafka). I can understand if many applications are just need something like EBS that's durable but looks like a normal disk, but not so sure it's a fundamentally required abstraction.
- SteveNuts 3y agoBecause even if you can squeeze 100TB or more of SSD/NVMe in a server, and there are 10 tenants using the machine, you're limited to 10TB as a hard ceiling. What happens when one tenant needs 200TB attached to a server? Cloud providers are starting to offer local SSD/NVMe, but you're renting the entire machine, and you're still limited to exactly what's installed in that server.
- jalk 3y agoHow is that different from how cores, mem and network bandwidth is allotted to tenants?
- pixl97 3y agoBecause a fair number of customers spin up another image when cores/mem/bandwidth run low. Dedicated storage breaks that paradigm. Also, adding, if I am on an 8 core machine and need 16, network storage can be detached from host A and connected to host B. In dedicated storage it must be fully copied over first.
- baq 3y agoIt isn't. You could ask for network-attached CPUs or RAM. You'd be the only one, though, so in practice only network-attached storage makes sense business-wise. It also makes sense if you need to provision larger-than-usual amounts like tens of TB - these are usually hard to come by in a single server, but quite mundane for storage appliances.
- vel0city 3y agoGiven AWS and GCP offer multiple sizes for the same processor version with local SSDs, I don't think you have to rent the entire machine. Search for i3en API names and you'll see: i3en.large, 2x CPU, 1250GB SSD i3en.xlarge, 4x CPU, 2500GB SSD i3en.2xlarge, 8x CPU, 2x2500GB SSD i3en.3xlarge, 12x CPU, 7500GB SSD i3en.6xlarge, 24x CPU, 2x7500GB SSD i3en.12xlarge, 48x CPU, 4x7500GB SSD i3en.24xlarge, 96x CPU, 8x7500GB SSD i3en.metal, 96x CPU, 8x7500GB SSD So they've got servers with 96 CPUs and 8x7500GB SSDs. You can get a slice of one, or you can get the whole one. All of these are the ratio of 625GB of local SSD per CPU core. https://instances.vantage.sh/ https://instances.vantage.sh/ On GCP you can get a 2-core N2 instance type and attach multiple local SSDs. I doubt they have many physical 2-core Xeons in their datacenters.
- drewda 3y agoThe major clouds do offer VMs with fast local storage, such as SSDs connected by NVMe connections directly to the VM host machine: - https://cloud.google.com/compute/docs/disks/local-ssd https://cloud.google.com/compute/docs/disks/local-ssd - https://learn.microsoft.com/en-us/azure/virtual-machines/enable-nvme-interface https://learn.microsoft.com/en-us/azure/virtual-machines/ena... - https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-instance-store.html https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ssd-inst... They sell these VMs at a higher cost because it requires more expensive components and is limited to host machines with certain configurations. In our experience, it's also harder to request quota increases to get more of these VMs -- some of the public clouds have a limited supply of these specific types of configurations in some regions/zones. As others have noted, instance storage isn't as dependable. But it can be the most performant way to do IO-intense processing or to power one node of a distributed database.