Révision 16

trunk/shell/create-start-front-end (revision 16)
1
#! /bin/bash
2
#
3
# Create and start the front end.
4
#
5
# Get the directory of the script.
6
SCRIPT_PATH=`dirname $0`
7
# Get the script name.
8
SCRIPT_NAME=`basename $0`
9
# Source the common configuration variables.
10
. $SCRIPT_PATH/c-i-a-b.common
11
#
12
# Check that the front-end virtual machine does not already exist.
13
#
14
CURRENT_HOST_NAME=$FRONT_END_NAME
15
IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
16
if [ -n "$IS_RUNNING" ]
17
  then
18
    echo
19
    echo The \"$CURRENT_HOST_NAME\" domU already exists. Aborting!
20
    echo
21
    exit 1
22
fi
23

  
24
# Create the VM system disk.
25
COMPUTE_NODE_SYSTEM_DISK="${SYSTEM_DISK_CLONE_PREFIX}${NODE_NUMBER_STRING}${SYSTEM_DISK_CLONE_POSTFIX}"
26
lvcreate -L$FRONT_END_SYSTEM_DISK_SIZE -s \
27
         -n  $FRONT_END_SYSTEM_DISK \
28
         $FRONT_END_SYSTEM_LOGICAL_VOLUME
29
# Create a File System on the VM system disk.
30
mkfs -t $FRONT_END_SYSTEM_DISK_FILE_SYSTEM \
31
        $FRONT_END_SYSTEM_LOGICAL_VOLUME/$FRONT_END_SYSTEM_DISK
32
# If necessary, create the swap volume for the front end.
33
if [ $FRONT_END_SWAP_DISK_SIZE != $CONST_NULL_DISK_SIZE ]; then
34
  lvcreate -L $FRONT_END_SWAP_DISK_SIZE \
35
           -n $FRONT_END_SWAP_DISK \
36
           $FRONT_END_SYSTEM_LOGICAL_VOLUME
37
  mkswap $FRONT_END_SYSTEM_LOGICAL_VOLUME/$FRONT_END_SWAP_DISK
38
fi
39
# Mount the system disk to copy all the specific files.
40
if [ ! -d $FRONT_END_SYSTEM_DISK_MOUNT_POINT ]; then
41
  mkdir $FRONT_END_SYSTEM_DISK_MOUNT_POINT
42
fi
43
mount $FRONT_END_SYSTEM_LOGICAL_VOLUME/$FRONT_END_SYSTEM_DISK \
44
      $FRONT_END_SYSTEM_DISK_MOUNT_POINT
45
#
46
# Configure the specific files from templates
47
#
48
# /etc/network/interfaces
49
CURRENT_PATH=/etc/network
50
cp templates$CURRENT_PATH/$FRONT_END_INTERFACES_TEMPLATE \
51
   $FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH
52
ADDRESS="$COMPUTE_NODE_STATIC_NETWORK_PREFIX.$FRONT_END_STATIC_NETWORK_POSTFIX"
53
rpl __STATIC_ADDRESS__ $ADDRESS  \
54
    ${FRONT_END_SYSTEM_DISK_MOUNT_POINT/$CURRENT_PATH/interfaces
55
# /etc/hostname
56
CURRENT_PATH=/etc
57
echo $CURRENT_HOST_NAME > "${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/hostname"
58
# /etc/hosts
59
CURRENT_PATH=/etc
60
CURRENT_HOST_IP="${COMPUTE_NODE_STATIC_NETWORK_PREFIX}.${NODE_NUMBER}"
61
cp templates$CURRENT_PATH/hosts \
62
   $COMPUTE_NODE_DISK_MOUNT_POINT/$CURRENT_PATH
63
rpl __COMPUTE_NODE_IP__ $CURRENT_HOST_IP \
64
    ${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
65
rpl __COMPUTE_NODE_NAME__ $CURRENT_HOST_NAME \
66
    ${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/hosts
67
# /etc/resolv.conf
68
CURRENT_PATH=/etc
69
cp $TEMPLATES_DIR$CURRENT_PATH/resolv.conf \
70
   ${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
71
rpl __CLUSTER_DOMAIN_NAME__ "${CLUSTER_DOMAIN_NAME}." \
72
   ${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
73
rpl __FRONT_END_STATIC_ADDRESS__ "${CLUSTER_STATIC_NETWORK_PREFIX}.$FRONT_END_STATIC_NETWORK_POSTFIX" \
74
   ${COMPUTE_NODE_DISK_MOUNT_POINT}${CURRENT_PATH}/resolv.conf
75
#
76
# Get the MAC address
77
#
78
CURRENT_PATH=/etc
79
COMPUTE_NODE_MAC_ADDRESS=\
80
`awk -F, -v INDEX=$NODE_NUMBER '{if (FNR==INDEX) {print $1}}' $SCRIPT_PATH/$TEMPLATES_DIR$CURRENT_PATH/$DHCP_HOSTSFILE_BASENAME`
81
#
82
# Create the Xen configuration file from a template
83
#
84
CURRENT_PATH=/etc/xen
85
cp templates$CURRENT_PATH/compute-node.cfg \
86
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
87
rpl Template Configuration $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
88
rpl "the Xen instance compute-node" "compute-node-$NODE_NUMBER_STRING" \
89
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
90
rpl __COMPUTE_NODE_KERNEL__ $COMPUTE_NODE_KERNEL \
91
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
92
rpl __COMPUTE_NODE_RAMDISK__ $COMPUTE_NODE_RAMDISK \
93
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
94
rpl __COMPUTE_NODE_MEMORY__ $COMPUTE_NODE_MEMORY \
95
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
96
rpl __COMPUTE_NODE_VCPUS__ $COMPUTE_NODE_VCPUS \
97
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
98
CPUS_LIST=`sed -n ${NODE_NUMBER},${NODE_NUMBER}p $SCRIPT_PATH/$COMPUTE_NODE_CPUS_FILE`
99
CPUS=""
100
for i in $CPUS_LIST
101
  do
102
    if [ "x$CPUS" == "x" ]
103
      then
104
        CPUS=$i
105
      else
106
        CPUS="$CPUS,$i"
107
    fi
108
done
109
rpl __COMPUTE_NODE_CPUS__ $CPUS \
110
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
111
rpl __COMPUTE_NODE_SYSTEM_DISK__ $SYSTEM_DISK_LOGICAL_VOLUME/$COMPUTE_NODE_SYSTEM_DISK \
112
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
113
rpl __COMPUTE_NODE_SWAP_DISK__ $SYSTEM_DISK_LOGICAL_VOLUME/$COMPUTE_NODE_SWAP_DISK \
114
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
115
rpl __COMPUTE_NODE_HOST_NAME__ $CURRENT_HOST_NAME \
116
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
117
rpl __COMPUTE_NODE_IP__ $ADDRESS \
118
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
119
rpl __COMPUTE_NODE_MAC__ $COMPUTE_NODE_MAC_ADDRESS \
120
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
121
rpl __COMPUTE_NODE_BRIDGE__ $COMPUTE_NODE_BRIDGE \
122
   $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
123

  
124
#
125
# Umount the compute node system disk
126
#
127
umount $COMPUTE_NODE_DISK_MOUNT_POINT
128
#
129
# Start the virtual machine
130
#
131
xm create $SCRIPT_PATH/$CURRENT_HOST_NAME.cfg
132
#
133
# Wait until the virtual machine has started
134
#
135
IS_RUNNING=""
136
while [ -z "$IS_RUNNING" ]
137
  do
138
    IS_RUNNING=`xm list | grep $CURRENT_HOST_NAME`
139
    sleep 1
140
done
141
#
142
# Pin the VCPUs to "real" CPUs.
143
#
144
VCPU_NUM=0
145
for i in $CPUS_LIST
146
  do
147
    xm vcpu-pin $CURRENT_HOST_NAME $VCPU_NUM $i
148
    VCPU_NUM=$((VCPU_NUM + 1))
149
done
0 150

  
trunk/shell/c-i-a-b.common (revision 16)
1
# Common configuration variables
1
# Constants that no one should not change.
2
CONST_NULL_DISK_SIZE=0G
2 3
#
4
# Common user defined configuration variables
5
#
3 6
CLUSTER_DOMAIN_NAME=ciab.lip.ens-lyon.fr
4 7
CLUSTER_STATIC_NETWORK_PREFIX="192.168.1"
5 8
COMPUTE_NODE_BRIDGE=internal
6 9
COMPUTE_NODE_CPUS_FILE=compute-nodes-cpus
7 10
COMPUTE_NODE_DISK_MOUNT_POINT=/mnt/compute-node-system-disk
11
COMPUTE_NODE_INTERFACES_TEMPLATE=interfaces.compute-node
8 12
COMPUTE_NODE_KERNEL=/boot/vmlinuz-`uname -r`
9 13
COMPUTE_NODE_RAMDISK=/boot/initrd.img-`uname -r`
10 14
COMPUTE_NODE_MAC_ADDRESS_PREFIX="00:16:3E:0F:6A"
......
13 17
COMPUTE_NODE_MODEL_STATIC_NETWORK_POSTFIX=252
14 18
COMPUTE_NODE_MODEL_NAME="compute-node-model"
15 19
COMPUTE_NODE_NAME_PREFIX="compute-node-"
16
COMPUTE_NODE_NUM=3
17 20
COMPUTE_NODE_STATIC_NETWORK_PREFIX=$CLUSTER_STATIC_NETWORK_PREFIX
18
COMPUTE_NODE_VCPUS=2
19 21
DHCP_HOSTSFILE_BASENAME=dhcp-hostsfile
22
FRONT_END_HOME_DISK_SIZE=512G
23
FRONT_END_INTERFACES_TEMPLATE=interfaces.front-end
24
FRONT_END_HOME_LOGICAL_VOLUME=/dev/vg_slow
25
FRONT_END_NAME="frontend"
20 26
FRONT_END_STATIC_NETWORK_POSTFIX=251
21
FRONT_END_NAME="frontend"
27
FRONT_END_SWAP_DISK="frontend-swap"
28
FRONT_END_SWAP_DISK_SIZE=$CONST_NULL_DISK_SIZE # 0G means no swap disk.
29
FRONT_END_SYSTEM_DISK="frontend-system-disk"
30
FRONT_END_SYSTEM_DISK_SIZE=46G
31
FRONT_END_SYSTEM_DISK_FILE_SYSTEM=ext3
32
FRONT_END_SYSTEM_DISK_MOUNT_POINT=/mnt/frontend-system-disk
33
FRONT_END_SYSTEM_LOGICAL_VOLUME=/dev/vg_fast
34
FRONT_END_VCPUS=3
22 35
HOSTS_FILE_BASENAME=hosts
23
SWAP_DISK_LOGICAL_VOLUME=/dev/vg_guests
36
SWAP_DISK_LOGICAL_VOLUME=/dev/vg_fast
24 37
SWAP_DISK_POSTFIX="-swap"
25 38
SWAP_DISK_PREFIX="compute-node-"
26 39
SWAP_DISK_SIZE=1G
......
28 41
SYSTEM_DISK_CLONE_PREFIX=$COMPUTE_NODE_NAME_PREFIX
29 42
SYSTEM_DISK_CLONE_SIZE=20G # Half of the master size.
30 43
SYSTEM_DISK_FILE_SYSTEM=ext3
31
SYSTEM_DISK_LOGICAL_VOLUME=/dev/vg_guests
44
SYSTEM_DISK_LOGICAL_VOLUME=/dev/vg_slow
32 45
SYSTEM_DISK_MASTER=$SYSTEM_DISK_LOGICAL_VOLUME/compute-node-model-disk
33 46
TEMPLATES_DIR=templates
34 47
USERS_HOME_DISK="users-home-disk"
trunk/shell/templates/etc/network/interfaces (revision 16)
1
# This file describes the network interfaces available on your system
2
# and how to activate them. For more information, see interfaces(5).
3

  
4
# The loopback network interface
5
auto lo eth0
6
iface lo inet loopback
7

  
8
# The primary network interface
9

  
10
iface eth0 inet static
11
 address __STATIC_ADDRESS__
12
 netmask 255.255.255.0
13

  
14
#
15
# The commented out line above will disable TCP checksumming which
16
# might resolve problems for some users.  It is disabled by default
17
#
trunk/shell/templates/etc/network/interfaces.front-end (revision 16)
1
# This file describes the network interfaces available on your system
2
# and how to activate them. For more information, see interfaces(5).
3

  
4
# The loopback network interface
5
auto lo eth0a eth1
6
iface lo inet loopback
7
#
8
# The primary network interface
9
iface eth0 inet dhcp
10
#
11
iface eth1 inet static
12
 address __STATIC_ADDRESS__
13
 netmask 255.255.255.0
14
#
15
# post-up  ethtool -K eth0 tx off
16
#
17
# The commented out line above will disable TCP checksumming which
18
# might resolve problems for some users.  It is disabled by default
19
#
trunk/shell/templates/etc/network/interfaces.compute-node (revision 16)
1
# This file describes the network interfaces available on your system
2
# and how to activate them. For more information, see interfaces(5).
3

  
4
# The loopback network interface
5
auto lo eth0
6
iface lo inet loopback
7

  
8
# The primary network interface
9

  
10
iface eth0 inet static
11
 address __STATIC_ADDRESS__
12
 netmask 255.255.255.0
13
#
14
# post-up  ethtool -K eth0 tx off
15
#
16
# The commented out line above will disable TCP checksumming which
17
# might resolve problems for some users.  It is disabled by default
18
#

Formats disponibles : Unified diff