<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:blogger='http://schemas.google.com/blogger/2008' xmlns:georss='http://www.georss.org/georss' xmlns:gd="http://schemas.google.com/g/2005" xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-2115934724163203663</id><updated>2024-09-04T08:29:30.653-07:00</updated><category term="documentation"/><category term="linux dovecot"/><category term="linux p2v"/><title type='text'>linfactory, a dmourati Production</title><subtitle type='html'>Linux and Open Source articles, topics and discussion with your questions answered by dmourati, a Linux expert with over eight years production experience.</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default?alt=atom'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>11</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-5411550583939255190</id><published>2008-02-07T11:11:00.000-08:00</published><updated>2008-02-07T11:16:14.178-08:00</updated><title type='text'>7 Thunderbird Extensions will allow you to replace Outlook</title><content type='html'>Suseblog.com contained an interesting article called &lt;a href=&quot;http://www.suseblog.com/?p=308&quot;&gt;7 Thunderbird Extensions will allow you to replace Outlook&lt;/a&gt;.  Outlook is one of the worst pieces of junk I have ever had to use.  These tips really help.  Slowly but surely, I&#39;m freeing myself from the shackles of Microsoft in the workplace.&lt;br /&gt;&lt;br /&gt;For a way out of using Microsoft&#39;s Visio, check out &lt;a href=&quot;http://dmourati.blogspot.com/2008/01/introducing-gliffy.html&quot;&gt;Gliffy&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/5411550583939255190/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/5411550583939255190' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5411550583939255190'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5411550583939255190'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/02/7-thunderbird-extensions-will-allow-you.html' title='7 Thunderbird Extensions will allow you to replace Outlook'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-901908147042710844</id><published>2008-02-05T00:43:00.000-08:00</published><updated>2008-02-05T00:44:58.107-08:00</updated><title type='text'>Upgrading to RAID 1</title><content type='html'>Linuxconfig put together a great document on how to upgrade an existing system from a non-RAID setup to software RAID 1.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;http://www.linuxconfig.org/Linux_Software_Raid_1_Setup&quot;&gt;http://www.linuxconfig.org/Linux_Software_Raid_1_Setup&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/901908147042710844/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/901908147042710844' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/901908147042710844'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/901908147042710844'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/02/upgrading-to-raid-1.html' title='Upgrading to RAID 1'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-2734400108766859915</id><published>2008-01-30T21:33:00.000-08:00</published><updated>2008-01-30T22:27:25.477-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="documentation"/><title type='text'>Why Sysadmins Suck at Documentation</title><content type='html'>&lt;a onblur=&quot;try {parent.deselectBloggerImageGracefully();} catch(e) {}&quot; href=&quot;http://www.cartoonstock.com/newscartoons/cartoonists/rha/lowres/rhan196l.jpg&quot;&gt;&lt;img style=&quot;float:right; margin:0 0 10px 10px;cursor:pointer; cursor:hand;width: 400px;&quot; src=&quot;http://www.cartoonstock.com/newscartoons/cartoonists/rha/lowres/rhan196l.jpg&quot; border=&quot;0&quot; alt=&quot;&quot; /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;I just read an interesting post titled System Administration and Documentation at &lt;a href=&quot;http://www.canningbranch.com/?p=267&quot;&gt;The Branch&lt;/a&gt;.  Allen writes that documentation is missing from the standard identify, troubleshoot, resolve methodology applied by most sysadmins.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Sysadmins suck at documentation.  We can&#39;t be bothered.  We think documentation is beneath us.  We are the gatekeepers of information.  &lt;br /&gt;&lt;br /&gt;Want your application in the DMZ to be able to talk to the backend?  Better go see your sysadmin (or netadmin) because without them you are dead in the water.  &lt;br /&gt;&lt;br /&gt;&quot;Open a ticket!,&quot; we bark.&lt;br /&gt;&lt;br /&gt;Not writing documentation gives us power.  Power to hold over our users and our colleagues.  Job security.  Power to be needed.&lt;br /&gt;&lt;br /&gt;Without us, the workplace grinds to a halt.  Need a new user account?&lt;br /&gt;&lt;br /&gt;&quot;File a ticket, our sysadmin is out today.  He will get to it when he gets back from the conference.&quot;&lt;br /&gt;&lt;br /&gt;Hours go by, work piles up.  The ticket queue is now full with requests from the past days office absence.  &lt;br /&gt;&lt;br /&gt;&quot;Ha, all those users are hopeless without me.  Let&#39;s see who I&#39;ve kept waiting while I was enjoying my precious PTO.&quot;&lt;br /&gt;&lt;br /&gt;&quot;Hmm, Fran needs a new printer...low priority, she can wait.  James  can&#39;t get his application to talk though the firewall, what a loser.  Aha, here&#39;s one, install this new Wiki package for inline editting.  That sounds like fun, off I go working on that.  Where&#39;s that coffee?&quot;&lt;br /&gt;&lt;br /&gt;Meanwhile, Fran and James are stuck.  They are patient people, but they filed their issues yesterday, while we were out.  By lunchtime, they are wondering what is up.  If they are feeling up to it, they may swing by your office to &quot;get an update.&quot;  &lt;br /&gt;&lt;br /&gt;&quot;Update, you shout, ya, I&#39;m working on it.&quot;&lt;br /&gt;&lt;br /&gt;&quot;Okay, do you have any ETA, I&#39;m kinda stuck without that printer,&quot; Fran says.  &lt;br /&gt;&lt;br /&gt;&quot;I&#39;ll get to it.&quot;&lt;br /&gt;&lt;br /&gt;Meanwhile, more work piles in.  You&#39;re off in Wiki-land reading *gasp* documentation.  &lt;br /&gt;&lt;br /&gt;&quot;How do I install this plugin.  What version am I running, let&#39;s see.  Gosh, these developers suck, why couldn&#39;t they make this easier to follow...&quot;  &lt;br /&gt;&lt;br /&gt;By funneling all this work through us, we have succeeded in creating a log jam.  The work we find interesting is often time-consuming and often not time-critical.  This makes for a bad situation.  &lt;br /&gt;&lt;br /&gt;The users suffer.  They are stuck because we have taken away their ability to be productive.  Fran still needs that printer, James still needs connectivity.&lt;br /&gt;&lt;br /&gt;If any of the above scenarios sound familiar it is because they are true.  This is how things go in a real office.  What can we learn from this pattern?  What is the way out?  How can a guy take a day off without grinding things to a halt?&lt;br /&gt;&lt;br /&gt;Documentation.&lt;br /&gt;&lt;br /&gt;Organizations don&#39;t get very far with just one admin.  They usually add help over time to meet the growing needs.  This could be for IT, networking, security, systems administration, database administration or any related job description.  The point is, we are part of a larger team.  &lt;br /&gt;&lt;br /&gt;So, how do we leverage this team to make our lives easier.&lt;br /&gt;&lt;br /&gt;Documentation.&lt;br /&gt;&lt;br /&gt;Let&#39;s go back to the Wiki example and forget about Fran and James.  We&#39;ll come back to them. &lt;br /&gt;&lt;br /&gt;So, the trusty sysadmin has the time now to figure out all about the fancy Wiki upgrade he wants to make.  Download this plugin, check.  Note the version number, check, unzip the file, check.  Go to the page and try the new feature.  Hey, it works, cool done, right?&lt;br /&gt;&lt;br /&gt;Wrong.&lt;br /&gt;&lt;br /&gt;To be truly done you have to move the ball forward.&lt;br /&gt;&lt;br /&gt;What does that mean?&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;You have to make sure that the same task can be performed easier the next time.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;How do we do that?&lt;br /&gt;&lt;br /&gt;You guessed it, documentation.&lt;br /&gt;&lt;br /&gt;The irony was we were just mucking around in a Wiki.  What a perfect place to write down the steps on how we did the upgrade.  &lt;br /&gt;&lt;br /&gt;It can start out simple.  Just write down the steps.  This is a great start and will provide 80% of what you need.  (See the 80/20 rule for more info).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;But, how can we get it to 100%?  The answer is with more care.  We have to write down not only the what but the why.  Why are we installing this new feature?  Who needs it?  What are its benefits.&lt;br /&gt;&lt;br /&gt;The how is usually easier.  We can link to the Wiki where we downloaded the plugin.  We can copy/paste the instructions we used to unzip the file and the steps we took during installation.  We can link to our new page showing the newly installed functionality.&lt;br /&gt;&lt;br /&gt;What are the benefits of all this work?&lt;br /&gt;&lt;br /&gt;Allen touches on it when he talks about &quot;less experienced, and thus cheaper labor&quot; but misses the key word: &lt;br /&gt;&lt;br /&gt;Delegation.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Documentation enables delegation.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Solving a problem the first time is always the hardest.  If we take the time to write down what we&#39;ve done, we &lt;span style=&quot;font-weight:bold;&quot;&gt;create&lt;/span&gt; power through delegation.&lt;br /&gt;&lt;br /&gt;Now, back to Fran and her printer.&lt;br /&gt;&lt;br /&gt;Hers is not the first printer set up in this office is it?&lt;br /&gt;&lt;br /&gt;Of course not.&lt;br /&gt;&lt;br /&gt;Rewind back to day 1 when we setup the office.  What did we do to setup the printers?&lt;br /&gt;&lt;br /&gt;Well, something like this:&lt;br /&gt;&lt;br /&gt;Pick a model&lt;br /&gt;Give it a name&lt;br /&gt;Give it an IP address&lt;br /&gt;Set it up in the domain&lt;br /&gt;Add a share&lt;br /&gt;Install some drivers&lt;br /&gt;Test Print&lt;br /&gt;&lt;br /&gt;If we had written those steps down the first time around, we got 80% of what we need to delegate that task to the new IT guy or other team member.  Heck, even the DBA could setup a printer if given the right documentation.&lt;br /&gt;&lt;br /&gt;Over time, we fill in that 80% to get it to 100%.  Edit, link, re-write, clarify.  It will get there.  So the DBA couldn&#39;t quite get the printer setup correctly following your instructions?  You missed something.  &quot;Edit the wiki, you tell him.&quot;  That grows the documentation and makes it that much easer for the next printer, and the next one.  &lt;br /&gt;&lt;br /&gt;In the end game, Fran may be the one setting up her printer herself.  How cool is that?  Self service.  &lt;br /&gt;&lt;br /&gt;Same thing goes for James and his firewall issue.  This was not the first firewall change made in the company history.  No, someone in some back room somewhere banged out many a cryptic invocation to make that firewall do their bidding for their own needs.  It has happened many times.  &lt;br /&gt;&lt;br /&gt;Is there documentation on that?&lt;br /&gt;&lt;br /&gt;Probably not.&lt;br /&gt;&lt;br /&gt;&quot;Security considerations!,&quot; your firewall guy will chime.  I don&#39;t trust anyone else making these changes so I&#39;m not writing anything down for you guys.  This is simplemindedness.  Allen also brings up my favorite scenario, &quot;getting hit by the proverbial bus.&quot;  So, what happens what that indispensable firewall guy doesn&#39;t show up to work tomorrow?&lt;br /&gt;&lt;br /&gt;With a little bit of coaching, the IT guy, DBA, sysadmin, or whoever else can make that change and James can be on his way.&lt;br /&gt;&lt;br /&gt;Let&#39;s tackle self-service on the firewall another day though.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/2734400108766859915/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/2734400108766859915' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/2734400108766859915'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/2734400108766859915'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/01/why-sysadmins-suck-at-documentation.html' title='Why Sysadmins Suck at Documentation'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-1981581785965594600</id><published>2008-01-30T11:50:00.000-08:00</published><updated>2008-01-30T11:51:21.147-08:00</updated><title type='text'>Introducing Gliffy</title><content type='html'>&lt;a href=&quot;http://dmourati.blogspot.com/2008/01/introducing-gliffy.html&quot;&gt;Gliffy&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/1981581785965594600/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/1981581785965594600' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/1981581785965594600'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/1981581785965594600'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/01/introducing-gliffy.html' title='Introducing Gliffy'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-5855679062402749464</id><published>2008-01-17T16:25:00.000-08:00</published><updated>2008-01-17T16:32:20.704-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux dovecot"/><title type='text'>Dovecot</title><content type='html'>&lt;a href=&quot;http://www.dovecot.org/&quot;&gt;Dovecot&lt;/a&gt; is an IMAP server for Linux/UNIX-like systems, written with security&lt;br /&gt;primarily in mind.  It also contains a small POP3 server.  It supports mail&lt;br /&gt;in either of maildir or mbox formats.&lt;br /&gt;&lt;br /&gt;Lets install it:&lt;br /&gt;&lt;br /&gt;[root@vm01-lin-01 ~]# yum -y install dovecot&lt;br /&gt;&lt;br /&gt;And start the service:&lt;br /&gt;&lt;br /&gt;[root@vm01-lin-01 ~]# /etc/init.d/dovecot start&lt;br /&gt;Starting Dovecot Imap:                                     [  OK  ]&lt;br /&gt;&lt;br /&gt;Cool.  All set.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/5855679062402749464/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/5855679062402749464' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5855679062402749464'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5855679062402749464'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/01/dovecot.html' title='Dovecot'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-306897891576824252</id><published>2008-01-17T00:45:00.000-08:00</published><updated>2008-01-17T00:54:44.408-08:00</updated><category scheme="http://www.blogger.com/atom/ns#" term="linux p2v"/><title type='text'>P2V Migration</title><content type='html'>Today I completed work for a P2V (Physical to Virtual) migration.  The physical box was a Dell running FC6.  The virtual machine was also running FC6 but under VMWare running under windows.&lt;br /&gt;&lt;br /&gt;The steps I took were as follows.&lt;br /&gt;&lt;br /&gt;Inventory physical box&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    Accounts&lt;/li&gt;&lt;li&gt;    Scripts&lt;/li&gt;&lt;li&gt;    Services&lt;/li&gt;&lt;li&gt;RPMs&lt;/li&gt;&lt;/ol&gt;Create Virtual Machine&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    Boot VM&lt;/li&gt;&lt;li&gt;    Insert CD-ROM&lt;/li&gt;&lt;li&gt;    Install Vanilla OS&lt;/li&gt;&lt;li&gt;    Patch&lt;/li&gt;&lt;/ol&gt;Migrate&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    RPMs&lt;/li&gt;&lt;li&gt;    Home directory&lt;/li&gt;&lt;li&gt;    Services&lt;/li&gt;&lt;/ol&gt;Test&lt;br /&gt;&lt;ol&gt;&lt;li&gt;    Verify servies&lt;/li&gt;&lt;li&gt;    Check filesystem&lt;/li&gt;&lt;/ol&gt;&lt;br /&gt;In all, it was a pretty complicated move.  Luckily, I&#39;ve done this before and knew what I was up against.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/306897891576824252/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/306897891576824252' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/306897891576824252'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/306897891576824252'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2008/01/p2v-migration.html' title='P2V Migration'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-3772786350119534408</id><published>2007-12-18T11:04:00.000-08:00</published><updated>2007-12-18T11:10:34.125-08:00</updated><title type='text'>Disabling Snapshots on a NetApp Filer</title><content type='html'>Network appliance makes a series of devices called NetApp filers.  These are network-attached storage devices used to share a filesystem across the network.  &lt;br /&gt;&lt;br /&gt;These filers support a feature known as snapshot.  A snapshot is a point-in-time picture of the disk.  The snapshot can be used as a backup or for any other copy and keep procedure.&lt;br /&gt;&lt;br /&gt;In some cases, these snapshots can be undesirable.  To disable them, log on to filerview.&lt;br /&gt;&lt;br /&gt;Go to the:&lt;br /&gt;&lt;br /&gt;Volumes-&gt;Snapshots-&gt;Manage&lt;br /&gt;&lt;br /&gt;menu.&lt;br /&gt;&lt;br /&gt;Select the checkboxes next to the snapshots you want to delete.&lt;br /&gt;&lt;br /&gt;Then click delete.&lt;br /&gt;&lt;br /&gt;A dialog box asking you to confirm comes up.&lt;br /&gt;&lt;br /&gt;Confirm the deletion.&lt;br /&gt;&lt;br /&gt;You are done.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/3772786350119534408/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/3772786350119534408' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/3772786350119534408'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/3772786350119534408'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2007/12/disabling-snapshots-on-netapp-filer.html' title='Disabling Snapshots on a NetApp Filer'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-228267243711123251</id><published>2007-12-14T00:32:00.000-08:00</published><updated>2007-12-14T00:33:31.868-08:00</updated><title type='text'>How to Configure IPMI on a Dell PowerEdge running Red Hat Enterprise Linux</title><content type='html'>&lt;a href=&quot;http://dmourati.blogspot.com/2007/12/how-to-configure-ipmi-on-dell-poweredge.html&quot;&gt;http://dmourati.blogspot.com/2007/12/how-to-configure-ipmi-on-dell-poweredge.html&lt;/a&gt;</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/228267243711123251/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/228267243711123251' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/228267243711123251'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/228267243711123251'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2007/12/how-to-configure-ipmi-on-dell-poweredge.html' title='How to Configure IPMI on a Dell PowerEdge running Red Hat Enterprise Linux'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-2953335669538533196</id><published>2007-12-12T13:54:00.001-08:00</published><updated>2007-12-12T14:10:41.298-08:00</updated><title type='text'>Working with Cron</title><content type='html'>In today&#39;s installment dmourati will show you how to setup cron to do your bidding.  With a little advanced planning, you can have cron run jobs for you while you sleep freeing you up to do other, more interesting work.&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;cron&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Cron is a daemon to execute scheduled commands.  This can be setup on a system-wide basis, or for individual user accounts.  Today we will setup a system level cron.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Configuring a Cron Job&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;To set up a system cron job, make a new file in /etc/cron.d.  This directory is used to store cron entries.  Here&#39;s an example:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[root@lncdw2 cron.d]# cat ds-log-syncer&lt;br /&gt;30 00 * * * root /usr/local/sbin/ds-log-syncer.sh &gt; /dev/null 2&gt;&amp;1&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;This entry starts off with the standard cron format:&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-style:italic;&quot;&gt;minute hour day month day-of-week user script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;A &quot;*&quot; above just means every.&lt;br /&gt;&lt;br /&gt;So, this can be read as follows&lt;br /&gt;&lt;br /&gt;At 30 minutes past midnight, every day, the root user should run the following script /usr/local/sbin/ds-log-syncer.sh and redirect the output to /dev/null (throw it away).&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Script&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Here&#39;s the shell script that the cron entry refers to:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;#!/bin/bash&lt;br /&gt;#Streaming logs:&lt;br /&gt;#From DS:/var/log/streaming/* to&lt;br /&gt;#lncdw2:/var/log/streaming/&lt;carrier_name&gt;&lt;DS host name&gt;&lt;br /&gt;#Httpd logs:&lt;br /&gt;#From DS:/var/log/httpd/* to lncdw2:/var/log/httpd/&lt;carrier_name&gt;&lt;DS hostname&gt;&lt;br /&gt;&lt;br /&gt;#Setup directories&lt;br /&gt;mkdir -p /var/log/streaming/Three/threeprodds1/ /var/log/streaming/Three/threeprodds2/ /var/log/streaming/Three/threeprodds3/ /var/log/streaming/Three/threeprodds4/ /var/log/streaming/Three/threeprodds5/&lt;br /&gt;mkdir -p /var/log/httpd/Three/threeprodds1/ /var/log/httpd/Three/threeprodds2/ /var/log/httpd/Three/threeprodds3/ /var/log/httpd/Three/threeprodds4/ /var/log/httpd/Three/threeprodds5/&lt;br /&gt;&lt;br /&gt;#Get Three streaming logs&lt;br /&gt;echo &quot;Synchronizing Three streaming logs&quot; | logger -s -t ds-log-syncer.sh&lt;br /&gt;rsync -avze ssh rhythm@threeprodds1:/var/log/streaming/ /var/log/streaming/Three/threeprodds1/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds2:/var/log/streaming/ /var/log/streaming/Three/threeprodds2/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds3:/var/log/streaming/ /var/log/streaming/Three/threeprodds3/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds4:/var/log/streaming/ /var/log/streaming/Three/threeprodds4/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds5:/var/log/streaming/ /var/log/streaming/Three/threeprodds5/&amp;&lt;br /&gt;&lt;br /&gt;#Get Three httpd logs&lt;br /&gt;echo &quot;Synchronizing Three streaming logs&quot; | logger -s -t ds-log-syncer.sh&lt;br /&gt;rsync -avze ssh rhythm@threeprodds1:/var/log/httpd/ /var/log/httpd/Three/threeprodds1/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds2:/var/log/httpd/ /var/log/httpd/Three/threeprodds2/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds3:/var/log/httpd/ /var/log/httpd/Three/threeprodds3/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds4:/var/log/httpd/ /var/log/httpd/Three/threeprodds4/&amp;&lt;br /&gt;rsync -avze ssh rhythm@threeprodds5:/var/log/httpd/ /var/log/httpd/Three/threeprodds5/&amp;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;As you can see, this script is used to synchronize log files down to this local system.  Some &quot;logger&quot; statements have been added to generate useful log messages on this host as well.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Running It&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;The cool thing is that once you set this up, there is nothing left to do.  Sit back, relax, and enjoy synchronized logs.&lt;br /&gt;&lt;br /&gt;For more information on rsync over SSH as used in the script, stick around &lt;a href=&quot;http://linfactory.blogspot.com&quot;&gt;linfactory&lt;/a&gt;.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/2953335669538533196/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/2953335669538533196' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/2953335669538533196'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/2953335669538533196'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2007/12/working-with-cron.html' title='Working with Cron'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-5321068288201014472</id><published>2007-12-11T14:45:00.000-08:00</published><updated>2007-12-11T15:03:40.368-08:00</updated><title type='text'>Monitoring a File&#39;s Age with Nagios</title><content type='html'>Sometimes when running Linux you need to know how long a file has been sticking around.  One great example is the presence and age of a lock file.  In this case, I&#39;m running a repository syncing tool called &lt;a href=&quot;http://cobbler.et.redhat.com/&quot;&gt;cobbler&lt;/a&gt; and I want to make sure it is running successfully&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Nagios&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Nagios is an open source monitoring software package.  I&#39;ve been using Nagios since its earlier name Netsaint was still in effect.  Nagios will be the subject of another post here on &lt;a href=&quot;http://linfactory.blogspot.com&quot;&gt;linfactory&lt;/a&gt; so stick around.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Plugins&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Plugins do the heavy lifting for Nagios.  These plugins are small pieces of code that do something useful like check a ping timeout or in this case, a file&#39;s existence and age.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Check_file_age&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;I found a stock plugin called check_file_age.  Here&#39;s how it works:&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-sh-3.00$ /usr/lib/nagios/plugins/check_file_age --help&lt;br /&gt;check_file_age (nagios-plugins 1.4.2) $Id: check_file_age.pl,v 1.2 2003/10/21 15:56:35 tonvoon Exp&lt;br /&gt;The nagios plugins come with ABSOLUTELY NO WARRANTY. You may redistribute&lt;br /&gt;copies of the plugins under the terms of the GNU General Public License.&lt;br /&gt;For more information about these matters, see the file named COPYING.&lt;br /&gt;Copyright (c) 2003 Steven Grimm&lt;br /&gt;&lt;br /&gt;Usage:&lt;br /&gt;  check_file_age [-w &lt;secs&gt;] [-c &lt;secs&gt;] [-W &lt;size&gt;] [-C &lt;size&gt;] -f &lt;file&gt;&lt;br /&gt;  check_file_age [-h | --help]&lt;br /&gt;  check_file_age [-V | --version]&lt;br /&gt;&lt;br /&gt;  &lt;secs&gt;  File must be no more than this many seconds old&lt;br /&gt;  &lt;size&gt;  File must be at least this many bytes long&lt;br /&gt;&lt;br /&gt;Send email to nagios-users@lists.sourceforge.net if you have questions&lt;br /&gt;regarding use of this software. To submit patches or suggest improvements,&lt;br /&gt;send email to nagiosplug-devel@lists.sourceforge.net.&lt;br /&gt;Please include version information with all correspondence (when possible,&lt;br /&gt;use output from the --version option of the plugin itself).&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Test Invocation&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[nagios@lnciserver1 ~]$ /usr/lib/nagios/plugins/check_file_age -f /var/lib/cobbler/lock -w 3600 -c 7200&lt;br /&gt;/var/lib/cobbler/lock: File not found&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;So, the check_file_age plugin tells us that this file is missing.&lt;br /&gt;&lt;br /&gt;Let&#39;s look at the return code. &lt;br /&gt;&lt;blockquote&gt;&lt;br /&gt;[nagios@lnciserver1 ~]$ echo $?&lt;br /&gt;3&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;A non-zero return code indicates a problem.  In this case the 3 corresponds to &quot;UNKOWN.&quot;  Nagios doesn&#39;t know what to make of this situation.  I need to tweak this plugin.  No problem, this is open source after all.  I need to allow for the absence of the file as this is okay in my situation.  That would just indicate the cobbler has cleaned up successfully and deleted its lock file.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Modification&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;For the cobbler case above, we need this situation to retun a 0.&lt;br /&gt;&lt;br /&gt;Here&#39;s the change.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;-sh-3.00$ diff -c /usr/lib/nagios/plugins/check_file_age /usr/lib/nagios/plugins/check_file_age2&lt;br /&gt;*** /usr/lib/nagios/plugins/check_file_age      2006-03-06 23:57:22.000000000 +0000&lt;br /&gt;--- /usr/lib/nagios/plugins/check_file_age2     2007-10-19 23:26:24.000000000 +0000&lt;br /&gt;***************&lt;br /&gt;*** 74,80 ****&lt;br /&gt;  # Examine the file.&lt;br /&gt;  unless (-f $opt_f) {&lt;br /&gt;        print &quot;$opt_f: File not found\n&quot;;&lt;br /&gt;!       exit $ERRORS{&#39;UNKNOWN&#39;};&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  $st = File::stat::stat($opt_f);&lt;br /&gt;--- 74,80 ----&lt;br /&gt;  # Examine the file.&lt;br /&gt;  unless (-f $opt_f) {&lt;br /&gt;        print &quot;$opt_f: File not found\n&quot;;&lt;br /&gt;!       exit $ERRORS{&#39;OK&#39;};&lt;br /&gt;  }&lt;br /&gt;&lt;br /&gt;  $st = File::stat::stat($opt_f);&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Invoking the Plugin&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Now that we have a modified plugin in place, we&#39;ll run it to see what is up with our cobbler server.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Invocation Take Two&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[nagios@lnciserver1 ~]$ /usr/lib/nagios/plugins/check_file_age2 -f /var/lib/cobbler/lock -w 3600 -c 7200&lt;br /&gt;/var/lib/cobbler/lock: File not found&lt;br /&gt;[nagios@lnciserver1 ~]$ echo $?&lt;br /&gt;0&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;All good!</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/5321068288201014472/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/5321068288201014472' title='1 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5321068288201014472'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/5321068288201014472'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2007/12/monitoring-files-age-with-nagios.html' title='Monitoring a File&#39;s Age with Nagios'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-2115934724163203663.post-3743662286804300025</id><published>2007-12-10T14:49:00.001-08:00</published><updated>2007-12-10T15:01:27.350-08:00</updated><title type='text'>Fun with Fdisk</title><content type='html'>When managing disks under Linux, one of the most powerful and lowest level tools you will need to use is called fdisk.  Fdisk has been around for a long time and even has use in the Microsoft world.  Today, however, we will deal with linux fdisk.  The Linux fdisk is a used to manipulate the partition table of disks.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;&lt;br /&gt;Partition Table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Hard disks can be divided into one or more logical disks called partitions. This division is described in the partition table found in sector 0 of the disk.  Fdsik manpage.&lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Example Partition Table&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;This is the partition table for a production Linux database server.  The server has two disks.  First, let us examine the first disk, referred to in Linux parlance as /dev/sda.&lt;br /&gt;&lt;br /&gt;To do so, run the fdisk command and pass the argument /dev/sda to tell fdisk to look at the first disk.  At the prompt, hit &quot;p&quot; to print the table.  Pressing &quot;m&quot; will show you all the options.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[root@lncproddb2 ~]# fdisk /dev/sda&lt;br /&gt;&lt;br /&gt;The number of cylinders for this disk is set to 8844.&lt;br /&gt;There is nothing wrong with that, but this is larger than 1024,&lt;br /&gt;and could in certain setups cause problems with:&lt;br /&gt;1) software that runs at boot time (e.g., old versions of LILO)&lt;br /&gt;2) booting and partitioning software from other OSs&lt;br /&gt;   (e.g., DOS FDISK, OS/2 FDISK)&lt;br /&gt;&lt;br /&gt;Command (m for help): p&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 72.7 GB, 72746008576 bytes&lt;br /&gt;255 heads, 63 sectors/track, 8844 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sda1   *           1          13      104391   83  Linux&lt;br /&gt;/dev/sda2              14        8844    70935007+  8e  Linux LVM&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Above we see the partition table for /dev/sda on production host lncproddb2.  The /dev/sda device or disk contains two partitions /dev/sda1, and /dev/sda2.  The first partition, /dev/sda1 starts at the beginning of the disk, or cylinder 1 and goes to cylinder 13.  It is of type 83, or Linux.  &lt;br /&gt;&lt;br /&gt;The second partition on /dev/sda is /dev/sda2.  It begins on the following cylinder,  number 14, and goes to the end of the disk.  The /dev/sda2 partition is of type 8e known as Linux LVM which stands for Logical Volume Manager.  The disk has a total of 8844 cylinders.    We can also see above the this is a 72.7 GB SCSI disk.  &lt;br /&gt;&lt;br /&gt;&lt;span style=&quot;font-weight:bold;&quot;&gt;Scanning the Bus&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Some Linux machines will have more than one disk.  In this case, it is helpful to scan the bus to see how many disks are there and what they are called.  You can scan the bus with the fdisk -l command.&lt;br /&gt;&lt;br /&gt;&lt;blockquote&gt;[root@lncproddb2 ~]# fdisk -l&lt;br /&gt;&lt;br /&gt;Disk /dev/sda: 72.7 GB, 72746008576 bytes&lt;br /&gt;255 heads, 63 sectors/track, 8844 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;/dev/sda1   *           1          13      104391   83  Linux&lt;br /&gt;/dev/sda2              14        8844    70935007+  8e  Linux LVM&lt;br /&gt;&lt;br /&gt;Disk /dev/sdb: 218.9 GB, 218909114368 bytes&lt;br /&gt;255 heads, 63 sectors/track, 26614 cylinders&lt;br /&gt;Units = cylinders of 16065 * 512 = 8225280 bytes&lt;br /&gt;&lt;br /&gt;   Device Boot      Start         End      Blocks   Id  System&lt;br /&gt;&lt;/blockquote&gt;&lt;br /&gt;&lt;br /&gt;Here we see the /dev/sda again as described above.  There is a second hard disk, /dev/sdb that is available on this system as well.</content><link rel='replies' type='application/atom+xml' href='http://linfactory.blogspot.com/feeds/3743662286804300025/comments/default' title='Post Comments'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment/fullpage/post/2115934724163203663/3743662286804300025' title='0 Comments'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/3743662286804300025'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/2115934724163203663/posts/default/3743662286804300025'/><link rel='alternate' type='text/html' href='http://linfactory.blogspot.com/2007/12/fun-with-fdisk.html' title='Fun with Fdisk'/><author><name>dmourati</name><uri>http://www.blogger.com/profile/17035247262550254543</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='https://img1.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>