AWS EFS vs EBS vs S3 (diferenças e quando usar?)

315

De acordo com o título desta pergunta, quais são as diferenças práticas entre o AWS EFS, EBS e S3?

Minha compreensão de cada um:

  • S3 é uma instalação de armazenamento acessível em qualquer lugar
  • O EBS é um dispositivo que você pode montar no EC2
  • O EFS é um sistema de arquivos que você pode montar no EC2

Então, por que eu usaria o EBS sobre EFS? Parece que eles têm os mesmos casos de uso, mas pequenas diferenças semânticas? Embora o EFS seja replicado nos AZs, o EBS é apenas um dispositivo montado. Eu acho que meu entendimento do EBS está faltando, portanto, sou incapaz de distinguir.

Por que escolher S3 sobre EFS? Ambos armazenam arquivos, escalam e são replicados. Eu acho que com o S3 você precisa usar o SDK, e como o EFS é um sistema de arquivos, você pode usar métodos de E / S padrão da sua linguagem de programação para criar arquivos. Mas essa é a única diferença real?

Integralista
fonte
2
O EFS é como o NFS. O EBS é essencialmente uma SAN. S3 é um bocado como WebDAV. Geleira é provavelmente DVD mais azul storagemojo.com/2014/04/25/amazons-glacier-secret-bdxl
Neil McGuigan

Respostas:

466

Resposta em uma palavra: DINHEIRO: D

1 GB para armazenar no Leste dos EUA-1: (Atualizado em 2016.dec.20)

  • Geleira: US $ 0,004 / mês (Nota: Maior redução de preço em 2016)
  • S3: $ 0,023 / mês
  • S3-IA (anunciado em 2015.09): US $ 0,0125 / mês (+ US $ 0,01 / taxa de recuperação de gig)
  • EBS: US $ 0,045-0,1 / mês (depende da velocidade - SSD ou não) + custos de IOPS
  • EFS: US $ 0,3 / mês

Opções de armazenamento adicionais, que podem ser usadas para armazenar dados temporariamente enquanto / antes do processamento:

  • SNS
  • SQS
  • Kinesis stream
  • DynamoDB, SimpleDB

Os custos acima são apenas amostras. Pode haver diferenças por região e pode mudar a qualquer momento. Também há custos extras para transferência de dados (para a internet). No entanto, eles mostram uma relação entre os preços dos serviços .

Há muito mais diferenças entre esses serviços:

O EFS é:

  • Geralmente disponível (fora da visualização), mas ainda não pode estar disponível na sua região
  • Sistema de arquivos de rede (isso significa que pode ter maior latência, mas pode ser compartilhado em várias instâncias; mesmo entre regiões)
  • É caro comparado ao EBS (~ 10x mais), mas oferece recursos extras.
  • É um serviço altamente disponível.
  • É um serviço gerenciado
  • Você pode anexar o armazenamento EFS a uma instância do EC2
  • Pode ser acessado por várias instâncias do EC2 simultaneamente
  • Desde 2016.dec.20, é possível conectar seu armazenamento EFS diretamente aos servidores locais via Direct Connect. ()

O EBS é:

  • Um armazenamento em bloco (é necessário formatá-lo). Isso significa que você pode escolher qual tipo de sistema de arquivos deseja.
  • Como é um armazenamento em bloco, você pode usar o Raid 1 (ou 0 ou 10) com vários armazenamentos em bloco
  • É muito rápido
  • É relativamente barato
  • Com os novos anúncios da Amazon, você pode armazenar até 16 TB de dados por armazenamento em SSD-s.
  • Você pode capturar instantaneamente um EBS (enquanto ele ainda está em execução) por motivos de backup
  • Mas existe apenas em uma região específica. Embora você possa migrá-lo para outra região, não é possível acessá-lo apenas entre regiões (somente se você o compartilhar via EC2; mas isso significa que você possui um servidor de arquivos)
  • Você precisa de uma instância do EC2 para conectá-la ao
  • Novo recurso (2017.Feb.15): Agora você pode aumentar o tamanho do volume, ajustar o desempenho ou alterar o tipo de volume enquanto o volume estiver em uso. Você pode continuar usando seu aplicativo enquanto a alteração entra em vigor.

S3 é:

  • Um armazenamento de objetos (não um sistema de arquivos).
  • Você pode armazenar arquivos e "pastas", mas não pode ter bloqueios, permissões, etc, como faria com um sistema de arquivos tradicional
  • Isso significa que, por padrão, você não pode simplesmente montar o S3 e usá-lo como seu servidor da web
  • Mas é perfeito para armazenar suas imagens e vídeos no seu site
  • Ótimo para arquivamento de curto prazo (por exemplo, algumas semanas). Também é bom para arquivamento de longo prazo, mas o Glacier é mais econômico.
  • Ótimo para armazenar logs
  • Você pode acessar os dados de todas as regiões (podem ser aplicados custos adicionais)
  • Altamente disponível, redundante. Basicamente, a perda de dados não é possível (99,999999999% de durabilidade, 99,9 SLA de tempo de atividade)
  • Muito mais barato que o EBS.
  • Você pode veicular o conteúdo diretamente na Internet, pode até ter um site completo (estático) trabalhando diretamente no S3, sem uma instância do EC2

