<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Brain Stormes UniversityBrain Stormes University</title>
	<atom:link href="http://brainstormesuniversity.com/?feed=rss2" rel="self" type="application/rss+xml" />
	<link>http://brainstormesuniversity.com</link>
	<description>Into the mind of an I.T. Engineer...</description>
	<lastBuildDate>Thu, 04 Apr 2013 00:55:01 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.5.1</generator>
		<item>
		<title>Techbook - Come and Experience the Technical Reality</title>
		<link>http://brainstormesuniversity.com/?p=694&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=techbook-come-and-experience-the-technical-reality</link>
		<comments>http://brainstormesuniversity.com/?p=694#comments</comments>
		<pubDate>Thu, 04 Apr 2013 00:52:26 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Systems Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=694</guid>
		<description><![CDATA[Techbook - Come and Experience the Technical Reality. - Here is a great blog on technology review from my peer and friend Mahesh Pulipati. I'll have an RSS aggregation from his organization setup soon, and am excited to include him under the IT blogging realm! Share on Facebook]]></description>
				<content:encoded><![CDATA[<p><a href="http://techbook.co.in/">Techbook - Come and Experience the Technical Reality</a>. - Here is a great blog on technology review from my peer and friend Mahesh Pulipati. I'll have an RSS aggregation from his organization setup soon, and am excited to include him under the IT blogging realm!</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D694&amp;t=Techbook%20-%20Come%20and%20Experience%20the%20Technical%20Reality" id="facebook_share_link_694">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_694') || document.getElementById('facebook_share_icon_694') || document.getElementById('facebook_share_both_694') || document.getElementById('facebook_share_button_694');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_694') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=694</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Automation of Visio - Experiences mapping a NetApp Filer using Visio 2010 and PowerShell</title>
		<link>http://brainstormesuniversity.com/?p=642&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=automation-of-visio-experiences-mapping-a-netapp-filer-using-visio-2010-and-powershell</link>
		<comments>http://brainstormesuniversity.com/?p=642#comments</comments>
		<pubDate>Wed, 20 Mar 2013 02:49:27 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Systems Engineering]]></category>
		<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=642</guid>
		<description><![CDATA[Often times, there are complicated environments that have a large number of storage objects. Mapping them can be difficult, but often necessary to understand how data is being moved. Like many of my colleagues, documentation can be a chore and is prone to misinterpretations, as well as time consuming. Being a Linux engineer my first]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/wp-content/uploads/2013/02/stick_figure_drawing_computer_client_diagram_1600_clr_5129.png"><img class="alignleft size-medium wp-image-562" alt="stick_figure_drawing_computer_client_diagram_1600_clr_5129" src="http://brainstormesuniversity.com/wp-content/uploads/2013/02/stick_figure_drawing_computer_client_diagram_1600_clr_5129-300x168.png" width="300" height="168" /></a></p>
<p>Often times, there are complicated environments that have a large number of storage objects. Mapping them can be difficult, but often necessary to understand how data is being moved. Like many of my colleagues, documentation can be a chore and is prone to misinterpretations, as well as time consuming. Being a Linux engineer my first thought is "How do I automate this so I can do more interesting things?" After dragging my feet and going in kicking and screaming, I decided to dive into PowerShell. The following is an example of a dynamically created Visio 2010 diagram of the physical storage configuration of my NetApp Filer simulator.</p>
<p><span style="text-decoration: underline;"><strong>Tools Used</strong></span></p>
<ul>
<li>NetApp PowerShell Toolkit</li>
<li>NetApp Visio Stencils (Extracted to "My Shapes" under Libraries-&gt;Documents)</li>
<li>Visio 2010</li>
<li>At minimum, RemoteSigned permissions (Set-ExecutionPolicy RemoteSigned)</li>
<li>At least Read-Only Access to a NetApp Filer</li>
</ul>
<p><img class="alignleft size-medium wp-image-651" alt="example1" src="http://brainstormesuniversity.com/wp-content/uploads/2013/03/example1-244x300.gif" width="244" height="300" /></p>
<p><span style="text-decoration: underline;"><strong>How this diagram is created</strong></span></p>
<ol>
<li> Script logs into the Filer</li>
<li>Data is collected</li>
<li>Script opens Visio and Stencils</li>
<li>Objects are placed on the workspace in logical order</li>
<li>Next version will have data from each point in a table (Latency, I/O, Growth Rate, Overwrite Rate, Days to Full) and exported to Sharepoint team portal</li>
<li>Data points will be active and retrievable to all whom has Sharepoint team portal access</li>
<li>Business Workflows will monitor the data points and take action when conditions are met (Create request for new storage, warn current use for remediation, etc...)</li>
</ol>
<p>It won't turn any heads, but that is just a formatting process that is simple to design. Nothing with this process is particularly amazing (which is why I didn't include the code), but using the collection of tools like these can come in handy when trying to troubleshoot a complex system. Seeing the visual data paths and their associated  metrics helps put a scenario into perspective and helps move teams troubleshooting exercises to a solution based orientation rather than a problem based orientation (think of doing a maze from start-to-finish or from finish-to-start...which one is easier??). It also has the added benefit of creating nice diagrams if you are "artistically" challenged like me.</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D642&amp;t=Automation%20of%20Visio%20-%20Experiences%20mapping%20a%20NetApp%20Filer%20using%20Visio%202010%20and%20PowerShell" id="facebook_share_link_642">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_642') || document.getElementById('facebook_share_icon_642') || document.getElementById('facebook_share_both_642') || document.getElementById('facebook_share_button_642');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_642') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=642</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>IT is not a guessing game...</title>
		<link>http://brainstormesuniversity.com/?p=587&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=it-is-not-a-guessing-game</link>
		<comments>http://brainstormesuniversity.com/?p=587#comments</comments>
		<pubDate>Sun, 17 Feb 2013 21:24:31 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Systems Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=587</guid>
		<description><![CDATA[&#160; I am often asked the question "But Sonny, how do you know?". Well, this is my secret sauce: I don't guess. I have my own "Matrix" and I simulate the entire global environment of my "sphere of influence" and use that as a test bed for implementations. Similar to a scale model train set,]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/wp-content/uploads/2013/02/crystal_ball_dollar_300_wht_5903.gif"><img src="http://brainstormesuniversity.com/wp-content/uploads/2013/02/crystal_ball_dollar_300_wht_5903.gif" alt="crystal_ball_dollar_300_wht_5903" width="197" height="300" class="alignleft size-full wp-image-400" /></a><br />
&nbsp;<br />
I am often asked the question "But Sonny, how do you know?". Well, this is my secret sauce: I don't guess. I have my own "Matrix" and I simulate the entire global environment of my "sphere of influence" and use that as a test bed for implementations. Similar to a scale model train set, I add every possible switch, router, firewall, storage, server, any device that exists with any software that runs in the real world: all running on my personal lab. The below screenshot is as Lab I am working on for graduate school, and for non-disclosure reasons cannot publish my "Matrix" world, but my homework will suffice for this post. Below you can see that this is a simple 2 core switch environment that is running a proprietary "Imaging Server" for a hospital in L.A., and the interconnect between the switches is set to 100 Mbps (to simulate the poor application performance).<br />
&nbsp;<br />
In this scenario I have set up a typical doctor accessing data from the imaging server, and email and web, with work groups performing normal daily operations from each node group, and I can change any aspect of the application and collect data to troubleshoot the situation. Agents running on the Linux and Windows application and database virtual servers feed input into IT Guru to report response time. Hooks into NetApp Storage access the VM array and gather statistics based on current conditions. All networking devices are reporting on their statistics and contributing to the picture as a whole. Hooks into MySQL are analyzing data queries and performing correlations back to the feeds from the simulated Filer array or EMC frame. All forms of code (JAVA,Python,PHP,ColdFusion, Ruby) are being analyzed and reported on their performance on an object-by-object basis. All working in perfect concert to help find, troubleshoot, and eliminate any suspected bottlenecks that might exist within an environment.<a href="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab.png"><img class="alignright size-medium wp-image-279" alt="IT-Lab" src="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab-300x136.png" width="300" height="136" /></a><br />
&nbsp;<br />
From this vantage point, I can see through the entire OSI stack and report on potential performance bottlenecks:<br />
&nbsp;</p>
<p>1) Layers 1-3 provide information about how data flows through the physical, data link, and network layers based on existing configurations</p>
<p>2) Layers 4-7 are accessed through a variety of network taps, agents on the source and destination, and a correlation engine to connect the data into information. Objects are analyzed for code performance, SQL query times are correlated back to hardware and OS performance metrics</p>
<p>3) Information collected is analyzed to create knowledge based on existing known workloads to establish a baseline</p>
<p>4) Conditions are set for potential business scenario planning with decision makers and executives based on known initiative/work loads</p>
<p>5) Scenarios are built and tested against proposed design</p>
<p>&nbsp;<br />
In the scenario here, the link between the first floor and second floor core switches is too small, causing network utilization to spike to 100%. This means that the Radiology application will have network queuing as a result of insufficient resources. Once the simulation completes, a new scenario can be cloned and created to remote the bottleneck and show how the application performs and what happens to queuing as a result.<br />
&nbsp;</p>
<p><a href="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab-10g-change.png"><img class="alignleft size-medium wp-image-596" alt="IT-Lab-10g-change" src="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab-10g-change-150x300.png" width="150" height="300" /></a><br />
The result of changing the interconnect can be seen to the left: point-to-point queuing delays are statistically zero, and point-to-point utilization on this same workload is less than 1%.
</p>
<p>&nbsp;</p>
<p><a href="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab-custom-app-response-time.png"><img class="alignright size-medium wp-image-599" alt="IT-Lab-custom-app-response-time" src="http://brainstormesuniversity.com/wp-content/uploads/2013/02/IT-Lab-custom-app-response-time-300x279.png" width="300" height="279" /></a><br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;<br />
From the graph on the right, you can see that the application response time dropped from a previous peak of 60 seconds over the course of an hour, down on the 10Gb change scenario to a peak of 12.5 seconds.</p>
<p>You tell me....where is the guess work?</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D587&amp;t=IT%20is%20not%20a%20guessing%20game..." id="facebook_share_link_587">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_587') || document.getElementById('facebook_share_icon_587') || document.getElementById('facebook_share_both_587') || document.getElementById('facebook_share_button_587');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_587') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=587</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Infiniband on RedHat/CentOS</title>
		<link>http://brainstormesuniversity.com/?p=269&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=infiniband-on-redhatcentos</link>
		<comments>http://brainstormesuniversity.com/?p=269#comments</comments>
		<pubDate>Fri, 02 Nov 2012 02:07:52 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=269</guid>
		<description><![CDATA[On day's I'm sick (like today) I get to think a lot and really put my thoughts to pen. One project I have worked on for a long time is Infiniband in RedHat/CentOS. Using Infiniband is great, but it can also swamp you in ways you never expected. The different types of Infiniband are: 1)]]></description>
				<content:encoded><![CDATA[<p>On day's I'm sick (like today) I get to think a lot and really put my thoughts to pen. One project I have worked on for a long time is Infiniband in RedHat/CentOS. Using Infiniband is great, but it can also swamp you in ways you never expected. The different types of Infiniband are:</p>
<p>1) IPoIB. In this case IP stack is put above IB. You don’t need to rewrite your applications while you can utilize high throughput. On the other hand you will kill IB low latencies and won’t be able to utilize whole IB throughput capabilities.</p>
<p>2) Sockets Direct Protocol (SDP) which is designed to utilize IB RDMA capabilities  and bypass TCP/IP stack. SDP can be used transparently w/o recompiling your application. It’s not that fast as native IB API but is better than IPoIB.</p>
<p>3) IB Verbs; the lowest API, User Direct Access Programming Library (uDAPL) which is based on IB Verbs, Message Passing Interface (MPI) or Unified Parallel C. Different versions of MPI and UPC can be based on either IB Verbs or uDAPL. I personally work with MPI and UPC so I will describe their installation over InfiniBand. </p>
<p>I have implemented all 3 types of technology to great success. The layer with the fastest speed and the lowest latencies is uDAPL, which I must say, takes some getting used to. It requires an abstraction layer between the IB interface, and the rest of the program that needs access to storage or process threads on the fabric will use that abstraction layer to send/receive data to targets available to the requesting server. One implementation was using iSCSI on IPoIB. The upside is that storage on an IP stack is very fast, but latency is the same as on Ethernet because of the protocol stack. I would equate its speed to that of 10g over FC; high speeds with a hanging nail of increased latency (If you are not proficient in OO programming, threading is almost impossible to do structurally in the main languages that are the most expansive - Java and Python).    </p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D269&amp;t=Infiniband%20on%20RedHat%2FCentOS" id="facebook_share_link_269">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_269') || document.getElementById('facebook_share_icon_269') || document.getElementById('facebook_share_both_269') || document.getElementById('facebook_share_button_269');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_269') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=269</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Hybrid Storage Disks in a LVM Pool - How Solid State and SATA disks can increase performance.</title>
		<link>http://brainstormesuniversity.com/?p=118&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=hybrid-storage-disks-in-a-lvm-pool-how-solid-state-and-sata-disks-can-increase-performance</link>
		<comments>http://brainstormesuniversity.com/?p=118#comments</comments>
		<pubDate>Sat, 13 Oct 2012 07:52:41 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Systems Engineering]]></category>
		<category><![CDATA[Storage Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=118</guid>
		<description><![CDATA[Do reads and writes plague your applications? Do you wish you could get more "bang for the buck"? I know many companies that complain about I/O contention while balancing the tedious task of having redundancy built into their infrastructures in case of a "rainy day" failure (that is almost sure to occur). Many tier I]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=247" rel="attachment wp-att-247"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/RAID-0+1-hybrid-PoolsTP-300x225.png" alt="" title="RAID 0+1 hybrid PoolsTP" width="300" height="225" class="alignleft size-medium wp-image-247" /></a></p>
<p>Do reads and writes plague your applications? Do you wish you could get more "bang for the buck"? I know many companies that complain about I/O contention while balancing the tedious task of having redundancy built into their infrastructures in case of a "rainy day" failure (that is almost sure to occur). Many tier I storage vendors are moving to hybrid disk pools to add faster access, as well as mitigate the latency of RAID 1. However, many small and medium size businesses cannot afford the big 3, but anyone can take advantage of hybrid pools for a minimal price. </p>
<p>The first question any I.T. manager/architect/guy-who-is-responsible-for-storage should ask is "Am I using the tools that are available to me that support enterprise features?" Without understanding the intricate details of how many open source tools work, we will dive a little deep into the one feature EVERYONE should have in their arsenal: Logical Volume Manager</p>
<p>With budgets being squeezed from the down economy, everyone is scrambling to demonstrate their return on investment for any purchases needed to achieve the kind of performance that screams "Bonus in my review". However, LVM is readily available with the equipment you have lying around; you just need to learn to use it. What is great about LVM is its ability to abstract the disk layer into something far more human compatible than managing the disks locally. Now, you still have to understand the physical disk layer as LVM is built on top of disks, but the only steps required is partitioning. So, if you understand how fdisk works at a basic level, you are good to go! Yes, you can build your volumes directly on the disk, but partitioning allows you to divide your pools up for different work loads.</p>
<p>Now I'm no C programmer, but the above makes me want to learn C. I can envision the following workload written into LVM:</p>
<p>1) All disk timings are calculated on initialization<br />
2) All disks are prioritized by the level at which they perform: lower the latency, higher the priority<br />
3) In a hybrid RAID design like mine, I could feasibly write the above algorithm into LVM for such a server design.   </p>
<p>It would be a fairly easy process/feature to add to LVM, and create a directly attached storage, or storage server for the mid-range, to enterprise, </p>
<p>(I so want to believe this is already a part of LVM, but don't know for sure yet as I am researching it.)<br />
<Visio design to follow with flow chart of process><br />
***This is a WIP****</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D118&amp;t=Hybrid%20Storage%20Disks%20in%20a%20LVM%20Pool%20-%20How%20Solid%20State%20and%20SATA%20disks%20can%20increase%20performance." id="facebook_share_link_118">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_118') || document.getElementById('facebook_share_icon_118') || document.getElementById('facebook_share_both_118') || document.getElementById('facebook_share_button_118');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_118') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=118</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Adding vCPU/Memory in a VMware Guest hot -- without rebooting</title>
		<link>http://brainstormesuniversity.com/?p=109&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=adding-vcpumemory-in-a-vmware-guest-hot-without-rebooting</link>
		<comments>http://brainstormesuniversity.com/?p=109#comments</comments>
		<pubDate>Tue, 25 Sep 2012 22:13:27 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Systems Engineering]]></category>
		<category><![CDATA[Virtualization]]></category>
		<category><![CDATA[VMware]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=109</guid>
		<description><![CDATA[This one makes me scratch my head; why wouldn't every VM practitioner NOT know how to add memory and vCPU's without rebooting? I can't tell you how many times a server needs more resources, and teams take on the herculean task of planning coordination to shut an application down, just to add some memory or core]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=129" rel="attachment wp-att-129"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/creating_a_better_process_anim_150_clr_9302.gif" alt="" title="creating_a_better_process_anim_150_clr_9302" width="150" height="89" class="alignleft size-full wp-image-129" /></a>This one makes me scratch my head; why wouldn't every VM practitioner NOT know how to add memory and vCPU's without rebooting? I can't tell you how many times a server needs more resources, and teams take on the herculean task of planning coordination to shut an application down, just to add some memory or core power.</p>
<p><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/07-enable-hot-plug-hot-add-450x400-300x266.png" alt="VMWare Guest Settings for vCPU/Mem hot add" /></p>
<pre>
1. Goto the options tab under your VM guests' settings
2. Select "Memory/CPU Hotplug" Setting
3. Enable memory hot add by selecting the enable memory hot add radial button
4. Enable CPU hot add by selecting the enable cpu hot add radial button
5. Select the OK button
</pre>
<p>The only time you will need to reboot to add either CPU or Memory will be this last time. Reboot the guest, add either memory or CPU, and then run the appropriate script for your desired function below:</p>
<pre>
#!/bin/bash
#This script will hot add vCPU's inside VMware guest systems
#Sonny Stormes - 2009
for CPU in $(ls /sys/devices/system/cpu/ | grep cpu | grep -v idle)

do
    CPU_DIR="/sys/devices/system/cpu/${CPU}"
    echo "Found cpu: \"${CPU_DIR}\" ..."
    CPU_STATE_FILE="${CPU_DIR}/online"
    if [ -f "${CPU_STATE_FILE}" ]; then
        STATE=$(cat "${CPU_STATE_FILE}" | grep 1)
        if [ "${STATE}" == "1" ]; then
          echo -e "\t${CPU} already online"
    else
      echo -e "\t${CPU} is new cpu, onlining cpu ..."
      echo 1 &gt; "${CPU_STATE_FILE}"
  fi
    else
      echo -e "\t${CPU} already configured prior to hot-add"
  fi
done
-------------------------------------------------------------------------------------------------
#!/bin/bash
#This script will hot add memory into a VMware guest
#Sonny Stormes - 2009
if [ "$UID" -ne "0" ]
  then
  echo -e "You must be root to run this script.\nYou can 'sudo' to get root access"</code>
  exit 1
fi

for MEMORY in $(ls /sys/devices/system/memory/ | grep memory)
do
    SPARSEMEM_DIR="/sys/devices/system/memory/${MEMORY}"
    echo "Found sparsemem: \"${SPARSEMEM_DIR}\" ..."
    SPARSEMEM_STATE_FILE="${SPARSEMEM_DIR}/state"
    STATE=$(cat "${SPARSEMEM_STATE_FILE}" | grep -i online)
    if [ "${STATE}" == "online" ]; then
      echo -e "\t${MEMORY} already online"
    else
      echo -e "\t${MEMORY} is new memory, onlining memory ..."
      echo online &gt; "${SPARSEMEM_STATE_FILE}"
    fi
done
</pre>
<p>These functions are only good for adding either component. To remove is a more complicated process, but if enough interest is shown from the above, I'll complete my single script for both attaching and detaching CPU or memory. </p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D109&amp;t=Adding%20vCPU%2FMemory%20in%20a%20VMware%20Guest%20hot%20--%20without%20rebooting" id="facebook_share_link_109">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_109') || document.getElementById('facebook_share_icon_109') || document.getElementById('facebook_share_both_109') || document.getElementById('facebook_share_button_109');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_109') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=109</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Using both FC and IP network connectivity in Red Hat dm-multipath (Part 1)</title>
		<link>http://brainstormesuniversity.com/?p=100&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=using-both-fc-and-ip-network-connectivity-in-red-hat-dm-multipath-part-1</link>
		<comments>http://brainstormesuniversity.com/?p=100#comments</comments>
		<pubDate>Mon, 14 May 2012 03:15:32 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Systems Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=100</guid>
		<description><![CDATA[Much of the beauty of dm-multipath in Red Hat is the chance to combine the redundancy and stability of traditional IP networking with the performance of fibre channel connectivity, culminating in a network connection that can withstand the failure of so many points it almost makes the head spin. This can be accomplished by the]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=224" rel="attachment wp-att-224"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/stick_figure_working_on_database_400_wht_8845-268x300.png" alt="" title="stick_figure_working_on_database_400_wht_8845" width="268" height="300" class="alignleft size-medium wp-image-224" /></a>Much of the beauty of dm-multipath in Red Hat is the chance to combine the redundancy and stability of traditional IP networking with the performance of fibre channel connectivity, culminating in a network connection that can withstand the failure of so many points it almost makes the head spin. This can be accomplished by the use of iSCSI and a TOE network interface, a dual port (minimum) FC-HBA, a properly configured dm-multipath, and a storage system that can export block storage across both mediums (IP network and FC..which is most systems, unless you are living in the year 2000).</p>
<p>Here is the basic premise:</p>
<p>1) Fibre Channel connections are your primary block transport. Set the initiator group on the storage unit as normal, export the blocks, and connect LUN's as normal.</p>
<p>2) Set up an iSCSI initiator to the storage unit and export the same LUN out the target of your storage system. Initiate the connection on both network ports out of the iSCSI TOE card.</p>
<p>3) Set up DM-Multipath. Out of the box, DM-Multipath will create a pseudo-device based on the SCSI_ID of each attached LUN and create a round-robin connection to each LUN (in count, you should have 6 total devices - 2 FC primary paths, 2 FC secondary paths, and 2 iSCSI IP network paths).</p>
<p>4) Set the 4 FC paths (primary and secondary) up accordingly with policies that let's the primary path be used during service time, the secondary path be a potential failover path in the event that either of the 2 primary paths are down, and a final policy that sets the IP network connections to the iSCSI target as dual tertiary paths that will be the final path of last resort.</p>
<p>Hang in there with me! I know that this sounds complicated, but over the next few posts, I'll be explaining each step in detail in a way that is easy for even a beginner to understand. I know that much of this sounds like a drunk man trying to explain why he is wearing a pink tutu in a park at 11am, but trust me when I say it is not that difficult.</p>
<p>At the end of this series, you can build a storage network that can withstand a charging rhino running from Godzilla (ok, maybe not a rhino, but certainly a koala bear wreaking havoc munching on FC cables or networks...if you have koala bears in your data center..after all..who doesn't?).</p>
<p>Until then, happy file and block exporting!</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D100&amp;t=Using%20both%20FC%20and%20IP%20network%20connectivity%20in%20Red%20Hat%20dm-multipath%20%28Part%201%29%20" id="facebook_share_link_100">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_100') || document.getElementById('facebook_share_icon_100') || document.getElementById('facebook_share_both_100') || document.getElementById('facebook_share_button_100');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_100') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=100</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Avoid udev rules</title>
		<link>http://brainstormesuniversity.com/?p=88&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=avoid-udev-rules</link>
		<comments>http://brainstormesuniversity.com/?p=88#comments</comments>
		<pubDate>Fri, 07 Oct 2011 20:49:01 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Systems Engineering]]></category>
		<category><![CDATA[Linux Engineering]]></category>
		<category><![CDATA[Storage Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=88</guid>
		<description><![CDATA[Are you like me and hate setting permissions with outside scripts on dm-multipath devices? Best way to avoid this mess (and udev rules to boot) is to include the following on your multipath.conf device: &#160; &#160; &#160; multipath { wwid 360a98000486e58526c34515944703277 alias devicename mode 660 uid 501 gid 502 } What's great about this is]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=199" rel="attachment wp-att-199"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/short_cut_400_wht_7608-300x157.png" alt="" title="short_cut_400_wht_7608" width="300" height="157" class="alignright size-medium wp-image-199" /></a>Are you like me and hate setting permissions with outside scripts on dm-multipath devices? Best way to avoid this mess (and udev rules to boot) is to include the following on your multipath.conf device:<br />
&nbsp;<br />
&nbsp;<br />
&nbsp;</p>
<pre>
multipath {
    wwid 360a98000486e58526c34515944703277
    alias devicename
    mode 660
    uid 501
    gid 502
}
</pre>
<p>What's great about this is when DM-multipath instantiates the new mapper devices, they will all be set with the permissions, user, and group assignments that you want. No muss, no fuss!</p>
<p>Enjoy!</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D88&amp;t=Avoid%20udev%20rules" id="facebook_share_link_88">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_88') || document.getElementById('facebook_share_icon_88') || document.getElementById('facebook_share_both_88') || document.getElementById('facebook_share_button_88');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_88') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=88</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Deployement of ALUA with Red Hat and NetApp</title>
		<link>http://brainstormesuniversity.com/?p=44&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=deployement-of-alua-with-red-hat-and-netapp</link>
		<comments>http://brainstormesuniversity.com/?p=44#comments</comments>
		<pubDate>Mon, 12 Sep 2011 02:05:21 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[Linux Engineering]]></category>
		<category><![CDATA[Storage Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=44</guid>
		<description><![CDATA[I love the idea of having failover on my primary database. So if you haven't done so, I would highly recommend it. With Netapp and Red Hat, here's the skinny: 1) Set up your /etc/multipath.conf to use mpath_prio_alua rather then the default mpath_prio_ontap. I have not verified if mpath_prio_ontap reads the SCSI-3 ALUA commands, but]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=197" rel="attachment wp-att-197"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/network_database_connection_1600_wht_6956-300x187.png" alt="" title="network_database_connection_1600_wht_6956" width="300" height="187" class="alignright size-medium wp-image-197" /></a>I love the idea of having failover on my primary database. So if you haven't done so, I would highly recommend it. With Netapp and Red Hat, here's the skinny:</p>
<p>1) Set up your /etc/multipath.conf to use mpath_prio_alua rather then the default mpath_prio_ontap. I have not verified if mpath_prio_ontap reads the SCSI-3 ALUA commands, but I know the latter does, so it was easier to use it than the former.</p>
<p>2) Set the ALUA on the igroup with:<br />
igroup set <igroup_name> alua on</p>
<p>3) Reboot your hosts</p>
<p>4) Enjoy ALUA goodness!</p>
<p>With this configuration, when cf failover is initiated, your Red Hat server will know when the primary path is dead and use the secondary path without intervention. It really is a beautiful thing, and I recommend it for any storage heads out there. </p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D44&amp;t=Deployement%20of%20ALUA%20with%20Red%20Hat%20and%20NetApp" id="facebook_share_link_44">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_44') || document.getElementById('facebook_share_icon_44') || document.getElementById('facebook_share_both_44') || document.getElementById('facebook_share_button_44');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_44') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=44</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Removing active devices from Linux</title>
		<link>http://brainstormesuniversity.com/?p=40&#038;utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=removing-active-devices-from-linux</link>
		<comments>http://brainstormesuniversity.com/?p=40#comments</comments>
		<pubDate>Wed, 22 Jun 2011 00:20:16 +0000</pubDate>
		<dc:creator>Sonny Stormes</dc:creator>
				<category><![CDATA[Storage]]></category>
		<category><![CDATA[Systems Engineering]]></category>

		<guid isPermaLink="false">http://brainstormesuniversity.com/?p=40</guid>
		<description><![CDATA[I hate it when I have a disk that needs to be removed while the system is still active. If you are sick of having to reboot to remove devices, look no further! Brainstormes U to the rescue! &#160; From the CLI (where all Linux and Unix administration REALLY happens) execute the following: &#160; echo]]></description>
				<content:encoded><![CDATA[<p><a href="http://brainstormesuniversity.com/?attachment_id=211" rel="attachment wp-att-211"><img src="http://brainstormesuniversity.com/wp-content/uploads/2012/09/stick_figure_drawing_computer_client_diagram_1600_wht_5129-300x168.png" alt="" title="stick_figure_drawing_computer_client_diagram_1600_wht_5129" width="300" height="168" class="alignleft size-medium wp-image-211" /></a>I hate it when I have a disk that needs to be removed while the system is still active. If you are sick of having to reboot to remove devices, look no further! Brainstormes U to the rescue!</p>
<p>&nbsp;</p>
<p>From the CLI (where all Linux and Unix administration REALLY happens) execute the following:</p>
<p>&nbsp;</p>
<p>echo 1 &gt; /block/sys/&lt;devicename&gt;/device/delete</p>
<p>&nbsp;</p>
<p>So if you had a disk /dev/sdb that was either a LUN you want to delete, or an attached device (SATA,SAS,IDE,yo mamma) by issuing the command</p>
<p>&nbsp;</p>
<p>echo 1 &gt; /block/sys/sdb/device/delete</p>
<p>&nbsp;</p>
<p>You will have successfully removed it from the kernel and can unplug, deattach, throw out on its butt, the device in question, all without a reboot.</p>
<p>&nbsp;</p>
<p>Ok, I'll take it to the next step and reverse the process:</p>
<p>To add a device on any bus (SATA,SAS,FC-HBA,iSCSI) the reverse is true...with some modifications:</p>
<p>&nbsp;</p>
<p><em>echo</em> "- - -" &gt;/sys/class/scsi_host/host$NUMBER/scan</p>
<p>&nbsp;</p>
<p>Where host$NUMBER is the number of the bus you want to scan. (The "- - -" means to look at every channel, every target, and every lun on that host). After you finish, check dmesg for your new device and BAM! You've successfully hotplugged a new LUN,SATA disk, SAS disk, USB disk</p>
<p>&nbsp;</p>
<p>Peace!</p>
<a href="http://www.facebook.com/share.php?u=http%3A%2F%2Fbrainstormesuniversity.com%2F%3Fp%3D40&amp;t=Removing%20active%20devices%20from%20Linux" id="facebook_share_link_40">Share on Facebook</a>
	<script type="text/javascript">
	<!--
	var button = document.getElementById('facebook_share_link_40') || document.getElementById('facebook_share_icon_40') || document.getElementById('facebook_share_both_40') || document.getElementById('facebook_share_button_40');
	if (button) {
		button.onclick = function(e) {
			var url = this.href.replace(/share\.php/, 'sharer.php');
			window.open(url,'sharer','toolbar=0,status=0,width=626,height=436');
			return false;
		}
	
		if (button.id === 'facebook_share_button_40') {
			button.onmouseover = function(){
				this.style.color='#fff';
				this.style.borderColor = '#295582';
				this.style.backgroundColor = '#3b5998';
			}
			button.onmouseout = function(){
				this.style.color = '#3b5998';
				this.style.borderColor = '#d8dfea';
				this.style.backgroundColor = '#fff';
			}
		}
	}
	-->
	</script>
	]]></content:encoded>
			<wfw:commentRss>http://brainstormesuniversity.com/?feed=rss2&#038;p=40</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
