Tuesday, June 24, 2008

How to Use FSCK???

How do I fsck the root partition of an IDE drive? Resolution:Warning: You should never fsck a mounted filesystem. You will have problems running fsck on a root partition as you will normally need to have the root filesystem mounted to access the fsck application.

Requirements: To begin the troubleshooting process, find out what the root partition is. For IDE drives, your root partition could be /dev/hdaX where X is an integer (e.g. /dev/hda2). Know the major and minor device numbers of your drive as these will be needed later on. Additionally, read and be familiar with the /usr/src/linux/Documentation/devices.txt document.

Solution:
Use installation CD #1 and boot into rescue mode. Boot from CD #1 just like a normal installation. At the installation boot prompt, type:

linux rescue nomountHit Enter and follow the prompts. The nomount option is necessary or else the root partition will be mounted in rescue mode where you cannot unmount it. There is no need to start the network interface. You will be given a minimal shell.

Assume that the root partition is /dev/hda2 for the following example. Create the device /dev/hda which has the major number 3. Execute the following commands:

mknod /dev/hda b 3 0
mknod /dev/hda2 b 3 2
Now you can execute e2fsck on /dev/hda2:

e2fsck /dev/hda2

Installing TRAC on Ubuntu Fiesty

-----------------START OF THE DOCUMENT------------------------------------------------------------------------

STEPS OF INSTALLATION
admin@linuxguy:~$ trac-admin /var/lib/trac initenv
Creating a new Trac environment at /var/lib/trac

Trac will first ask a few questions about your environment
in order to initalize and prepare the project database.

Please enter the name of your project.
This name will be used in page titles and descriptions.

Project Name [My Project]> DOSE

Please specify the connection string for the database to use.
By default, a local SQLite database is created in the environment
directory. It is also possible to use an already existing
PostgreSQL database (check the Trac documentation for the exact
connection string syntax).

Database connection string [sqlite:db/trac.db]>

Please specify the type of version control system,
By default, it will be svn.

If you don't want to use Trac with version control integration,
choose the default here and don't specify a repository directory.
in the next question.

Repository type [svn]>

Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.
Path to repository [/path/to/repos]> /home/linuxguy/repository
Creating and Initializing Project
Failed to create environment. [Errno 13] Permission denied: '/var/lib/trac/log' Traceback (most recent call last):
File "/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/admin/conso le.py", line 543, in do_initenv options=options)
File "/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/env.py", li ne 188, in __init__ self.create(options)
File "/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/env.py", li ne 282, in create os.mkdir(self.get_log_dir())
OSError: [Errno 13] Permission denied: '/var/lib/trac/log'
vjs@dicex:~$ sudo trac-admin /var/lib/trac initenv
Creating a new Trac environment at /var/lib/trac
Trac will first ask a few questions about your environment in order to initalize and prepare the project database.
Please enter the name of your project
. This name will be used in page titles and descriptions.
Project Name [My Project]> DOSE
Please specify the connection string for the database to use. By default, a local SQLite database is created in the environment directory. It is also possible to use an already existing PostgreSQL database (check the Trac documentation for the exact connection string syntax).
Database connection string [sqlite:db/trac.db]>
Please specify the type of version control system, By default, it will be svn.
If you don't want to use Trac with version control integration, choose the default here and don't specify a repository directory. in the next question.
Repository type [svn]>
Please specify the absolute path to the version control
repository, or leave it blank to use Trac without a repository.
You can also set the repository location later.

Path to repository [/path/to/repos]> /home/linuxguy/repository

