The Best Multiplatform Development Environment that Ever Lived on One Box
I decided my consulting company needed to have a professional development environment where I could potentially host works-in-progress for my clients. I wanted high security. I wanted high availability. I wanted to support not only multiple servers (Oracle and Sybase; Tomcat, JRun and Weblogic; different JDK revs), but multiple platforms (NT and UNIX). I wanted to be able to grow disk partitions without having to repartition or re-install. I needed to enable developers from all over the country to have speedy remote access. And, oh yeah, I wanted to spend less than $4,000.00 on all of the hardware and software needed to accomplish this.
This wish list was made possible thanks to Linux, the latest kernel build, a host of freely available and very inexpensive software, and a (relatively) inexpensive server machine.
The bulk of my costs went to the purchase of a refurbished Dell PowerEdge 2300 that I got for a steal, $2700.00. For those of you who don't know, a refurbished Dell carry the exact same warranty as a new Dell.
Cable internet access provides a reasonably inexpensive high-speed connection to the Internet. Since I had only a single "real" IP address from a cable connection, a second network adapter was added to the one that came with the server, so that the server could act as a gateway for my LAN.
The table below outlines the hardware and associated costs:
Hardware Cost Obtained From Refurbished Dell PowerEdge 2300 $2,700.00 www.dell.com (Dual Pentium III 450MHz, 256MB RAM, 54GB Hard Disk, 100Mb Ethernet, external SCSI controller) Second PCI Ethernet Card $ 30.00 Had it laying around 20/40GB DAT Tape Drive $740.00 www.dell.com 256MB Additional RAM $420.00 egghead.com, from mysimon.com (comparison shopping portal) Total $3,890.00
The table below outlines all the software in use, with an overview of its purpose:
Software Purpose Location Red Hat 6.2 Base Operating System redhat.com Kernel v2.4.3 Kernel that includes support kernel.org for LVM and more robust firewalling LVM (Logical Volume Allows physical partitions to linux.msede.com/lvm Management) be grouped arbitrarily into Logical Volumes. Allows Logical Volumes to be grown dynamically. ipchains Firewall kernel module IPCHAINS-HOWTO redir A port redirector to allow sammy.net access from the Internet to the (virtual) NT machine SSH (Secure Shell) Allows highly secure openssh.com authentication and encryption of remote sessions VMware Allows us to run Windows NT vmware.com in a Virtual Machine under Linux VNC (Virtual Network Very thin remote control research.att Computing) software
Of the software listed here, only VMware costs anything, and its price is nominal. We also had software expenses related to the use of Windows NT 4 server, described below.
The first step was to install the base Red Hat 6.2 distribution. I did this by downloading the required boot disks and the DOS utility called rawrite to transfer the disk images to floppies. I then booted off these floppies and installed the entire Red Hat distribution over the Internet. Next, it was time to customize.
Using the Linux kernel v2.4.3 allowed me to take advantage of a key enabling technology: LVM (Logical Volume Management; linux.msede.com/lvm/).
The machine came with six 9GB hard drives. Ordinarily, I would have to have a minimum of six partitions along the boundaries of the physical drives. Not only didn't I want to partition based on this arbitrary boundary, but I also wanted flexibility in our partition plan. If a partition was approaching capacity, I wanted to be able to dynamically grow it. This might mean reducing the size of another, less used partition. LVM allows a high degree of configurability through a host of tools.
I also experienced a performance gain by having logical volumes composed of physical partitions across the six drives. This reduces the overall seek time required when accessing files, since you don't have a read/write head moving around a single disk, but all six at once.
During the process of setting up LVM, virtual devices are created for logical volumes and for virtual groups. Here is the output of the mount command after setting up LVM:
/dev/vgRoot/lvRoot on / type ext2 (rw) none on /proc type proc (rw) /dev/sda5 on /boot type ext2 (rw) /dev/vgHome/lvHome on /home type ext2 (rw) /dev/vgOpt/lvOpt on /opt type ext2 (rw) /dev/vgTmp/lvTmp on /tmp type ext2 (rw) /dev/vgUsr/lvUsr on /usr type ext2 (rw) /dev/vgUsrLocal/lvUsrLocal on /usr/local type ext2 (rw) /dev/vgVar/lvVar on /var type ext2 (rw) none on /dev/pts type devpts (rw,gid=5,mode=620)
Here is the output from the df command showing the space on each partition:
Filesystem 1k-blocks Used Available Use% Mounted on /dev/vgRoot/lvRoot 10885380 106804 10225616 1% / /dev/sda5 248895 15348 220697 7% /boot /dev/vgHome/lvHome 4354120 966752 3166184 23% /home /dev/vgOpt/lvOpt 10885380 3997884 6334536 39% /opt /dev/vgTmp/lvTmp 2189128 98048 1979876 5% /tmp /dev/vgUsr/lvUsr 6507036 1530480 4646012 25% /usr /dev/vgUsrLocal/lvUsrLocal 10865240 4687304 5626000 45% /usr/local /dev/vgVar/lvVar 2173016 40584 2022048 2% /var
Here is the output from one of the LVM utilities, called lvdisplay, that shows what physical partitions make up a logical volume:
--- Logical volume --- LV Name /dev/vgRoot/lvRoot VG Name vgRoot (...snip...) LV Size 10.55 GB Current LE 2700 Allocated LE 2700 Stripes 5 Stripe size (KB) 16 Allocation next free Read ahead sectors 120 Block device 58:0 --- Distribution of logical volume on 5 physical volumes --- PV Name PE on PV reads writes /dev/sda6 540 7407 394 /dev/sdb1 540 13843 6893 /dev/sdc1 540 14395 94168 /dev/sdd1 540 7793 775 /dev/sde1 540 11093 64148
The last few lines of this output show that this logical volume is made up of five physical partitions. Notice that each of these partitions is on different disks. The output also shows the number of stripes on the logical volume, in this case five. This means that writes are spread across all five physical partitions, instead of waiting until one physical partition is filled, and then moving on to the next partition. It is the striping that can improve performance, since rather than a single read/write head having to seek across a disk, you are using five at once.
During the process of setting up LVM, you create PEs (physical extents) that represent the underlying physical partitions. I broke each 9GB drive into four partitions, each containing about 2.2GB. This became my minimum unit for making up logical volumes. The next step is to create virtual groups and then assign a group to a logical volume. For more detail, refer to the LVM home page referenced above.
Practical Task Scheduling Deployment
July 20, 2016 12:00 pm CDT
One of the best things about the UNIX environment (aside from being stable and efficient) is the vast array of software tools available to help you do your job. Traditionally, a UNIX tool does only one thing, but does that one thing very well. For example, grep is very easy to use and can search vast amounts of data quickly. The find tool can find a particular file or files based on all kinds of criteria. It's pretty easy to string these tools together to build even more powerful tools, such as a tool that finds all of the .log files in the /home directory and searches each one for a particular entry. This erector-set mentality allows UNIX system administrators to seem to always have the right tool for the job.
Cron traditionally has been considered another such a tool for job scheduling, but is it enough? This webinar considers that very question. The first part builds on a previous Geek Guide, Beyond Cron, and briefly describes how to know when it might be time to consider upgrading your job scheduling infrastructure. The second part presents an actual planning and implementation framework.
Join Linux Journal's Mike Diehl and Pat Cameron of Help Systems.
Free to Linux Journal readers.Register Now!
- Murat Yener and Onur Dundar's Expert Android Studio (Wrox)
- SUSE LLC's SUSE Manager
- Tech Tip: Really Simple HTTP Server with Python
- My +1 Sword of Productivity
- Non-Linux FOSS: Caffeine!
- Managing Linux Using Puppet
- Doing for User Space What We Did for Kernel Space
- Parsing an RSS News Feed with a Bash Script
- Google's SwiftShader Released
- SuperTuxKart 0.9.2 Released
With all the industry talk about the benefits of Linux on Power and all the performance advantages offered by its open architecture, you may be considering a move in that direction. If you are thinking about analytics, big data and cloud computing, you would be right to evaluate Power. The idea of using commodity x86 hardware and replacing it every three years is an outdated cost model. It doesn’t consider the total cost of ownership, and it doesn’t consider the advantage of real processing power, high-availability and multithreading like a demon.
This ebook takes a look at some of the practical applications of the Linux on Power platform and ways you might bring all the performance power of this open architecture to bear for your organization. There are no smoke and mirrors here—just hard, cold, empirical evidence provided by independent sources. I also consider some innovative ways Linux on Power will be used in the future.Get the Guide