<?xml version="1.0" encoding="UTF-8" standalone="no"?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0"><channel><title>]-[3ny0 ONLINE</title><description>straddling the thin line between genius and insanity ...</description><managingEditor>noreply@blogger.com (henyojess)</managingEditor><pubDate>Thu, 2 Apr 2026 17:14:22 +0800</pubDate><generator>Blogger http://www.blogger.com</generator><openSearch:totalResults xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">100</openSearch:totalResults><openSearch:startIndex xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">1</openSearch:startIndex><openSearch:itemsPerPage xmlns:openSearch="http://a9.com/-/spec/opensearchrss/1.0/">25</openSearch:itemsPerPage><link>http://blog.henyo.com/</link><language>en-us</language><itunes:explicit>no</itunes:explicit><itunes:subtitle>straddling the thin line between genius and insanity ...</itunes:subtitle><itunes:owner><itunes:email>noreply@blogger.com</itunes:email></itunes:owner><item><title>Strongloop with Codenvy Part1</title><link>http://blog.henyo.com/2015/06/strongloop-with-codenvy-part1.html</link><category>codenvy</category><category>strongloop</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 3 Jun 2015 00:06:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-1617199404178835352</guid><description>&lt;h2 id="setting-up-a-loopback-project-in-codenvy"&gt;Setting up a Loopback project in Codenvy&lt;/h2&gt;&lt;br /&gt;
&lt;p&gt;From the codenvy dashboard, create a new project. Choose type: Blank Project and provide a name and description. As an example, I named mine: &lt;em&gt;my-api&lt;/em&gt; with description: &lt;em&gt;Sample project for Strongloop and Codenvy&lt;/em&gt;&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Wait a bit for codenvy to initialize the project and IDE. Next, reveal the Runners tab by clicking on the Runners button at the lower left part of the IDE. Then go to the Configs tab and click on Create New button.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Replace the Dockerfile content with the one below. Make sure to change CODENVY_USER, CODENVY_PASS and CODENVY_PROJECT with your own values.&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;FROM henyojess/codenvy-strongloop:v1.0.1

