Creating and removing a Symbolic link (soft link) in Linux

Symbolic links or soft links are like shortcuts in Windows systems. We use these to point/redirect to another file/directory. Links are a mandatory in some cases where we need a shortcut to actual data, in our day-to-day tasks. With soft links, we can even point to a directory – which is not possible with hard links. Hard links are discussed in another post, which can be accessed by clicking here.

Let us see how can we create a soft link, how to use it and how can we remove/delete the link below. Read more

Symbolic link can be created by running the ln -s command. Let us see the syntax and example for creating a link.

Syntax :

ln -s target source(linkname)

Example :

[root@bforum test]#ln -s /home/beginnersforum/linux testlink   #A link to linux directory will be created with name testlink

[root@bforum test]#ls -l

lrwxrwxrwx 1 root root   26 Jan  1 2015  testlink -> /home/beginnersforum/linux

[root@bforum test]

Here in the above example, we have created a link named testlink to the directory /home/beginnersforum/linux. Now accessing the testlink will redirect us to the linux directory as required.


Now we will see how we can remove the link,.  The command will be unlink for removing the link. Below are the syntax and example for the command.

Syntax :

unlink linkname

Example :

[root@bforum test]#ls -l

lrwxrwxrwx 1 root root   26 Jan  1 2015  testlink -> /home/beginnersforum/linux

[root@bforum test]#unlink testlink                    #Removing the link named testlink

[root@bforum test]#ls -l

[root@bforum test]#

Thus in the above unlink command example, we have removed the link named testlink which was created in our previous example.

For more options with these commands, you may refer to the man pages (man ln, man unlink).

That’s it..! We are done with creation and deletion of soft links. Hope this helped you.

For more posts on Linux please click here. We are happy to have your suggestions/queries in the comments section below.


Happy New Year 2015…!!!

It was a perfect year – 2014 – for us, where we started this great initiative.We will be keeping this momentum going in the coming years, with more value added posts and more…

Tomorrow is always a hope for doing something better.

We from Beginner’s Forum, wish you all our readers a Happy New Year 2015..!!!


New Year 2015

How to resize a linux filesytem without Data Loss

Today i’m going to show you how to resize a filesystem without data loss.This can be quite useful, if you do not use the LVM technology.

Note:- Before doing this in live enviornment, kindly test it in your testbox
Here i’m using my susebox .
Tools Used :- fdisk, umount, fsck, tune2fs, e2fsck, resize2fs.

I’m going to resize the /dev/sdb1 in this tutorial. ( if your partition is named diferently, kindly replace it) Read more























In the above screenshot, you can able to see the harddisk size, mount point etc.

So /dev/sdb harddisk is of 16GB size

/dev/sdb1 is 8.7 GB . and it’s mounted to /testdir directory.

To extend the size of /dev/sdb1 , the filesystem should be unmounted. Here /dev/sdb1 is mounted on /testdir, run the umount command to unmount the same.








Now run fsck -n /dev/sdb1 for checking the filesystem.






Then we need to remove the journal from the filesystem , this will bring ext2 filesystem to /dev/sdb1






Now run e2fsck to check the filesystem,









Now we can resize the filesystem using resize2fs tool.

Resize2fs can resize ext2 file systems, but not ext3 file systems, that’s why we changed /dev/sdb1 to ext2 by removing journel from it.

8.7GB is the size of /dev/sdb1 (check the above df -h screenshot). Now we are going to extend  the /dev/sdb1 from 8.7 GB to 15 GB .

Note :- In case of shrinking data , don’t make it smaller than 1.9GB (space used as per df-kh output), you will lose data!


So we are going to run resize2fs /dev/sdb1 15000M







Kindly note the number of blocks (384000) and their size (4k). We need it later..

Now we are going to delete the partition /dev/sdb1 using fdisk tool

” Dont worry about your data 🙂 ”








Next we will create a new /dev/sdb1 partition. It was a primary partition earlier, so  choose p again, and again it is our partition no. 1:








Then comes the important part,

Size of the partition:-

The  First Cylinder is not an issue , it’s default (1). But in the case of  Last Cylinder , we don’t have the value , So we can specify the size in kilobyes (K) .