Geleira é:

  • Armazenamento de arquivo a longo prazo
  • Extremamente barato para guardar
  • Potencialmente muito caro para recuperar
  • Leva até 4 horas para "ler novamente" seus dados (portanto, armazene apenas itens que você sabe que não precisará recuperar por muito tempo)

Como foi mencionado no comentário da JDL, existem vários aspectos interessantes em termos de preço. Por exemplo, Glacier, S3, EFS aloca o armazenamento para você com base no seu uso, enquanto no EBS você precisa predefinir o armazenamento alocado. O que significa que você precisa superestimar. (No entanto, é fácil adicionar mais armazenamento aos volumes do EBS, isso requer alguma engenharia, o que significa que você sempre "paga em excesso" seu armazenamento do EBS, o que o torna ainda mais caro.)

Fonte: AWS Storage Update - Nova opção de armazenamento S3 de menor custo e redução de preços das geleiras

Adam Ocsvari
fonte
8
Glacier é extremamente caro se as necessidades de dados a ser restaurado rapidamente liangzan.net/aws-glacier-calculator
Anatoly
6
Discordo que S3é mais barato que EBS. Com S3você só pode ter 2000 PUT e 20 000 GET gratuitamente. Com EBSvocê, você tem 2 000 000 operações de E / S gratuitamente. Aqui está meu controle de qualidade stackoverflow.com/questions/34048866/…
Verde
2
2.000.000 custos de leitura S3 ~ 0,4 $, 2 000 000 custos de gravação ~ $ 5 ... Mas o ponto principal é que você precisa escolher o armazenamento certo para a tarefa. O S3 é (principalmente) para arquivos grandes, que não mudam com muita frequência, mas são amplamente acessíveis. (com muitas exceções: D)
Adam Ocsvari
2
Boa comparação Mas uma outra grande diferença entre o EBS e o EFS é que o EBS é uma quantidade fixa de armazenamento. Então, sim, a comparação de 1 GB é diferente, mas por que você criaria uma partição EBS de 1 GB? No mínimo, se você for criar uma partição de 10 GB, estará procurando $ 0,5-1,0 para o mesmo 1 GB de dados armazenados nos 10 GB de dados. Dependendo da rapidez com que sua necessidade de armazenar dados aumentará e de quanto espaço não utilizado você deseja continuar pagando, o EFS pode ser uma opção melhor.
JDL
3
Também digno de nota: atualmente, o EFS funciona apenas com Linux, não com Windows.
Andrew Clark
110

Eu me pergunto por que as pessoas não estão destacando o motivo mais convincente a favor do EFS. O EFS pode ser montado em mais de uma instância do EC2 ao mesmo tempo, permitindo o acesso aos arquivos no EFS ao mesmo tempo.

(Edit 2020 May, o EBS também suporta montagem em vários EC2 ao mesmo tempo agora, consulte: https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ebs-volumes-multi.html )

Kabeer
fonte
Eu também. As pessoas que fizeram a pergunta ou votaram na pergunta (e não na resposta) simplesmente não têm idéia do que há de diferente entre o sistema UFS e NFS.
BMW
5
Da mesma forma, essa é uma diferença entre o uso do S3 e do EBS - o S3 e o EFS funcionam bem para dados compartilhados em vários servidores, enquanto o EBS não.
Geoffrey Wiseman
também o EFS não pode ser usado como uma origem para CDN, S3 é melhor para essa função. Se você tem muitos ativos que precisam estar disponíveis para a CDN, use S3
Moses Liao GZ
71

Corrigindo a comparação:

  • S3 é uma instalação de armazenamento acessível em qualquer lugar
  • O EBS é um dispositivo que você pode montar no EC2
  • O EFS é um sistema de arquivos que você pode montar em várias instâncias do EC2 ao mesmo tempo

Nesse momento, é um pouco prematuro comparar o EFS e o EBS - o desempenho do EFS não é conhecido nem sua confiabilidade.

Por que você usaria o S3?

  • Você não precisa que os arquivos sejam 'locais' para uma ou mais instâncias do EC2.
  • (efetivamente) capacidade infinita
  • serviço da web incorporado, autenticação
tedder42
fonte
2
Recentemente, configurei um volume EFS, agora disponível no West-2. Parece que estou tendo problemas de gravação com arquivos grandes. Por exemplo, a criação de um contêiner de docker falha com "arquivo muito grande" e a criação de um banco de dados sqlite também falha. Não havia esse problema no volume EBS que estava usando. Portanto, o EFS pode ter problemas de usabilidade / confiabilidade que precisam ser "corrigidos" no momento.
DKebler
7

Para adicionar à comparação: (burst) o desempenho de leitura / gravação no EFS depende dos créditos coletados. A coleta de créditos depende da quantidade de dados armazenados nele. Mais data -> mais créditos. Isso significa que, quando você precisa apenas de alguns GB de armazenamento, os quais são lidos ou gravados frequentemente, os créditos acabam muito em breve e a taxa de transferência cai para cerca de 50 kb / s. A única maneira de corrigir isso (no meu caso) era adicionar arquivos fictícios grandes para aumentar a taxa de créditos obtidos. No entanto, mais armazenamento -> mais custo.