RUN export PATH=/opt/codenvy-cli-2.10.0/bin:$PATH &amp;&amp; \
CODENVY_USER=jessie@sample.com &amp;&amp; \
CODENVY_PASS=samplepassword &amp;&amp; \
CODENVY_PROJECT=my-api &amp;&amp; \
codenvy login $CODENVY_USER $CODENVY_PASS &amp;&amp; \
CODENVY_PROJECT_ID=$(codenvy list | grep $CODENVY_PROJECT | awk '{ print $1}') &amp;&amp; \
echo "codenvy clone-local $CODENVY_PROJECT_ID" &gt;&gt; /home/user/.bashrc
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Click on the Save button on the right side of runner config tab. This creates a runner with oracle java 7, the codenvy-cli 2.10.0, git, node, npm and strongloop-cli. This will also login the codenvy-cli and clone the project files and folders into the home folder.&lt;/p&gt;&lt;br /&gt;
&lt;p&gt;Run the runner created above and access the Terminal tab. Create a loopback project with the strongloop cli:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;cd my-api
slc loopback --skip-install
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Push the created files to the project file system hosted by codenvy:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;codenvy push
&lt;/code&gt;&lt;/pre&gt;&lt;br /&gt;
&lt;p&gt;Reload the browser to see the new files in the IDE. You may also need to restart the runner for the new files to appear in /home/user/runtime. To run the application after restarting the runner, access the terminal then do:&lt;/p&gt;&lt;br /&gt;
&lt;pre&gt;&lt;code&gt;cd /home/user/runtime
npm install &amp;amp;&amp;amp; slc run
&lt;/code&gt;&lt;/pre&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>GDG DevFest 2014: AngularJS Beginners Codelab</title><link>http://blog.henyo.com/2014/10/gdg-devfest-2014-angularjs-beginners.html</link><category>AngularJS</category><author>noreply@blogger.com (henyojess)</author><pubDate>Sat, 25 Oct 2014 22:52:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-5919269164862481683</guid><description>&lt;br /&gt;
Slides used during the event can be found &lt;a href="https://docs.google.com/presentation/d/1bJzqsjEm1kN7NO2iIKc9r0RKpQ7ELwmWS7R7aUvXI5Y/edit?usp=sharing"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Code and other assets maybe found &lt;a href="https://code.google.com/p/gdgdevfest2014-angularjs-codelab/"&gt;here&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
For support and other materials, join the &lt;a href="https://plus.google.com/communities/116126275877059161802"&gt;AngularJS-PH&lt;/a&gt; community</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">2</thr:total></item><item><title>OSX Development Environment Setup</title><link>http://blog.henyo.com/2014/04/osx-development-environment-setup.html</link><category>OSX</category><category>Software Development</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 2 Apr 2014 10:29:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-7304065357816058987</guid><description>I just upgraded a 2010 13” Macbook Pro with a 240GB Intel SSD 530. Started with a clean install of OSX 10.9 which I immediately updated to 10.9.2&lt;br /&gt;
&lt;div class="se-section-delimiter"&gt;&lt;/div&gt;&lt;h5 id="here-are-the-apps-i-installed"&gt;Here are the apps I installed:&lt;/h5&gt;&lt;h5 id="platforms"&gt;Platforms&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://developer.apple.com/xcode/"&gt;Xcode&lt;/a&gt;: &lt;em&gt;For iOS and OSX development&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html"&gt;Oracle Java JDK&lt;/a&gt;: &lt;em&gt;For Java development&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mamp.info/en/"&gt;MAMP&lt;/a&gt;: &lt;em&gt;Mac Apache MySQL PHP&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div class="se-section-delimiter"&gt;&lt;/div&gt;&lt;h5 id="editorside"&gt;Editors/IDE&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sublimetext.com/3"&gt;Sublime Text&lt;/a&gt;: &lt;em&gt;Text Editor&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://netbeans.org/"&gt;Netbeans&lt;/a&gt;: &lt;em&gt;IDE for Java&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://brackets.io/"&gt;Brackets&lt;/a&gt;: &lt;em&gt;another opensource editor for web code&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.lighttable.com/"&gt;Lighttable&lt;/a&gt;: &lt;em&gt;yet another opensource editor for web code&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://grails.org/products/ggts"&gt;GGTS&lt;/a&gt;: &lt;em&gt;IDE for Groovy and Grails&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h5 id="gui-for-common-tools"&gt;GUI for common tools&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://www.sourcetreeapp.com/"&gt;SourceTree&lt;/a&gt;: &lt;em&gt;Graphical user interface for git&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.sequelpro.com/"&gt;Sequel Pro&lt;/a&gt;: &lt;em&gt;Graphical User Inteface for MySQL&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h5 id="browsers"&gt;Browsers&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="https://www.google.com/intl/en/chrome/browser/"&gt;Chrome&lt;/a&gt;: &lt;em&gt;For the devtools&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.mozilla.org/en-US/firefox/new/"&gt;Firefox&lt;/a&gt;: &lt;em&gt;For testing&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.opera.com/"&gt;Opera&lt;/a&gt;: &lt;em&gt;For testing&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h5 id="utilities"&gt;Utilities&lt;/h5&gt;&lt;ul&gt;&lt;li&gt;&lt;a href="http://brew.sh/"&gt;Homebrew&lt;/a&gt;: &lt;em&gt;package manager for OSX&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.cindori.org/software/trimenabler/"&gt;TrimEnabler&lt;/a&gt;: &lt;em&gt;enables SSD trim for non Apple drives&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.iterm2.com/"&gt;iTerm2&lt;/a&gt;: &lt;em&gt;a better terminal&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.alfredapp.com/"&gt;Alfred&lt;/a&gt;: &lt;em&gt;quick search and productivity tool&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://unarchiver.c3.cx/"&gt;Unarchiver&lt;/a&gt;: &lt;em&gt;adds support for 7z and other archive file types&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.clamxav.com/"&gt;ClamXav&lt;/a&gt;: &lt;em&gt;free opensource Antivirus&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://synergy-foss.org/"&gt;Synergy&lt;/a&gt;: &lt;em&gt;cross-platform opensource Keyboard and Pointer sharing&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.virtualbox.org/"&gt;Virtualbox&lt;/a&gt;: &lt;em&gt;For virtualization needs&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.dropbox.com/"&gt;Dropbox&lt;/a&gt;: &lt;em&gt;For cloud storage&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.skype.com/en/"&gt;Skype&lt;/a&gt;: &lt;em&gt;free video chat and messaging client&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.transmissionbt.com/"&gt;Transmission&lt;/a&gt;: &lt;em&gt;opensouce torrent client&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.videolan.org/vlc/"&gt;VLC&lt;/a&gt;: &lt;em&gt;Video Player&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://cyberduck.io/"&gt;Cyberduck&lt;/a&gt;: &lt;em&gt;Network File Transfer client&lt;/em&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;h5 id="almost-all-the-applications-above-can-be-installed-using-brew-cask-except-for-homebrew-xcode-and-ggts"&gt;Almost all the applications above can be installed using brew-cask except for &lt;a href="http://brew.sh/"&gt;Homebrew&lt;/a&gt;, &lt;a href="https://developer.apple.com/xcode/"&gt;Xcode&lt;/a&gt; and &lt;a href="http://grails.org/products/ggts"&gt;GGTS&lt;/a&gt;&lt;/h5&gt;&lt;blockquote&gt;brew install phinze/cask/brew-cask &lt;br /&gt;
brew cask install java &lt;br /&gt;
brew cask install mamp &lt;br /&gt;
brew cask install sublime-text &lt;br /&gt;
brew cask install netbeans &lt;br /&gt;
brew cask install brackets &lt;br /&gt;
brew cask install lighttable &lt;br /&gt;
brew cask install sourcetree &lt;br /&gt;
brew cask install sequel-pro &lt;br /&gt;
brew cask install google-chrome &lt;br /&gt;
brew cask install firefox &lt;br /&gt;
brew cask install opera &lt;br /&gt;
brew cask install trim-enabler &lt;br /&gt;
brew cask install iterm2 &lt;br /&gt;
brew cask install alfred&lt;br /&gt;
brew cask alfred link &lt;br /&gt;
brew cask install the-unarchiver &lt;br /&gt;
brew cask install clamxav &lt;br /&gt;
brew cask install synergy &lt;br /&gt;
brew cask install virtualbox &lt;br /&gt;
brew cask install dropbox &lt;br /&gt;
brew cask install skype &lt;br /&gt;
brew cask install transmission &lt;br /&gt;
brew cask install vlc &lt;br /&gt;
brew cask install cyberduck&lt;/blockquote&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="-1" type="application/json" url="https://www.dropbox.com/"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>I just upgraded a 2010 13” Macbook Pro with a 240GB Intel SSD 530. Started with a clean install of OSX 10.9 which I immediately updated to 10.9.2 Here are the apps I installed:PlatformsXcode: For iOS and OSX development Oracle Java JDK: For Java development MAMP: Mac Apache MySQL PHP Editors/IDESublime Text: Text Editor Netbeans: IDE for Java Brackets: another opensource editor for web code Lighttable: yet another opensource editor for web code GGTS: IDE for Groovy and Grails GUI for common toolsSourceTree: Graphical user interface for git Sequel Pro: Graphical User Inteface for MySQL BrowsersChrome: For the devtools Firefox: For testing Opera: For testing UtilitiesHomebrew: package manager for OSX TrimEnabler: enables SSD trim for non Apple drives iTerm2: a better terminal Alfred: quick search and productivity tool Unarchiver: adds support for 7z and other archive file types ClamXav: free opensource Antivirus Synergy: cross-platform opensource Keyboard and Pointer sharing Virtualbox: For virtualization needs Dropbox: For cloud storage Skype: free video chat and messaging client Transmission: opensouce torrent client VLC: Video Player Cyberduck: Network File Transfer client Almost all the applications above can be installed using brew-cask except for Homebrew, Xcode and GGTSbrew install phinze/cask/brew-cask brew cask install java brew cask install mamp brew cask install sublime-text brew cask install netbeans brew cask install brackets brew cask install lighttable brew cask install sourcetree brew cask install sequel-pro brew cask install google-chrome brew cask install firefox brew cask install opera brew cask install trim-enabler brew cask install iterm2 brew cask install alfred brew cask alfred link brew cask install the-unarchiver brew cask install clamxav brew cask install synergy brew cask install virtualbox brew cask install dropbox brew cask install skype brew cask install transmission brew cask install vlc brew cask install cyberduck</itunes:subtitle><itunes:author>noreply@blogger.com (henyojess)</itunes:author><itunes:summary>I just upgraded a 2010 13” Macbook Pro with a 240GB Intel SSD 530. Started with a clean install of OSX 10.9 which I immediately updated to 10.9.2 Here are the apps I installed:PlatformsXcode: For iOS and OSX development Oracle Java JDK: For Java development MAMP: Mac Apache MySQL PHP Editors/IDESublime Text: Text Editor Netbeans: IDE for Java Brackets: another opensource editor for web code Lighttable: yet another opensource editor for web code GGTS: IDE for Groovy and Grails GUI for common toolsSourceTree: Graphical user interface for git Sequel Pro: Graphical User Inteface for MySQL BrowsersChrome: For the devtools Firefox: For testing Opera: For testing UtilitiesHomebrew: package manager for OSX TrimEnabler: enables SSD trim for non Apple drives iTerm2: a better terminal Alfred: quick search and productivity tool Unarchiver: adds support for 7z and other archive file types ClamXav: free opensource Antivirus Synergy: cross-platform opensource Keyboard and Pointer sharing Virtualbox: For virtualization needs Dropbox: For cloud storage Skype: free video chat and messaging client Transmission: opensouce torrent client VLC: Video Player Cyberduck: Network File Transfer client Almost all the applications above can be installed using brew-cask except for Homebrew, Xcode and GGTSbrew install phinze/cask/brew-cask brew cask install java brew cask install mamp brew cask install sublime-text brew cask install netbeans brew cask install brackets brew cask install lighttable brew cask install sourcetree brew cask install sequel-pro brew cask install google-chrome brew cask install firefox brew cask install opera brew cask install trim-enabler brew cask install iterm2 brew cask install alfred brew cask alfred link brew cask install the-unarchiver brew cask install clamxav brew cask install synergy brew cask install virtualbox brew cask install dropbox brew cask install skype brew cask install transmission brew cask install vlc brew cask install cyberduck</itunes:summary><itunes:keywords>OSX, Software Development</itunes:keywords></item><item><title>iPhone 3GS 6.1.3 Jailbreak Unlock</title><link>http://blog.henyo.com/2014/02/iphone-3gs-613-jailbreak-unlock.html</link><category>iPhone</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 17 Feb 2014 12:18:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-3436927904895268760</guid><description>I recently got back to using my iPhone 3GS 16GB with the following specs: &lt;br /&gt;
&lt;br /&gt;
Firmware: 5.1.1 Jailbroken Locked &lt;br /&gt;
&lt;br /&gt;
Serial: 86011XXXXXX &lt;br /&gt;
&lt;br /&gt;
Bootrom: New(fixed) &lt;br /&gt;
&lt;br /&gt;
Baseband: 05.16.05&lt;br /&gt;
&lt;br /&gt;
Some applications refused to run as they require a higher version of iOS so I decided to upgrade to 6.1.3.&lt;br /&gt;
&lt;br /&gt;
&lt;strong&gt;Preparation&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I downloaded the following two firmware packages: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;&lt;a href="http://appldnld.apple.com/iOS6/Restore/041-7173.20120919.sDDMh/iPhone2,1_6.0_10A403_Restore.ipsw"&gt;6.0.0&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://appldnld.apple.com/iOS6.1/091-2371.20130319.715gt/iPhone2,1_6.1.3_10B329_Restore.ipsw"&gt;6.1.3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Next I downloaded the latest version of &lt;a href="http://www.iclarified.com/entry/index.php?enid=16424"&gt;RedSn0w&lt;/a&gt;. At the time of this writing: &lt;a href="https://sites.google.com/a/iphone-dev.com/files/home/redsn0w_win_0.9.15b3.zip"&gt;0.9.15b3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;strong&gt;Update to stock 6.1.3 using iTunes&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I connected the iPhone 3GS to my windows PC with iTunes installed.&lt;/li&gt;
&lt;li&gt;Allow iTunes to launch but skipped syncing and backup as I wanted a fresh/new phone&lt;/li&gt;
&lt;li&gt;Turned off the phone via slide to poweroff&lt;/li&gt;
&lt;li&gt;Switch to DFU mode by: &lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;holding both power and home button for 10 seconds&lt;/li&gt;
&lt;li&gt;then releasing the power button but continuing to hold the home button for 15 seconds&lt;/li&gt;
&lt;/ul&gt;&lt;/li&gt;
&lt;li&gt;Restored stock 6.1.3 using iTunes by holding down the shift key will clicking the Restore button&lt;/li&gt;
&lt;li&gt;Waited for phone to reboot and &lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;strong&gt;Jailbreak and Unlock using RedSn0w&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;I connected the iPhone 3GS to my windows PC&lt;/li&gt;
&lt;li&gt;Closed iTunes and Turned off the phone via slide to poweroff&lt;/li&gt;
&lt;li&gt;Launched RedSn0w and clicked on Extra then Select IPSW&lt;/li&gt;
&lt;li&gt;Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button&lt;/li&gt;
&lt;li&gt;Selected Install Cydia and install ipad baseband&lt;/li&gt;
&lt;li&gt;Followed onscreen instructions to complete jailbreak&lt;/li&gt;
&lt;li&gt;Waited for phone to reboot &lt;/li&gt;
&lt;li&gt;Relaunched RedSn0w and clicked on Extra then Select IPSW&lt;/li&gt;
&lt;li&gt;Clicked on extra then Just Boot tethered button&lt;/li&gt;
&lt;li&gt;Followed onscreen instrunctions to complete tethered boot&lt;/li&gt;
&lt;li&gt;Waited for phone to reboot and launched Cydia&lt;/li&gt;
&lt;li&gt;Searched Cydia for p0sixspwn and installed it to unthether&lt;/li&gt;
&lt;li&gt;Relaunched RedSn0w and clicked on Extra then Select IPSW&lt;/li&gt;
&lt;li&gt;Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button&lt;/li&gt;
&lt;li&gt;Deselected Install Cydia and selected downgrade baseband&lt;/li&gt;
&lt;li&gt;Followed onscreen instructions to complete baseband downgrade&lt;/li&gt;
&lt;li&gt;Waited for phone to reboot and launched Cydia&lt;/li&gt;
&lt;li&gt;Searched Cydia for ultrasn0w and installed it to unlock&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;strong&gt;Installed Jailbreak tweaks&lt;/strong&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Five Icon Dock&lt;/li&gt;
&lt;li&gt;NoNewsIsGoodNews&lt;/li&gt;
&lt;li&gt;Activator&lt;/li&gt;
&lt;li&gt;SBSettings&lt;/li&gt;
&lt;li&gt;biteSMS&lt;/li&gt;
&lt;li&gt;RotationInhibitor&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
I'm beginning to wonder if jailbreaking is still worth it.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">6</thr:total><enclosure length="818338725" type="application/zip" url="http://appldnld.apple.com/iOS6/Restore/041-7173.20120919.sDDMh/iPhone2,1_6.0_10A403_Restore.ipsw"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>I recently got back to using my iPhone 3GS 16GB with the following specs: Firmware: 5.1.1 Jailbroken Locked Serial: 86011XXXXXX Bootrom: New(fixed) Baseband: 05.16.05 Some applications refused to run as they require a higher version of iOS so I decided to upgrade to 6.1.3. Preparation I downloaded the following two firmware packages: 6.0.0 6.1.3 Next I downloaded the latest version of RedSn0w. At the time of this writing: 0.9.15b3 Update to stock 6.1.3 using iTunes I connected the iPhone 3GS to my windows PC with iTunes installed. Allow iTunes to launch but skipped syncing and backup as I wanted a fresh/new phone Turned off the phone via slide to poweroff Switch to DFU mode by: holding both power and home button for 10 seconds then releasing the power button but continuing to hold the home button for 15 seconds Restored stock 6.1.3 using iTunes by holding down the shift key will clicking the Restore button Waited for phone to reboot and Jailbreak and Unlock using RedSn0w I connected the iPhone 3GS to my windows PC Closed iTunes and Turned off the phone via slide to poweroff Launched RedSn0w and clicked on Extra then Select IPSW Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button Selected Install Cydia and install ipad baseband Followed onscreen instructions to complete jailbreak Waited for phone to reboot Relaunched RedSn0w and clicked on Extra then Select IPSW Clicked on extra then Just Boot tethered button Followed onscreen instrunctions to complete tethered boot Waited for phone to reboot and launched Cydia Searched Cydia for p0sixspwn and installed it to unthether Relaunched RedSn0w and clicked on Extra then Select IPSW Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button Deselected Install Cydia and selected downgrade baseband Followed onscreen instructions to complete baseband downgrade Waited for phone to reboot and launched Cydia Searched Cydia for ultrasn0w and installed it to unlock Installed Jailbreak tweaks Five Icon Dock NoNewsIsGoodNews Activator SBSettings biteSMS RotationInhibitor I'm beginning to wonder if jailbreaking is still worth it.</itunes:subtitle><itunes:author>noreply@blogger.com (henyojess)</itunes:author><itunes:summary>I recently got back to using my iPhone 3GS 16GB with the following specs: Firmware: 5.1.1 Jailbroken Locked Serial: 86011XXXXXX Bootrom: New(fixed) Baseband: 05.16.05 Some applications refused to run as they require a higher version of iOS so I decided to upgrade to 6.1.3. Preparation I downloaded the following two firmware packages: 6.0.0 6.1.3 Next I downloaded the latest version of RedSn0w. At the time of this writing: 0.9.15b3 Update to stock 6.1.3 using iTunes I connected the iPhone 3GS to my windows PC with iTunes installed. Allow iTunes to launch but skipped syncing and backup as I wanted a fresh/new phone Turned off the phone via slide to poweroff Switch to DFU mode by: holding both power and home button for 10 seconds then releasing the power button but continuing to hold the home button for 15 seconds Restored stock 6.1.3 using iTunes by holding down the shift key will clicking the Restore button Waited for phone to reboot and Jailbreak and Unlock using RedSn0w I connected the iPhone 3GS to my windows PC Closed iTunes and Turned off the phone via slide to poweroff Launched RedSn0w and clicked on Extra then Select IPSW Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button Selected Install Cydia and install ipad baseband Followed onscreen instructions to complete jailbreak Waited for phone to reboot Relaunched RedSn0w and clicked on Extra then Select IPSW Clicked on extra then Just Boot tethered button Followed onscreen instrunctions to complete tethered boot Waited for phone to reboot and launched Cydia Searched Cydia for p0sixspwn and installed it to unthether Relaunched RedSn0w and clicked on Extra then Select IPSW Selected the 6.0.0 IPSW file then went back and clicked on Jailbreak button Deselected Install Cydia and selected downgrade baseband Followed onscreen instructions to complete baseband downgrade Waited for phone to reboot and launched Cydia Searched Cydia for ultrasn0w and installed it to unlock Installed Jailbreak tweaks Five Icon Dock NoNewsIsGoodNews Activator SBSettings biteSMS RotationInhibitor I'm beginning to wonder if jailbreaking is still worth it.</itunes:summary><itunes:keywords>iPhone</itunes:keywords></item><item><title>Ubuntu Server 12.04.2 KVM Host Setup</title><link>http://blog.henyo.com/2013/07/ubuntu-server-12042-kvm-host-setup.html</link><category>KVM</category><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 1 Jul 2013 11:38:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-8615305400182883609</guid><description>&lt;div&gt;
&lt;div&gt;
#!/bin/bash&lt;br /&gt;
#KVM Virtual machine host package installation:&lt;/div&gt;
&lt;div&gt;
apt-get install&amp;nbsp;ubuntu-virt-server&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#set scheduler on all sd? devices&lt;/div&gt;
&lt;div&gt;
find /dev/ -name sd? -type b | cut --delimiter='/' -f3 | while read -r; do echo "deadline" &amp;gt; /sys/block/$REPLY/queue/scheduler; done &amp;amp;&amp;amp; \&lt;br /&gt;
find /dev/ -name sd? -type b | cut --delimiter='/' -f3 | while read -r; do echo -n "$REPLY:";cat /sys/block/$REPLY/queue/scheduler; done&lt;br /&gt;
&lt;br /&gt;
#configure default io scheduler to deadline&lt;br /&gt;
sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="elevator=deadline"/g' /etc/default/grub &amp;amp;&amp;amp; sudo update-grub&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#configure fstab mount options to relatime(assumes ext4 file systems)&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
sed -i -r 's/ext4(\s+)errors/ext4\1relatime,errors/g' /etc/fstab&lt;br /&gt;
&lt;br /&gt;
#remount all filesystems with relatime using UUID&lt;br /&gt;
cat /etc/fstab | grep relatime | cut -f1 --delimiter=' ' | cut -f2 --delimiter='=' | xargs --verbose mount -o remount -U&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#install NTP and configure to sync time with at least 2 local NTP servers if available&lt;/div&gt;
&lt;div&gt;
apt-get install -y ntp &amp;amp;&amp;amp; service ntp stop&lt;br /&gt;
read -p "Enter IP/URL of primary time server:" primary_ntp_server &amp;amp;&amp;amp; read -p "Enter IP/URL of backup time server:" backup_ntp_server&lt;br /&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/ntp.conf&lt;/div&gt;
&lt;div&gt;
driftfile /var/lib/ntp/ntp.drift&lt;br /&gt;
statistics loopstats peerstats clockstats&lt;br /&gt;
filegen loopstats file loopstats type day enable&lt;br /&gt;
filegen peerstats file peerstats type day enable&lt;br /&gt;
filegen clockstats file clockstats type day enable&lt;/div&gt;
&lt;div&gt;
server $primary_ntp_server iburst&lt;/div&gt;
&lt;div&gt;
server $backup_ntp_server&lt;br /&gt;
restrict -4 default kod notrap nomodify nopeer noquery&lt;br /&gt;
restrict -6 default kod notrap nomodify nopeer noquery&lt;br /&gt;
restrict 127.0.0.1&lt;br /&gt;
restrict ::1&lt;/div&gt;
&lt;div&gt;
EOF&lt;br /&gt;
service ntp start&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
&lt;div&gt;
#configure bridge networking with eth0 (assumes eth0 has static ip configured)&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
sed -i -e '/^[[:space:]]*#/!s/eth0/br0/g' -e '/^[[:space:]]*[^#]*iface br0 inet/a \&lt;br /&gt;
\tbridge_ports eth0 \&lt;br /&gt;
\tbridge_fd 9 \&lt;br /&gt;
\tbridge_hello 2 \&lt;br /&gt;
\tbridge_maxage 12 \&lt;br /&gt;
\tbridge_stp off' &amp;nbsp;/etc/network/interfaces&lt;/div&gt;
&lt;div&gt;
invoke-rc.d networking restart&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Ubuntu Server 12.04.2 KVM Guest Setup</title><link>http://blog.henyo.com/2013/07/ubuntu-server-12042-kvm-guest-setup.html</link><category>KVM</category><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 1 Jul 2013 11:37:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-6028452659672448765</guid><description>&lt;code&gt;preparing the template image:&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;#Setup io scheduler and serial console for virsh&lt;br /&gt;sed -i -r 's/GRUB_CMDLINE_LINUX=".*"/GRUB_CMDLINE_LINUX="elevator=deadline console=ttyS0,38400n8 console=tty0"/g' /etc/default/grub &amp;amp;&amp;amp; update-grub&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;
&lt;code&gt;#Setup serial terminal console config&lt;br /&gt;cat &amp;lt;&amp;lt;EOF &amp;gt;&lt;eof&gt;/etc/init/ttyS0.conf&lt;br /&gt;# ttyS0 - getty&lt;br /&gt;#&lt;br /&gt;# This service maintains a getty on ttyS0 from the point the system is&lt;br /&gt;# started until it is shut down again.&lt;br /&gt;&lt;br /&gt;start on stopped rc RUNLEVEL=[2345]&lt;br /&gt;stop on runlevel [!2345]&lt;br /&gt;&lt;br /&gt;respawn&lt;br /&gt;exec /sbin/getty -L 38400 ttyS0 vt102&lt;br /&gt;EOF&lt;/eof&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;eof&gt;&lt;br /&gt;&lt;/eof&gt;&lt;/code&gt;
&lt;code&gt;&lt;eof&gt;#Setup fstab mount options to relatime(assumes ext4 file systems)&lt;br /&gt;sed -i -r 's/ext4(\s+)errors/ext4\1relatime,errors/g' /etc/fstab&lt;/eof&gt;&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;
&lt;code&gt;&lt;br /&gt;&lt;/code&gt;
#!/bin/bash&lt;br /&gt;
&lt;code&gt;if [[ $EUID -ne 0 ]]; then&lt;br /&gt;echo "script must be run as root. run with sudo" 2&amp;gt;&amp;amp;1&lt;br /&gt;exit 1&lt;br /&gt;fi&lt;/code&gt;&lt;br /&gt;
&lt;code&gt;old_name=`hostname`&lt;br /&gt;echo "Current hostname:$old_name"&lt;br /&gt;echo -n "Enter new server name:"&lt;br /&gt;read new_name&lt;br /&gt;echo "$new_name"&amp;gt;/etc/hostname&lt;br /&gt;hostname $new_name&lt;br /&gt;sed -i "s/$old_name/$new_name/g" /etc/hosts&lt;br /&gt;&lt;br /&gt;#regenerate udev persistent net rules on reboot&lt;br /&gt;echo "Removing /etc/udev/rules.d/70-persistent-net.rules"&lt;br /&gt;rm /etc/udev/rules.d/70-persistent-net.rules&lt;br /&gt;&lt;br /&gt;echo "Regenerating ssh server keys"&lt;br /&gt;rm /etc/ssh/ssh_host_*&lt;br /&gt;dpkg-reconfigure openssh-server&lt;br /&gt;&lt;eof&gt;&lt;br /&gt;echo "*** You should probably change the password and reboot ***"&lt;/eof&gt;&lt;/code&gt;</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>QT5 on xUbuntu 12.04.2 LTS</title><link>http://blog.henyo.com/2013/06/qt5-on-xubuntu-12042-lts.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 24 Jun 2013 15:42:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-1882401758954312931</guid><description>The latest version of &lt;a href="http://xviservicethief.sourceforge.net/index.php?action=home"&gt;xVideoServiceThief&lt;/a&gt; (2.5) switched to using the QT5 library.&lt;br /&gt;
&lt;br /&gt;
To get it to work, I needed to setup QT5 on a xUbuntu 12.04.2 LTS which I did by running the following commands:&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo apt-get install&amp;nbsp;&lt;/i&gt;&lt;i&gt;python-software-properties &amp;amp;&amp;amp; \&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo&lt;/i&gt;&lt;i&gt;&amp;nbsp;apt-add-repository ppa:canonical-qt5-edgers/qt5-proper &amp;amp;&amp;amp; \&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo apt-get update &amp;amp;&amp;amp; \&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo apt-get install libqt5gui5 libqt5webkit5 libqt5script5&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
Let me know in the comments if this helped you or if there were any issues.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Cloudstack 4.1 on Ubuntu Server</title><link>http://blog.henyo.com/2013/06/cloudstack-41-on-ubuntu-server.html</link><category>cloudstack</category><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Fri, 21 Jun 2013 18:13:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-1066665561847169642</guid><description>&lt;div&gt;
My objective was to setup a Cloudstack 4.1 management node which will also server an NFS server for both primary and secondary storage.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
The series of commands below were run on an Ubuntu Server 12.04.2(precise) system. During installation of the operating system, only the OpenSSH server was enabled in the task selection screen. I also made sure to name the server with a fully qualified domain name i.e. cloudstack.henyo.com.&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#setup cloudstack source&lt;/div&gt;
&lt;div&gt;
echo "deb http://cloudstack.apt-get.eu/ubuntu precise 4.1" &amp;gt; /etc/apt/sources.list.d/cloudstack.list&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
#setup percona source&lt;/div&gt;
&lt;div&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/apt/sources.list.d/percona.list&lt;/div&gt;
&lt;div&gt;
deb http://repo.percona.com/apt precise main&lt;/div&gt;
&lt;div&gt;
deb-src http://repo.percona.com/apt precise main&lt;/div&gt;
&lt;div&gt;
EOF&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;
#install the cloudstack apt-key&lt;/div&gt;
&lt;div&gt;
wget -O - http://cloudstack.apt-get.eu/release.asc|apt-key add -&lt;br /&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#install stuff&lt;br /&gt;
apt-get update &amp;amp;&amp;amp; \&lt;br /&gt;
apt-get install -y --force-yes openntpd nfs-kernel-server cloudstack-management percona-server-server-5.5 percona-server-client-5.5&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;/etc/mysql/conf.d/cloudstack.cnf&lt;/div&gt;
&lt;div&gt;
[mysqld]&lt;/div&gt;
&lt;div&gt;
innodb_rollback_on_timeout=1&lt;/div&gt;
&lt;div&gt;
innodb_lock_wait_timeout=600&lt;/div&gt;
&lt;div&gt;
max_connections=350&lt;/div&gt;
&lt;div&gt;
log-bin=mysql-bin&lt;/div&gt;
&lt;div&gt;
binlog-format = 'ROW'&lt;/div&gt;
&lt;div&gt;
EOF&lt;/div&gt;
&lt;div&gt;
service mysql restart&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#setup nfs&lt;/div&gt;
&lt;div&gt;
mkdir -p /export/primary /export/secondary /var/primary /var/secondary&lt;br /&gt;
&lt;div&gt;
cat &amp;lt;&amp;lt;EOF &amp;gt;&amp;gt;/etc/fstab&lt;/div&gt;
&lt;div&gt;
/var/primary &amp;nbsp; &amp;nbsp;/export/primary &amp;nbsp; none &amp;nbsp; &amp;nbsp;bind &amp;nbsp;0 &amp;nbsp;0&lt;/div&gt;
&lt;div&gt;
/var/secondary &amp;nbsp;/export/secondary none &amp;nbsp; &amp;nbsp;bind &amp;nbsp;0 &amp;nbsp;0&lt;/div&gt;
&lt;div&gt;
EOF&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
mount --bind /var/primary/ /export/primary/&lt;/div&gt;
&lt;div&gt;
mount --bind /var/secondary/ /export/secondary/&lt;/div&gt;
&lt;div&gt;
echo "/export &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; *(rw,async,no_root_squash,no_subtree_check)" &amp;gt;&amp;gt; /etc/exports&lt;/div&gt;
&lt;div&gt;
exportfs -a&lt;/div&gt;
&lt;div&gt;
service nfs-kernel-server restart&lt;br /&gt;
&lt;br /&gt;
&lt;div&gt;
#setup cloudstack database&lt;/div&gt;
&lt;div&gt;
cloudstack-setup-databases cloud:test@localhost --deploy-as=root:root&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
#setup management server&lt;/div&gt;
&lt;div&gt;
echo 'Defaults:cloud !requiretty' &amp;gt;&amp;gt; /etc/sudoers.d/cloudstack&lt;/div&gt;
&lt;div&gt;
cloudstack-setup-management&lt;/div&gt;
&lt;br /&gt;
reboot&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;!--
/usr/share/cloudstack-common/scripts/storage/secondary/cloud-install-sys-tmplt -m /export/secondary -u http://download.cloud.com/templates/acton/acton-systemvm-02062012.qcow2.bz2 -h kvm -F
--&gt;&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>iphone 5 plan comparison</title><link>http://blog.henyo.com/2013/02/iphone-5-plan-comparison.html</link><author>noreply@blogger.com (henyojess)</author><pubDate>Fri, 1 Feb 2013 18:56:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-1827659172013659962</guid><description>&lt;h2&gt;
iphone 5 plan comparison from globe and smart&lt;/h2&gt;
&lt;br /&gt;
I took some time to dissect each iphone plan from both globe and smart.&lt;br /&gt;
&lt;br /&gt;
The spreadsheet below compare the iphone 5 - 16GB plans on unlimited data.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="240" src="https://docs.google.com/spreadsheet/pub?key=0AudD9J4VYKIOdGtVS3FrYlAxSEVDcWUySHB5d3Q4QUE&amp;amp;single=true&amp;amp;gid=0&amp;amp;output=html&amp;amp;widget=true" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
The cheapest plan for the iphone 5 16GB comes from smart but the difference is really not that much especially if you look at the monthly cost. The smart plan also provides a bit more free all texts and minutes. To me, it still boils down to the network where most of your contacts are.&lt;br /&gt;
&lt;br /&gt;
&lt;iframe frameborder="0" height="240" src="https://docs.google.com/spreadsheet/pub?key=0AudD9J4VYKIOdGtVS3FrYlAxSEVDcWUySHB5d3Q4QUE&amp;amp;single=true&amp;amp;gid=1&amp;amp;output=html&amp;amp;widget=true" width="580"&gt;&lt;/iframe&gt;&lt;br /&gt;
&lt;br /&gt;
The iphone 5 16GB unit might not meet your storage needs so for an additional 200 pesos per month, you can avail of the iphone 5 32GB. Here, globe takes the lead by a measly 1 peso per month. But in my opinion, smart provides a lot more value in the form of freebies.&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Disabling BBU Auto Learn with megacli</title><link>http://blog.henyo.com/2013/01/disabling-bbu-auto-learn-with-megacli.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 23 Jan 2013 11:59:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-5893493900825748566</guid><description>We are currently facing performance problems with mysql and I remember reading about RAID BBU Learning causing huge write performance drops. So I wanted to check if the RAID controller on our Master database had this configured.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Step#1&lt;/b&gt;: Find out what is the brand/model of the RAID controller installed on the server&lt;br /&gt;
&lt;br /&gt;
I can of course ask accounting to pull-up the delivery receipt to find the brand/model but where is the fun in that. Googling led me to the following commands:&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;sudo lspci | grep -i raid&lt;/i&gt;&lt;br /&gt;
04:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 04)&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;i&gt;sudo lshw -class storage&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
description: RAID bus controller&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;product: MegaRAID SAS 2108 [Liberator]&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vendor: LSI Logic / Symbios Logic&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;physical id: 0&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bus info: pci@0000:04:00.0&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logical name: scsi4&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;version: 04&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 64 bits&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;clock: 33MHz&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;capabilities: storage pm pciexpress vpd msi msix bus_master cap_list rom&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configuration: driver=megaraid_sas latency=0&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resources: irq:26 ioport:d800(size=256) memory:fae7c000-fae7ffff memory:faec0000-faefffff memory:fae80000-faebffff&lt;/div&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step#2&lt;/b&gt;: Install the megacli package to be able to query the raid card for its status&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Downloaded the &lt;a href="http://www.lsi.com/downloads/Public/MegaRAID%20Common%20Files/8.07.06_MegaCLI.zip"&gt;megacli package&lt;/a&gt; from the LSI website. But they only provide RPMs so I had to convert them with:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo alien -k MegaCli-8.07.06-1.noarch.rpm&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Then installed with:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo dpkg -i megacli_8.07.06-1_all.deb&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
To find out where the files got installed do:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo dpkg -c megacli_8.07.06-1_all.deb&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;b&gt;Step#3&lt;/b&gt;: Use megacli to probe for BBU status and information&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Running the command results to something unexpected:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;./MegaCli64 -adpCount&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Controller Count: 0.&lt;/div&gt;
&lt;div&gt;
Exit Code: 0x00&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
megacli cant find the raid adapter. It seems that megacli has an issue with kernels &amp;gt;= 3.0 and can be remedied with:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -adpCount&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
Controller Count: 1.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
Exit Code: 0x01&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
So to find out about the BBU:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
BBU status for Adapter: 0&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BatteryType: iBBU&lt;/div&gt;
&lt;div&gt;
Voltage: 3972 mV&lt;/div&gt;
&lt;div&gt;
Current: 0 mA&lt;/div&gt;
&lt;div&gt;
Temperature: 24 C&lt;/div&gt;
&lt;div&gt;
Battery State: Optimal&lt;/div&gt;
&lt;div&gt;
BBU Firmware Status:&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Charging Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: None&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Voltage &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Learn Cycle Requested&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Learn Cycle Active &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Learn Cycle Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: OK&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Learn Cycle Timeout &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; I2c Errors Detected &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Battery Pack Missing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Battery Replacement required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Remaining Capacity Low &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Periodic Learn Required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Transparent Learn &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; No space to cache offload &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Pack is about to fail &amp;amp; should be replaced : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Cache Offload premium feature required &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Module microcode update required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
GasGuageStatus:&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Fully Discharged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Fully Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Discharging &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Initialized &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Remaining Time Alarm &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Discharge Terminated &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Over Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Charging Terminated &amp;nbsp; &amp;nbsp; : No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Over Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Relative State of Charge: 97 %&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Charger System State: 49168&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Charger System Ctrl: 0&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Charging current: 0 mA&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Absolute state of charge: 53 %&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Max Error: 2 %&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Exit Code: 0x00&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
BBU Capacity Info for Adapter: 0&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Relative State of Charge: 97 %&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Absolute State of charge: 53 %&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Remaining Capacity: 641 mAh&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Full Charge Capacity: 664 mAh&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Run time to empty: Battery is not being discharged. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Average time to empty: Battery is not being discharged. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Estimated Time to full recharge: Battery is not being charged. &amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Cycle Count: 37&lt;/div&gt;
&lt;div&gt;
Max Error = 2 %&lt;/div&gt;
&lt;div&gt;
Remaining Capacity Alarm = 120 mAh&lt;/div&gt;
&lt;div&gt;
Remining Time Alarm = 10 Min&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Exit Code: 0x00&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
BBU Properties for Adapter: 0&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Auto Learn Period: 30 Days&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Next Learn time: Sun Feb 17 19:37:09 2013&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Learn Delay Interval:0 Hours&lt;/div&gt;
&lt;div&gt;
&amp;nbsp; Auto-Learn Mode: Enabled&lt;/div&gt;
&lt;div&gt;
Exit Code: 0x00&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
Auto learn mode should be disabled and scheduled during off-peak time.&lt;/div&gt;
&lt;div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;#!/bin/bash&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;TMPFILE=$(mktemp -p /tmp bbu.relearn.XXXXXXXXXX) || exit 1&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;echo "autoLearnMode=1" &amp;gt; $TMPFILE&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -SetBbuProperties -f $TMPFILE -aALL&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL&lt;/i&gt;&lt;/div&gt;
&lt;div&gt;
&lt;i&gt;rm $TMPFILE&lt;/i&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
script for safe write back:&lt;/div&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;i&gt;#!/bin/bash&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp NoCachedBadBBU -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
script to force write back without BBU protection:&lt;br /&gt;
&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;i&gt;sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL&lt;/i&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Useful Links:&lt;br /&gt;
&lt;a href="http://linux.dell.com/files/whitepapers/solaris/Managing_PERC6_0714.pdf"&gt;http://linux.dell.com/files/whitepapers/solaris/Managing_PERC6_0714.pdf&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS"&gt;http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS&lt;/a&gt;&lt;br /&gt;
&lt;a href="http://yo61.com/dell-drac-bbu-auto-learn-tests-kill-disk-performance.html"&gt;http://yo61.com/dell-drac-bbu-auto-learn-tests-kill-disk-performance.html&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">3</thr:total><enclosure length="118243" type="application/pdf" url="http://linux.dell.com/files/whitepapers/solaris/Managing_PERC6_0714.pdf"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>We are currently facing performance problems with mysql and I remember reading about RAID BBU Learning causing huge write performance drops. So I wanted to check if the RAID controller on our Master database had this configured. Step#1: Find out what is the brand/model of the RAID controller installed on the server I can of course ask accounting to pull-up the delivery receipt to find the brand/model but where is the fun in that. Googling led me to the following commands: sudo lspci | grep -i raid 04:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 04) sudo lshw -class storage description: RAID bus controller &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;product: MegaRAID SAS 2108 [Liberator] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vendor: LSI Logic / Symbios Logic &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;physical id: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bus info: pci@0000:04:00.0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logical name: scsi4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;version: 04 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 64 bits &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;clock: 33MHz &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;capabilities: storage pm pciexpress vpd msi msix bus_master cap_list rom &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configuration: driver=megaraid_sas latency=0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resources: irq:26 ioport:d800(size=256) memory:fae7c000-fae7ffff memory:faec0000-faefffff memory:fae80000-faebffff Step#2: Install the megacli package to be able to query the raid card for its status Downloaded the megacli package from the LSI website. But they only provide RPMs so I had to convert them with: sudo alien -k MegaCli-8.07.06-1.noarch.rpm Then installed with: sudo dpkg -i megacli_8.07.06-1_all.deb To find out where the files got installed do: sudo dpkg -c megacli_8.07.06-1_all.deb Step#3: Use megacli to probe for BBU status and information Running the command results to something unexpected: ./MegaCli64 -adpCount Controller Count: 0. Exit Code: 0x00 megacli cant find the raid adapter. It seems that megacli has an issue with kernels &amp;gt;= 3.0 and can be remedied with: sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -adpCount Controller Count: 1. Exit Code: 0x01 So to find out about the BBU: sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL BBU status for Adapter: 0 BatteryType: iBBU Voltage: 3972 mV Current: 0 mA Temperature: 24 C Battery State: Optimal BBU Firmware Status: &amp;nbsp; Charging Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: None &amp;nbsp; Voltage &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK &amp;nbsp; Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK &amp;nbsp; Learn Cycle Requested &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Learn Cycle Active &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Learn Cycle Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: OK &amp;nbsp; Learn Cycle Timeout &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; I2c Errors Detected &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Battery Pack Missing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Battery Replacement required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Remaining Capacity Low &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Periodic Learn Required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Transparent Learn &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; No space to cache offload &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Pack is about to fail &amp;amp; should be replaced : No &amp;nbsp; Cache Offload premium feature required &amp;nbsp;: No &amp;nbsp; Module microcode update required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No GasGuageStatus: &amp;nbsp; Fully Discharged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Fully Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Discharging &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Initialized &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Remaining Time Alarm &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Discharge Terminated &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Over Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Charging Terminated &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Over Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Relative State of Charge: 97 % &amp;nbsp; Charger System State: 49168 &amp;nbsp; Charger System Ctrl: 0 &amp;nbsp; Charging current: 0 mA &amp;nbsp; Absolute state of charge: 53 % &amp;nbsp; Max Error: 2 % Exit Code: 0x00 sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL BBU Capacity Info for Adapter: 0 &amp;nbsp; Relative State of Charge: 97 % &amp;nbsp; Absolute State of charge: 53 % &amp;nbsp; Remaining Capacity: 641 mAh &amp;nbsp; Full Charge Capacity: 664 mAh &amp;nbsp; Run time to empty: Battery is not being discharged. &amp;nbsp; &amp;nbsp; Average time to empty: Battery is not being discharged. &amp;nbsp; &amp;nbsp; Estimated Time to full recharge: Battery is not being charged. &amp;nbsp; &amp;nbsp; Cycle Count: 37 Max Error = 2 % Remaining Capacity Alarm = 120 mAh Remining Time Alarm = 10 Min Exit Code: 0x00 sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL BBU Properties for Adapter: 0 &amp;nbsp; Auto Learn Period: 30 Days &amp;nbsp; Next Learn time: Sun Feb 17 19:37:09 2013 &amp;nbsp; Learn Delay Interval:0 Hours &amp;nbsp; Auto-Learn Mode: Enabled Exit Code: 0x00 Auto learn mode should be disabled and scheduled during off-peak time. #!/bin/bash TMPFILE=$(mktemp -p /tmp bbu.relearn.XXXXXXXXXX) || exit 1 echo "autoLearnMode=1" &amp;gt; $TMPFILE setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -SetBbuProperties -f $TMPFILE -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL rm $TMPFILE script for safe write back: #!/bin/bash sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp NoCachedBadBBU -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL script to force write back without BBU protection: #!/bin/bash sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL Useful Links: http://linux.dell.com/files/whitepapers/solaris/Managing_PERC6_0714.pdf http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS http://yo61.com/dell-drac-bbu-auto-learn-tests-kill-disk-performance.html I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.</itunes:subtitle><itunes:author>noreply@blogger.com (henyojess)</itunes:author><itunes:summary>We are currently facing performance problems with mysql and I remember reading about RAID BBU Learning causing huge write performance drops. So I wanted to check if the RAID controller on our Master database had this configured. Step#1: Find out what is the brand/model of the RAID controller installed on the server I can of course ask accounting to pull-up the delivery receipt to find the brand/model but where is the fun in that. Googling led me to the following commands: sudo lspci | grep -i raid 04:00.0 RAID bus controller: LSI Logic / Symbios Logic MegaRAID SAS 2108 [Liberator] (rev 04) sudo lshw -class storage description: RAID bus controller &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;product: MegaRAID SAS 2108 [Liberator] &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;vendor: LSI Logic / Symbios Logic &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;physical id: 0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;bus info: pci@0000:04:00.0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;logical name: scsi4 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;version: 04 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;width: 64 bits &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;clock: 33MHz &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;capabilities: storage pm pciexpress vpd msi msix bus_master cap_list rom &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;configuration: driver=megaraid_sas latency=0 &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;resources: irq:26 ioport:d800(size=256) memory:fae7c000-fae7ffff memory:faec0000-faefffff memory:fae80000-faebffff Step#2: Install the megacli package to be able to query the raid card for its status Downloaded the megacli package from the LSI website. But they only provide RPMs so I had to convert them with: sudo alien -k MegaCli-8.07.06-1.noarch.rpm Then installed with: sudo dpkg -i megacli_8.07.06-1_all.deb To find out where the files got installed do: sudo dpkg -c megacli_8.07.06-1_all.deb Step#3: Use megacli to probe for BBU status and information Running the command results to something unexpected: ./MegaCli64 -adpCount Controller Count: 0. Exit Code: 0x00 megacli cant find the raid adapter. It seems that megacli has an issue with kernels &amp;gt;= 3.0 and can be remedied with: sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -adpCount Controller Count: 1. Exit Code: 0x01 So to find out about the BBU: sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuStatus -aALL BBU status for Adapter: 0 BatteryType: iBBU Voltage: 3972 mV Current: 0 mA Temperature: 24 C Battery State: Optimal BBU Firmware Status: &amp;nbsp; Charging Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: None &amp;nbsp; Voltage &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK &amp;nbsp; Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : OK &amp;nbsp; Learn Cycle Requested &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Learn Cycle Active &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Learn Cycle Status &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: OK &amp;nbsp; Learn Cycle Timeout &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; I2c Errors Detected &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Battery Pack Missing &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Battery Replacement required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Remaining Capacity Low &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Periodic Learn Required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Transparent Learn &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; No space to cache offload &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Pack is about to fail &amp;amp; should be replaced : No &amp;nbsp; Cache Offload premium feature required &amp;nbsp;: No &amp;nbsp; Module microcode update required &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No GasGuageStatus: &amp;nbsp; Fully Discharged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Fully Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Discharging &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Initialized &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; : Yes &amp;nbsp; Remaining Time Alarm &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Discharge Terminated &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Over Temperature &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Charging Terminated &amp;nbsp; &amp;nbsp; : No &amp;nbsp; Over Charged &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;: No &amp;nbsp; Relative State of Charge: 97 % &amp;nbsp; Charger System State: 49168 &amp;nbsp; Charger System Ctrl: 0 &amp;nbsp; Charging current: 0 mA &amp;nbsp; Absolute state of charge: 53 % &amp;nbsp; Max Error: 2 % Exit Code: 0x00 sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuCapacityInfo -aALL BBU Capacity Info for Adapter: 0 &amp;nbsp; Relative State of Charge: 97 % &amp;nbsp; Absolute State of charge: 53 % &amp;nbsp; Remaining Capacity: 641 mAh &amp;nbsp; Full Charge Capacity: 664 mAh &amp;nbsp; Run time to empty: Battery is not being discharged. &amp;nbsp; &amp;nbsp; Average time to empty: Battery is not being discharged. &amp;nbsp; &amp;nbsp; Estimated Time to full recharge: Battery is not being charged. &amp;nbsp; &amp;nbsp; Cycle Count: 37 Max Error = 2 % Remaining Capacity Alarm = 120 mAh Remining Time Alarm = 10 Min Exit Code: 0x00 sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL BBU Properties for Adapter: 0 &amp;nbsp; Auto Learn Period: 30 Days &amp;nbsp; Next Learn time: Sun Feb 17 19:37:09 2013 &amp;nbsp; Learn Delay Interval:0 Hours &amp;nbsp; Auto-Learn Mode: Enabled Exit Code: 0x00 Auto learn mode should be disabled and scheduled during off-peak time. #!/bin/bash TMPFILE=$(mktemp -p /tmp bbu.relearn.XXXXXXXXXX) || exit 1 echo "autoLearnMode=1" &amp;gt; $TMPFILE setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -SetBbuProperties -f $TMPFILE -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -AdpBbuCmd -GetBbuProperties -aALL rm $TMPFILE script for safe write back: #!/bin/bash sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp NoCachedBadBBU -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL script to force write back without BBU protection: #!/bin/bash sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp ADRA -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp -Cached -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp DisDskCache -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp WB -Lall -aALL sudo setarch x86_64 --uname-2.6 /opt/MegaRAID/MegaCli/MegaCli64 -LDInfo -Lall -aALL Useful Links: http://linux.dell.com/files/whitepapers/solaris/Managing_PERC6_0714.pdf http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS http://yo61.com/dell-drac-bbu-auto-learn-tests-kill-disk-performance.html I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.</itunes:summary><itunes:keywords>System Administration, Ubuntu</itunes:keywords></item><item><title>Transferring a huge file over a LAN</title><link>http://blog.henyo.com/2012/11/transferring-huge-file-over-lan.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 21 Nov 2012 20:49:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-9162824900386502474</guid><description>We need to transfer several huge files from an old server to a new server. I plan to use netcat to do a raw transfer followed by rsync to ensure data integrity. I'll report back on the results.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the destination server:&lt;br /&gt;
nc -l 1234 &amp;gt;&amp;nbsp;ubuntu-12.04.1-server-i386.iso&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the source server:&lt;br /&gt;
time cat&amp;nbsp;ubuntu-12.04.1-server-i386.iso | nc $DESTINATION_IP 1234&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the source server:&lt;br /&gt;
&lt;div class="code"&gt;
cat &amp;gt;rsyncd.conf &amp;lt;&amp;lt;EOF&lt;br /&gt;
#rsyncd.conf&lt;br /&gt;
[temp]&lt;br /&gt;
path=/var/lib/libvirt/images/&lt;br /&gt;
read only = yes&lt;br /&gt;
list = yes&lt;br /&gt;
use chroot = no&lt;br /&gt;
EOF&lt;/div&gt;
rsync --config=rsyncd.conf&amp;nbsp;--daemon --no-detach --port=1234&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
On the destination server:&lt;br /&gt;
time rsync -av --inplace --progress rsync://apollo@192.168.7.167:1234/temp/ubuntu-12.04.1-server-i386.iso&amp;nbsp;ubuntu-12.04.1-server-i386.iso&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Update#1:&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
time cat ubuntu-12.04.1-server-i386.iso | nc 192.168.7.198 1234&lt;br /&gt;
&lt;br /&gt;
real&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;0m58.130s&lt;br /&gt;
user&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;0m0.072s&lt;br /&gt;
sys&lt;span class="Apple-tab-span" style="white-space: pre;"&gt; &lt;/span&gt;0m2.016s&lt;br /&gt;
&lt;br /&gt;
ubuntu-12.04.1-server-i386.iso is 646MB in size which gives a transfer rate of 11.13MB/s which is NOT what I expected from a gigabit connection.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.&lt;br /&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;
&lt;br /&gt;&lt;/div&gt;
</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Safely Rebooting a Hanging Server</title><link>http://blog.henyo.com/2012/04/safely-rebooting-hanging-server.html</link><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 30 Apr 2012 09:44:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-3145006304229947993</guid><description>&lt;br /&gt;
When all else fails, go to the physical server console and hit:&lt;br /&gt;
Alt-SysRq R (wait for 21 secs)&lt;br /&gt;
Alt-SysRq E (wait for 21 secs)&lt;br /&gt;
Alt-SysRq I (wait for 21 secs)&lt;br /&gt;
Alt-SysRq S (wait for 21 secs)&lt;br /&gt;
Alt-SysRq U (wait for 21 secs)&lt;br /&gt;
Alt-SysRq B&lt;br /&gt;
&lt;br /&gt;
Then cross your fingers as the server should reboot&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Problem with grails, maven and spring security</title><link>http://blog.henyo.com/2012/04/problem-with-grails-maven-and-spring.html</link><category>Grails</category><category>Groovy</category><category>Software Development</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Fri, 13 Apr 2012 23:59:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-7769654905288707628</guid><description>Environment:&lt;br /&gt;
Ubuntu 12.04 3.2.0-20-generic-pae kernel&lt;br /&gt;
java version "1.6.0_24"&lt;br /&gt;
OpenJDK Runtime Environment (IcedTea6 1.11.1) (6b24-1.11.1-3ubuntu3)&lt;br /&gt;
OpenJDK Server VM (build 20.0-b12, mixed mode)&lt;br /&gt;
&lt;br /&gt;
I installed STS 2.9.1 RELEASE which includes apache-maven-3.0.3&lt;br /&gt;
&lt;br /&gt;
I placed the apache-maven-3.0.3 in my PATH environment variable&lt;br /&gt;
&lt;br /&gt;
I created a project with:&lt;br /&gt;
mvn archetype:generate \&lt;br /&gt;
-DarchetypeGroupId=org.grails \&lt;br /&gt;
-DarchetypeArtifactId=grails-maven-archetype \&lt;br /&gt;
-DarchetypeVersion=1.3.7 \&lt;br /&gt;
-Dversion=1.0.0alpha \&lt;br /&gt;
-DgroupId=com.henyo.foobar -DartifactId=foobar&lt;br /&gt;
&lt;br /&gt;
mvn proceeded to download the internet and then created the project folder with the pom file&lt;br /&gt;
I modified the pom file to set the source and target to 1.6 as described in the grails manual&lt;br /&gt;
&lt;br /&gt;
I then did:&lt;br /&gt;
mvn initialize&lt;br /&gt;
which created the grails directory structure&lt;br /&gt;
&lt;br /&gt;
I tried:&lt;br /&gt;
mvn grails:run-app&lt;br /&gt;
which resulted in the app successfully running&lt;br /&gt;
&lt;br /&gt;
I then tried running just the unit tests with:&lt;br /&gt;
mvn grails:exec -Dcommand=test-app -Dargs="--unit"&lt;br /&gt;
which resulted in successful build&lt;br /&gt;
&lt;br /&gt;
I then installed the spring security core plugin with:&lt;br /&gt;
mvn grails:install-plugin -DpluginName=spring-securit-core&lt;br /&gt;
&lt;br /&gt;
I then tried using the s2-quickstart script:&lt;br /&gt;
mvn grails:exec -Dcommand=s2-quickstart -Dargs="com.henyo.foobar.model User Role"&lt;br /&gt;
which resulted in a build FAILURE:&lt;br /&gt;
[ERROR] Failed to execute goal org.grails:grails-maven-plugin:1.3.7:exec (default-cli) on project foobar: Unable to start Grails: java.lang.reflect.InvocationTargetException: org/springframework/security/core/Authentication: org.springframework.security.core.Authentication -&gt; [Help 1]&lt;br /&gt;
&lt;br /&gt;
It seems that the grails maven integration still needs a lot of work. I suspect this is a dependency resolution issue.&lt;br /&gt;
&lt;br /&gt;
Uploaded a sample project that has this issue: http://dl.dropbox.com/u/5541070/foobar.tar.gz&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Books for Software Development</title><link>http://blog.henyo.com/2010/04/books-for-software-development.html</link><category>Software Development</category><author>noreply@blogger.com (henyojess)</author><pubDate>Fri, 13 Apr 2012 23:45:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-5013685429560991864</guid><description>&lt;br /&gt;
My updated reading list&lt;br /&gt;
&lt;br /&gt;
Learning Programming&lt;br /&gt;
-------------&lt;br /&gt;
How to think like a computer scientist: Python Edition&lt;br /&gt;
Thinking in C beta 3&lt;br /&gt;
The Passionate Programmer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Learning Java&lt;br /&gt;
-------------&lt;br /&gt;
Head First Java 2nd Ed&lt;br /&gt;
How to think like a computer scientist: Java Edition&lt;br /&gt;
Objects First with Java&lt;br /&gt;
Thinking in Java 4th Ed&lt;br /&gt;
Big Java&lt;br /&gt;
Agile Java: Crafting Code with Test-Driven Development&lt;br /&gt;
Core Java Vol 1 &amp;amp; 2&lt;br /&gt;
The Art &amp;amp; Science of Java&lt;br /&gt;
The Java Programming Language&lt;br /&gt;
&lt;br /&gt;
Programming Practices&lt;br /&gt;
---------------------&lt;br /&gt;
The Pragmatic Programmer: From Journeyman to Master&lt;br /&gt;
Pragmatic Version control using git&lt;br /&gt;
Pragmatic Unit testing in Java with JUnit&lt;br /&gt;
Pragmatic Project Automation&lt;br /&gt;
Debug It&lt;br /&gt;
Ship it&lt;br /&gt;
Release it&lt;br /&gt;
&lt;br /&gt;
Learning Basic Web Frontend Development&lt;br /&gt;
---------------------------------------&lt;br /&gt;
Head First HTML with CSS &amp;amp; XHTML&lt;br /&gt;
Head First Javascript&lt;br /&gt;
Javascript the Good Parts&lt;br /&gt;
Stylin' with CSS: A Designer's Guide (2nd Edition)&lt;br /&gt;
Designing with Web Standards by Jeffrey Zeldman and Ethan Marcotte&lt;br /&gt;
Web Design for Developers: A Programmer's Guide to Design Tools and Techniques by Brian P. Hogan&lt;br /&gt;
Eric Meyer on CSS: Mastering the Language of Web Design by Eric Meyer&lt;br /&gt;
JQuery in Action by Bear Bibeault and Yehuda Katz&lt;br /&gt;
Handcrafted CSS by Dan Cederholm with Ethan Marcotte&lt;br /&gt;
&lt;br /&gt;
Learning Swing Frontend Development&lt;br /&gt;
-----------------------------------&lt;br /&gt;
Desktop Java Live&lt;br /&gt;
Swing Second Edition&lt;br /&gt;
Java Swing&lt;br /&gt;
&lt;br /&gt;
Mastering Software Development&lt;br /&gt;
------------------------------&lt;br /&gt;
Head First Object-Oriented Analysis and Design&lt;br /&gt;
Head First Design Patterns&lt;br /&gt;
Code Complete: A practical handbook of Software Construction&lt;br /&gt;
Clean Code: A Handbook of Agile Software Craftsmanship&lt;br /&gt;
Program Development in Java&lt;br /&gt;
The Elements of Java(TM) Style&lt;br /&gt;
Effective Java&lt;br /&gt;
Practical Java&lt;br /&gt;
Design Patterns: Elements of Reusable Object-Oriented Software&lt;br /&gt;
Patterns of Enterprise Application Architecture&lt;br /&gt;
Domain-Driven Design&lt;br /&gt;
Refactoring: Improving the Design of Existing Code&lt;br /&gt;
Refactoring to Patterns&lt;br /&gt;
SQL Anti-patterns&lt;br /&gt;
Modular Java&lt;br /&gt;
Growing Object-Oriented Software Guided by Tests&lt;br /&gt;
Holub on Patterns:Learning Design Patterns by Looking at Code&lt;br /&gt;
Test Driven Development by Kent Beck&lt;br /&gt;
XUnit Test Patterns - Refactoring Test Code by Gerard Meszaros&lt;br /&gt;
Concurrency Practice in Java&lt;br /&gt;
Java Generics and Collections&lt;br /&gt;
Java Performance&lt;br /&gt;
Java Puzzlers&lt;br /&gt;
&lt;br /&gt;
Methodology and Management&lt;br /&gt;
--------------------------&lt;br /&gt;
UML Distilled, 2nd Edition&lt;br /&gt;
Extreme Programming Explained&lt;br /&gt;
The Unified Software Development Process&lt;br /&gt;
Rapid Development: Taming Wild Software Schedules&lt;br /&gt;
Peopleware: Productive Projects and Teams&lt;br /&gt;
The Mythical Man-Month&lt;br /&gt;
Software Runaways: Monumental Software Disasters&lt;br /&gt;
Software Creativity&lt;br /&gt;
Agile Estimating and Planning by Mike Cohn&lt;br /&gt;
Agile Software Development, Principles, Patterns, and Practices by Robert (Bob) C. Martin&lt;br /&gt;
Agile Retrospectives: Making Good Teams Great by Esther Derby, Diana Larsen, and Ken Schwaber&lt;br /&gt;
Succeeding with Agile: Software Development Using Scrum by Mike Cohn&lt;br /&gt;
Agile Testing: A Practical Guide for Testers and Agile Teams by Lisa Crispin and Janet Gregory&lt;br /&gt;
Extreme Programming Installed by Ron Jeffries, Ann Anderson, and Chet Hendrickson&lt;br /&gt;
Behind Closed Doors: Secrets of Great Management by Johanna Rothman, and Esther Derby&lt;br /&gt;
Leading Lean Software Development: Results Are Not the Point by Mary and Tom Poppendieck&lt;br /&gt;
Lean-Agile Software Development: Achieving Enterprise Agility by Alan Shalloway, Guy Beaver, and James R. Trott&lt;br /&gt;
The Art of Agile Development by James Shore and Shane Warden&lt;br /&gt;
&lt;br /&gt;
Mastering Groovy and Grails&lt;br /&gt;
---------------------------&lt;br /&gt;
Groovy in Action&lt;br /&gt;
The Definitive Guide to Grails&lt;br /&gt;
Grails in Action&lt;br /&gt;
Groovy Recipes&lt;br /&gt;
Programming Groovy&lt;br /&gt;
&lt;br /&gt;
Mastering Web Design&lt;br /&gt;
--------------------&lt;br /&gt;
Web Design for Developers&lt;br /&gt;
Head First Web Design&lt;br /&gt;
Designing Web Usability&lt;br /&gt;
&lt;br /&gt;
Mastering User Interface Design&lt;br /&gt;
-------------------------------&lt;br /&gt;
User Interface Design for Programmers&lt;br /&gt;
Don't Make me Think&lt;br /&gt;
About Face: The Essentials of User Interface Design&lt;br /&gt;
Design of Everyday Things&lt;br /&gt;
The Non-Designer's Design Book&lt;br /&gt;
&lt;br /&gt;
Mastering Hardcore Stuff&lt;br /&gt;
------------------------&lt;br /&gt;
Code: The Hidden Language of Computer Hardware and Software by Charles Petzold&lt;br /&gt;
The C Programming Language&lt;br /&gt;
Structure and Interpretation of Computer Programs&lt;br /&gt;
Introduction to Algorithms by CLRS (Cormen,Leiserson,Rivest,Stein)&lt;br /&gt;
Compilers: Principles, Techniques and Tools&lt;br /&gt;
Test Driven Development for Embedded C&lt;br /&gt;
The Art of Computer Programming&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
- Head First Java&lt;br /&gt;
- Head First Object Oriented Analysis and Design&lt;br /&gt;
- Head First Design Patterns&lt;br /&gt;
- Effective Java&lt;br /&gt;
- Concurrency Practice in Java&lt;br /&gt;
- Java Generics and Collections&lt;br /&gt;
- Java Performance&lt;br /&gt;
- Java Puzzlers&lt;br /&gt;
- Thinking in Java&lt;br /&gt;
- Clean Code&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You are also welcome to &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via reader&lt;/a&gt; to get updates.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>Trying Ubuntu 12.04LTS Precise Pangolin</title><link>http://blog.henyo.com/2012/04/trying-ubuntu-1204lts-precise-pangolin.html</link><category>Software Development</category><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Tue, 3 Apr 2012 20:01:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-2706185453487712423</guid><description>I migrated my desktop from Ubuntu 10.04LTS to Ubuntu 12.04LTS.&lt;br /&gt;
&lt;br /&gt;
A few things I needed to add after installation:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Chromium as my default browser&lt;/li&gt;
&lt;li&gt;adobe-flash to be able to play flash games on facebook&lt;/li&gt;
&lt;li&gt;openjdk-6-jdk for work stuff&lt;/li&gt;
&lt;li&gt;icedtea-plugin to be able to run charting applet on citisec&lt;/li&gt;
&lt;li&gt;pidgin for messaging&lt;/li&gt;
&lt;li&gt;git for more work&lt;/li&gt;
&lt;li&gt;smartgit for routine pushing and comitting to git repos&lt;/li&gt;
&lt;li&gt;smartsvn for routine pushing and comitting to git repos&lt;/li&gt;
&lt;li&gt;STS for work stuff&lt;/li&gt;
&lt;li&gt;DB Visualizer for work stuff&lt;/li&gt;
&lt;li&gt;Virtual Box for desktop virtualization&lt;/li&gt;
&lt;li&gt;Dia for diagramming&lt;/li&gt;
&lt;li&gt;synergy to share one keyboard between my desktop and laptop&lt;/li&gt;
&lt;li&gt;dropbox for personal file sharing&lt;/li&gt;
&lt;li&gt;pencil for mockups&lt;/li&gt;
&lt;li&gt;smplayer for watching videos&lt;/li&gt;
&lt;li&gt;vlc for videos that do not work with smplayer&lt;/li&gt;
&lt;li&gt;git gui for simple git commits&lt;/li&gt;
&lt;li&gt;myqsl-server for development work&lt;/li&gt;
&lt;li&gt;mysql workbench for managing mysql database&lt;/li&gt;
&lt;li&gt;postgresql for development work&lt;/li&gt;
&lt;li&gt;pgadmin for managing postgres database&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Should I be replacing stuff on the list with something else? What other stuff have I forgotten to install?&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Protecting ProxmoxVE VMs with IPCop on KVM</title><link>http://blog.henyo.com/2012/04/protecting-proxmoxve-vms-with-ipcop-on.html</link><category>ProxmoxVE</category><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 2 Apr 2012 22:35:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-4176853251874094401</guid><description>I found out a few weeks ago that protecting openvz virtual machines running ubuntu was a bit problematic as I was unable to run UFW on them.&lt;br /&gt;
&lt;br /&gt;
I was able to setup IPCop v2.04 on KVM which will act as a virtual firewall for all of the virtual machines in our ProxmoxVE 2.0 cluster&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Building a good Software Startup</title><link>http://blog.henyo.com/2012/03/building-good-software-startup.html</link><category>Software Development</category><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Thu, 29 Mar 2012 19:50:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-3652445340305485282</guid><description>If I were to build a good software startup today, I'd run with the following ideas.&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Hire only good people who get things DONE.&lt;br /&gt;
Even if they are more expensive in terms of compensation. &lt;br /&gt;
Quality trumps numbers. No doubt about it.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Development Team&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;1 Lead Developer&lt;/li&gt;
&lt;li&gt;1 Senior Developer&lt;/li&gt;
&lt;li&gt;2 Junior Developers&lt;/li&gt;
&lt;li&gt;2 Business Analyst/QA&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Operations Team&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;1 Lead Systems Admin&lt;/li&gt;
&lt;li&gt;1 Senior System Admin&lt;/li&gt;
&lt;li&gt;6 Junior System Admins&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Give your team a quiet working environment with ergonomic furniture and equipment&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;Give your team good internet connection&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;the faster they can download their installers, the earlier they can start working on code&lt;/li&gt;
&lt;li&gt;the faster they can look up the solution on google or stackoverflow, the faster they can proceed to the next problem&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Give your team good computer hardware&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;at least dual core processors with virtualization support&lt;/li&gt;
&lt;li&gt;at least 8GB memory&lt;/li&gt;
&lt;li&gt;at least 2 hard drives for mirror setup&lt;/li&gt;
&lt;li&gt;at least 2 screens&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Make sure to have enough environments to test, deploy and support the system properly.&lt;/b&gt;&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Development Environment&lt;/li&gt;
&lt;li&gt;Staging Environment&lt;/li&gt;
&lt;li&gt;Support Environment&lt;/li&gt;
&lt;li&gt;Production Environment&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;b&gt;Make use of Free or Open Source systems to manage the development process.&lt;br /&gt;
Buy a commercial product only if you can't find a solution that fits.&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Project/Issue Tracking with Source Code Management Options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Indefero&lt;/li&gt;
&lt;li&gt;Gitorious&lt;/li&gt;
&lt;li&gt;Gitlab&lt;/li&gt;
&lt;li&gt;Redmine+gitolite&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Continuous Integration Server Options:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Jenkins&lt;/li&gt;
&lt;li&gt;Team City&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Code Quality:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;Sonar&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
Setup google apps for for email, calendar and other stuff&lt;br /&gt;
&lt;br /&gt;
As an example, here is how I would set it up on three physical servers:&lt;br /&gt;
&lt;br /&gt;
Server#1 running ProxmoxVE&lt;br /&gt;
- Firewall/Proxy Server/Package Cache(apt,yum,mvn) VM&lt;br /&gt;
- Redmine+gitolite VM&lt;br /&gt;
- Jenkins VM&lt;br /&gt;
- Sonar VM&lt;br /&gt;
- NFS/Samba Server VM&lt;br /&gt;
&lt;br /&gt;
Server#2 running ProxmoxVE&lt;br /&gt;
- Development Environment VM&lt;br /&gt;
- Staging Environment VM&lt;br /&gt;
- Support Environment VM&lt;br /&gt;
&lt;br /&gt;
Server#3 for storage of backups&lt;br /&gt;
- nexentastor or freenas or centos+zfsonlinux&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ProxmoxVE 2: Configuring DRBD</title><link>http://blog.henyo.com/2012/03/proxmoxve-2-configuring-drbd.html</link><category>ProxmoxVE</category><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 28 Mar 2012 14:28:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-6147164348671522484</guid><description>I am running ProxmoxVE 2.0-35/d07f49c3 on two nodes connected using a cross cable on gigabit nics.&lt;br /&gt;
host1 ip: 10.0.10.201&lt;br /&gt;
host2 ip: 10.0.10.202&lt;br /&gt;
&lt;br /&gt;
Check if drbd module is available&lt;br /&gt;
&lt;pre class="code"&gt;modprobe -l | grep drbd
&lt;/pre&gt;Check if drbd module is loaded&lt;br /&gt;
&lt;pre class="code"&gt;lsmod | grep drbd
&lt;/pre&gt;If not, load it with&lt;br /&gt;
&lt;pre class="code"&gt;modprobe -v drbd
&lt;/pre&gt;Check the module version&lt;br /&gt;
&lt;pre class="code"&gt;modinfo drbd | grep version
&lt;/pre&gt;I installed the appropriate drbd8-utils package on both nodes&lt;br /&gt;
&lt;pre class="code"&gt;dpkg -i drbd8-utils_8.3.10-0_amd64.deb
&lt;/pre&gt;I built my own deb from source. You can find my build &lt;a href="https://sites.google.com/site/henyotech/drbd8-utils_8.3.10-0_amd64.deb"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I shrank the data volume on both of &lt;br /&gt;
I made use of the extents I freed up by &lt;a href="http://blog.henyo.com/2012/03/proxmoxve-20-shrinking-data-volume.html"&gt;shrinking the data volume&lt;/a&gt; to create an lvm volume that will be used for drbd. &lt;br /&gt;
&lt;pre class="code"&gt;lvcreate --verbose --extents 50000 --name lv4drbd pve
&lt;/pre&gt;Next I modified /etc/drbd.d/global_common.conf so that it only contains:&lt;br /&gt;
&lt;pre class="code"&gt;global {
    usage-count no;
}
common {
    protocol C;
    syncer {
        rate 30M; 
    }
}
&lt;/pre&gt;Next I created a new resouce file /etc/drbd.d/drbd0.res&lt;br /&gt;
&lt;pre class="code"&gt;resource drbd0 {
    protocol C;
    startup {
        wfc-timeout  0;
        degr-wfc-timeout 60;
        become-primary-on both;
    }
    net {
        cram-hmac-alg sha1;
        shared-secret "drbd0-secret";
        allow-two-primaries;
        after-sb-0pri discard-zero-changes;
        after-sb-1pri discard-secondary;
        after-sb-2pri disconnect;
    }
    on host1 {
        device /dev/drbd0;
        disk /dev/pve/lv4drbd;
        address 10.0.10.201:7780;
        meta-disk internal;
    }
    on host2 {
        device /dev/drbd0;
        disk /dev/pve/lv4drbd;
        address 10.0.10.202:7780;
        meta-disk internal;
    }
}
&lt;/pre&gt;I added the IP address of the other host into each of the /etc/hosts files.&lt;br /&gt;
&lt;br /&gt;
Next I started drbd on both nodes with&lt;br /&gt;
&lt;pre class="code"&gt;/etc/init.d/drbd start
&lt;/pre&gt;I then initialized drbd metatdata on both nodes with&lt;br /&gt;
&lt;pre class="code"&gt;drbdadm create-md drbd0
&lt;/pre&gt;Next I brought up the device on both nodes with&lt;br /&gt;
&lt;pre class="code"&gt;drbdadm up drbd0
&lt;/pre&gt;I checked the status on both nodes with&lt;br /&gt;
&lt;pre class="code"&gt;drbd-overview
&lt;/pre&gt;Next I started synchronization(should be instantaneous) from one node with&lt;br /&gt;
&lt;pre class="code"&gt;drbdadm -- --clear-bitmap new-current-uuid drbd0
&lt;/pre&gt;Lastly, I restarted the drbd service on both nodes to enable Primary/Primary operation&lt;br /&gt;
&lt;pre class="code"&gt;/etc/init.d/drbd stop
/etc/init.d/drbd start
&lt;/pre&gt;&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ProxmoxVE 2.0: Shrinking the data volume</title><link>http://blog.henyo.com/2012/03/proxmoxve-20-shrinking-data-volume.html</link><category>ProxmoxVE</category><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 28 Mar 2012 12:00:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-2202410991099581747</guid><description>After installing ProxmoxVE 2.0rc1, a data volume was created which makes use of most of the space on the drive.&lt;br /&gt;
&lt;br /&gt;
I wanted to carve out a separate volume for some other use so I needed to shrink this data volume:&lt;br /&gt;
&lt;br /&gt;
First, I unmounted the logical volume with:&lt;br /&gt;
&lt;pre class="code"&gt;umount /var/lib/vz
&lt;/pre&gt;Then I proceeded to shrink the file system to the minimum size possible with:&lt;br /&gt;
&lt;pre class="code"&gt;resize2fs -Mf /dev/pve/data
&lt;/pre&gt;Then I proceeded to reduce the size of the logical volume with:&lt;br /&gt;
&lt;pre class="code"&gt;lvreduce --verbose --extents -100000 /dev/pve/data
&lt;/pre&gt;Then I proceeded to grow the file system back to occupy the now reduced volume with:&lt;br /&gt;
&lt;pre class="code"&gt;resize2fs -f /dev/pve/data
&lt;/pre&gt;Lastly, I remounted the file system with:&lt;br /&gt;
&lt;pre class="code"&gt;mount /dev/pve/data /var/lib/vz
&lt;/pre&gt;&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>FizzBuzz in Javascript</title><link>http://blog.henyo.com/2012/03/fizzbuzz-in-javascript.html</link><category>Software Development</category><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 26 Mar 2012 20:06:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-9044863488455345289</guid><description>Joel and company probably won't hire me since he only gets rockstar developers but here is my attempt at FizzBuzz&lt;br /&gt;
&lt;pre class="code"&gt;&amp;lt;script&gt;
    for(var i=1;i&lt;=100;i++){
        if(i%3 != 0  &amp;&amp; i%5 != 0)
            document.write(i);
        if(i%3 == 0)
            document.write('Fizz');            
        if(i%5 == 0)
            document.write('Buzz');                    
        document.write(' ');
    } //end for loop
