InfoQ

InfoQ

News

My Bookmarks

Login or Register to enable bookmarks for unlimited time.

The content has been bookmarked!

There was an error bookmarking this content! Please retry.

Azure Drive Eases the Migration to Microsoft’s Cloud

Posted by Abel Avram on Feb 04, 2010

Sections
Operations & Infrastructure,
Enterprise Architecture,
Development,
Architecture & Design
Topics
Cloud Computing ,
REST ,
Operations ,
.NET
Tags
Storage ,
migration ,
Azure ,
NTFS ,
PaaS

Initially announced as XDrive during PDC 2009, Microsoft has released the beta version of Windows Azure Drive, a storage access solution simplifying the migration of Windows applications to the cloud by creating an NTFS virtual drive on top of a storage blob.

The Windows Azure Storage Services is a REST-based service dealing with blobs. Blobs are storage entities that can contain binary or text files. Blobs are organized in containers. There are two types of blobs:

  • Block blobs – coming in sizes of up to 200GB and providing sequential read/write access; these blobs are useful for streaming.
  • Page blobs – can be up to 1TB in size and provide random read/write access, being useful for storing general purpose text/binary files.

The Storage Service’ API provides the necessary tools for working with blobs, but that is handy for writing new applications targeted to the Azure cloud. Existing Windows applications have no knowledge of blobs and they would need a major re-write to be able to run in the cloud. That is where Azure Drive is helpful.

The Windows Azure OS has an OS driver that can mount a page blob as a Virtual Hard Drive (VHD) and can execute read/write operations to the VHD. For the application it looks like accessing a mounted NTFS  Windows drive, but the OS driver actually works with a blob. All unbuffered or flushed writes are synchronously sent to the storage so the user can rest assured that his data is safe when receiving “success” from the driver. That is important in case the application crashes or the drive is unmounted.

The Azure team has disclosed a few technical details of the Azure Drive:

  • A Drive is a Page Blob formatted as a Fixed NTFS VHD between 16 MB and 1TB.
  • A VM can dynamically mount up to 16 drives.
  • A Page Blob can only be mounted by one VM at a time for read/write access. A snapshot page blob can be mounted as read only by multiple different VMs at the same time.
  • The storage account used to store the Page Blob and the compute account used to run the application should be allocated in the same geo-location in the Windows Azure Developer Portal in order to get the best performance out of the drive.
  • Drives can be uploaded or downloaded via the Windows Azure Blob interface. The formatted Fixed NTFS VHDs can be uploaded as a Page Blob using the blob interface and then mounted as a drive. Similarly, a formatted Page Blob can be downloaded through the Page Blob interface and then the downloaded drive can be used as a VHD.
  • The OS driver provided by Windows Azure is only available within the Windows Azure VM instances in the Windows Azure cloud. No driver is distributed by Microsoft at this time to allow you to mount drives remotely. Even so, you can download a drive using GetBlob and mount the downloaded VHD drive where it is downloaded for use, but any updates to that downloaded version will not be sent to the Windows Azure Blob service.

The Azure Drive is available with the February Azure SDK containing Guest OS 1.1 with OS Driver.

Amongst features announced at PDC 2009 that are yet to arrive are:

  • Better control over cloud VMs through:
    • Administrator privileges on cloud VMs
    • User-driven construction and configuration of VM images
    • Remote terminal server access to cloud VMs
  • Storage
    • User-selectable geo-locations for replicas
    • Secondary indices for tables

Resources: Azure Drive Whitepaper (docx), PDC 2009 sessions: Windows Azure Present and Future and Windows Azure Blob and Drive Deep Dive.

No comments

Watch Thread Reply

Educational Content

New-age Transactional Systems - Not Your Grandpa's OLTP

John Hugg discusses high volume transaction processing applications with high and low frequency profiles, and how VoltDB can be used for that purpose.

Cool Code

Kevlin Henney examines code samples to see what can be learned from them starting from the premise that one won’t write great code unless he knows how to read it.

Collaboration: At the Extremities of Extreme

Jason Ayers share the observations he made watching a team of developers collaborating in real time on the same code base, pushing XP, pair programming and continuous integration to their extremes.

Yesod Web Framework

Michael Snoyman presents Yesod, a web framework written in Haskell and containing a web server, templating, ORM, libraries (templating, gravatar, etc.).

Transactions without Transactions

Richard Kreuter and Kyle Banker on how to avoid classical RDBMS transactional systems by using compensation mechanisms, transactional messaging or transactional procedures.

Attila Szegedi on JVM and GC Performance Tuning at Twitter

Attila Szegedi talks about performance tuning Java and Scala programs at Twitter: how to approach GC problems, the importance of asynchronous I/O, when to use MySQL/Cassandra/Redis, and much more.

10 tips on how to prevent business value risk

One category of risk that project teams need to ensure they address is business value failure – delivering a product that fails to provide value for the business investor.

Interview: Software Systems Architecture: Working With Stakeholders Using Viewpoints and Perspectives

InfoQ spoke to the authors of Software Systems Architecture on a couple of new topics, the System Context viewpoint and Agile, which have been added to the second edition.