Bharat Banate's Work Profile

View Bharat Banate's profile on LinkedIn

Friday, August 8, 2008

Zimbra:-messaging and collaboration

Zimbra™ Collaboration Suite is a full-featured messaging and collaboration
solution that includes email, address book, calendaring, tasks, and Web
document authoring.

The Zimbra Collaboration Suite is designed to provide an end-to-end mail
solution that is scalable and highly reliable. The messaging architecture is built
with well-known open-system technology and standards and is composed of a
mail server application and a client interface.

The architecture includes the following core advantages:

• Open source integrations. Linux®, Jetty, Postfix, MySQL®, OpenLDAP®.
• Uses industry standard open protocols. SMTP, LMTP, SOAP, XML,
IMAP, POP.
• Modern technology design. Java, JavaScript thin client, DHTML.
• Horizontal scalability. Because each mailbox server includes its own data
store, message store, and set mailbox accounts, you don’t change
anything on existing servers in order to scale the system. To scale for
additional mail accounts, add more servers.
• Browser based client interface. Zimbra Web Client gives users easy
access to all the ZCS features
• Administration console to manage accounts and servers.

Core Functionality

The Zimbra Collaboration Suite is an innovative messaging and collaboration
application that offers the following state-of-the-art messaging and
collaboration solutions:
• Email
• Group Calendars
• Address Books
• Task Management
• Web document management and authoring.

Thursday, August 7, 2008

RAID Level in Details

What is RAID?

RAID allows information to access several disks. RAID uses techniques such as disk striping (RAID Level 0), disk mirroring (RAID Level 1), and disk striping with parity (RAID Level 5) to achieve redundancy, lower latency, increased bandwidth, and maximized ability to recover from hard disk crashes.

RAID consistently distributes data across each drive in the array. RAID then breaks down the data into consistently-sized chunks (commonly 32K or 64k, although other values are acceptable). Each chunk is then written to a hard drive in the RAID array according to the RAID level employed. When the data is read, the process is reversed, giving the illusion that the multiple drives in the array are actually one large drive.

Hardware RAID

The hardware-based array manages the RAID subsystem independently from the host. It presents a single disk per RAID array to the host.

A Hardware RAID device connects to the SCSI controller and presents the RAID arrays as a single SCSI drive. An external RAID system moves all RAID handling "intelligence" into a controller located in the external disk subsystem. The whole subsystem is connected to the host via a normal SCSI controller and appears to the host as a single disk.

RAID controller cards function like a SCSI controller to the operating system, and handle all the actual drive communications. The user plugs the drives into the RAID controller (just like a normal SCSI controller) and then adds them to the RAID controllers configuration, and the operating system won't know the difference.

Software RAID

Software RAID implements the various RAID levels in the kernel disk (block device) code. It offers the cheapest possible solution, as expensive disk controller cards or hot-swap chassis [1] are not required. Software RAID also works with cheaper IDE disks as well as SCSI disks. With today's faster CPUs, Software RAID outperforms Hardware RAID.

The Linux kernel contains an MD driver that allows the RAID solution to be completely hardware independent. The performance of a software-based array depends on the server CPU performance and load.

To learn more about Software RAID, here are the key features:

*

Threaded rebuild process
*

Kernel-based configuration
*

Portability of arrays between Linux machines without reconstruction
*

Backgrounded array reconstruction using idle system resources
*

Hot-swappable drive support
*

Automatic CPU detection to take advantage of certain CPU optimizations


RAID Levels and Linear Support


RAID supports various configurations, including levels 0, 1, 4, 5, and linear. These RAID types are defined as follows:

*

Level 0 — RAID level 0, often called "striping," is a performance-oriented striped data mapping technique. This means the data being written to the array is broken down into strips and written across the member disks of the array, allowing high I/O performance at low inherent cost but provides no redundancy. The storage capacity of a level 0 array is equal to the total capacity of the member disks in a Hardware RAID or the total capacity of member partitions in a Software RAID.
*

Level 1 — RAID level 1, or "mirroring," has been used longer than any other form of RAID. Level 1 provides redundancy by writing identical data to each member disk of the array, leaving a "mirrored" copy on each disk. Mirroring remains popular due to its simplicity and high level of data availability. Level 1 operates with two or more disks that may use parallel access for high data-transfer rates when reading but more commonly operate independently to provide high I/O transaction rates. Level 1 provides very good data reliability and improves performance for read-intensive applications but at a relatively high cost. [2] The storage capacity of the level 1 array is equal to the capacity of one of the mirrored hard disks in a Hardware RAID or one of the mirrored partitions in a Software RAID.
*