We can calculate the size like this ,

Last Cylinder Size = The amount of blocks from the resize2fs output *  the size of block

// amount of blocks = 384000 .

// Size of block = 4k

Last Cylinder Size =    384000 * 4k =  1536000K

Apply this with +1536000K and write the partition using ‘w’

dddddThen run fsck -n /dev/sdb1.


Then  create the journal on our new /dev/sdb1, thus turning it into an ext3 partition again:








Check the size of filesystem,






Check with df -h and you are good to mount the filesystem.








Hope this helped.


Brocade SAN switch zoning via CLI

We had discussed zoning in Cisco switch recently, in one of our posts. Now we will discuss the same on a Brocade switch via CLI. As we already discussed, the 3 components (zones, aliases and zoneset) remains the core here also. For reading bit more on this, you may read the previous post.

Now let’s directly come in to the commands for various steps.

Read more

We have the new HBA connected to the switch, we can ensure the successful connectivity by running switchshow command. This will show all the ports and the connected device WWNs, you can check the port number if you are aware of, or by finding the WWN (you may do a grep for the WWN).

Else if you are not aware of the switch and port on fabric on which the HBA is attached to, you may run nodefind. nodefind 10:xx:xx:xx:xx:xx:xx:01  will list the port details.



Now we can create the alias for the HBA (BForum_HBA1) and the storage port (VNX_SPA3). Below are the commands,

alicreate “BForum_HBA1″,”10:xx:xx:xx:xx:xx:xx:01”
alicreate “VXN_SPA3″,”50:06:xx:xx:xx:xx:xx:02”

For adding a WWN to an existing alias (adding a WWN – 10:xx:xx:xx:xx:xx:xx:02 to the alias BForum_HBA2 for example) you may run,

aliadd “BForum_HBA2″,”10:xx:xx:xx:xx:xx:xx:02”

Now we will be creating the zone for the HBA and storage port,

zonecreate “BForum_HBA1_VNX_SPA3″,”BForum_HBA1;VNX_SPA3”

We can add an alias to an existing zone by running the zoneadd command in similar way as we used aliadd command.

We can create zone config with the below command. This will add the zone to the cfg too..

cfgcreate “BForum_SAN1_CFG”,”BForum_HBA1_VNX_SPA3″



we should use the cfgadd command to add a new zone to an existing cfg as shown below,

cfgadd “BForum_SAN1_CFG”,”BForum_HBA1_VNX_SPB2

Thus we have the zones created and added to the (existing/new) config. Now we should save the config to memory to ensure this will be loaded in the next reboot of the switch also. The cfgsave command will do it for us.

We can now enable the zone config to make it in effect.

cfgenable BForum_SAN1_CFG

Yes we are all set. The server and storage now should be able to communicate. Some other useful commands are,

cfgshow BForum_SAN1_CFG           #Shows the config BForum_SAN1_CFG in detail

cfgdisable BForum_SAN1_CFG           #Disables the config BForum_SAN1_CFG

cfgremove “BForum_SAN1_CFG”,”BForum_HBA1_VNX_SPB2”           #Removes the zone BForum_HBA1_VNX_SPB2 from config BForum_SAN1_CFG

cfgactvshow            #Shows the current active config

alishow BForum_HBA1    #Shows the alias BForum_HBA1

zoneshow BForum_HBA1_VNX_SPA3   #Shows the zone BForum_HBA1_VNX_SPA3 details

More in coming posts. You may click here for SAN switch related posts. Thanks for reading..


Cisco MDS SAN switch Zoning via CLI

Here let’s discuss the steps to complete the zoning of a new server in Cisco MDS FC switch. In our previous post we had discussed the initialization procedure for a new MDS switch – may be helpful for you. The process of zoning will have 3 components, namely aliases, zones and zoneset (or zone configuration).

If you have a Brocade switch, you may refer to this post which explains zoning in a Brocade switch via CLI.

An alias is a name assigned to the WWN numbers which makes it easy to use/remember. WWN numbers Read more

– identity for a device, will have numbers separated by colon (:), for e.g, 10:ab:cd:ef:12:34:56:78 – are harder to be remembered.

