none
Azure Drive - Updatesize

    Frage

  • Hello,

    i'm trying to include an windows azure drive on my asp.net website to handle my IO operations.
    All works fine with, mounting and creating a new disk, but my actual problem is: i want to resize this .vhd, i searched and always just found this article: "http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx", i tried it out :

     Dim pageBlob As CloudBlob = mcliBLOB.GetContainerReference("drives").GetPageBlobReference("mysupercooldrive.vhd")
                    Dim uriBuilder As UriBuilder = New UriBuilder(pageBlob.Uri)
                    Dim requestUri As Uri = uriBuilder.Uri
    
    
    
                    If (pageBlob.ServiceClient.Credentials.NeedsTransformUri) Then
                        requestUri = New Uri(pageBlob.ServiceClient.Credentials.TransformUri(requestUri.ToString()))
    
                    End If
    
    
    
    
                    Dim request As HttpWebRequest = WebRequest.Create(requestUri)
    
                    request.Method = "PUT"
    
                    request.Timeout = Math.Ceiling(TimeSpan.FromSeconds("2000" + 30).TotalMilliseconds)
    
    
                    request.ContentLength = 0
    
                    request.Headers.Add("x-ms-version", "2011-08-18")
                    request.Headers.Add("x-ms-page-write", "Update")
                    request.Headers.Add("x-ms-range", "50000")
    
    
                    pageBlob.ServiceClient.Credentials.SignRequest(request)
                    request.GetResponse()

    The URI string is existing, but if i try to get my response it justs give's me an error "404", i also tryed to set an content length to higher, and to set the "x-ms-date", but with no success.

    I also heared that the .vhd is a Page Blob and if i would create a 1 TB big disk, i just need to pay the stored data into this 1TB big disk is this right?, so i also could create a 1TB disk at start and didn't need to rezize it?

    I found no code which would help me at this point, maybe u have an advise or a code snippet?

    Hope u can help me :)

    Thanks in advance.

    contentXXL

    PS: Sorry i wanted to put this question into: http://social.msdn.microsoft.com/Forums/de-de/windowsazuredevelopment/threads but i didn't work, maybe an administrator could move?

    Thanks


    • Bearbeitet contentXXL Mittwoch, 21. März 2012 11:15
    • Verschoben Stefan FalzMVP Donnerstag, 22. März 2012 14:13 In passenderes Forum verschoben. Keine ASP.NET Frage. (aus:ASP.NET)
    Mittwoch, 21. März 2012 11:13

Antworten

  • Hallo Lars,

    ich habe noch einmal über die Geschichte mit dem vergrößern einer VM nachgedacht. Wir hatten da wohl beide einen kleinen Denkfehler. Die VM ist erstmal unabhängig von Windows Azure zu sehen. Sie kann nur  mit Hyper-V bearbeitet werden bzw. vergrößert. Das sie letztendlich im Blob Storage abgelegt wird, spielt dabei keine Rolle. Somit greift auch nicht die Blob Services REST API. Wir sollten das Thema Windows Azure Drives abhaken, dass bringt dich nicht weiter.

    Schöne Grüße

    Oliver

    (Fortsetzung im anderen Thread)

    • Als Antwort markiert contentXXL Montag, 26. März 2012 13:51
    Montag, 26. März 2012 13:22
    Moderator