&amp;lt;/script&gt;
&lt;/pre&gt;I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">1</thr:total></item><item><title>dailyLooper bash script</title><link>http://blog.henyo.com/2012/03/dailylooper-bash-script.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Fri, 23 Mar 2012 21:37:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-2325199423504804689</guid><description>&lt;br /&gt;
We needed to regenerate some data for the data warehouse so I had to run an extraction script once for each day of the month.&lt;br /&gt;
&lt;br /&gt;
I wrote a simple bash script to make it easier to run a command or other scripts once for every day of a target month and year.&lt;br /&gt;
&lt;br /&gt;
Code can be found below but may also be downloaded from &lt;a href="https://sites.google.com/site/henyotech/dailyLooper.sh"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
&lt;pre class="code"&gt;#!/bin/bash
usage(){
    echo "Usage: dailyLooper &amp;lt;year&gt; &amp;lt;month&gt; &amp;lt;script to run&gt;"
    echo "Each date in the given month will be passed into the script in yyyy-mm-dd format"
}


CURRENT_MONTH=$(date +%m)
TARGET_YEAR=$1
TARGET_MONTH=$2

if [ "$#" -lt 3 ]; then
    usage
    exit 1
fi

if [ "$3" = "" ]; then
    SCRIPT="echo"
else
    SCRIPT=$3    