A zone will be containing multiple objects which defines a communication path. In a zoning enabled switch, any two WWNs or port which are not having a common zone (which are not part of a single zone together) will not be able to communicate each other. We will create a Zone and will add the objects (WWNs, aliases or ports) to it.

A zoneset or a zone configuration is a collection of a set of zones in a switch/fabric. It makes easy to manage the zones. We will define an active configuration in switch/fabric and will add the zones, which need to be active, to this configuration.
Now let’s discuss the commands.



First we will create an alias for the new server HBA and the storage port to which it need to communicate.

#conifg -t

BForum_SAN01(config)# fcalias name BForum_HBA1 vsan 20        # This will create an alias with name BForum_HBA1

BForum_SAN01(config-alias)# member pwwn 10:xx:xx:xx:xx:xx:xx:01    # Adds the WWN to this alias


BForum_SAN01(config)# fcalias name VNX_SPA3 vsan 20

BForum_SAN01(config-alias)# member pwwn 50:xx:xx:xx:xx:xx:xx:01


Now we have the aliases ready. We can now create a zone for these two objects and add them. We will create a zone named ‘BForum_HBA1_VNX_SPA3’ which will be containing the host HBA (BForum_HBA1) and the storage port (VNX_SPA3).

BForum_SAN01(config)# zone name BForum_HBA1_VNX_SPA3 vsan 20

BForum_SAN01(config-zone)# member fcalias BForum_HBA1

BForum_SAN01(config-zone)# member fcalias VNX_SPA3

BForum_SAN01(config-zone)# exit

Zone too is ready now. Assuming we don’t have an existing configuration, we will be creating a zone config here. If you are already having a zoneset, you can use the zoneset name here in the below command.



BForum_SAN01(config)#zoneset name BForum_SAN01_Config VSAN 20

BForum_SAN01(config-zoneset)# member BForum_HBA1_VNX_SPA3

BForum_SAN01(config-zoneset)# exit

Now we have the zoneset created and zones added to it. We are good to activate the new zoneset.

BForum_SAN01(config)# zoneset activate name BForum_SAN01_Config VSAN 20

To verify the active zoneset, you may run the command show active zoneset

In case if you have to deactivate the zoneset, you may run the command,

BForum_SAN01(config)# no zoneset activate name BForum_SAN01_Config VSAN 20

We can save the running config to start-up config by running copy run start command. Now we have the zoning completed for one of the HBA of the new server. We will have to do the zoning for both the HBAs and should use multiple storage ports for redundancy.

You may click here for SAN switch related posts.

Hope this post was helpful for you. More, in coming posts, your thoughts in comments below… 🙂

How to use sudo – root privilege for a normal user

Sudo works under Linux / Mac OS X and all UNIX like operating systems. /etc/sudoers (config file that defines or list of who can run what) allows you to delegate authority to give certain users or groups of users the ability to run various commands as the superuser(root) or another user without needing the root password. This is useful for delegating roles and permissions to other users without sharing the root password.

This file must be edited with the visudo command as the root user . The sudo command allows users to do tasks on a Linux system as another user.

Read more

How do I use sudo?

Let us take an example here,

If you want to give the user John, access to restart httpd service. First, Login as root user, then use visudo command edit the config file:

# visudo



Append the following lines to file:

John ALL= /etc/init.d/httpd restart

Save and close file . Now John user can restart httpd service by typing the following command:

$ sudo /etc/init.d/httpd restart


We trust you have received the usual lecture from the local System
Administrator. It usually boils down to these three things:
#1) Respect the privacy of others.
#2) Think before you type.
#3) With great power comes great responsibility.
Stopping httpd: [ OK ]
Starting httpd: [ OK ]

The sudo command has logged the attempt to the log file /var/log/secure or /var/log/auth.log file:

# tail -f /var/log/secure

Sample outputs:

Nov 15 06:05:36 localhost sudo: John : TTY=pts/1 ; PWD=/home/John ; USER=root ; COMMAND=/etc/init.d/httpd restart

Before running a command with sudo, users usually supply their password. Once authenticated, and if the /etc/sudoers configuration file permits the user access, the command will be run. sudo logs each command run.
a) If you want to allow John to run various commands:

John ALL=/sbin/halt, /bin/kill, /etc/init.d/httpd

b) Allow user John to restart httpd without any password i.e. as root without authenticating himself:

John ALL= NOPASSWD: /etc/init.d/httpd restart

c) Allow user Alex to run any command from /usr/bin directory:

Alex ALL = /usr/bin/*



d) Allow user Alex to run ALL commands:


e) If you want to allow system admin user to run all commands (add users to a group eg:- unixsa)
Append the following line:

## Allows people in group unixsa to run all commands
 %unixsa ALL=(ALL) ALL

Save and close the file. Finally, add a group called unixsa:

# groupadd unixsa

Add a user called Alex (existing user) to group unixsa:

# usermod -a -G unixsa Alex

Verify group membership:

# id Alex

Sample Outputs:

uid=5001(Alex) gid=5001(Alex) groups=5001(Alex),110(unixsa)

Login as user Alex and to run any command as the root type:

$ sudo /etc/init.d/network restart

f) If database admin user want to run command as oracle

Append the following lines to /etc/sudoers file:

John ALL=(oracle) /u01/app/oracle/product/11.1.0/db_1/bin/dbstart

In this case, it’s that indicating the user John can execute the dbstart command as oracle occurs. When using sudo to assume the role of a user other than root, use the -u option and give the user name as an argument, followed by the command that should be executed.

$ whoami


$ sudo -u oracle /u01/app/oracle/product/11.1.0/db_1/bin/dbstart


 Processing Database instance "TEST": log file /u01/app/oracle...

That’s all, we have tried all the common options for the sudo command. You may have your queries in the comments section.


Simple VMAX device allocation steps

Here we will discuss the basics of VMAX, a new device allocation to a new host. For a new host, we will have to create a Masking View (we will use MV or View later in this post), which will be containing Storage Group ( SG – Containing all the devices to be presented to the host ), Port Group ( PG -Containing the VMAX director ports through which the host will access the devices ) and Initiator Group ( IG – containing the host HBA WWNs ). Lets look more in to the configuration via symcli.

Read more

Let’s assume we are using Thin Devices with a pool named T_Pool_1 already present in our VMAX.We will create 2 TDEVs devices first. The command will be,

symconfigure -sid 1234 -cmd ” create dev count=2, size=54614, emulation=FBA, config=TDEV;” commit -v

The new devices AAAA and AAAB  of 50GB are now created. Now we will bind these to the pool T_Pool_1. The commad we will use,

symconfigure -sid 1234 -cmd “bind tdev AAAA:AAAB to pool T_Pool_1;” commit -nop -v



Now we are all set to allocate these devices to the server. But it requires the View created. We are assuming the zoning is done and the HBAs are having good connectivity with the VMAX. We can verify this by running the command,

symaccess -sid 1234 list logins -wwn 1xxxxxxxxxxx  # where 1xxxxxxxxxxx is the HBA WWN

If the HBA is logged in, we are good.Now we will create the IG first.

symaccess -sid 1234 -type init create -name BForum_IG -f WWN_file

Where the WWN_file should have the WWNs mentioned in the form,



If we need to a WWN later we can do it by running,

symaccess -sid 1234 -name BForum_IG -type init -wwn 3xxxxxxxxxxx add

Now we have the IG created. The initiators in IG will be listed with their WWN only. If we need to rename to make it human-readable, we can use the command –

symaccess -sid 1234 -wwn 1xxxxxxxxxxx  rename -alias BForum_HBA1/1xxxxxxxxxxx 

The next step, we will create the PG.

symaccess -sid 1234 create -name BForum_PG -type port -dirport 7f:0,9f:0



Now we have the PG created with the FA port 7F:0 and 9F:0 added to it. Now we are left with the SG. We will create it with the devices AAAA and AAAB added to it,.

symaccess -sid 1234 create -name BForum_SG -type storage -devs AAAA:AAAB 

Yes, we have all the groups created. Now we will create the View,

symaccess -sid 1234 create view -name BForum_MV -ig BForum_IG -pg BForum_PG -sg BForum_SG

That’s it..! The view is set with the host and devices added to it.Now the server will be able to discover the devices.

Backup is of top priority for your production data and VMs. We recommend Nakivo for your VMware, Hyper-V and EC2 instances backups.

That was easy, right ? Hope you enjoyed it.You may find more EMC VMAX posts here.


Initializing a Cisco MDS FC switch

Trouble in initializing brand new Cisco MDS FC switch ? This post may help you. This post here discusses the procedure to initialize a new FC switch.


You have to connect the Console cable with Read more

the serial (COM) port on your laptop/desktop. You may use any terminal emulation utility such as Putty, Hyper Terminal etc.. and should use the default settings for serial connection (9600 baud,8 data bits,1 stop bit,No parity). Now you are all set to receive get the serial console.


Now you can connect the power and switch the switch ON. Once the switch is powered ON and booted up, you will asked to set the password for administrator. You should be setting a strong password otherwise the entered one will be rejected.

Once this is done, you will be prompted whether or not to continue with entering the configuration data. You can proceed with yes once you have the necessary information.



Press Enter at anytime to skip a dialog. Use ctrl-c at anytime
to skip the remaining dialogs.

Would you like to enter the basic configuration dialog (yes/no): yes

Create another login account (yes/no) [n]:

Configure read-only SNMP community string (yes/no) [n]:

Configure read-write SNMP community string (yes/no) [n]:

Enter the switch name : B-Forum-SW01

Continue with Out-of-band (mgmt0) management configuration? (yes/no) [y]:

Mgmt0 IPv4 address : 12x.23x.234.123

Mgmt0 IPv4 netmask :

Configure the default gateway? (yes/no) [y]:

IPv4 address of the default gateway : 12x.23x.234.1

Configure advanced IP options? (yes/no) [n]:

Enable the ssh service? (yes/no) [y]:

===== Output shortened =====



The switch will be showing all the parameters going  to be set on the switch. If you need to edit any of them, you may enter yes for the query to edit. If you are OK with the values, you can go for the default , no.You can save the configuration by entering yes to the next query.

Would you like to edit the configuration? (yes/no) [n]: no

Use this configuration and save it? (yes/no) [y]: yes

The switch will reboot and the new configuration will take affect. Yes, we are done..

If you wish to reset these values later, you may try the command setup. You will be receiving the same questionnaire as you did for the first time initialization.

You may click here for SAN switch related posts.

Hope this post was helpful for you. Comments are always welcome…



Scanning new LUNs from Celerra/VNX File

Once you have provisioned a new LUN (or Symmetrix device), you have to scan for this LUN from Celerra/VNX file components to make use of it at the File side – for making filesystem and then CIFS share/ NFS export. Here we are discussing the simple steps to scan the new LUN.

1. From the GUI – Unisphere Manager

Read more

Login to the Unisphere manager console by entering the control station IP address in web browser. Select the system you have to scan for new LUN from top left drop-down. Navigate to System > System Information tab.You will be given with a Rescan All Storage Systems button there which will do the rescan for you.

RescanOnce rescan is completed, the devices/LUNs will be visible under the disks and space will be available as the potential storage for the respective pool (Storage Pool for file).



 2. Now via CLI

From the CLI we have to scan for the new LUN on all data movers. We will use the command server_devconfig. We can run the command for each DM (data mover) separately starting with the standby one first. The syntax for a dual data mover system will be,

server_devconfig server_3 -create -scsi -all      # for standby DM

server_devconfig server_2 -create -scsi -all      # for primary DM

This is the recommended way but I have never heard of any issue occurred while scanning across all DMs at a time.For a multi DM system if we want to scan for all data movers in single command, the only change will be just ALL in the place of the server name.

server_devconfig ALL -create -scsi -all      # for all DMs

After the successful scanning you can find the new devices/LUNs at the bottom of the  output of nas_disks -list command.

$nas_disks -l

id   inuse  sizeMB    storageID-devID           type     name          servers

1     y      11263    CK1234512345-0000    CLSTD   root_disk     1,2

============== Shortened output ==============

18    n     51200    CK1234512345-0010    CLSTD   d18             1,2


You can verify the increased space of the respective pool by running the nas_pool -size [Pool Name].

Hope this post helped you. For more Celerra/VNX posts click here


1 4 5 6 7