user1677120
fonte
2
Isso é loucura, lento. No começo eu achava que isso era um erro no OP, mas depois de documentação sobre verificação de que está correto (a partir de 2017)
Jakobovski
7

Além do preço e dos recursos, a taxa de transferência também varia bastante (conforme mencionado pelo usuário 1677120):

EBS

Extraído dos documentos do EBS :

| EBS volume | Throughput |           Throughput          |
|    type    |   MiB/s    |         dependent on..        |
|------------|------------|-------------------------------|
| gp2 (SSD)  | 128-160    | volume size                   |
| io1 (SSD)  | 0.25-500   | IOPS (256Kib/s per IOPS)      |
| st1 (HDD)  | 20-500     | volume size (40Mib/s per TiB) |
| sc1 (HDD)  | 6-250      | volume size (12Mib/s per TiB) |

Observe que, para io1, st1 e sc1, você pode estourar o tráfego da taxa de transferência para pelo menos 125 Mb / s, mas para 500 Mb / s, dependendo do tamanho do volume.

Você pode aumentar ainda mais a taxa de transferência, por exemplo, implantando volumes EBS como RAID0

EFS

Extraído dos documentos do EFS

| Filesystem |    Base    |   Burst    |
|    Size    | Throughput | Throughput |
|    GiB     |   MiB/s    |   MiB/s    |
|------------|------------|------------|
|         10 |        0.5 |        100 |
|        256 |       12.5 |        100 |
|        512 |       25.0 |        100 |
|       1024 |       50.0 |        100 |
|       1536 |       75.0 |        150 |
|       2048 |      100.0 |        200 |
|       3072 |      150.0 |        300 |
|       4096 |      200.0 |        400 |

A taxa de transferência básica é garantida, a taxa de transferência burst usa os créditos que você coletou enquanto está abaixo da taxa de transferência básica (portanto, você só terá isso por um tempo limitado, veja aqui para obter mais detalhes.

S3

S3 é uma coisa totalmente diferente, portanto, não pode realmente ser comparado ao EBS e EFS. Plus: não há métricas de taxa de transferência publicadas para o S3. Você pode melhorar a taxa de transferência baixando em paralelo (em algum lugar, li a AWS afirma que você teria uma taxa de transferência basicamente ilimitada dessa maneira) ou adicionando o CloudFront ao mix

hansaplast
fonte
2

Em palavras simples

O Amazon EBS fornece armazenamento em nível de bloco.

O Amazon EFS fornece armazenamento de arquivos compartilhados conectados à rede.

O Amazon S3 fornece armazenamento de objetos.

Mandrek
fonte
1

O EBS é simples - armazenamento em nível de bloco que pode ser anexado a uma instância do mesmo AZ e pode sobreviver independentemente da vida útil da instância.

No entanto, existe uma diferença interessante entre o EFS e o S3 e para identificar casos de uso adequados.

Custo: o EFS é aproximadamente 10 vezes mais caro que o S3.

Usecases:

  • Sempre que temos milhares de instâncias que precisam processar o arquivo simultaneamente, o EFS é recomendado no S3.
  • Observe também que o S3 é um armazenamento baseado em objeto, enquanto o EFS é baseado em arquivos, implica que sempre que tivermos a exigência de que os arquivos sejam atualizados continuamente (atualizados), devemos usar o EFS.
  • O S3 é eventualmente consistente, enquanto o EFS é forte e consistente. Caso não consiga ter uma consistência eventual, use o EFS
Tejas
fonte
0

O Amazon EBS fornece armazenamento em nível de bloco - é usado para criar um sistema de arquivos e armazenar arquivos. Amazon EFS - seu sistema de armazenamento compartilhado semelhante ao NAS / SAN. Você precisa montá-lo no servidor unix e usá-lo. Amazon S3 - é um armazenamento baseado em objeto em que cada item é armazenado com um URL http.

Uma das diferenças é - o EBS pode ser anexado a 1 instância por vez e o EFS pode ser anexado a várias instâncias, por isso o armazenamento compartilhado. O armazenamento de objeto simples S2 não pode ser montado.

Suresh Chandra Joshi
fonte
0

O EFS e S3 têm o mesmo objetivo, você pode armazenar qualquer tipo de objeto ou arquivo.

Mas, para mim, a única diferença é que o EFS está permitindo que você tenha um sistema de arquivos tradicional na nuvem VM (EC2) com mais flexibilidade, como você pode conectar a várias instâncias.

O S3, por outro lado, é um servidor flexível e elástico separado para seus objetos. Ele pode ser usado para arquivos, imagens, vídeos estáticos ou até para hospedagem de aplicativos estáticos (js).

O EBS é obviamente para armazenamento em bloco, onde você pode instalar o SO ou qualquer coisa relacionada ao seu SO.

Marjun
fonte