Creating and Initializing Project
Installing default wiki pages
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracBrowser imported from TracBrowser /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracUpgrade imported from TracUpgrade /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracPlugins imported from TracPlugins /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/SandBox imported from SandBox /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/InterTrac imported from InterTrac /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/InterMapTxt imported from InterMapTxt /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/WikiHtml imported from WikiHtml /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracWikiMacros imported from TracWikiMacros /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracTicketsCustomFields imported from TracTicketsCustomFields /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracEnvironment imported from TracEnvironment /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracPermissions imported from TracPermissions /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages
/TracModPython imported from TracModPython /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /Tr
acImport imported from TracImport /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /CamelC
ase imported from CamelCase /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracIni im
ported from TracIni /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracAdmin impo
rted from TracAdmin /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracGuide imported
from TracGuide /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiStart imported fro
m WikiStart /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /InterWiki imported from In
terWiki /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracTickets imported from Trac
Tickets /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracRss imported from TracRss
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiRestructuredText imported fro
m WikiRestructuredText /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /RecentChanges imported from RecentCha
nges /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracFineGrainedPermissions imported from
TracFineGrainedPermissions /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracRevisionLog imported from TracRevisionLog
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracChangeset imported from TracChangeset
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiDeletePage imported from WikiDeletePage
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracNotification imported from TracNotification
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracInterfaceCustomization imported from TracInterf
aceCustomization /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracCgi imported from TracCgi
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiPageNames imported from WikiP
ageNames /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracQuery imported from TracQuery
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracWiki imported from TracWiki
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracBackup imported from TracBackup
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TitleIndex imported from TitleIndex
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracNavigation imported from TracNaviga
tion /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracRoadmap imported from TracRoadmap
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracSyntaxColoring imported from TracSynt
axColoring /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracWorkflow imported from TracWorkflow
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiNewPage imported from WikiNewPage
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracSearch imported from TracSearch
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracSupport imported from TracSupport
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracAccessibility imported from TracAcces
sibility /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracLinks imported from TracLinks
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracStandalone imported from TracStan
dalone /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiRestructuredTextLinks imported from W
ikiRestructuredTextLinks /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracReports imported from TracReports
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracLogging imported from TracLogging
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiFormatting imported from WikiFormatti
ng /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracTimeline imported from TracTimeline
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /PageTemplates imported from PageTemplates
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracUnicode imported from TracUnicode
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracInstall imported from TracInstall
/usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /WikiProcessors imported from WikiProcesso
rs /usr/lib/python2.5/site-packages/Trac-0.11rc1-py2.5.egg/trac/wiki/default-pages /TracFastCgi imported from TracFastCgi
Indexing repository
[1059]

--------------------------------------------------------------------- Project environment for 'DOSE' created.
You may now configure the environment by editing the file:
/var/lib/trac/conf/trac.ini
If you'd like to take this new project environment for a test drive,
try running the Trac standalone web server `tracd`:

tracd --port 8000 /var/lib/trac
Then point your browser to http://localhost:8000/trac.
There you can also browse the documentation for your installed
version of Trac, including information on further setup (such as
deploying Trac to a real web server).

The latest documentation can also always be found on the project website:
http://trac.edgewall.org/
Congratulations!

vjs@linuxguy:~$

CONFIGURING TRAC TO WORK WITH SVN


We need to add Account Manager plugin to make TRAC work with SVN Authz.Kindly modify the /var/lib/trac/trac.ini file in the following manner.Add the lines at the end of trac.ini under /var/lib/trac/conf/trac.ini
File: trac.ini


[components]
acct_mgr.api.* = enabled
trac.web.auth.LoginModule = disabled
acct_mgr.web_ui.LoginModule = enabled
acct_mgr.svnserve.* = enabled
acct_mgr.web_ui.RegistrationModule = enabled



[account-manager]
password_store = SvnServePasswordStore
password_file = /home/DOSE/repository/conf/passwd

----
-------------------END OF THE DOCUMENT-----------------------------

Ethernet Bonding HowTo's

Network interface bonding

Bonding is a way for a linux server with 2 network cards to share a virtual interface which represents both real interfaces. I'm not sure if you get a boost in throughput or if it is only failover. On a redhat ES4 server, all I did was edit these files and reboot (the modules were alredy loadable by the kernel):

modprobe.conf
ifcfg-eth0
ifcfg-eth1
ifcfg-bond0 (I made this one, as per instructions)

Snipits (all you need to add before rebooting):

From - modprobe.conf ->

###BEGIN AJEET'S BONDING
probeall bond0 eth0 eth1 bonding
alias bond0 bonding
options bonding miimon=100 mode=1
###END AJEET'S BONDING


From -> ifcfg-eth0

DEVICE=eth0
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

From -> ifcfg-eth1

DEVICE=eth1
USERCTL=no
ONBOOT=yes
MASTER=bond0
SLAVE=yes
BOOTPROTO=none

From -> ifcfg-bond0

DEVICE=bond0
USERCTL=no
ONBOOT=yes
NETMASK=255.255.254.0
BROADCAST=10.200.58.255
GATEWAY=10.200.58.1
IPADDR=10.200.58.21

Recover Data From a dead hard drive using dd

The ‘ dd ‘ command is one of the original Unix utilities and should be in everyone’s tool box. It can strip headers, extract parts of binary files and write into the middle of floppy disks; it is used by the Linux kernel Makefiles to make boot images. It can be used to copy and convert magnetic tape formats, convert between ASCII and EBCDIC, swap bytes, and force to upper and lowercase.