fi

#returns the date yesterday if target month is the current month
#otherwise returns the last date for the target month
lastDayOfMonth(){
    local _year=$1
    local _month=$2   
    if [ $_month -lt $CURRENT_MONTH ]; then
        echo $(date -d "${TARGET_YEAR}-${TARGET_MONTH}-01 + 1 month - 1 day" +%d)
    else
        echo $(date -d "yesterday" +%d)
    fi    
}


main(){
    local _lastDay=$(lastDayOfMonth $TARGET_YEAR $TARGET_MONTH)
    i=1
    while [ "$i" -le $_lastDay ]
    do
        local _date=$(date -d "${TARGET_YEAR}-${TARGET_MONTH}-${i}" +%Y-%m-%d)
        $SCRIPT $_date
        ((i++))
    done #end day of month loop
}

main
&lt;/pre&gt;&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Cheap and Safe File Storage on Linux</title><link>http://blog.henyo.com/2012/03/cheap-and-safe-file-storage-on-linux.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Tue, 20 Mar 2012 20:25:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-723208128123987260</guid><description>&lt;br /&gt;
I needed to setup a Samba file server using off the shelf desktop components. &lt;br /&gt;
It will be used in a small office with 5-10 clients. &lt;br /&gt;
&lt;br /&gt;
Here are the relevant hardware specs:&lt;br /&gt;
Processor: i7&lt;br /&gt;
Memory: 16GB&lt;br /&gt;
Drives: 4 x 1TB sata drives&lt;br /&gt;
OS Installed: Ubuntu Sever 10.04LTS&lt;br /&gt;
&lt;br /&gt;
The primary requirement is for the files to be fairly safe i.e. if the server crashes in the middle of saving a file then on restart, the file should return to the consistent state before the save operation. Performance is secondary to safety.&lt;br /&gt;
&lt;br /&gt;
My initial plan was to use one drive for the OS and configure 3 drives in an mdraid level 5. After some research, I came across several references that state that mdraid level 10 works on odd numbered drives. It will work on 3 drives and even on 2. This looked like something I should try. I then had to decide what filesystem to use. I initially wanted to use xfs as I've heard and read a lot of good things about it. &lt;br /&gt;
&lt;br /&gt;
After studying how to setup both mdraid and xfs, I started a thread on the linux-raid mailing list asking for best practice guidelines and &lt;a href="http://www.spinics.net/lists/raid/msg37884.html"&gt;guidance on using xfs with mdraid 10n2&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
Several days of additional research guided by the comments on the mailing list thread resulted in a lot of learnings for me:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;raid10n2 really works on 3 drives, I had my doubts at first but now I finally get how it can work with just three drives&lt;/li&gt;
&lt;li&gt;drive sector size can be either 512b or 4k which can lead to mis-aligned partitions and have a negative impact on performance&lt;/li&gt;
&lt;li&gt;ext4 provides the option: data=journal which makes it safer than xfs at the cost of some performance&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
The table below shows the average of the benchmark results I got. Yes, I know bonnie++ only tests sequential write/rewrite/read and some file operations and is not necessarily representative of the workload but IMHO, it is better than nothing. This was how things were setup for the benchmark:&lt;br /&gt;
&lt;ul&gt;&lt;li&gt;a 50GB primary partition was created on each device located 1GB from the start of the disk for partition alignment&lt;/li&gt;
&lt;li&gt;the md raid device is created on top of the primary partition created on each device&lt;/li&gt;
&lt;li&gt;the chunk was set to 64k&lt;/li&gt;
&lt;li&gt;the results below are for raid5 and raid10n2 only but I also tried raid10f2 and raid10n2&lt;/li&gt;
&lt;li&gt;raid 10f2 had better read performance but slower write compared to raid 10n2&lt;/li&gt;
&lt;li&gt;raid 10o2 performed quite closely to raid 10n2&lt;/li&gt;
&lt;li&gt;the benchmark was run three times and the average was taken&lt;/li&gt;
&lt;/ul&gt;&lt;br /&gt;
&lt;table style="text-align: left; margin-left: auto; margin-right: auto;"
border="1" cellpadding="3" cellspacing="0"&gt;&lt;tbody&gt;
&lt;tr&gt; &lt;td colspan="2" class="header"&gt;&lt;b&gt;Bonnie 1.96&lt;/b&gt;&lt;/td&gt; &lt;td colspan="4" class="header"&gt;&lt;b&gt;Sequential Output&lt;/b&gt;&lt;/td&gt; &lt;td colspan="2" class="header"&gt;&lt;b&gt;Sequential Input&lt;/b&gt;&lt;/td&gt; &lt;td colspan="2" rowspan="2" class="header"&gt;&lt;b&gt;Random&lt;br /&gt;
&lt;br /&gt;
Seeks&lt;/b&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td&gt;64k chunk&lt;/td&gt; &lt;td&gt;Size&lt;/td&gt; &lt;td colspan="2"&gt;Block&lt;/td&gt; &lt;td colspan="2"&gt;Rewrite&lt;/td&gt; &lt;td colspan="2"&gt;Block&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td colspan="2"&gt;ext4/mdraid&lt;br /&gt;
&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;K/sec&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;% CPU&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;K/sec&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;% CPU&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;K/sec&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;% CPU&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;/sec&lt;/font&gt;&lt;/td&gt; &lt;td class="ksec"&gt;&lt;font size="-2"&gt;% CPU&lt;/font&gt;&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td class="rowheader" bgcolor="#ffffff"&gt;raid5&lt;br /&gt;
data=ordered&lt;/td&gt; &lt;td class="size" bgcolor="#ffffff"&gt;32G&lt;/td&gt; &lt;td bgcolor="#00ff00"&gt;144430&lt;/td&gt; &lt;td bgcolor="#24db00"&gt;11&lt;/td&gt; &lt;td bgcolor="#07f800"&gt;68725&lt;/td&gt; &lt;td bgcolor="#28d700"&gt;9.67&lt;/td&gt; &lt;td bgcolor="#807f00"&gt;249364&lt;/td&gt; &lt;td bgcolor="#7c8300"&gt;21&lt;/td&gt; &lt;td bgcolor="#cc3300"&gt;280.33&lt;/td&gt; &lt;td bgcolor="#ce3100"&gt;9.33&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td class="rowheader" bgcolor="#ffffff"&gt;raid5&lt;br /&gt;
data=journal&lt;/td&gt; &lt;td class="size" bgcolor="#ffffff"&gt;32G&lt;/td&gt; &lt;td bgcolor="#ff0000"&gt;25077&lt;/td&gt; &lt;td bgcolor="#ff0000"&gt;4.67&lt;/td&gt; &lt;td bgcolor="#ff0000"&gt;21605&lt;/td&gt; &lt;td bgcolor="#e51a00"&gt;5&lt;/td&gt; &lt;td bgcolor="#649b00"&gt;267283&lt;/td&gt; &lt;td bgcolor="#798600"&gt;22.33&lt;/td&gt; &lt;td bgcolor="#be4100"&gt;293.67&lt;/td&gt; &lt;td bgcolor="#1ce300"&gt;6&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td class="rowheader" bgcolor="#ffffff"&gt;raid10n2&lt;br /&gt;
data=ordered&lt;/td&gt; &lt;td class="size" bgcolor="#ffffff"&gt;32G&lt;/td&gt; &lt;td bgcolor="#10ef00"&gt;137365&lt;/td&gt; &lt;td bgcolor="#00ff00"&gt;8&lt;/td&gt; &lt;td bgcolor="#00ff00"&gt;69940&lt;/td&gt; &lt;td bgcolor="#0ef100"&gt;9&lt;/td&gt; &lt;td bgcolor="#bd4200"&gt;209180&lt;/td&gt; &lt;td bgcolor="#59a600"&gt;16&lt;/td&gt; &lt;td bgcolor="#708f00"&gt;365.03&lt;/td&gt; &lt;td bgcolor="#bc4300"&gt;11.67&lt;/td&gt; &lt;/tr&gt;
&lt;tr&gt; &lt;td class="rowheader" bgcolor="#ffffff"&gt;raid10n2&lt;br /&gt;
data=journal&lt;/td&gt; &lt;td class="size" bgcolor="#ffffff"&gt;32G&lt;/td&gt; &lt;td bgcolor="#bd4200"&gt;56249&lt;/td&gt; &lt;td bgcolor="#619e00"&gt;6&lt;/td&gt; &lt;td bgcolor="#ac5300"&gt;37491&lt;/td&gt; &lt;td bgcolor="#50af00"&gt;6&lt;/td&gt; &lt;td bgcolor="#c13e00"&gt;206548&lt;/td&gt; &lt;td bgcolor="#5ea100"&gt;16&lt;/td&gt; &lt;td bgcolor="#56a900"&gt;389.00&lt;/td&gt; &lt;td bgcolor="#1ee100"&gt;8&lt;/td&gt; &lt;/tr&gt;
&lt;/tbody&gt; &lt;/table&gt;&lt;br /&gt;
For those interested, you can find/get the script I used &lt;a href="https://sites.google.com/site/henyotech/raid-tester.sh"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I modified this &lt;a href="http://louwrentius.com/files/raid-tester.sh"&gt;script&lt;/a&gt; to run my tests.&lt;br /&gt;
&lt;br /&gt;
You can find the raw results &lt;a href="https://sites.google.com/site/henyotech/raid-test.log"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
You can also find the debug info &lt;a href="https://sites.google.com/site/henyotech/raid-test-debug.log"&gt;here&lt;/a&gt;.&lt;br /&gt;
&lt;br /&gt;
I am considering re-running the tests but this time with iozone instead of bonnie++ so that I can get scores for random read and write.&lt;br /&gt;
&lt;br /&gt;
Next, I plan to do pull-the-plug testing on ext4,data=journal on top of raid10n2 while doing streaming writes of a huge file over samba. I plan to use 2 different video files greater than 3GB. First  I will copy file1 to the samba share and time it. I will then compute a checksum for file1 both locally and on the samba server. The computed checksum should be equal. Next, I will compute a checksum for file2 locally. It should be different from the value computed for file1. I will then move file1 to another directory and rename file2 to the the same name as file1. I will then attempt to copy the new file1 to the samba server. Halfway into the copy, I will pull the plug of the samba server. Next I will restart the samba server and recompute the checksum of file1. It should still be equal to the computed copy before.&lt;br /&gt;
&lt;br /&gt;
If the system behaves as expected, I will go with ext4,data=journal on top of raid10n2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total><enclosure length="2260" type="application/octet-stream" url="http://louwrentius.com/files/raid-tester.sh"/><itunes:explicit>no</itunes:explicit><itunes:subtitle>I needed to setup a Samba file server using off the shelf desktop components. It will be used in a small office with 5-10 clients. Here are the relevant hardware specs: Processor: i7 Memory: 16GB Drives: 4 x 1TB sata drives OS Installed: Ubuntu Sever 10.04LTS The primary requirement is for the files to be fairly safe i.e. if the server crashes in the middle of saving a file then on restart, the file should return to the consistent state before the save operation. Performance is secondary to safety. My initial plan was to use one drive for the OS and configure 3 drives in an mdraid level 5. After some research, I came across several references that state that mdraid level 10 works on odd numbered drives. It will work on 3 drives and even on 2. This looked like something I should try. I then had to decide what filesystem to use. I initially wanted to use xfs as I've heard and read a lot of good things about it. After studying how to setup both mdraid and xfs, I started a thread on the linux-raid mailing list asking for best practice guidelines and guidance on using xfs with mdraid 10n2. Several days of additional research guided by the comments on the mailing list thread resulted in a lot of learnings for me: raid10n2 really works on 3 drives, I had my doubts at first but now I finally get how it can work with just three drives drive sector size can be either 512b or 4k which can lead to mis-aligned partitions and have a negative impact on performance ext4 provides the option: data=journal which makes it safer than xfs at the cost of some performance The table below shows the average of the benchmark results I got. Yes, I know bonnie++ only tests sequential write/rewrite/read and some file operations and is not necessarily representative of the workload but IMHO, it is better than nothing. This was how things were setup for the benchmark: a 50GB primary partition was created on each device located 1GB from the start of the disk for partition alignment the md raid device is created on top of the primary partition created on each device the chunk was set to 64k the results below are for raid5 and raid10n2 only but I also tried raid10f2 and raid10n2 raid 10f2 had better read performance but slower write compared to raid 10n2 raid 10o2 performed quite closely to raid 10n2 the benchmark was run three times and the average was taken Bonnie 1.96 Sequential Output Sequential Input Random Seeks 64k chunk Size Block Rewrite Block ext4/mdraid K/sec % CPU K/sec % CPU K/sec % CPU /sec % CPU raid5 data=ordered 32G 144430 11 68725 9.67 249364 21 280.33 9.33 raid5 data=journal 32G 25077 4.67 21605 5 267283 22.33 293.67 6 raid10n2 data=ordered 32G 137365 8 69940 9 209180 16 365.03 11.67 raid10n2 data=journal 32G 56249 6 37491 6 206548 16 389.00 8 For those interested, you can find/get the script I used here. I modified this script to run my tests. You can find the raw results here. You can also find the debug info here. I am considering re-running the tests but this time with iozone instead of bonnie++ so that I can get scores for random read and write. Next, I plan to do pull-the-plug testing on ext4,data=journal on top of raid10n2 while doing streaming writes of a huge file over samba. I plan to use 2 different video files greater than 3GB. First I will copy file1 to the samba share and time it. I will then compute a checksum for file1 both locally and on the samba server. The computed checksum should be equal. Next, I will compute a checksum for file2 locally. It should be different from the value computed for file1. I will then move file1 to another directory and rename file2 to the the same name as file1. I will then attempt to copy the new file1 to the samba server. Halfway into the copy, I will pull the plug of the samba server. Next I will restart the samba server and recompute the checksum of file1. It should still be equal to the computed copy before. If the system behaves as expected, I will go with ext4,data=journal on top of raid10n2. I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.</itunes:subtitle><itunes:author>noreply@blogger.com (henyojess)</itunes:author><itunes:summary>I needed to setup a Samba file server using off the shelf desktop components. It will be used in a small office with 5-10 clients. Here are the relevant hardware specs: Processor: i7 Memory: 16GB Drives: 4 x 1TB sata drives OS Installed: Ubuntu Sever 10.04LTS The primary requirement is for the files to be fairly safe i.e. if the server crashes in the middle of saving a file then on restart, the file should return to the consistent state before the save operation. Performance is secondary to safety. My initial plan was to use one drive for the OS and configure 3 drives in an mdraid level 5. After some research, I came across several references that state that mdraid level 10 works on odd numbered drives. It will work on 3 drives and even on 2. This looked like something I should try. I then had to decide what filesystem to use. I initially wanted to use xfs as I've heard and read a lot of good things about it. After studying how to setup both mdraid and xfs, I started a thread on the linux-raid mailing list asking for best practice guidelines and guidance on using xfs with mdraid 10n2. Several days of additional research guided by the comments on the mailing list thread resulted in a lot of learnings for me: raid10n2 really works on 3 drives, I had my doubts at first but now I finally get how it can work with just three drives drive sector size can be either 512b or 4k which can lead to mis-aligned partitions and have a negative impact on performance ext4 provides the option: data=journal which makes it safer than xfs at the cost of some performance The table below shows the average of the benchmark results I got. Yes, I know bonnie++ only tests sequential write/rewrite/read and some file operations and is not necessarily representative of the workload but IMHO, it is better than nothing. This was how things were setup for the benchmark: a 50GB primary partition was created on each device located 1GB from the start of the disk for partition alignment the md raid device is created on top of the primary partition created on each device the chunk was set to 64k the results below are for raid5 and raid10n2 only but I also tried raid10f2 and raid10n2 raid 10f2 had better read performance but slower write compared to raid 10n2 raid 10o2 performed quite closely to raid 10n2 the benchmark was run three times and the average was taken Bonnie 1.96 Sequential Output Sequential Input Random Seeks 64k chunk Size Block Rewrite Block ext4/mdraid K/sec % CPU K/sec % CPU K/sec % CPU /sec % CPU raid5 data=ordered 32G 144430 11 68725 9.67 249364 21 280.33 9.33 raid5 data=journal 32G 25077 4.67 21605 5 267283 22.33 293.67 6 raid10n2 data=ordered 32G 137365 8 69940 9 209180 16 365.03 11.67 raid10n2 data=journal 32G 56249 6 37491 6 206548 16 389.00 8 For those interested, you can find/get the script I used here. I modified this script to run my tests. You can find the raw results here. You can also find the debug info here. I am considering re-running the tests but this time with iozone instead of bonnie++ so that I can get scores for random read and write. Next, I plan to do pull-the-plug testing on ext4,data=journal on top of raid10n2 while doing streaming writes of a huge file over samba. I plan to use 2 different video files greater than 3GB. First I will copy file1 to the samba share and time it. I will then compute a checksum for file1 both locally and on the samba server. The computed checksum should be equal. Next, I will compute a checksum for file2 locally. It should be different from the value computed for file1. I will then move file1 to another directory and rename file2 to the the same name as file1. I will then attempt to copy the new file1 to the samba server. Halfway into the copy, I will pull the plug of the samba server. Next I will restart the samba server and recompute the checksum of file1. It should still be equal to the computed copy before. If the system behaves as expected, I will go with ext4,data=journal on top of raid10n2. I hope you found the post useful. You can subscribe via email or subscribe via a feed reader to get relevant updates from this blog. Have a nice day.</itunes:summary><itunes:keywords>System Administration, Ubuntu</itunes:keywords></item><item><title>Check disk write-caching</title><link>http://blog.henyo.com/2012/03/check-disk-write-caching.html</link><category>System Administration</category><category>Ubuntu</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 14 Mar 2012 21:08:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-6818844858065871276</guid><description>&lt;br /&gt;
I'm investigating the performance of file systems and found myself needing to check if write-caching was enabled for my disk.&lt;br /&gt;
&lt;pre class="code"&gt;hdparm -W /dev/sda
&lt;/pre&gt;To turn off write-caching, do&lt;br /&gt;
&lt;pre class="code"&gt;hdparm -W0 /dev/sda
&lt;/pre&gt;&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>Globe UnliAllTxt with PlaySMS</title><link>http://blog.henyo.com/2012/03/globe-unlialltxt-with-playsms.html</link><author>noreply@blogger.com (henyojess)</author><pubDate>Mon, 12 Mar 2012 16:15:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-1829427677039445706</guid><description>We are using PlaySMS on top of SMS Server Tools 3(http://smstools3.kekekasvi.com/index.php?p=) for our SMS gateway. &lt;br /&gt;
&lt;br /&gt;
We wanted to take advantage of the Unlimited All Text Promo of Globe. I couldn't get the USB modem to register for the promo. &lt;br /&gt;
&lt;br /&gt;
Registering thru a phone with the same SIM works. After reading the documentation of SMS Server Tools, I finally got it to work.&lt;br /&gt;
&lt;br /&gt;
First I had to set the correct SMSC for the modem.&lt;br /&gt;
&lt;pre class="code"&gt;smsc = 639170000130
&lt;/pre&gt;Next, I had to manually craft an SMS file that will be sent to the shorcode:8888.&lt;br /&gt;
&lt;pre class="code"&gt;To: s8888
Modem: GLOBE

