2012-05-29 35 views
53

Quanto è stabile s3fs per montare un bucket Amazon S3 come directory locale in linux? È raccomandato/stabile per ambienti di produzione a richiesta elevata?Quanto è stabile s3fs per montare un bucket Amazon S3 come directory locale

Esistono soluzioni migliori o simili?

Aggiornamento: Sarebbe meglio utilizzare EBS e montarlo tramite NFS su tutte le altre AMI?

+16

è una vergogna che domande come questa finiscono per essere chiuse. ma almeno non vengono cancellati ... – arod

+4

Sì, dacci una dannata sezione di opinione o qualcosa di strano. A volte hai bisogno di un parere ... –

+1

Ancora una buona domanda chiusa ... È come "chiuso" è un tag per una buona domanda! – nemo

risposta

75

There's a good article on s3fs here, che dopo aver letto ho fatto ricorso ad una condivisione EBS.

Si evidenzia alcune considerazioni importanti quando si utilizza s3fs, ossia sono collegati i limiti inerenti S3:

  • alcun file deve essere maggiore di 5 GB
  • non si può parzialmente aggiornare un file così cambiando una singola byte caricherà di nuovo l'intero file.
  • operazione su molti file piccoli sono molto efficienti (ognuno è un oggetto S3 separato dopo tutto) ma i file di grandi dimensioni sono molto inefficienti
  • Anche se S3 supporta download parziali/bocciati, s3fs non ne approfitta, quindi se si desidera per leggere solo un byte di un file da 1 GB, dovrai scaricare l'intero GB.

Dipende quindi da cosa si sta memorizzando se s3fs sia un'opzione praticabile. Se stai memorizzando, le foto, dove vuoi scrivere un intero file o leggi un intero file non modificano mai in modo incrementale un file, allora è corretto, anche se ci si potrebbe chiedere, se lo stai facendo, perché non usare solo S3? API direttamente?

Se si sta parlando di dati di appliazione, (ad esempio file di database, file di registrazione) in cui si desidera apportare piccole modifiche incrementali, si tratta di un preciso no - S3 Solo non funziona in questo modo non è possibile modificare in modo incrementale un file.

L'articolo sopra menzionato parla di un'applicazione simile - s3backer - che aggira i problemi di prestazioni implementando un filesystem virtuale su S3. Questo aggira i problemi di prestazioni, ma in sé ha alcuni problemi della propria:

  • alto rischio di corruzione dei dati, a causa del ritardo scrive
  • troppo blocchi di piccole dimensioni (ad esempio, il valore predefinito 4K) possono aggiungere significativi costi aggiuntivi (ad es. $ 130 per 50 GB con blocchi 4K del valore di archiviazione)
  • dimensioni di blocco troppo grandi possono aggiungere significativi costi di trasferimento e archiviazione dati .
  • l'utilizzo della memoria può essere proibitivo: per impostazione predefinita memorizza nella cache 1000 blocchi.
    Con la dimensione predefinita del blocco 4K non è un problema, ma la maggior parte degli utenti
    probabilmente desidera aumentare le dimensioni del blocco.

Ho fatto ricorso a EBS Mounted Drived condiviso da un'istanza EC2. Ma dovresti sapere che sebbene l'opzione più performante abbia un grosso problema Una condivisione NFS montata su EBS ha i suoi problemi: un singolo punto di errore; se la macchina che condivide il volume EBS non funziona, perderai l'accesso a tutte le macchine che accedono alla condivisione.

Questo è un rischio con cui sono stato in grado di vivere ed è stata l'opzione che ho scelto alla fine. Spero che aiuti.

+0

rispondendo alla tua domanda: "se stai facendo questo, allora perché non usare l'API S3 direttamente?" Userò l'API di S3, ma ho bisogno di una soluzione rapida in cui il caricamento della mia app già funzionante in un server singolo trovi S3 trasparente. Non posso vivere con un singolo punto di errore (EBS). È trasparente per s3fs se S3 fallisce e un altro viene automaticamente montato da Amazon? Non sono sicuro di come funzioni ... – arod

+0

In tal caso, probabilmente lo memorizzerei sul disco rigido del server in una cartella temporanea. Altrimenti, si sta effettivamente caricando su S3 due volte !! Mettere il file su una cartella temporanea basata su S3 impiegherà il tempo necessario per utilizzare l'API per caricare direttamente su S3 – reach4thelasers

+0

. Ciò che intendo è che nel prossimo futuro smetterò di usare s3fs e inizierò a utilizzare l'API S3; nel frattempo userò s3fs per far funzionare il sistema ... grazie mille ... – arod

14

Questa è una vecchia domanda, quindi condividerò la mia esperienza nell'ultimo anno con S3FS.

Inizialmente, aveva un numero di bug e perdite di memoria (ho avuto un cron-job per riavviarlo ogni 2 ore) ma con l'ultima versione 1.73 è stato molto stabile.

La cosa migliore di S3FS è che hai meno cose da preoccuparti e ottieni alcuni vantaggi in termini di prestazioni gratuitamente.

La maggior parte delle richieste S3 sarà PUT (~ 5%) e GET (~ 95%). Se non hai bisogno di alcuna post-elaborazione (generazione di miniature per esempio). Se non hai bisogno di alcuna post-elaborazione, non dovresti colpire il tuo server web in primo luogo e caricare direttamente su S3 (usando CORS).

Supponendo che si stia colpendo il server probabilmente significa che è necessario eseguire alcune operazioni di post-elaborazione sulle immagini. Con un'API S3 verrai caricato sul server, quindi esegui il caricamento su S3. Se l'utente vuole ritagliare, dovrai scaricare di nuovo da S3, quindi ricaricarlo sul server, ritagliare e quindi caricare su S3. Con S3FS e il caching locale attivato questa orchestrazione si occupa di te e salva i file da S3.

Nella memorizzazione nella cache, se si esegue il caching su un'unità effimera su EC2, si ottengono i vantaggi prestazionali disponibili e si può eliminare la cache senza doversi preoccupare di nulla. A meno che non si esaurisca spazio su disco, non dovresti avere alcun motivo per eliminare la cache. Ciò rende molto più semplici le operazioni di movimento come la ricerca e il filtraggio.

L'unica cosa che vorrei fosse la sincronizzazione completa con S3 (stile RSync). Ciò renderebbe una versione aziendale di DropBox o Google Drive per S3, ma senza doversi confrontare con le quote e le tariffe che ne derivano.

+0

per quanto riguarda la "sincronizzazione completa", ti riferisci a qualcosa di simile [ this] (http://s3tools.org/s3cmd-sync) (http://s3tools.org/s3cmd-sync) integrato in S3FS? – ylluminate

Problemi correlati