For blocked I/O, the dd command has no competition in the standard tool set. One could write a custom utility to do specific I/O or formatting but, as dd is already available almost everywhere, it makes sense to use it.


Hard drive failures can occur for many reasons one of the most common thing every user can observer is if your hard disk is having some problems it does make some clicking noise this is one hint i would suggest every user can follow.

If you don’t hear any clicking noise it might be some electonics failure in such cases you can use hdparm to turn off some advanced drive features that will get around the part of the electronic component that has failed.Most important setting is turnning off DMA access.If you want more details about hdparm check this article.

Like most well-behaved commands, dd reads from its standard input and writes to its standard output, unless a command line specification has been given. This allows dd to be used in pipes, and remotely with the rsh remote shell command.

Unlike most commands, dd uses a keyword=value format for its parameters. This was reputedly modeled after IBM System/360 JCL, which had an elaborate DD ‘Dataset Definition’ specification for I/O devices. A complete listing of all keywords is available from GNU dd with.

dd Syntax

dd [OPERAND]…
or: dd OPTION

# dd –help

This will provide all the available options for dd

For more options check dd man page here

Using dd you can create backups of an entire harddisk or just a parts of it. This is also usefull to quickly copy installations to similar machines. It will only work on disks that are exactly the same in disk geometry, meaning they have to the same model from the same brand.

Creating a hard drive backup directly to another hard drive

dd bs=4k if=/dev/hdx of=/dev/hdy conv=noerror,sync or dd bs=4k if=/dev/hdx of=/path/to/image conv=noerror,sync

Now we i will explain above example one by one
if=file

Specifies the input path. Standard input is the default.

of=file

Specifies the output path. Standard output is the default. If the seek=expr conversion is not also specified, the output file will be truncated before the copy begins, unless conv=notrunc is specified. If seek=expr is specified, but conv=notrunc is not, the effect of the copy will be to preserve the blocks in the output file over which dd seeks, but no other portion of the output file will be preserved. (If the size of the seek plus the size of the input file is less than the previous size of the output file, the output file is shortened by the copy.)

bs=n

Sets both input and output block sizes to n bytes, superseding ibs= and obs=. If no conversion other than sync, noerror, and notrunc is specified, each input block is copied to the output as a single block without aggregating short blocks.

conv=value[,value. . . ]

Where values are comma-separated symbols

noerror

Does not stop processing on an input error. When an input error occurs, a diagnostic message is written on standard error, followed by the current input and output block counts in the same format as used at completion. If the sync conversion is specified, the missing input is replaced with null bytes and processed normally. Otherwise, the input block will be omitted from the output.

sync

Pads every input block to the size of the ibs= buffer, appending null bytes. (If either block or unblock is also specified, appends SPACE characters, rather than null bytes.)

Compression Backup

dd if=/dev/hdx | gzip > /path/to/image.gz

Hdx could be hda, hdb etc. In the second example gzip is used to compress the image if it is really just a backup.

Restore Backup of hard disk copy

dd if=/path/to/image of=/dev/hdx

gzip -dc /path/to/image.gz | dd of=/dev/hdx

MBR backup

In order to backup only the first few bytes containing the MBR and the partition table you can use dd as well.

dd if=/dev/hdx of=/path/to/image count=1 bs=512

MBR restore

dd if=/path/to/image of=/dev/hdx

Add “count=1 bs=446″ to exclude the partition table from being written to disk. You can manually restore the table.

More Examples

dd bs=4k if=/dev/sda1 of=/dev/sda2/backup.img conv=noerror,sync

This command is used often to create a backup of a drive (/dev/sda1) directly to another hard drive (/dev/sda2). The option “bs=4k” is used to specify the block size used in the copy. The default for the dd command is 512 bytes: use of this small block size can result in significantly slower copying. However, the tradeoff with larger block sizes is that when an error is encountered, the remainder of the block is filled with zero-bytes. So if you increase your block size when copying a failing device, you’ll lose more data but also spend less time trying to read broken sectors.

If you’re limited on local space you can use a pipe to gzip instead of the “of=” option.

dd bs=1024 if=/dev/sda1 conv=noerror,sync | gzip -9 > /dev/sda2/backup.dmg.gz

Here dd is making an image of the first harddrive, and piping it through the gzip compression program. The compressed image is then placed in a file on a seperate drive.

Cheers,

Ajeet S Raina

Howto Crack Rar, 7z, and zip files in Linux

If you forget your password for compressed archive (rar, 7z, zip), this program is the solution.This program uses bruteforce algorithm to find correct password. You can specify wich characters will be used in password generations.


