Category Archives: Dedicated Server

Adding Additional Disk Drives to CentOS

Adding a new drive to CentOS or RedHat systems.

Making use of a second drive for extra space? Here’s a quick run-down:

1) Make sure you know which disk is being formatted. First, second, and third drives will be /dev/sda, /dev/sdb, and /dev/sdc respectively. Check this with fdisk -l

[03:50:04] [root@virt ~]# fdisk -l

Disk /dev/sda: 34.3 GB, 34359738368 bytes
255 heads, 63 sectors/track, 4177 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1          13      104391   83  Linux
/dev/sda2              14        4177    33447330   8e  Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

Disk /dev/sdb doesn't contain a valid partition table

2) You can see that /dev/sdb (our second hard drive) does not have any partitions. We will need to create a partition(s) on the drive and then make a file system on it, then mount it. Let’s write partitions to the drive using fdisk /dev/sdb:

[03:53:01] [root@virt ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. Changes will remain in memory only,
until you decide to write them. After that, of course, the previous
content won't be recoverable.

Command (m for help): m
Command action
   a   toggle a bootable flag
   b   edit bsd disklabel
   c   toggle the dos compatibility flag
   d   delete a partition
   l   list known partition types
   m   print this menu
   n   add a new partition
   o   create a new empty DOS partition table
   p   print the partition table
   q   quit without saving changes
   s   create a new empty Sun disklabel
   t   change a partition's system id
   u   change display/entry units
   v   verify the partition table
   w   write table to disk and exit
   x   extra functionality (experts only)

Command (m for help):

3) As you can see from the help menu (by using the command “m”) we want to add a new partition. Using the defaults will use the entire disk. After it’s created, you will want to use the command “w” to “write table to disk and exit”.

Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
Partition number (1-4): 1
First cylinder (1-1044, default 1): 1
Last cylinder or +size or +sizeM or +sizeK (1-1044, default 1044): 
Using default value 1044

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.
[03:54:58] [root@virt ~]#

4) Now you will notice that the output of fdisk -l /dev/sdb shows a partition as /dev/sdb1:

[03:57:08] [root@virt ~]# fdisk -l /dev/sdb

Disk /dev/sdb: 8589 MB, 8589934592 bytes
255 heads, 63 sectors/track, 1044 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes

   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1        1044     8385898+  83  Linux

5) Now we need to create a file system on it. I’ve always used ext3 for general use/purposes. You’ll want to use the command mkfs -t ext3 /dev/sdb1 as shown here:

[03:58:38] [root@virt ~]# mkfs -t ext3 /dev/sdb1
mke2fs 1.39 (29-May-2006)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
1048576 inodes, 2096474 blocks
104823 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=2147483648
64 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632

Writing inode tables: done                            
Creating journal (32768 blocks): done
Writing superblocks and filesystem accounting information: done

This filesystem will be automatically checked every 38 mounts or
180 days, whichever comes first.  Use tune2fs -c or -i to override.

6) Great, now we have a single partitioned secondary drive using ext3 file system. Now you want to create a directory to mount it in; lets just use “/drive2”. You’ll need to use the command mount -t [filesystem] [source] [mount directory] to mount it.

[03:59:50] [root@virt ~]# mount -t ext3 /dev/sdb1 /drive2/

7) Now you’ll notice, via df, that the drive is mounted:

[03:59:57] [root@virt ~]# df -h
Filesystem            Size  Used Avail Use% Mounted on
                       28G  1.4G   25G   6% /
/dev/sda1              99M   19M   76M  20% /boot
tmpfs                1014M     0 1014M   0% /dev/shm
/dev/sdb1             7.9G  147M  7.4G   2% /drive2

8) Last step – you want to make sure the drive automatically mounts itself when the server boots/reboots. You’ll need to add the following line to your /etc/fstab file:

/dev/sdb1  /drive2  ext3  defaults 0 0


All done!



SolusVM Mass Starting/Stopping Virtual Servers

If you need to mass start your virtual servers, run the following code in SSH on the host:



CFGS=/home/xen/vm*/;for cfg in $CFGS;do xm create $cfg*.cfg;done


xm shutdown -aw



CFGS=`vzlist -S -Ho ctid`;for cfg in $CFGS;do vzctl start $cfg;done


CFGS=`vzlist -S -Ho ctid`;for cfg in $CFGS;do vzctl stop $cfg;done


CFGS=/home/kvm/kvm*/;for cfg in $CFGS;do virsh create $cfg*.xml;done

Using Screen

Screen is like a window manager for your console. It will allow you to keep multiple terminal sessions running and easily switch between them. It also protects you from disconnection, because the screen session doesn’t end when you get disconnected.

You’ll need to make sure that screen is installed on the server you are connecting to. If that server is Ubuntu or Debian, just use this command:

sudo apt-get install screen

Now you can start a new screen session by just typing screen at the command line. You’ll be shown some information about screen. Hit enter, and you’ll be at a normal prompt.

