SSD » Historique » Version 4
Version 3 (Mehdi Abaakouk, 04/11/2011 17:41) → Version 4/53 (Laurent GUERBY, 04/11/2011 23:17)
h1. Le SSD
Afin de mettre à disposition des volumes provenant du SSD sans pour autant perdre 128 MB les 128m par volume en utilisant volumes que nous oblige ganeti voici la solution adoptée. adopté.
Elle permet d'avoir le SSD en raid 1 réseau (drbd de ganeti) et d'utiliser les fonctionnalités de redondance sans gaspiller gaspillé de l'espace SSD
Une vm ganeti en drbd qui utilise tout l'espace de 2 SSD (ie: 24G sur h5 et h6)
La vm créé un lvm sur son sont disque virtuel, virtuelle, puis ensuite on partage des logical volume de ce lvm via NBD, ISCSI ou AoE
Ci-dessous les éléments de configuration de ceci.
h1. NBD (Network Block Device)
http://en.wikipedia.org/wiki/Network_block_device
h2. Installation de nbd côté serveur
<pre>
apt-get install nbd-server
echo '[general]' > /etc/nbd-server/conf
/etc/init.d/nbd-server restart
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt
# tune2fs -o discard /dev/vgssd/debug-gnt # ne marche pas sur squeeze
</pre>
Le port est par convention pour tetaneutral :
1 + 3 last ip digit (ie: 1231 pour 91.224.149.231)
<pre>
cat >> /etc/nbd-server/conf <<EOF
[debug-gnt]
exportname = /dev/vgssd/debug-gnt
port = 1231
authfile = /etc/nbd-server/allow-231
EOF
cat > /etc/nbd-server/allow-231 <<EOF
91.224.149.231
EOF
</pre>
h3. Configuration sur le client
<pre>
apt-get install nbd-client
cat > /etc/nbd-client <<EOF
KILLALL="true"
NBD_DEVICE[0]=/dev/nbd0
NBD_TYPE[0]=f
NBD_HOST[0]=ssd1
NBD_PORT[0]=1231 # < 1 + 3 last ip digit
NBD_EXTRA[0]=
EOF
mkdir /myssd1
cat >> /etc/fstab <<EOF
/dev/nbd0 /myssd ext4 defaults,discard,noauto 0 2
EOF
/etc/init.d/nbd-client restart
mount -a
</pre>
h1. ISCSI (Internet Small Computer Systems Interface)
http://en.wikipedia.org/wiki/ISCSI
h2. Installation de iscsi côté server
<pre>
apt-get install tgt
</pre>
dans /etc/rc.local ajouter:
<pre>
tgtd
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt-2 -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt-2
# tune2fs -o discard /dev/vgssd/debug-gnt-2 # ne marche pas sur squeeze
</pre>
dans /etc/rc.local ajouter:
<pre>
tgt-setup-lun -n debug-gnt -d /dev/vgssd/debug-gnt-2 91.224.149.231
</pre>
puis on exécute cette même ligne
En iscsi, on peut aussi utiliser des login/password en plus des ip pour les ACL
h3. Configuration sur le client
<pre>
apt-get install open-iscsi
/etc/init.d/open-iscsi start
iscsi_discovery 91.224.149.251
cat >> /etc/fstab <<EOF
/dev/sda /myssd2 ext4 discard,noatime,_netdev 0 0
EOF
mkdir /myssd2
/etc/init.d/open-iscsi restart
</pre>
h1. AoE (ATA over Ethernet)
http://en.wikipedia.org/wiki/ATA_over_Ethernet
h2. Installation de AoE côté serveur
<pre>
apt-get install vblade vblade-persist
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt-3 -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt-3
# tune2fs -o discard /dev/vgssd/debug-gnt-3 # ne marche pas sur squeeze
</pre>
<pre>
vblade-persist setup 0 0 eth0 /dev/vgssd/debug-gnt-3
vblade-persist mac 0 0 add aa:00:00:be:8f:d0
vblade-persist auto 0 0
vblade-persist restart 0 0
</pre>
Le 0 0 est un identifiant unique du disque
Dans AoE les acl s'applique sur les adresses MAC
AoE communique sur la couche ethernet comme son nom l'indique
Il n'est donc pas routable
h3. Configuration sur le client
<pre>
apt-get install aoe-tools
</pre>
dans /etc/default/aoetools changer INTERFACES comme ceci:
<pre>
INTERFACES="eth0"
</pre>
<pre>
/etc/init.d/aoetools start
aoe-discover
cat >> /etc/fstab <<EOF
/dev/etherd/e0.0 /myssd2 ext4 discard,noatime,_netdev 0 0
EOF
mkdir /myssd2
/etc/init.d/aoetools restart
mount -a
</pre>
h1. Installation d'une machine SSDx
h2. Préparation du disque sur h5 et h6
<pre>
root@h5:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): c
DOS Compatibility flag is not set
Command (m for help): p
Disk /dev/sda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001def5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1216 9764864 83 Linux
/dev/sda2 1216 1703 3906560 82 Linux swap / Solaris
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1703-4865, default 1703):
Using default value 1703
Last cylinder, +cylinders or +size{K,M,G} (1703-4865, default 4865):
Using default value 4865
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
</pre>
Création du lvm
<pre>
pvcreate /dev/sda3
vgcreate kvmvgssd /dev/sda3
</pre>
*Création de la vm, sur le master node (ie: h1):*
La taille du disque sera de 24680M: 24680M + 128M (drbd) = 24808M dispo sur le SSD
<pre>
gnt-instance add -t drbd -B memory=512,vcpus=2 --disk 0:size=24680M,vg=kvmvgssd -n h5:h6 -o debootstrap+default --no-wait-for-sync -H kvm:boot_order=cdrom,cdrom_image_path=/root/debian-6.0.3-amd64-netinst.iso ssd1
</pre>
Ensuite se connecter en vnc pour faire l'installation classique, l'installe classic, uniquement SSH server est installé
Le FS c'est un VG appelé appeler vgssd, puis un lv 'root' de 4G en ext4 avec l'option discard et noatime
Pour le vnc, il faut redigirer redigiré de la machine mahine ou tourne la vm (ie: h5 pour ssd1) sur le port retourné par la commande suivante : suivante:
<pre>
gnt-instance list -o network_port ssd1
</pre>
*Une *Un fois la vm installé voici la configuration à effectuer:*
Via un terminal sur la vm (en vnc toujours)
<pre>
cat >> /etc/apt/sources.list <<EOF
deb http://backports.debian.org/debian-backports squeeze-backports main
deb-src http://backports.debian.org/debian-backports squeeze-backports main
EOF
sed -i -e 's/^.*Port.*$/Port 2222/' -e 's/^[# ]*PasswordAuthentication.*$/PasswordAuthentication no/' $TARGET/etc/ssh/sshd_configentication.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
cat > /etc/resolv.conf <<EOF
domain tetaneutral.net
search tetaneutral.net
nameserver 91.224.149.254
nameserver 8.8.8.8
EOF
cat >/etc/hosts <<EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
91.224.149.251 ssd1.tetaneutral.net ssd1
2a01:6600:8081:fb00::1 ssd1.tetaneutral.net ssd1
EOF
cat > /etc/network/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 91.224.149.251
netmask 255.255.255.0
network 91.224.149.0
broadcast 91.224.149.255
gateway 91.224.149.254
iface eth0 inet6 static
address 2a01:6600:8081:fb00::1
netmask 56
gateway fe80::31
EOF
cat >> /etc/default/grub <<EOF
GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX elevator=noop console=ttyS0,38400"
GRUB_TERMINAL=console
EOF
</pre>
# Décommenter cette ligne dans /etc/inittab
<pre>
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
</pre>
<pre>
update-grub
apt-get install -t squeeze-backports linux-image-2.6.39-bpo.2-amd64
</pre>
h1. Doc initial
http://dl.sileht.net/public/setupssdvm.txt
Afin de mettre à disposition des volumes provenant du SSD sans pour autant perdre 128 MB les 128m par volume en utilisant volumes que nous oblige ganeti voici la solution adoptée. adopté.
Elle permet d'avoir le SSD en raid 1 réseau (drbd de ganeti) et d'utiliser les fonctionnalités de redondance sans gaspiller gaspillé de l'espace SSD
Une vm ganeti en drbd qui utilise tout l'espace de 2 SSD (ie: 24G sur h5 et h6)
La vm créé un lvm sur son sont disque virtuel, virtuelle, puis ensuite on partage des logical volume de ce lvm via NBD, ISCSI ou AoE
Ci-dessous les éléments de configuration de ceci.
h1. NBD (Network Block Device)
http://en.wikipedia.org/wiki/Network_block_device
h2. Installation de nbd côté serveur
<pre>
apt-get install nbd-server
echo '[general]' > /etc/nbd-server/conf
/etc/init.d/nbd-server restart
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt
# tune2fs -o discard /dev/vgssd/debug-gnt # ne marche pas sur squeeze
</pre>
Le port est par convention pour tetaneutral :
1 + 3 last ip digit (ie: 1231 pour 91.224.149.231)
<pre>
cat >> /etc/nbd-server/conf <<EOF
[debug-gnt]
exportname = /dev/vgssd/debug-gnt
port = 1231
authfile = /etc/nbd-server/allow-231
EOF
cat > /etc/nbd-server/allow-231 <<EOF
91.224.149.231
EOF
</pre>
h3. Configuration sur le client
<pre>
apt-get install nbd-client
cat > /etc/nbd-client <<EOF
KILLALL="true"
NBD_DEVICE[0]=/dev/nbd0
NBD_TYPE[0]=f
NBD_HOST[0]=ssd1
NBD_PORT[0]=1231 # < 1 + 3 last ip digit
NBD_EXTRA[0]=
EOF
mkdir /myssd1
cat >> /etc/fstab <<EOF
/dev/nbd0 /myssd ext4 defaults,discard,noauto 0 2
EOF
/etc/init.d/nbd-client restart
mount -a
</pre>
h1. ISCSI (Internet Small Computer Systems Interface)
http://en.wikipedia.org/wiki/ISCSI
h2. Installation de iscsi côté server
<pre>
apt-get install tgt
</pre>
dans /etc/rc.local ajouter:
<pre>
tgtd
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt-2 -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt-2
# tune2fs -o discard /dev/vgssd/debug-gnt-2 # ne marche pas sur squeeze
</pre>
dans /etc/rc.local ajouter:
<pre>
tgt-setup-lun -n debug-gnt -d /dev/vgssd/debug-gnt-2 91.224.149.231
</pre>
puis on exécute cette même ligne
En iscsi, on peut aussi utiliser des login/password en plus des ip pour les ACL
h3. Configuration sur le client
<pre>
apt-get install open-iscsi
/etc/init.d/open-iscsi start
iscsi_discovery 91.224.149.251
cat >> /etc/fstab <<EOF
/dev/sda /myssd2 ext4 discard,noatime,_netdev 0 0
EOF
mkdir /myssd2
/etc/init.d/open-iscsi restart
</pre>
h1. AoE (ATA over Ethernet)
http://en.wikipedia.org/wiki/ATA_over_Ethernet
h2. Installation de AoE côté serveur
<pre>
apt-get install vblade vblade-persist
</pre>
h2. Configuration d'un nouveau volume réseau
h3. Configuration sur le serveur
<pre>
lvcreate -n debug-gnt-3 -L 2G vgssd
mkfs.ext4 /dev/vgssd/debug-gnt-3
# tune2fs -o discard /dev/vgssd/debug-gnt-3 # ne marche pas sur squeeze
</pre>
<pre>
vblade-persist setup 0 0 eth0 /dev/vgssd/debug-gnt-3
vblade-persist mac 0 0 add aa:00:00:be:8f:d0
vblade-persist auto 0 0
vblade-persist restart 0 0
</pre>
Le 0 0 est un identifiant unique du disque
Dans AoE les acl s'applique sur les adresses MAC
AoE communique sur la couche ethernet comme son nom l'indique
Il n'est donc pas routable
h3. Configuration sur le client
<pre>
apt-get install aoe-tools
</pre>
dans /etc/default/aoetools changer INTERFACES comme ceci:
<pre>
INTERFACES="eth0"
</pre>
<pre>
/etc/init.d/aoetools start
aoe-discover
cat >> /etc/fstab <<EOF
/dev/etherd/e0.0 /myssd2 ext4 discard,noatime,_netdev 0 0
EOF
mkdir /myssd2
/etc/init.d/aoetools restart
mount -a
</pre>
h1. Installation d'une machine SSDx
h2. Préparation du disque sur h5 et h6
<pre>
root@h5:~# fdisk /dev/sda
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): c
DOS Compatibility flag is not set
Command (m for help): p
Disk /dev/sda: 40.0 GB, 40020664320 bytes
255 heads, 63 sectors/track, 4865 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x0001def5
Device Boot Start End Blocks Id System
/dev/sda1 * 1 1216 9764864 83 Linux
/dev/sda2 1216 1703 3906560 82 Linux swap / Solaris
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (1703-4865, default 1703):
Using default value 1703
Last cylinder, +cylinders or +size{K,M,G} (1703-4865, default 4865):
Using default value 4865
Command (m for help): t
Partition number (1-4): 3
Hex code (type L to list codes): 8e
Changed system type of partition 3 to 8e (Linux LVM)
Command (m for help): w
The partition table has been altered!
</pre>
Création du lvm
<pre>
pvcreate /dev/sda3
vgcreate kvmvgssd /dev/sda3
</pre>
*Création de la vm, sur le master node (ie: h1):*
La taille du disque sera de 24680M: 24680M + 128M (drbd) = 24808M dispo sur le SSD
<pre>
gnt-instance add -t drbd -B memory=512,vcpus=2 --disk 0:size=24680M,vg=kvmvgssd -n h5:h6 -o debootstrap+default --no-wait-for-sync -H kvm:boot_order=cdrom,cdrom_image_path=/root/debian-6.0.3-amd64-netinst.iso ssd1
</pre>
Ensuite se connecter en vnc pour faire l'installation classique, l'installe classic, uniquement SSH server est installé
Le FS c'est un VG appelé appeler vgssd, puis un lv 'root' de 4G en ext4 avec l'option discard et noatime
Pour le vnc, il faut redigirer redigiré de la machine mahine ou tourne la vm (ie: h5 pour ssd1) sur le port retourné par la commande suivante : suivante:
<pre>
gnt-instance list -o network_port ssd1
</pre>
*Une *Un fois la vm installé voici la configuration à effectuer:*
Via un terminal sur la vm (en vnc toujours)
<pre>
cat >> /etc/apt/sources.list <<EOF
deb http://backports.debian.org/debian-backports squeeze-backports main
deb-src http://backports.debian.org/debian-backports squeeze-backports main
EOF
sed -i -e 's/^.*Port.*$/Port 2222/' -e 's/^[# ]*PasswordAuthentication.*$/PasswordAuthentication no/' $TARGET/etc/ssh/sshd_configentication.*$/PasswordAuthentication no/' /etc/ssh/sshd_config
cat > /etc/resolv.conf <<EOF
domain tetaneutral.net
search tetaneutral.net
nameserver 91.224.149.254
nameserver 8.8.8.8
EOF
cat >/etc/hosts <<EOF
127.0.0.1 localhost
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
91.224.149.251 ssd1.tetaneutral.net ssd1
2a01:6600:8081:fb00::1 ssd1.tetaneutral.net ssd1
EOF
cat > /etc/network/interfaces <<EOF
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
auto eth0
iface eth0 inet static
address 91.224.149.251
netmask 255.255.255.0
network 91.224.149.0
broadcast 91.224.149.255
gateway 91.224.149.254
iface eth0 inet6 static
address 2a01:6600:8081:fb00::1
netmask 56
gateway fe80::31
EOF
cat >> /etc/default/grub <<EOF
GRUB_CMDLINE_LINUX="\$GRUB_CMDLINE_LINUX elevator=noop console=ttyS0,38400"
GRUB_TERMINAL=console
EOF
</pre>
# Décommenter cette ligne dans /etc/inittab
<pre>
T0:23:respawn:/sbin/getty -L ttyS0 9600 vt100
</pre>
<pre>
update-grub
apt-get install -t squeeze-backports linux-image-2.6.39-bpo.2-amd64
</pre>
h1. Doc initial
http://dl.sileht.net/public/setupssdvm.txt