Warning: Please don’t use this program for any illegal things!

Preparing your system

First you need to install the following package

#apt-get install libxml2-dev build-essential

Now you need to download the latest version of rarcrack from here

#wget http://surfnet.dl.sourceforge.net/sourceforge/rarcrack/rarcrack-0.2.tar.bz2

Now you have rarcrack-0.2.tar.bz2 file and you need to extract this file

#tar -xjf rarcrack-0.2.tar.bz2

#cd rarcrack-0.2

#make

You must be root to run the following command

#make install

Using Rarcrack

rarcrack your_encrypted_archive.ext [--threads thread_num] [--type rar|zip|7z]

Example

rarcrack something.rar

After the cracking started RarCrack will print the current status of cracking and save it’s to a status file. If you want more specific password character set, you need to run RarCrack to create the XML status file (3 sec).

Redhat Cluster 4 how-to

Redhat Cluster 4: Steps for setting up a 2 node cluster

* This document assumes that you’ve read the pdf found easily at Redhat’s site in the documentation section. It just sort of condenses it all for you if you want to make a 2 node cluster.
**Make sure you read all the tips at the very bottom or you could be in for some pain

A) What we want
1. Two servers in an active/passive cluser (one fails, the other takes over)
2. A shared storage area between them (disk array, luns from a SAN, etc.)
3. Floating IP
4. Bonded Ethernet interfaces (two interfaces on the same system acting as one highly available interface).
5. Power fencing (if system A appears unreachable, system B turns system A off and takes over the cluster).

B) Setup interface bonding (fairly easy)
1. I documented this at: http://askraina.blogspot.com

C) Startup gui
1. service ccsd start
2. service cman start
3. export DISPLAY=xxx.xxx.xxx.xxx:0
4. system-config-cluster &

D) Configure your cluster (in all steps, “close” saves your progress in the setup screens. “file->save” saves your cluster.
1. When you first start you’ll be asked to create a new cluster – do so.
2. I chose DLM (distributed lock manager) because GULM requires 3 or 5 servers in your cluster.
3. Name your cluster something nice.
4. Create a node by clicking on “cluster nodes” and then clicking “add nodes”.
Choose a quorum vote of 1.
5. Create a fence device. I chose HP’s ILO choice. This require me to put AS the hostname the hostname of the actual ILO, not the hostname of the node in the cluster. I “named” my fences arbitrarily.
6. Assign those fences to the nodes by clicking on the nodes created in step 4 and clicking “manage fencing for this node”. When you do, a window pops up and you’ll click “add a new fence level”. Then you’ll click on that level (probably level 1 if you’ve just started) and click “add a fence to this level”. Then you choose the fence created in step 5 to the appropriate node.
7. Click “failover domains” and create a new failover domain. Use any name you want. I recommend unordered priority and unrestricted – let any node in the cluster run the cluster. Fool with it later if you have time.
8. Resources: resources are things like “IP addresses” of “shared filesystems” or “scripts”. Generally, your “scripts” will be the ones in /etc/init.d (httpd, for example). This part of the setup is straight forward. I’m pretty sure I had to put my IPs in /etc/hosts, but I’m not sure if that’s what made it work or not. BE VERY AWARE: “ifconfig –a” may or may not show eth0:1 or the like. I’m not sure how redhat does it or if it is a bug, but both of my 2.6.9-11 ELsmp kernels brought up the IPs but didn’t bring up the interface. Also, this was clearly a bug: I couldn’t create one particular IP address for the life of me (10.x.x.25). I then tried doing .98 and it worked fine. Something got “hosed” up in the plumbing probably.
9. Create services: create an arbitrary name for your service (whatever you like), and add resources to it. Order matters – IP’s and filesystems first and scripts last because they needed the other two. Also, you can nest your stuff. It appears that the top most layer is the base layer, and the lower layers are the things that rely on the base layer. Either way, it’s a little buggy in my opinion so I didn’t layer anything. It seems to work just laying them all down 1 after the other, from most basic to most complex. When you are ready, assign this service to a failover domain.
10. Save your script (goes to /etc/cluster/cluster.config)
11. Bring the other node into the cluster:
i. # service ccsd start (on the other node)
ii. # service cman start
iii. On the original system, bring up that gui again. This time you’ll see a management console tab and button in the top right corner which reads “Send to cluster”. The button saves the config to /etc/cluster/cluster.config. If there’s already one there (and there should be) it moves it to a backup file first and then saves. The last thing the button does is shoots the config over to the other system. If you need to, ftp will also do the trick but you shouldn’t need to.
iv. Exit the gui.
12. Start the cluster
i. On both systems, 1 node first and then the other, run the other two daemons:
ii. # service fenced start
iii. # service rgmanager start
13. Check the cluster
i. # clustat (you should see ‘stuff’)
14. If the cluster isn’t started
i. Go into the gui, go to the management tab and click on the service, then “enable” it. If it is in a failed state and won’t start, take down everything with all the “service x start/stop” commands and bring everything up. If it still doesn’t work, do some basic unix troubleshooting (permissions, groups, paths to resources/scripts, does it really mount like you think it will, is there an ip conflict, etc.) If that doesn’t work you’re in for the long haul…

Stuff that took me forever to figure out:

1) bonding was easy on one server that had a very up2date kernel. The one that was slightly behind in its upkeep had problems – bonding came up but we had a ton of kernel errors that I didn’t have time to really figure out, so I just upgraded the kernel – it worked.