UALLPLUS25
&lt;/pre&gt;I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item><item><title>ProxmoxVE 2.0rc1 Notes:Setup</title><link>http://blog.henyo.com/2012/03/proxmoxve-20rc1-notessetup.html</link><category>ProxmoxVE</category><category>System Administration</category><author>noreply@blogger.com (henyojess)</author><pubDate>Wed, 7 Mar 2012 22:18:00 +0800</pubDate><guid isPermaLink="false">tag:blogger.com,1999:blog-29593944.post-5226657062753480835</guid><description>This is Part#1 of a series of posts on my experience with Proxmox 2.0rc1.&lt;br /&gt;
&lt;br /&gt;
I was tasked to look for a suitable solution to build an internal cloud/virtualization infrastructure and I've decided to spend some time with &lt;a href="http://www.proxmox.com/"&gt;ProxmoxVE&lt;/a&gt; 2.0rc1.&lt;br /&gt;
&lt;br /&gt;
The list below is the hardware available to me:&lt;br /&gt;
2 desktop computers&lt;br /&gt;
Intel i3-530&lt;br /&gt;
4GB DDR3&lt;br /&gt;
1TB Hard drive&lt;br /&gt;
&lt;br /&gt;
Things I want to try:&lt;br /&gt;
- benchmark disk/file IO performance of host system&lt;br /&gt;
- benchmark dis/file IO performance of guest system&lt;br /&gt;
- openvz live migration&lt;br /&gt;
- kvm live migration&lt;br /&gt;
- HA storage for the VM using DRBD&lt;br /&gt;
- ProxmoxVE HA i.e. guest starting on secondary node when primary node goes down&lt;br /&gt;
- openvz ubuntu server 10.04LTS guest running tomcat6 on sun-java6-jdk&lt;br /&gt;
- kvm ubuntu server 10.04LTS guest running tomcat6 on sun-java6-jdk&lt;br /&gt;
&lt;br /&gt;
Installing ProxmoxVE 2.0rc1 on the hardware was fairly straight forward.&lt;br /&gt;
The installer took over the whole 1TB drive and partitioned it on its own.&lt;br /&gt;
&lt;br /&gt;
running &lt;b&gt;&lt;i&gt;fdisk -l /dev/sda &amp;&amp; df -Th&lt;/i&gt;&lt;/b&gt; revealed:&lt;br /&gt;
- /dev/sda1 is 495MB ext3 mounted on /boot&lt;br /&gt;
- dev/sda2 is 999.5GB LVM&lt;br /&gt;
&lt;br /&gt;
running &lt;b&gt;&lt;i&gt;pvscan &amp;&amp; vgscan&lt;/i&gt;&lt;/b&gt; revealed:&lt;br /&gt;
- /dev/sda2 was configured as an lvm2 physcial volume&lt;br /&gt;
- a volume group named pve was created by proxmox&lt;br /&gt;
&lt;br /&gt;
running &lt;b&gt;&lt;i&gt;lvscan &amp;&amp; mount&lt;/i&gt;&lt;/b&gt; revealed:&lt;br /&gt;
- a 4GB /dev/pve/swap volume was created for swap&lt;br /&gt;
- a 96GB /dev/pve/root ext3 volume mounted as the root file system&lt;br /&gt;
- a 899GB /dev/pve/data ext3 volume mounted on /var/lib/vz&lt;br /&gt;
&lt;br /&gt;
Next I updated ProxmoxVE 2.0rc1 which is Debian based.&lt;br /&gt;
The host is behind a proxy server so to update I ran:&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;export http_proxy=http://10.0.0.1:3128&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;b&gt;&lt;i&gt;apt-get update &amp;&amp; apt-get -y upgrade&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
I proceeded to install some useful tools:&lt;br /&gt;
&lt;b&gt;&lt;i&gt;apt-get install screen dstat&lt;/i&gt;&lt;/b&gt;&lt;br /&gt;
&lt;br /&gt;
Next, I configured NTP to sync to a time server on the local network&lt;br /&gt;
&lt;br /&gt;
Next I downloaded an openvz template for ubuntu 10.04LTS and proceeded to create and run a guest.&lt;br /&gt;
&lt;br /&gt;
I ran across an annoying bug while accessing the guest using the console. Tab completion was not working which made it difficult to work on the web console. I found a work around and made a separate post for the &lt;a href="http://blog.henyo.com/2012/03/proxmoxve-20rc1-web-console-tab-fix.html"&gt;web console tab fix&lt;/a&gt;&lt;br /&gt;
&lt;br /&gt;
Stay tuned for my next post in this series: Setting up DRBD backed storage even with just one hard disk&lt;br /&gt;
&lt;br /&gt;
I hope you found the post useful. You can &lt;a href="http://feedburner.google.com/fb/a/mailverify?uri=HenyoOnline&amp;amp;loc=en_US"&gt;subscribe via email&lt;/a&gt; or &lt;a href="http://feeds.feedburner.com/HenyoOnline"&gt;subscribe via a feed reader&lt;/a&gt; to get relevant updates from this blog. Have a nice day.</description><thr:total xmlns:thr="http://purl.org/syndication/thread/1.0">0</thr:total></item></channel></rss>