Level 4 — Level 4 uses parity [3] concentrated on a single disk drive to protect data. It is better suited to transaction I/O rather than large file transfers. Because the dedicated parity disk represents an inherent bottleneck, level 4 is seldom used without accompanying technologies such as write-back caching. Although RAID level 4 is an option in some RAID partitioning schemes, it is not an option allowed in Red Hat Enterprise Linux RAID installations. [4] The storage capacity of Hardware RAID level 4 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of Software RAID level 4 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.
*

Level 5 — This is the most common type of RAID. By distributing parity across some or all of an array's member disk drives, RAID level 5 eliminates the write bottleneck inherent in level 4. The only performance bottleneck is the parity calculation process. With modern CPUs and Software RAID, that usually is not a very big problem. As with level 4, the result is asymmetrical performance, with reads substantially outperforming writes. Level 5 is often used with write-back caching to reduce the asymmetry. The storage capacity of Hardware RAID level 5 is equal to the capacity of member disks, minus the capacity of one member disk. The storage capacity of Software RAID level 5 is equal to the capacity of the member partitions, minus the size of one of the partitions if they are of equal size.
*

Linear RAID — Linear RAID is a simple grouping of drives to create a larger virtual drive. In linear RAID, the chunks are allocated sequentially from one member drive, going to the next drive only when the first is completely filled. This grouping provides no performance benefit, as it is unlikely that any I/O operations will be split between member drives. Linear RAID also offers no redundancy and, in fact, decreases reliability — if any one member drive fails, the entire array cannot be used. The capacity is the total of all member disks.

Tuesday, August 5, 2008

Linux File System Structure.

Overview of File System Hierarchy Standard (FHS)

Red Hat Enterprise Linux uses the Filesystem Hierarchy Standard (FHS) file system structure, which defines the names, locations, and permissions for many file types and directories.

The FHS document is the authoritative reference to any FHS-compliant file system, but the standard leaves many areas undefined or extensible. This section is an overview of the standard and a description of the parts of the file system not covered by the standard.

Compliance with the standard means many things, but the two most important are compatibility with other compliant systems and the ability to mount a /usr/ partition as read-only. This second point is important because the directory contains common executables and should not be changed by users. Also, since the /usr/ directory is mounted as read-only, it can be mounted from the CD-ROM or from another machine via a read-only NFS mount.

FHS Organization

1) The /boot/ Directory

The /boot/ directory contains static files required to boot the system, such as the Linux kernel. These files are essential for the system to boot properly.

2)The /dev/ Directory

The /dev/ directory contains device nodes that either represent devices that are attached to the system or virtual devices that are provided by the kernel. These device nodes are essential for the system to function properly. The udev demon takes care of creating and removing all these device nodes in /dev/.

Devices in the /dev directory and subdirectories are either character (providing only a serial stream of input/output) or block (accessible randomly). Character devices include mouse, keyboard, modem while block devices include hard disk, floppy drive etc. If you have GNOME or KDE installed in your system, devices such as external drives or cds are automatically detected when connected (e.g via usb) or inserted (e.g via CD or DVD drive) and a popup window displaying the contents is automatically displayed. Files in the /dev directory are essential for the system to function properly. Examples of common files in the /dev include:

/dev/hda - the master device on primary IDE channel.
/dev/hdb - the slave device on primary IDE channel.
/dev/tty0 - first virtual console.
/dev/tty1 - second virtual console.
/dev/sda - first device on primary SCSI or SATA channel.
/dev/lp0 - first parallel port.

3)The /etc/ Directory

The /etc/ directory is reserved for configuration files that are local to the machine. No binaries are to be placed in /etc/. Any binaries that were once located in /etc/ should be placed into /sbin/ or /bin/.

Examples of directories in /etc are the X11/ and skel/:


/etc
|- X11/
|- skel/

The /etc/X11/ directory is for X Window System configuration files, such as xorg.conf. The /etc/skel/ directory is for "skeleton" user files, which are used to populate a home directory when a user is first created. Applications also store their configuration files in this directory and may reference them when they are executed.

4) The /lib/ Directory

The /lib/ directory should contain only those libraries needed to execute the binaries in /bin/ and /sbin/. These shared library images are particularly important for booting the system and executing commands within the root file system.

5)The /media/ Directory

The /media/ directory contains subdirectories used as mount points for removeable media such as usb storage media, DVDs, CD-ROMs, and Zip disks.

6)The /mnt/ Directory

The /mnt/ directory is reserved for temporarily mounted file systems, such as NFS file system mounts. For all removeable media, please use the /media/ directory. Automatically detected removeable media will be mounted in the /media directory.

