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