<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>The Azure Manifesto</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/the_azure_manifesto/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/the_azure_manifesto/feed.xml</link>
    <description />
    <lastBuildDate>Wed, 17 Apr 2019 03:54:07 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Blockchain 101 - Developing using Azure Services</title>
      <link>https://docs.microsoft.com/archive/blogs/the_azure_manifesto/blockchain-101-developing-using-azure-services</link>
      <pubDate>Mon, 15 Aug 2016 15:52:52 GMT</pubDate>
      <dc:creator><![CDATA[Sean Dastouri]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/the_azure_manifesto/?p=55</guid>
      <description><![CDATA[Blockchain has been recognized as a fundamental breakthrough in technology. Specifically, the...]]></description>
      <content:encoded><![CDATA[Blockchain has been recognized as a fundamental breakthrough in technology. Specifically, the Ethereum Blockchain provides limitless functionality in both public and private development. In November 2015, Microsoft and Consensys partnered to release Blockchain as a Service on Azure. One of the tools provided for development is <a href="https://github.com/blockapps">BlockApps</a> - an Ethereum environment used to quickstart authoring of Smart Contracts. But how does one actually start developing on the blockchain? For quick prototyping, a BlockApps Bloc webserver is useful. Once development has begun, you can replace the local server with Azure's <a href="https://azure.microsoft.com/en-us/solutions/blockchain/">BaaS</a> offerings.

This post will provide you with both the tools to get started and demonstrate a complete sample application. The sample project, BlockMobile, uses a private Ethereum Blockchain as a backend and Xamarin.Android for interaction on the frontend. Additionally, the project uses an AngularJS webapp and an Azure Mobile Service app to provide a complete demo environment.
<h3>What You Will Learn</h3>
<ul>
 	<li>Microsoft and Blockchain</li>
 	<li>Smart Contracts
<ul>
 	<li>What and Why?</li>
 	<li>How? Using Solidity</li>
</ul>
</li>
 	<li>Using BlockApps to interact with Blockchain</li>
 	<li>Setting Up a Frontend</li>
 	<li>Realworld Use Cases</li>
</ul>
<h3>Video Tutorial and Information</h3>
https://youtu.be/ZiZgH8l8f_g
<h3>BlockMobile</h3>
BlockMobile is provided as an open source Blockchain project that is shown in the video above. You can read more about it on Github.

The project will provide you with sample Smart Contracts, a Xamarin.Android app, and an AngularJS webapp. To run the project, follow the instructions provided.]]></content:encoded>
    </item>
    <item>
      <title>Java and DNS Caching</title>
      <link>https://docs.microsoft.com/archive/blogs/the_azure_manifesto/java-and-dns-caching</link>
      <pubDate>Tue, 20 Oct 2015 11:54:00 GMT</pubDate>
      <dc:creator><![CDATA[Sean Dastouri]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/the_azure_manifesto/2015/10/20/java-and-dns-caching/</guid>
      <description><![CDATA[I ran into some problems with a VM on Azure trying to resolve an outside URL. The problem was that...]]></description>
      <content:encoded><![CDATA[<p>I ran into some problems with a VM on Azure trying to resolve an outside URL. The problem was that even though the URL existed and was assigned, the Azure DNS server wouldn't resolve it and therefore my java code would return an Unknown Hostname exception.&nbsp;</p>
<p>I wrote some code to debug this and quickly realized that the problem wasn't really the Azure DNS and rather something within Java. The behavior is when a name doesn't get resolved &nbsp;for whatever reason the "negative" result gets cached by Java and therefore any subsequent queries for the name doesn't get queried. So I wrote a little Java code to explore this more.&nbsp;</p>
<p>The key thing is, prior to making the call for the nameserver we must first &nbsp;set the cache TTL value. There are two of these; 1. for the positive or successful queries and 2. for the negative or the failed queries. The values for each can be found at <a href="https://docs.oracle.com/javase/7/docs/technotes/guides/net/properties.html" target="_blank">here.</a>&nbsp;</p>
<p style="padding-left: 90px;"><span style="background-color: #ffcc00;"><em><strong>networkaddress.cache.ttl (default: -1)</strong></em></span><br /><span style="background-color: #ffcc00;"><em>Indicates the caching policy for successful name lookups from the name service. The value is specified as as integer to indicate the number of seconds to cache the successful lookup. A value of -1 indicates "cache forever".</em></span></p>
<p style="padding-left: 90px;"><span style="background-color: #ffcc00;"><em><strong>networkaddress.cache.negative.ttl (default: 10)</strong></em></span><br /><span style="background-color: #ffcc00;"><em>Indicates the caching policy for un-successful name lookups from the name service. The value is specified as as integer to indicate the number of seconds to cache the failure for un-successful lookups. A value of 0 indicates "never cache". A value of -1 indicates "cache forever".</em></span></p>
<p><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; java.security.Security.setProperty("networkaddress.cache.ttl", successfulCacheValue);</span></p>
<p><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; java.security.Security.setProperty("networkaddress.cache.negative.ttl", failedCachedValue);</span></p>
<div>Just in case you want to confirm the set value you can read it like this:&nbsp;</div>
<div>&nbsp;&nbsp; &nbsp;</div>
<div><span style="font-family: 'courier new', courier;">System.out.println(</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; "Positive cache: " + java.security.Security.getProperty("networkaddress.cache.ttl") + "\n" +</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; "Negative cache: " + java.security.Security.getProperty("networkaddress.cache.negative.ttl")</span></div>
<div><span style="font-family: 'courier new', courier;">);</span></div>
<div>Next attempt resolve the name. In my case the url was passed-in as a command line argument.</div>
<div><span style="font-family: 'courier new', courier;">try {</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; InetAddress inetAddress = InetAddress.getByName(args[1]);</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; displayData(args[1], inetAddress);</span></div>
<div><span style="font-family: 'courier new', courier;">} catch (UnknownHostException e) {</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Unknown hostname");</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; e.printStackTrace();</span></div>
<div><span style="font-family: 'courier new', courier;">}</span></div>
<div>&nbsp;</div>
<div><span style="font-family: 'courier new', courier;">public static void <span>displayData</span>(String hostName, InetAddress inetAddress) {</span></div>
<div><span style="font-family: 'courier new', courier;">&nbsp; &nbsp; &nbsp; &nbsp; System.out.println("Hostname: " + </span><span style="font-family: 'courier new', courier;">hostName</span><span style="font-family: 'courier new', courier;">);</span></div>
<div><span style="font-family: 'courier new', courier;"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>System.out.println("Canonical Host Name:" + inetAddress.getCanonicalHostName());</span></div>
<div><span style="font-family: 'courier new', courier;"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>System.out.println("Host Name:" + inetAddress.getHostName());</span></div>
<div><span style="font-family: 'courier new', courier;"><span>&nbsp; &nbsp; &nbsp; &nbsp;&nbsp;</span>System.out.println("Host Address:" + inetAddress.getHostAddress());</span></div>
<div><span style="font-family: 'courier new', courier;">}</span></div>
<div>&nbsp;</div>
<div>And that's it. Happy coding..&nbsp;</div>]]></content:encoded>
    </item>
    <item>
      <title>Gluster on Azure - Part 2</title>
      <link>https://docs.microsoft.com/archive/blogs/the_azure_manifesto/gluster-on-azure-part-2</link>
      <pubDate>Mon, 26 Jan 2015 11:41:00 GMT</pubDate>
      <dc:creator><![CDATA[Sean Dastouri]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/the_azure_manifesto/2015/01/26/gluster-on-azure-part-2/</guid>
      <description><![CDATA[This is part 2 of installing and configuring Gluster on Azure. For information on setting up the...]]></description>
      <content:encoded><![CDATA[<p>This is part 2 of installing and configuring Gluster on Azure. For information on setting up the VM&rsquo;s on Azure installing Gluster check out&nbsp;<a title="this article." href="https://dastouri.azurewebsites.net/?p=201%20" target="_blank">this article.</a></p>
<p>Once we&rsquo;ve installed Gluster we need to configure it. The first step is to ensure that all machines can see each other. In order to do this we need to get the Internal IP Address (internal to Azure) of each server. You can get this information from the Dashboard of each server VM or by running the&nbsp;<em>ifconfig</em>&nbsp;command on each VM.</p>
<p>1. From each server make sure you can Ping all other servers in the cluster to ensure that you have the correct IP addresses.</p>
<p>2. Once the IP addresses are confirmed&nbsp;edit the hosts file to map the IP&rsquo;s to a simple name. We do this on all machines in the cluster.</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">[root]# vi /etc/hosts</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>3. Add the IP addresses&nbsp;to the&nbsp;<em>hosts</em>&nbsp;file and save the file:</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">#VM IP &nbsp; &nbsp; &nbsp; &nbsp;#FQDN &nbsp; #NAME&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">xxx.xx.xxx.94 gluster1 gluster1&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">xxx.xx.xxx.19 gluster2 gluster2</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>4. Now that we have the Hosts file set we can start setting the connections. We do this using the <span style="font-family: 'courier new', courier;">&ldquo;gluster peer probe&rdquo;</span> command. We do this for all the servers that we want to connect including the local server itself.</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster peer probe gluster1&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">peer probe: success</span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster peer probe gluster2&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">peer probe: success</span></pre>
<p>&nbsp;</p>
<p>5. Now we can check the connections and ensure that the state is &ldquo;Connected&rdquo; on all machines.</p>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster peer status Hostname: xxx.xx.xxx.19 Uuid: 77d27dac-6544-47b9-8d50-29945008b24e State: Peer in Cluster (Connected)</span></pre>
<p>&nbsp;</p>
<p>6. Once all machines are connected we can create volume that essentially connects all drives together. &nbsp;Here&rsquo;s the parameter of how this command works.</p>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">gluster volume create <em>NEW-VOLNAME</em> [stripe <em>COUNT</em>] [replica <em>COUNT</em>] [transport &lt;tcp | rdma&gt;] <em>NEW-BRICK</em> ...</span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster volume create glusteredData stripe 2 transport tcp&nbsp; gluster1:/mnt/gluster gluster2:/mnt/gluster force</span></pre>
<p>&nbsp;</p>
<p>So the above creates a volume called &ldquo;glusteredData&rdquo;&nbsp;across 2 servers. The bricks (servers in the gluster) reference the mount points that we created.</p>
<p>&nbsp;</p>
<p>9. The last step in the process is to start the volume.</p>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster volume start&nbsp;glusteredData</span></pre>
<p>&nbsp;</p>
<p>10. Test the gluster, you can run:</p>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# gluster volume info&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Volume Name: glusteredData&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Type: Stripe&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Volume ID: eb0948e5-11b3-484c-8855-bdc167be8f85&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Status: Started&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Number of Bricks: 1 x 2 = 2&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Transport-type: tcp&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Bricks:&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Brick1: gluster1:/mnt/sharedDisk&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Brick2: gluster2:/mnt/sharedDisk</span></pre>
<h3>&nbsp;</h3>
<h3><span style="font-size: 1.17em;">&nbsp;[Connecting to the Gluster from a Client]</span></h3>
<p>Similiar to the Gluster-server setup we need to install the glusterfs on the client.</p>
<p>&lt;optional&gt; You can copy the server&rsquo;s Hosts file to the client. This way you can use the machine name to reference the Gluster point.</p>
<p>Next create a mount point in the /mnt/nas</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">mount -t glusterfs <em>HOSTNAME-OR-IPADDRESS:/VOLNAME</em> <em>MOUNTDIR</em></span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# mount -t glusterfs gluster1:/glusteredData /mnt/nas</span></pre>
<p>&nbsp;</p>
<p>and that&rsquo;s it. You can check the size of the drive by:</p>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">[root]# df -h&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">FilesystemSizeUsedAvailUse%</span><span style="font-family: 'courier new', courier;">Mounted on&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">/dev/sda1 31G1.2G29G4% /&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">none 4.1k 0 4.1k 0% /sys/fs/cgroup&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">udev 866M 4.1k 866M 1% /dev&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">tmpfs 176M 345k 176M 1% /run&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">/dev/sdb1 74G 55M 71G 1% /mnt&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;"><strong><em>gluster1:/glusteredData 1.5T&nbsp;1.2T&nbsp;220G &nbsp;85% /mnt/nas</em></strong></span></pre>]]></content:encoded>
    </item>
    <item>
      <title>Gluster on Azure - Part 1</title>
      <link>https://docs.microsoft.com/archive/blogs/the_azure_manifesto/gluster-on-azure-part-1</link>
      <pubDate>Mon, 26 Jan 2015 11:31:00 GMT</pubDate>
      <dc:creator><![CDATA[Sean Dastouri]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/the_azure_manifesto/2015/01/26/gluster-on-azure-part-1/</guid>
      <description><![CDATA[How do you&nbsp;store&nbsp;and&nbsp;share&nbsp;large files, and I mean really large files, on Linux...]]></description>
      <content:encoded><![CDATA[<p>How do you&nbsp;<em>store</em>&nbsp;and&nbsp;<em>share</em>&nbsp;large files, and I mean really large files, on Linux VMs on Azure? Maybe it&rsquo;s best if I describe it this way.. I have several large files with sizes from 500GB to&nbsp;1TB+ with a total size of 100TB+. I want to be able to share these files across multiple Linux VM&rsquo;s in&nbsp;Azure and access them using the standard I/O calls of Linux.</p>
<p>Azure has several storage solutions including Azure Blob and Azure File Share. The&nbsp;Azure Blob has maximum file size of 1TB if you store the files as page blobs or 200GB if you store the files as blocks with a total maximum size of several hundred terabytes. It&rsquo;s important to note that when you attach a disk to your VM&rsquo;s the disk is actually created on the Azure blob (keep this in mind because it will come in handy later in this article). &nbsp;But unfortunately once you attach a disk to a Linux VM, you can&rsquo;t attach the same disk to another VM.</p>
<p>Azure File Share is a little better as it does in fact lets you share files across multiple VMs using the standard SMB 2.1 protocol. Microsoft Azure virtual machines and cloud services can share file data across application components via mounted shares, and on-premises applications can access file data in a share via the File storage API.&nbsp;Since a File storage share is a standard SMB 2.1 file share, applications running in Azure can access data in the share via file I/O APIs. &nbsp;It&rsquo;s important to note that the maximum file size on the share is 1TB and the total maximum share size is 5TB.</p>
<p><em>So here&rsquo;s the problem again: How do you share a file that&rsquo;s 1TB+ across multiple VM&rsquo;s running Linux?</em></p>
<p><strong>The Gluster File System (GlusterFS)</strong>&nbsp;is an open source distributed file system that can scale out in building-block fashion to store multiple&nbsp;<span><em>petabytes</em></span>&nbsp;of data. Through out this article I will walk you through step by step instructions on your setup GlusterFS on Azure.</p>
<p>In this article I will setup 1 storage account and 3 Linux VM&rsquo;s running Ubuntu 14.04. Two of the Ubuntu VM&rsquo;s will host my Gluster file system and the last VM will act as the client which will access the files on the Gluster servers. Of course you&rsquo;re not limited to this configuration and can add or remove machines both as a Gluster server and as a Client.</p>
<div id="attachment_261" class="wp-caption aligncenter"><a href="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/Gluster-Topo.jpg" rel="lightbox"><img class="wp-image-261 size-medium" style="display: block; margin-left: auto; margin-right: auto;" src="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/Gluster-Topo-288x300.jpg" alt="A sample Gluster Topology in Azure" width="288" height="300" /></a>
<h3 class="wp-caption-text">A sample Gluster Topology in Azure</h3>
</div>
<p>1. The first step in the process is to create a storage account. From the Azure Management Portal, Click on<strong>New, Data Services, Storage, Quick Create</strong>. Type in the name of your storage account as well as selecting the location etc.</p>
<div id="attachment_271" class="wp-caption aligncenter"><a href="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/newStorage.jpg" rel="lightbox"><img class="wp-image-271 size-medium" style="display: block; margin-left: auto; margin-right: auto;" src="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/newStorage-300x137.jpg" alt="Create a New Storage account" width="300" height="137" /></a>
<h3 class="wp-caption-text">Create a New Storage account</h3>
</div>
<p>2. We need to create several Linux VM&rsquo;s (I chose Ubuntu 14.04) by selecting:&nbsp;<strong>New, Compute, Virtual Machines, From Gallery</strong>. Once the wizard starts, select&nbsp;<strong>Ubuntu&nbsp;</strong>from the left menu and then choose&nbsp;<strong>Ubuntu Server 14.04 LTS.&nbsp;</strong>Click on the&nbsp;<strong>Next</strong>&nbsp;arrow to go to next page.</p>
<p>3. Here you input the regular standard VM setup things including the VM name, username, password etc. Take a note of how you&rsquo;ll be connecting to the VM (via username and password vs. using certificate). This method of authentication will be used to connect to the machine using SSH. Once you&rsquo;re done with this configuration click on the&nbsp;<strong>Next</strong>&nbsp;arrow.</p>
<p>4. On this page the important piece is to select the storage account that we created in Step 1 and finish the wizard.</p>
<div id="attachment_291" class="wp-caption aligncenter"><a href="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/NewVMStorageConfig.jpg" rel="lightbox"><img class="size-medium wp-image-291" style="display: block; margin-left: auto; margin-right: auto;" src="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/NewVMStorageConfig-300x191.jpg" alt="Select Storage Account" width="300" height="191" /></a>
<p class="wp-caption-text">Select Storage Account in VM wizard</p>
</div>
<p>5. &nbsp;Repeat the above 4 steps for all your VMs.</p>
<p>6. Once finished go to the dashboard page for each server. On this page take a note of the server ports and configuration on the right hand side. On the bottom of the page select&nbsp;<strong>Attach Disk.&nbsp;</strong>On the screen input the disk size. I am chose 750GB for testing but you can attach any disk up to 1TB. The size restriction is because the disks are stored as blob files in the Azure blob storage which limits the file sizes to 1TB. Repeat this step for all your other servers.</p>
<div id="attachment_451" class="wp-caption aligncenter"><a href="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/VM-Info-and-Disk.jpg" rel="lightbox"><img class="size-medium wp-image-451" style="display: block; margin-left: auto; margin-right: auto;" src="https://dastouri.azurewebsites.net/wp-content/uploads/2015/01/VM-Info-and-Disk-300x282.jpg" alt="VM Info and Disk" width="300" height="282" /></a>
<p class="wp-caption-text">VM Info and Disk</p>
</div>
<p>7. I use&nbsp;<em><a title="Putty" href="https://www.chiark.greenend.org.uk/~sgtatham/putty/download.html" target="_blank">Putty</a>&nbsp;</em>to connect to the Linux VM&rsquo;s and for simplicity I inputted all the connection info (found on the right-hand side of the Dashboard page of each VM) into Putty.&nbsp;Connect and login to your first VM server.</p>
<h3>[Setting up&nbsp;the newly attached disk]</h3>
<p>8.&nbsp;In order to initialize&nbsp;and mount the new hard drive, you must find the drive name. If you go to the Azure site&nbsp;<a title="here" href="https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-how-to-attach-disk/#initializeinlinux" target="_blank">here</a>, you will see that it says to run</p>
<p>&nbsp;</p>
<pre><span class="com" style="font-family: 'courier new', courier;"># sudo grep SCSI /var/log/messages</span></pre>
<pre><span class="com" style="font-family: 'courier new', courier;"><br /></span></pre>
<p>or if you&rsquo;re running Ubuntu run:</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;"># sudo grep SCSI /var/log/syslog</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>Unfortunately neither of these worked for me. But finding the newly added drive is fairly easy. &nbsp;The drive that you attached is normally the last drive in the&nbsp;<em>/dev</em>&nbsp;directory that starts with&nbsp;<em>&ldquo;sd&rdquo;</em>&nbsp;followed by a letter (not a letter and a number but just a letter). For me, it was&nbsp;<em>sdc</em>. So in order&nbsp;to initialize the drive we need to run the following:</p>
<blockquote><address>NOTE: You have to run the following commands as a root or a super user. (run&nbsp;<span style="font-family: 'courier new', courier;"><em>sudo su&nbsp;</em></span>or you can type <span style="font-family: 'courier new', courier;">sudo</span> to the beginning of all commands).</address><address>&nbsp;</address></blockquote>
<table style="width: 100%;" border="1" cellpadding="4">
<tbody>
<tr>
<td>
<pre><span style="font-family: 'courier new', courier;">[root]# <strong>fdisk /dev/sdb</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Command (m for help): <strong>m</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">(Enter the letter "m" to get list of commands)&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Command action&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">a toggle a bootable flag&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">b edit bsd disklabel&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">c toggle the dos compatibility flag&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">d delete a partition&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">l list known partition types&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">m print this menu&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">n add a new partition&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">o create a new empty DOS partition table&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">p print the partition table&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">q quit without saving changes&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">s create a new empty Sun disklabel&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">t change a partition's system id&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">u change display/entry units&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">v verify the partition table&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">w write table to disk and exit&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">x extra functionality (experts only)&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">Command (m for help): <strong>n</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Command action e extended&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">p primary partition (1-4) <strong>p</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Partition number (1-4): <strong>1</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">First cylinder (1-9729, default 1):&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Using default value 1 Last cylinder, +cylinders or +size{K,M,G} (1-9729, default 9729):&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">Using default value 9729&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<pre><span style="font-family: 'courier new', courier;">Command (m for help): <strong>w</strong>&nbsp;</span></pre>
<pre><span style="font-family: 'courier new', courier;">(Write and save partition table)</span></pre>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>
<p>9. Next we need to format the disk.</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">[root]# <strong>mkfs.ext4 -L dataDisk /dev/sdc1</strong></span></pre>
<pre><span style="font-family: 'courier new', courier;"><strong><br /></strong></span></pre>
<p>10. We need to mount our formatted drive.</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">[root]# mount /dev/sdc1 /mnt/sharedDisk</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>And that&rsquo;s it for the disks. Again make sure you do the above steps on all your servers.</p>
<p>&nbsp;</p>
<h3>[Installing GlusterFS]</h3>
<p>11. Before installing Gluster we need to setup its repository. For the latest Gluster version and package information check out&nbsp;<a title="this site." href="https://download.gluster.org/pub/gluster/glusterfs/LATEST/" target="_blank">this site.</a>&nbsp;Since I am using Ubuntu I can use the Ubuntu package manager. The first step is to add the Gluster PPA. This way I don&rsquo;t need to worry about manually downloading and building the source code. This also makes updating Gluster a lot easier.</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">add-apt-repository ppa:semiosis/ubuntu-glusterfs-3.5 apt-get update</span>
</pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>Finally, install the packages:</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">apt-get install glusterfs-server</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>To ensure that Gluster has been installed properly run the following:</p>
<p>&nbsp;</p>
<pre><span style="font-family: 'courier new', courier;">glusterfs --version</span></pre>
<pre><span style="font-family: 'courier new', courier;"><br /></span></pre>
<p>Repeat the above steps on all your servers that will be part of the Gluster cluster.</p>]]></content:encoded>
    </item>
  </channel>
</rss>