7)The /opt/ Directory

The /opt/ directory provides storage for most application software packages.

A package placing files in the /opt/ directory creates a directory bearing the same name as the package. This directory, in turn, holds files that otherwise would be scattered throughout the file system, giving the system administrator an easy way to determine the role of each file within a particular package.

For example, if sample is the name of a particular software package located within the /opt/ directory, then all of its files are placed in directories inside the /opt/sample/ directory, such as /opt/sample/bin/ for binaries and /opt/sample/man/ for manual pages.

Packages that encompass many different sub-packages, data files, extra fonts, clipart etc are also located in the /opt/ directory, giving that large package a way to organize itself. In this way, our sample package may have different tools that each go in their own sub-directories, such as /opt/sample/tool1/ and /opt/sample/tool2/, each of which can have their own bin/, man/, and other similar directories.

8)The /proc/ Directory

The /proc/ directory contains special files that either extract information from or send information to the kernel. Examples include system memory, cpu information, hardware configuration etc.

Due to the great variety of data available within /proc/ and the many ways this directory can be used to communicate with the kernel, an entire chapter has been devoted to the subject. For more information, refer to Chapter 3, The proc File System.

9)The /sbin/ Directory

The /sbin/ directory stores executables used by the root user. The executables in /sbin/ are used at boot time, for system administration and to perform system recovery operations. Of this directory, the FHS says:

/sbin contains binaries essential for booting, restoring, recovering, and/or repairing the system in addition to the binaries in /bin. Programs executed after /usr/ is known to be mounted (when there are no problems) are generally placed into /usr/sbin. Locally-installed system administration programs should be placed into /usr/local/sbin.

At a minimum, the following programs should be in /sbin/:


arp, clock,
halt, init,
fsck.*, grub,
ifconfig, mingetty,
mkfs.*, mkswap,
reboot, route,
shutdown, swapoff,
swapon

Network Monitoring-Nagios

What Is This?

Nagios® is a system and network monitoring application. It watches hosts and services that you specify,
alerting you when things go bad and when they get better.
Nagios was originally designed to run under Linux, although it should work under most other unices as
well.

Some of the many features of Nagios include:


Monitoring of network services (SMTP, POP3, HTTP, NNTP, PING, etc.)
Monitoring of host resources (processor load, disk usage, etc.)
Simple plugin design that allows users to easily develop their own service checks
Parallelized service checks
Ability to define network host hierarchy using "parent" hosts, allowing detection of and distinction
between hosts that are down and those that are unreachable
Contact notifications when service or host problems occur and get resolved (via email, pager, or
user-defined method)
Ability to define event handlers to be run during service or host events for proactive problem
resolution
Automatic log file rotation
Support for implementing redundant monitoring hosts
Optional web interface for viewing current network status, notification and problem history, log
file, etc.

Real world Ruby

I am working on Ruby language since last few months. I really wondered, this is so beautyful language to work with, so what could be various usages of this great language? I Googled a bit for this and found many fascinating facts. I thought like sharing this information with you. Many people use Ruby in their daily jobs, others as hobby. But there are many other useful and important areas where Ruby is being used.

Simulations
NASA Langley Research Center uses Ruby to conduct simulations.

A research group in Motorola uses Ruby to script a simulator, to generate scenarios as well as to post process the data.

3D Modelling
Google SketchUp is a 3D modelling application which uses Ruby for its macro scripting API.

Business
Toranto Rehab uses a RubyWebDialogs based application to manage and track on-call and on-site support for IT help desk and IT operations teams.

Robotics
At MORPHA project, Ruby was used to implement reactive control part for the Siemens service robot.

Networking
Open Domain Server uses Ruby to allow people using dynamic DNS clients to update their IP configuration in real time so that it can be mapped to static domains.

Telephony
Ruby is being used within Lucent on a 3G wireless telephony product.

System Administration
Ruby was used to write the central data collection portion of Level 3 communications Unix capacity and planning system that gathers performance statistics from over 1700 Unix (Solaris and Linux) servers scattered around the globe.

Web Applications
Basecamp, a web-based project management application developed by 37signals is programmed entirely in Ruby.

43 things allows you to keep a list of goals and share it with the world. It was developed entirely in Ruby.

A List Apart, a magazine for people who make websites that has been around since 1997, has recently been revamped and uses a custom application built with Ruby on Rails.

Blue Sequence, a sophisticated mission-critical application which forms part of Toyota Motor Manufacturing's own "Sequence-in-time" production process, has recently been selected as finalist in this years British Computers (BCS) Information Management Awards.