2) As I mentioned above, Redhat Cluster didn’t (maybe doesn’t) make a virtual interface of the “ethx:1” variety. So don’t waste hours looking for it.

3) HEAR ME HEAR ME: Every start/stop script in Redhat Cluster requires a “status” option (eg., /etc/init.d/mysql.server status). If you don’t have one, redhat cluster will keep bounding your service. You’ll have to put a status check in there that returns 0 (zero).

4) Make sure 127.0.0.1 is only named “loopback” and not your server name. Make your servername a useful IP. You should also put any other names you can think of in your hostfile (like your fences).

5) HEAR ME HEAR ME: if you enable fencing and you are having problems with its stop/start procedures hanging, don’t reboot. Your system will hang as its coming up, forcing you to bring it up manually 1 process at a time, hitting No at that process.

6) The default log location for Redhat Cluster is /var/log/messages. Tail –f that file and grep for “clu” and you’ll see all the cluster-related messages.

7) If you ever get complaints from the gui at startup about XML syntax errors, well, it means that you screwed something up. I know, I can’t believe it either – the gui allows you to make impossible entries into your XML file. No matter how much you think you are doing it right, trust me, you messed up – and the gui let you.

8) As you struggle to get things going, ALWAYS check your services using “ps” and ALWAYS check to see if what you expect to be mounted or unmounted are the way you expect. Until you get everything right, you have to babysit your system – you literally could get the same filesystem mounted on two boxes, and services trying to start them. Its disgusting.

9) If you’re like me and you don’t have a CDROM connected to your proliant blade server and only have an iso, and you mount that for your install, you’re going to be asked to insert one of your Redhat Linux install disks (or you might). This is nuts. It auto-ejects your iso, and suddenly you need to put a disk in – which it expects to auto-mount for you when you click “ok”. The workaround is to copy everything from the iso to disk, and delete/move all rpms from the rpms directory that don’t pertain to your specific type of kernel (smp, bigmem, and the like). Then install all the rpms with a * as an argument – it worked for me.

10) HEAR ME HEAR ME HEAR ME: If you find that when you simulate a network failure to make the cluster failover (eg., ifdown eth0), and all you see is "CMANsendmesg failed: -101", then here's the problem: your power-fencing system is sending "poweroff" to the server, but the "acpid" service is interpreting it as "shutdown -h", which won't allow the server to come down unless its done gracefully. You need to go into /etc/acpi/events and change the config flie, then hup the daemon (/etc/init.d/acpid stop/start). The config file might be named "sample.conf" or something, that's fine - it'll use that (man acpid).

iPHONE Keyboard for HTC Touch

Installation steps:

1.Install HappyTappingKeyboard.arm.CAB(to device,not to Storage)

2.Install Default_IM_WM5.CAB (to device, not to Storage; for WM5 only; if u already have other program which can set the default Input Method, skip this step & use that program instead)

3.Extract the files in ip_AC_Skin.zip to your PDA's "\My Documents"

4.Goto the "Option" of HappyTappingKeyboard (Start -> Setting -> Input)

-select "\My Documents\ip_AC_QVGA_P.bmp" for the ";Portrait Bitmap"

-select "\My Documents\ip_AC_QVGA_L.bmp" for the "Landscape Bitmap"

if your PDA is VGA capable, select the ip_AC_VGA_?.bmp instead, and select the VGA option)

-press "OK" to quit

5.Start -> Program -> IMSelector

-select "Happy Tapping Keyboard" as the default Input Method

6.Soft reset your PDA

7. Enjoy!



Cheers,

Raina, Ajeet