Alle Antworten

  • Update: i also tried:

                    Dim pageBlob As CloudPageBlob = mcliBLOB.GetContainerReference("drives").GetPageBlobReference("mysupercooldrive.vhd")
                    Dim requestUri As Uri = pageBlob.Uri
    
    
    
                    If (pageBlob.ServiceClient.Credentials.NeedsTransformUri) Then
                        requestUri = New Uri(pageBlob.ServiceClient.Credentials.TransformUri(requestUri.ToString()))
    
                    End If
    
    
    
                    Dim request As HttpWebRequest = Microsoft.WindowsAzure.StorageClient.Protocol.BlobRequest.SetProperties(requestUri, "2000", pageBlob.Properties, Nothing, 500)
                    request.Timeout = "2000"
    
                    mcliBLOB.Credentials.SignRequest(request)
    
                    request.GetResponse()

    But same problem like above, Error "404".

    This example is provided at http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/using-windows-azure-page-blobs-and-how-to-efficiently-upload-and-download-page-blobs.aspx

    and

    http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.protocol.blobrequest.setproperties.aspx

    Best Regards

    contentXXL

    Mittwoch, 21. März 2012 13:00
  • Hi,

    könntest Du deine Postings bitte auf Deutsch verfassen? Da Du in einem deutschsprachigen Forum schreibst, wäre das für die Leser sehr hilfreich. Danke :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Mittwoch, 21. März 2012 14:32
  • Hallo Stefan,

    ich habe eigentlich darauf gehofft das dieser Thread verschoben wird, aber ggf. da ich schon eine antwort bekommen habe: "wie schaffe ich es denn unter : http://social.msdn.microsoft.com/Forums/de-de/windowsazuredevelopment/threads  zu Posten da unter "Stellen Sie eine Frage", das Forum zum auswählen nicht existent ist!?

    Und nun nochmal alles auf Deutsch:
    Ich versuche zurzeit das Windows Azure Drive für unsere asp.net Webseite zu includieren damit die IO operationen ohne einen extra Blobstorage worker zu schreiben funktionieren, da das Windows Azure Drive ja genau auf alte Applikationen zugeschnitten wurde, damit die ganzen Datei-Operationen bestehen bleiben können.

    Das Mounten sowie das Erstellen einer neuen .VHD im Pageblob funktioniert ohne Probleme, das hineinschreiben auch, nun ist aber die Frage:"Wie kann ich die angelegte .VHD vergrößeren", ich habe im Web gesucht, bin aber nur auf den " http://msdn.microsoft.com/en-us/library/windowsazure/ee691975.aspx " Artikel gestoßen.

    Mein Test:

     Dim pageBlob As CloudBlob = mcliBLOB.GetContainerReference("drives").GetPageBlobReference("mysupercooldrive.vhd")
                    Dim uriBuilder As UriBuilder = New UriBuilder(pageBlob.Uri)
                    Dim requestUri As Uri = uriBuilder.Uri
    
    
    
                    If (pageBlob.ServiceClient.Credentials.NeedsTransformUri) Then
                        requestUri = New Uri(pageBlob.ServiceClient.Credentials.TransformUri(requestUri.ToString()))
    
                    End If
    
    
    
    
                    Dim request As HttpWebRequest = WebRequest.Create(requestUri)
    
                    request.Method = "PUT"
    
                    request.Timeout = Math.Ceiling(TimeSpan.FromSeconds("2000" + 30).TotalMilliseconds)
    
    
                    request.ContentLength = 0
    
                    request.Headers.Add("x-ms-version", "2011-08-18")
                    request.Headers.Add("x-ms-page-write", "Update")
                    request.Headers.Add("x-ms-range", "50000")
    
    
                    pageBlob.ServiceClient.Credentials.SignRequest(request)
                    request.GetResponse()

    Der URI-String existiert auf das Blobstorage, versuche ich allerdings den Request abzuschicken bekomme ich nur einen "404" Fehler. Zusätzlich zum obigen Code habe ich versucht die Content-Länge höher zu setzten und den Request Header mit "x-ms-date" zu erweitern, leider ohne Erfolg.

    Ich habe aber gehört, dass ein Pageblob mit 0len Initialisiert wird, und somit könnte es auch 1 TB groß sein ohne dass es etwas kosten würde?
    Somit würden nur die Dateien die darinnen gespeichert werden bezahlt werden müssen. -> Ist dies richtig?

    Wenn das so wäre, könnte ich auch einfach eine 1TB große Platte erstellen und müsste sie nicht vergrößeren (hilfreich wäre es trotzdem wie es funktioniert).

    Ich habe im Netz keinen Code gefunden der mir weitergeholfen hat, ggf. habt Ihr einen Codeschnipsel für mich?


    Zweiter Post:

    Mein zweiter Versuch war diesmal über die normale API zu gehen:

      Dim pageBlob As CloudPageBlob = mcliBLOB.GetContainerReference("drives").GetPageBlobReference("mysupercooldrive.vhd")
                    Dim requestUri As Uri = pageBlob.Uri
    
    
    
                    If (pageBlob.ServiceClient.Credentials.NeedsTransformUri) Then
                        requestUri = New Uri(pageBlob.ServiceClient.Credentials.TransformUri(requestUri.ToString()))
    
                    End If
    
    
    
                    Dim request As HttpWebRequest = Microsoft.WindowsAzure.StorageClient.Protocol.BlobRequest.SetProperties(requestUri, "2000", pageBlob.Properties, Nothing, 500)
                    request.Timeout = "2000"
    
                    mcliBLOB.Credentials.SignRequest(request)
    
                    request.GetResponse()

    Leider habe ich auch hier nur einen 404 Fehler bekommen.

    Das Codebeispiel habe ich unter http://blogs.msdn.com/b/windowsazurestorage/archive/2010/04/11/using-windows-azure-page-blobs-and-how-to-efficiently-upload-and-download-page-blobs.aspx

    und

    http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.protocol.blobrequest.setproperties.aspx

    gefunden.

    Ich hoffe die Übersetzung ist so ok ;).
    Hoffe es gibt nun jemanden der das Problem auch schon hatte und mir hier weiterhelfen kann,

    would be great :).

    Vielen Dank schonmal im Vorraus.

    contentXXL



    Mittwoch, 21. März 2012 15:19
  • Hallo contentXXL,

    bevor Du das Windows Azure Forum zur Auswahl hast, musst Du die Forenkategorie Softwarearchitektur auswählen. Im zweiten Auswahlfeld gibt es dann auch Windows Azure.

    Du kannst auch direkt das Forum aufrufen:

    http://social.msdn.microsoft.com/Forums/de-DE/azurede/threads 

    und dann posten.

    Schöne Grüße

    Oliver

    @Stefan oder Robert: Bitte ins Azure Forum verschieben (Das ist mein Kunde :-) )

    Donnerstag, 22. März 2012 14:09
    Moderator
  • Hallo Oliver,

    @Stefan oder Robert: Bitte ins Azure Forum verschieben (Das ist mein Kunde :-) )

    aber gerne doch :)


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community

    Donnerstag, 22. März 2012 14:14
  • Hallo Oliver,

    danke für die Info, leider habe ich dort trotzalldem nicht die Möglichkeit unter der Kategorie: " http://social.msdn.microsoft.com/Forums/de-de/windowsazuredevelopment/ " zu Posten, der Überpunkt für dieses Forum wiederrum wäre:" http://social.msdn.microsoft.com/Forums/de-de/category/windowsazureplatform,azuremarketplace,windowsazureplatformctp ", geh ich dort auf "Stellen Sie eine Frage", finde ich diese Kateogrien trotzdem nicht. Aber im Endeffekt, wenn hier solche Problematiken auch behandelt & gelöst werden, bin ich glücklich ;), ich bin von dem anderen Forum ausgegangen, da ich hier konkrete Azure Problem Fragen gefunden hatte.

    Ich habe noch eine zweite Frage gestellt, bei uns ist das leider im Moment alles ein bisschen Zeitkritisch, deswegen verlinke ich die Frage aus einem anderen Teilbereich hier mal noch mit rein (falls ich darf, ansonsten bitte Melden dann entferne ich Ihn natürlich) http://social.microsoft.com/Forums/de-DE/partnerdepresales/thread/81737fe3-6ba3-4b98-abda-1d2c5b688213

    PS: Meine Problematik ist noch auf & hoffe auf euere Hilfe

    Viele Grüße & einen schönen Feierabend ;)

    Lars


    Donnerstag, 22. März 2012 16:04
  •  

     

    Hallo Lars,

    beim ersten lesen habe ich den Kern deines Problems übersehen:

    Du versuchst über das deutsche Foruminterface im amerikanischen Azure Forum zu posten (Geht nicht!).

    http://social.msdn.microsoft.com/Forums/de-de/windowsazuredevelopment/

    Der korrekte Link wäre:

    http://social.msdn.microsoft.com/Forums/en-us/windowsazuredevelopment/

    Darüber hinaus wäre auch die Wahl des Forums falsch gewesen. Die amerikanischen Foren sind thematisch unterteilt. Azure Drives als Teil des Windows Azure Storages würden hierher hingehören:

    http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/threads

    >>Aber im Endeffekt, wenn hier solche Problematiken auch behandelt & gelöst werden, bin ich glücklich ;), ich bin von dem anderen Forum ausgegangen, da ich hier konkrete Azure Problem Fragen gefunden hatte.

    Das deutsche Windows Azure Forum ist dafür bestimmt, solche Problematiken zu behandeln. Wenn sich aber keiner traut Fragen zu stellen, bin ich als Moderator mehr oder weniger arbeitslos.

    >>Ich habe noch eine zweite Frage gestellt, bei uns ist das leider im Moment alles ein bisschen Zeitkritisch, deswegen verlinke ich die Frage aus einem anderen Teilbereich hier mal noch mit rein

    Wenn, deine Probleme zeitkritisch sind, solltest Du sie nicht in Amerika posten. Aufgrund der unterschiedlichen Antwortzeiten (Wenn die Amis zur Arbeit kommen, habe ich bereits Feierabend) ziehen sich Diskussion oft in die Länge.

    Zu deiner zweiten Frage kann ich leider nichts sagen. Partner PreSales ist ein Privates Forum. Da habe ich keinen Zugriff. Wenn die Frage eine Azure-relevante Thematik hat, steht es dir frei sie hier erneut zu posten. Ich würde mich dann darum kümmern.

    Ende Teil1

    Schöne Grüße

    Oliver

    Freitag, 23. März 2012 09:19
    Moderator
  • Hallo Oliver,

    vielen Dank für die nette Erörterung, dann möchte ich dir ein bisschen Arbeit machen, falls erlaubt :),

    Ich habe den anderen Post hier erneut gepostet: http://social.msdn.microsoft.com/Forums/de-DE/azurede/thread/f6f875cd-51c5-49da-87b9-2e3c700903fb

    Viele Grüße und viel spaß beim durcharbeiten ;)

    Lars

    Freitag, 23. März 2012 10:06
  •  

    Hallo Lars,

    Kommen wir zum inhaltlichen Teil.

    >> Ich habe aber gehört, dass ein Pageblob mit 0len Initialisiert wird, und somit könnte es auch 1 TB groß sein ohne dass es etwas kosten würde? (…) -> Ist dies richtig?

    1. Ein PageBlob kann die Maximalgröße 1 TB haben– Richtig!
    2. (…) ohne dass es etwas kosten würde? – Falsch! – Du bezahlst einen Windows Azure Storage mit mindestens 1 TB (ca. 129 US-$) Größe.
    3. Zusätzliche Kosten können dadurch entstehen, dass ein Storage Account mit 1 TB Größe zu mindestens eine Windows Azure Compute Large Instance benötigt.

    Zur Vorgehensweise bei Azure Drives, solltest Du folgenden Artikel lesen:

    http://blogs.msdn.com/b/windowsazurestorage/archive/2010/03/29/windows-azure-drive-demo-at-mix-2010.aspx 

    Gruß Oliver


    Freitag, 23. März 2012 11:07
    Moderator
  • Hallo Oliver,

    dann habe ich das Video hier wohl falsch Verstanden:http://www.microsoftpdc.com/2009/SVC14 "you not charge for the empty pages, because its filled with zeros" und am anfang meint er das ein Pageblob am anfang mit Zeros gefüllt wird? Video ab Minute 29 bis 32 ca.

    Den Artikel hatte ich bereits durchgelesen und dort auch die Tests mit Create und Mount etc. durchgenommen, dort steht zwar aufgelistet unten "Only Fixed Size VHDs are supported." Aber Windows hat sogar eine API http://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storageclient.protocol.blobrequest.setproperties.aspx bereitgestellt, leider funktioniert diese nicht, denn hierdurch könnte ich einen Konfigurationsparameter abprüfen bzw. abprüfen zu wieviel das Drive bereits belegt ist und dies bei Bedarf erweitern?

    Das Problem ist, dass in unserem CMS durch die Benutzer natürlich dauerhaft neue Daten upgeloaded werden, und man ja nicht gleich 129 US-$ zahlen möchte, sondern nur nach Bedarf/Nutzung.
    Eines der letzten Punkte, die ich unseren Kunden "antun" möchte, wäre, dass er die .VHD runterladen müsste Backupen, eine neue erstellen und die Daten rüberkopieren. Auch Codetechnisch wäre dies keine schöne Lösung.

    Viele Grüße

    Lars

    Freitag, 23. März 2012 11:33
  • Hallo Lars,

    nein, der Fehler liegt in diesem Fall  bei mir. Du kannst einen PageBlob mit 1 TB Größe anlegen und bezahlst tatsächlich nur beschriebene Speicherflächen.

    >>"Only Fixed Size VHDs ...

    So ist es aber leider. Die VHD müsste von Anfang an ausreichend dimensioniert werden.

    Ich habe aber eine Rückfrage zu eurer Lösungsarchitektur. Ist eure Cloudedition eine SaaS - Lösung (also betrieben von euch) oder eine Azure Anwendung, die jeder Kunde auf einem eigen Azure Account einsetzt. Ich frage deshalb, da ihr nur ein Azure Drive gleichzeitig nutzen könnt. Der Einsatz von Snapshots bringt nichts, da Snapshots Read-Only sind.

    Schöne Grüße

    Oliver

    Freitag, 23. März 2012 12:25
    Moderator
  • Hallo Oliver,

    glück gehabt, dann ist mein Englisch doch nicht so schlecht wie gedacht ;).
    Dann könnte man hier immerhin so verfahren dass man die maximale größe der Instanz anlegt (warum Microsoft dann allerdings eine API für so eine Funktionalität rausbringt ist mehr wircklich schleierhaft?!)

    Bislang sieht es so aus, dass jeder Kunde einen eigenen Azure Account bekommt, bzw. einen eigenen gehosteten Dienst, die dann aber ein eigenes Speicherkonto bekommen würden, damit hätte jeder sein eigenes Azure Drive und kann somit es Write/Readable mounten.

    Unser CMS wurde 2002 geschrieben und besitzt daher noch viele IO File operation etc. daher auch atm die Lösung mit Azure Drives (übergangstechnisch, aber auch für unsere Kunden, für eigengeschriebene Implementierungen mit IO Operationen).

    Ich es ist verständlich wie es z.Z. bei uns aussieht.

    Grüße

    Lars

    Freitag, 23. März 2012 12:40
  • Hallo Lars,

    die Klasse BlobRequest und SetProperties zu benutzen, ist glaube ich auch der falsche Ansatz. Ich würde die Klasse BlobProperties benutzen. Müsste man allerdings ausprobieren.

    >>warum Microsoft dann allerdings eine API für so eine Funktionalität rausbringt ist mehr wircklich schleierhaft?!

    Die API ist nicht speziell für Azure Drives gedacht (die sind sowieso ein Sonderfall) sondern generell für die Windows Azure Blob Services.

    Zu eurer Architektur: Ich verstehe die Begründung (Übergangslösung ...), es gehen aber viele Nutzeffekte der Cloud verloren.

    Schöne Grüße

    Oliver

    P.S: Deinen zweiten Thread werde ich später beantworten

    Freitag, 23. März 2012 14:27
    Moderator
  • Hallo Oliver,

    dann versuche ich dies mal mit der BlobProperties, vielen Dank.
    Ja es ist momentan eine Übergangslösung & auch zeitnahe Lösung da wir leider im Moment nicht unbeschränkte Ressourcen zur Verfügung haben :).

    Falls wir uns heute nicht mehr hören sollte, wünsche ich ein schönes & verdientes Wochenende.

    Viele Grüße

    Lars

    Freitag, 23. März 2012 15:11
  • Hallo Oliver,

    "BlobProperties" haben leider zu keinem Erfolg geführt.
    Gibt es sonst noch Methodiken?

    Ich habe mir das ganze nochmal durchdacht und es ist wircklich nicht gerade Performant wenn man ein 1TB großes File runterläd um dies kleiner zu machen, bzw. ein 500GB File runterläd um dieses zu resizen. Hier muss es doch einen anderen Ansatzweg noch geben?

    Grüße

    Lars

    Montag, 26. März 2012 11:12
  • Hallo Lars,

    ich habe noch einmal über die Geschichte mit dem vergrößern einer VM nachgedacht. Wir hatten da wohl beide einen kleinen Denkfehler. Die VM ist erstmal unabhängig von Windows Azure zu sehen. Sie kann nur  mit Hyper-V bearbeitet werden bzw. vergrößert. Das sie letztendlich im Blob Storage abgelegt wird, spielt dabei keine Rolle. Somit greift auch nicht die Blob Services REST API. Wir sollten das Thema Windows Azure Drives abhaken, dass bringt dich nicht weiter.

    Schöne Grüße

    Oliver

    (Fortsetzung im anderen Thread)

    • Als Antwort markiert contentXXL Montag, 26. März 2012 13:51
    Montag, 26. März 2012 13:22
    Moderator
  • Hallo Oliver,

    schade...dann muss ich mir doch überlegen ob ich einen Copy+Updatemechanismus schreibe.

    Trotzdem danke für deine Mühe.

    Gruß

    Lars

    Montag, 26. März 2012 13:51