To disconnect (but leave the session running)

Hit Ctrl + A and then Ctrl + D in immediate succession. You will see the message [detached]

To reconnect to an already running session

screen -r

To reconnect to an existing session, or create a new one if none exists

screen -D -r

To create a new window inside of a running screen session

Hit Ctrl + A and then C in immediate succession. You will see a new prompt.

To switch from one screen window to another

Hit Ctrl + A and then Ctrl + A in immediate succession.

To list open screen windows

Hit Ctrl + A and then W in immediate succession

There’s lots of other commands, but those are the ones I use the most.



Command Line Ping Sweep

Sometimes it can be handy to ‘see’ what is around you on a network, for instance when you’re using DHCP on a network and you want to find which addresses are already taken. Or you want to see whether specific machines are up and running… Of course there are various tools you can install or use, but there are times that you just can’t reach for the right tool(s)… You don’t want to do a ping sweep for nothing.
Of course there is a way of ping sweeping from the command line By simply using the ‘FOR’, ‘PIPE’ and ‘GREP’ commands in a clever way.

for i in {1..254}; do ping -c 1 -W 1 192.168.1.$i | grep ‘from’; done

Naturally you can stop the ping sweep by entering Ctrl+z

Basic Server Setup

No matter how new your server or vps is, it is outdated and running old software.  While I am not the best, nor do I know everything this is a base of what I do when I get a new box online.

Again assuming you can SSH into the box.

yum -y install nano
yum -y install yum-priorities
rpm –import
rpm -K rpmforge-release-0.3.6-1.el5.rf.*.rpm
rpm -i rpmforge-release-0.3.6-1.el5.rf.*.rpm
rpm –import RPM-GPG-KEY.dag.txt

nano /etc/yum.repos.d/dag.repo

name=Dag RPM Repository for Red Hat Enterprise Linux

Save and Exit

yum -y install perl-libwww-perl
yum -y update

chkconfig cups off
chkconfig pcmcia off
chkconfig kudzu off
chkconfig isdn off
chkconfig xfs off
chkconfig atd off
chkconfig nfslock off
chkconfig canna off
chkconfig FreeWnn off
chkconfig cups-config-daemon off
chkconfig iiim off
chkconfig mDNSResponder off
chkconfig nifd off
chkconfig rpcidmapd off
chkconfig bluetooth off
chkconfig anacron off
chkconfig gpm off
chkconfig saslauthd off
chkconfig avahi-daemon off
chkconfig avahi-dnsconfd off
chkconfig hidd off
chkconfig pcscd off
chkconfig sbadm off
chkconfig ossec off
chkconfig acpid off
chkconfig dhcpd off
chkconfig firstboot off

mkdir /root/source
cd /root/source
tar -xzf csf.tgz
cd csf

nano /etc/csf/csf.conf

Change TESTING=”1″ to TESTING=”0″

TCP_IN = “20,21,22,25,26,37,43,53,80,106,110,113,143,443,465,587,873,990,993,995,1129,2077,2078,2082,2083,2086,2087,2095,2096,3306,5224,5432,7777,7778,8443,8880,8888,8889,9080,10000,30000:35000”
TCP_OUT = “20,21,22,25,26,37,43,53,80,106,110,113,143,443,465,587,873,990,993,995,1129,2077,2078,2082,2083,2086,2087,2095,2096,3306,5224,5432,7777,7778,8443,8880,8888,8889,9080,10000”
UDP_IN = “20,21,53,953”
UDP_OUT = “20,21,53,113,123,953,33434:33523”

service csf restart
service lfd restart


. Add Passive Port range 30000-350000 to your Pureftp or Proftp configuration file
(i) Pureftpd
open /etc/pure-ftpd.conf, and this line
PassivePortRange    30000 35000
(ii) ProFTP
Open /etc/proftpd.conf, and add this line
PassivePorts    30000 35000

Now there are many other things you can do, root kit hunters and log rotators and more. However depending on your needs this alone will get you off to a good start.

Switching from Apache to Lighttpd

One of my side projects is running a free image hosting site.  FreeImageHostingOn.US with this site I have been pushing out millions of hits a day and as you can imagine it puts a load on many shared hosting providers.  So the other day I grabbed a VPS from Ruby Ring Technologies and I installed the CentOS/LXAdmin image.  Out of the box this VPS screamed.  However I know I could get more performance out of it.  The following six lines of code did more then double the thruput and halved the ram usage.

Add the following lines to the lighttpd.conf file.

server.max-keep-alive-requests = 4
server.max-keep-alive-idle = 4
server.event-handler = “linux-sysepoll” = “linux-sendfile”
server.max-fds = 8192
server.stat-cache-engine = “simple”

As you can see from the following image, things are moving along nicely.

Bandwidth Traffic

The current load on the server is 0.0 and the ram used it 66MB’s for live stats check out this link.  System Usage.