cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted

VCS - Resource to mount CIFS shares

Hi,

I want to manage a CIFS mount within a Service Group and cannot find the appropriate resource.

I just one to mount a CIFS share in my VCS cluster, acting as a client.

Can anyone let me know which Resource type should I use?

 

 

Thanks & Regards,

JL

1 Solution

Accepted Solutions
Highlighted
Accepted Solution!

You can use application agent

You can use application agent - so for example create a file something like /opt/VRTSvcs/bin/cifs.sh containing:

MOUNT_PATH=$2
SRC_PATH=$3

MOUNT=/bin/mount
UMOUNT=/bin/umount
GREP=/bin/grep

if [ $# -eq 4 ]
then
        MOUNT_OPTS="-o $4"
fi

case "$1" in
start)
    $MOUNT -t cifs $MOUNT_OPTS $SRC_PATH $MOUNT_PATH
    ;;
stop)
    $UMOUNT $MOUNT_PATH
    ;;
monitor)
    $MOUNT | $GREP "^$SRC_PATH on $MOUNT_PATH type cifs" > /dev/null
    if [ $? -eq 0 ]
    then
        exit 110
    else
        exit 100
    fi ;;
*)
    echo "Usage: $0 {start|stop|monitor} mount_path src_path"
    exit 1
    ;;
esac

 

Then create Application resource like:

Application cifs_test (
  StartProgram  = "/opt/VRTSvcs/bin/cifs.sh start /test //win-svr/test username=mike,password=123"
  StopProgram  = "/opt/VRTSvcs/bin/cifs.sh stop /test"
  MonitorProgram = "/opt/VRTSvcs/bin/cifs.sh monitor /test //win-svr/test "
)

 

Mike

View solution in original post

8 Replies
Highlighted

The Mount agent does not

The Mount agent does not support mounting CIFs so I think you would need to use the Application agent.

Mike

Highlighted

You have selected Linux as

You have selected Linux as OS, right?

Any possibility you can mount the share as NFS?

If we look at the VCS Bundled Agent Guide for Linux, we see that the Mount Agent supports these filesystem types:

 vxfs, bind, ext2, ext3,ext4, xfs, nfs, or reiserfs.

Highlighted

The other possibilty is to

The other possibilty is to mount at boot, as there should be no real need to fail the mount over - you can have it mounted on all nodes in the cluster, all at the same time, so benefits of putting under VCS control is mainly just monitoring the mount.

Mike

Highlighted

Hi Marianne, thank you for

Hi Marianne, thank you for this option. I need to use CIFS as AD user/password is required to mount the share.

Highlighted

Yes, this possibility will be

Yes, this possibility will be used at last resource if no resource can manage the mount.

Imagine the case that more mounts are required within the cluster, I can't imagine having around 20/30/...  mounts in both nodes and being used only by one node. Also I'm concerned about the security, why to mount if can be not mounted.

Highlighted

Curious to know how you would

Curious to know how you would do that from cmd with mount command or what fstab entry would look like if you would want to mount at boot as per Mike's suggestion below.

The VCS mount resource only supports the FS types as listed above.

 

Highlighted
Accepted Solution!

You can use application agent

You can use application agent - so for example create a file something like /opt/VRTSvcs/bin/cifs.sh containing:

MOUNT_PATH=$2
SRC_PATH=$3

MOUNT=/bin/mount
UMOUNT=/bin/umount
GREP=/bin/grep

if [ $# -eq 4 ]
then
        MOUNT_OPTS="-o $4"
fi

case "$1" in
start)
    $MOUNT -t cifs $MOUNT_OPTS $SRC_PATH $MOUNT_PATH
    ;;
stop)
    $UMOUNT $MOUNT_PATH
    ;;
monitor)
    $MOUNT | $GREP "^$SRC_PATH on $MOUNT_PATH type cifs" > /dev/null
    if [ $? -eq 0 ]
    then
        exit 110
    else
        exit 100
    fi ;;
*)
    echo "Usage: $0 {start|stop|monitor} mount_path src_path"
    exit 1
    ;;
esac

 

Then create Application resource like:

Application cifs_test (
  StartProgram  = "/opt/VRTSvcs/bin/cifs.sh start /test //win-svr/test username=mike,password=123"
  StopProgram  = "/opt/VRTSvcs/bin/cifs.sh stop /test"
  MonitorProgram = "/opt/VRTSvcs/bin/cifs.sh monitor /test //win-svr/test "
)

 

Mike

View solution in original post

Highlighted

That looks nice Mike. Even

That looks nice Mike. Even nicer than my solution, that I did with 3 scripts:

root@vcsnodea:/opt/VRTSvcs/bin# cat mount-cifs-start.sh
#!/bin/sh

MOUNT=/sbin/mount.cifs

print_usage ()
{
    echo "Syntax: cifs-mount-start.sh cifs-share mount-point credentials uid"
}

# main
EXIT=110

if [ $# != "4" ]; then
    echo "Incorrect number of parameters. Please check and run again."
    print_usage
    exit $EXIT
fi

# Mount the resource
$MOUNT "$1" $2 -o credentials=${3},uid=${4}
[ $? != "0" ] && EXIT=100

exit $EXIT
root@vcsnodea:/opt/VRTSvcs/bin# cat mount-cifs-stop.sh
#!/bin/sh

UMOUNT=/bin/umount

print_usage ()
{
    echo "Syntax: cifs-mount-stop.sh mount-point"
}

# main
EXIT=100
if [ $# != "1" ]; then
    echo "Incorrect number of parameters. Please check and run again."
    print_usage
    exit $EXIT
fi

# Unmount the resource
$UMOUNT $1
[ $? != "0" ] && EXIT=110

exit $EXIT
root@vcsnodea:/opt/VRTSvcs/bin# cat mount-cifs-monitor.sh
#!/bin/sh

APPLICATION_IS_ONLINE=110
APPLICATION_IS_OFFLINE=100

if [ $# != "1" ]; then
     echo "Incorrect number of parameters. Please check and run again."
     exit $APPLICATION_IS_OFFLINE
fi

/bin/mount -t cifs|grep "$1"

if [ $? == "0" ]; then
    exit $APPLICATION_IS_ONLINE
else
    exit $APPLICATION_IS_OFFLINE
fi

Thanks for your suggestions and help!