2015-12-12 3 views
-1

У меня есть файловый сервер, который содержит около 2 ТБ данных и растет с 50 000 файлов/40 гб в неделю.Шлюз для хранения программного обеспечения

Большинство файлов используются только неделю или максимум месяц, после чего они не доступны.

Файловый сервер обслуживает несколько веб-серверов с долями для файлов. И веб-страница обрабатывает загрузку и удаление файлов, передающих их.

Мы больше не хотим расширять наш файловый сервер premis. И ищу облачное гибридное хранилище.

Мы действительно не хотим перестраивать любое приложение C# или покупать оборудование, подобное простому магазину.

Что мы ищем - это решение, которое копирует все новые файлы на локальном диске в облако. Удаляет локальные файлы, которые не были доступны в течение месяца. Если пользователь затем хочет, чтобы файл был удален локально, он сначала загружается из облака, а затем мы можем его использовать. Это должно произойти автоматически.

Я предпочитаю использовать хранилище blob в Azure, поскольку у нас уже есть некоторые сервисы.

Любой совет о том, как это сделать?

+0

Этот вопрос очень широк, основан на мнениях (много способов решить эту проблему) и может рассматриваться как запрос рекомендации инструмента (это непонятно из вашего вопроса). Все три из этих причин ставят этот вопрос как не относящийся к теме для StackOverflow. Будь вы строите или покупаете, зависит от вас. –

+0

Я добавил, что хочу использовать azure blob storage, чтобы сузить его. – Addeladde

ответ

1

Azure blob storage будет делать трюк. Хранилище Blob хорошо работает для текста, двоичных файлов, документов, мультимедийных файлов и т. Д. This tutorial on blobs должно предоставить вам все, что вам нужно, с лазурной стороны. На текущем файловом сервере вам просто нужно создать службу или задание, которое загружает все новые файлы с помощью кода из учебника. Вот быстрый подход, который можно оптимизировать, кроме того, вам нужно будет написать логику, чтобы получить новые файлы (я предполагаю, что это не проблема для вас):

 // retreive all the new files 
     List<System.IO.File> files = GetAllNewFiles(); 

     // Retrieve storage account from connection string. 
     CloudStorageAccount storageAccount = CloudStorageAccount.Parse(CloudConfigurationManager.GetSetting("StorageConnectionString")); 

     // Create the blob client. 
     CloudBlobClient blobClient = storageAccount.CreateCloudBlobClient(); 

     // Retrieve reference to a previously created container. 
     CloudBlobContainer container = blobClient.GetContainerReference("mycontainer"); 

     // Retrieve reference to a blob named "myblob". 
     CloudBlockBlob blockBlob = container.GetBlockBlobReference("myblob"); 

     foreach (System.IO.File file in files) 
     { 
      // Create or overwrite the "myblob" blob with contents from a local file. 
      using (var fileStream = file.OpenRead(@"path\myfile")) 
      { 
       blockBlob.UploadFromStream(fileStream); 
      } 
     } 

Кроме того, если вы Ждете» t хотите хранить файлы навсегда в облаке, вы можете использовать Azure Scheduler для запуска ежедневно/еженедельно/ежемесячно/бесплатно и удалять все файлы, которые не были запрошены с вашего локального файлового сервера за X дней.

+0

Вы имеете в виду, что я должен использовать лазурный планировщик для подключения к посылке api для загрузки и удаления файлов? Я действительно не familiar со всеми услугами в Azure. Я планирую писать загрузку с потоком. Я предполагаю, что не должно быть проблем для запуска, как 30 одновременных потоков? Планировщик azure отслеживает, если он уже запущен и не запускает его, если это так? – Addeladde

+0

Я предлагаю вам использовать планировщик для мониторинга хранилища Azure и удаления файлов через определенный промежуток времени. Я не стал бы слишком сильно зависеть от того, где вы это делаете, работая как с загрузкой/удалением, так и с локальным или облачным интерфейсом, будет зависеть от конкретной ситуации. Я не думаю, что потоки - проблема с хранилищем, хотя я лично не пробовал. –

+0

CloudBlockBlob blockBlob = container.GetBlockBlobReference ("myblob"); эта строка должна находиться внутри foreach, и имя должно быть именем файла – Addeladde

Смежные вопросы