Projet

Général

Profil

Ceph-Sharing-Disk » Historique » Version 14

Laurent GUERBY, 16/10/2014 11:26

1 3 Laurent GUERBY
{{>toc}}
2 3 Laurent GUERBY
3 1 Mehdi Abaakouk
h1. Ceph-Sharing-Disk
4 1 Mehdi Abaakouk
5 3 Laurent GUERBY
h2. Objectif
6 3 Laurent GUERBY
7 4 Laurent GUERBY
Un-e adherent-e tetaneutral.net souhaite heberger une machine efficace energetiquement et prenant peu de place comme un NUC/Brix ce qui arrange tetaneutral.net mais limite la partie stockage disque. L'idée est que l'adherent-e achete en plus des disques 3.5 classiques, nous les mettons dans le cluster Ceph/openstack et nous exportons un pool de stockage Ceph a la machine.
8 4 Laurent GUERBY
9 3 Laurent GUERBY
h2. Cluster
10 3 Laurent GUERBY
11 1 Mehdi Abaakouk
Sur le cluster ceph:
12 1 Mehdi Abaakouk
13 6 Laurent GUERBY
Création de l'utilisateur et du pool ceph pour cet utilisateur
14 1 Mehdi Abaakouk
15 1 Mehdi Abaakouk
http://chiliproject.tetaneutral.net/projects/git-tetaneutral-net/repository/openstack-tools/revisions/master/entry/ceph-create-ext-pool.sh
16 1 Mehdi Abaakouk
17 1 Mehdi Abaakouk
<pre>
18 9 Laurent GUERBY
# # ./ceph-create-ext-pool.sh <username> <auid> <size en giga> 
19 9 Laurent GUERBY
# ./ceph-create-ext-pool.sh sileht 100  
20 1 Mehdi Abaakouk
creating ceph.client.sileht.keyring
21 1 Mehdi Abaakouk
imported keyring
22 1 Mehdi Abaakouk
pool 'sileht-pool' created
23 1 Mehdi Abaakouk
set pool 70 size to 2
24 1 Mehdi Abaakouk
set pool 70 min_size to 2
25 1 Mehdi Abaakouk
set-quota max_bytes = 107374182400 for pool sileht-pool
26 9 Laurent GUERBY
# cat ceph.client.sileht.keyring 
27 9 Laurent GUERBY
...
28 9 Laurent GUERBY
# ceph auth get client.sileht
29 9 Laurent GUERBY
... (identical to file)
30 1 Mehdi Abaakouk
</pre>
31 9 Laurent GUERBY
32 10 Laurent GUERBY
Le fichier important pour le client est ./ceph.client.sileht.keyring
33 1 Mehdi Abaakouk
34 3 Laurent GUERBY
h2. Client
35 1 Mehdi Abaakouk
36 7 Mehdi Abaakouk
h3. Installation de ceph
37 7 Mehdi Abaakouk
38 7 Mehdi Abaakouk
h4. Debian jessie
39 7 Mehdi Abaakouk
40 7 Mehdi Abaakouk
<pre>
41 7 Mehdi Abaakouk
apt-get install ceph
42 7 Mehdi Abaakouk
</pre>
43 7 Mehdi Abaakouk
44 7 Mehdi Abaakouk
h4. Debian wheezy/squeeze, Ubuntu precise/quantal/raring/saucy/trusty
45 7 Mehdi Abaakouk
46 7 Mehdi Abaakouk
<pre>
47 7 Mehdi Abaakouk
apt-get install lsb-release
48 7 Mehdi Abaakouk
wget -q -O- 'https://ceph.com/git/?p=ceph.git;a=blob_plain;f=keys/release.asc' | sudo apt-key add -
49 7 Mehdi Abaakouk
echo deb http://ceph.com/debian-firefly/ $(lsb_release -sc) main | sudo tee /etc/apt/sources.list.d/ceph.list
50 7 Mehdi Abaakouk
apt-get update
51 7 Mehdi Abaakouk
apt-get install ceph
52 7 Mehdi Abaakouk
</pre>
53 7 Mehdi Abaakouk
54 12 Laurent GUERBY
Un kernel plus recent que 3.9 (ou 3.16) est aussi necessaire, pour wheezy :
55 12 Laurent GUERBY
<pre>
56 12 Laurent GUERBY
echo "deb http://http.debian.net/debian wheezy-backports main" > /etc/apt/sources.list.d/wheezy-backports.list
57 12 Laurent GUERBY
apt-get update
58 12 Laurent GUERBY
apt-get install -t wheezy-backports  linux-image-amd64
59 12 Laurent GUERBY
</pre>
60 12 Laurent GUERBY
61 7 Mehdi Abaakouk
h3. Configuration de ceph
62 12 Laurent GUERBY
63 6 Laurent GUERBY
Sur le client rbd :
64 1 Mehdi Abaakouk
65 1 Mehdi Abaakouk
La machine machine doit être configuré avec une ip sur le vlan3199
66 1 Mehdi Abaakouk
67 1 Mehdi Abaakouk
<pre>
68 1 Mehdi Abaakouk
apt-get install ceph
69 1 Mehdi Abaakouk
</pre>
70 1 Mehdi Abaakouk
71 5 Laurent GUERBY
Le membre récupére son  keyring (ceph.client.sileht.keyring ici) et le copie dans /etc/ceph/
72 1 Mehdi Abaakouk
73 1 Mehdi Abaakouk
Il peut ensuite créer le fichier /etc/ceph/ceph.conf
74 1 Mehdi Abaakouk
75 1 Mehdi Abaakouk
<pre>
76 1 Mehdi Abaakouk
[global]
77 1 Mehdi Abaakouk
fsid = 1fe74663-8dfa-486c-bb80-3bd94c90c967
78 1 Mehdi Abaakouk
auth_supported = cephx
79 1 Mehdi Abaakouk
auth_cluster_required = cephx
80 1 Mehdi Abaakouk
auth_service_required = cephx
81 1 Mehdi Abaakouk
auth_client_required = cephx
82 1 Mehdi Abaakouk
mon_host = 192.168.99.251,192.168.99.252,192.168.99.253
83 1 Mehdi Abaakouk
84 1 Mehdi Abaakouk
[client.sileht]
85 1 Mehdi Abaakouk
keyring = /etc/ceph/ceph.client.sileht.keyring
86 1 Mehdi Abaakouk
</pre>
87 1 Mehdi Abaakouk
88 5 Laurent GUERBY
On vérifie que cela marche :
89 1 Mehdi Abaakouk
90 1 Mehdi Abaakouk
<pre>
91 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
92 11 Laurent GUERBY
$ echo $?
93 11 Laurent GUERBY
0
94 1 Mehdi Abaakouk
</pre>
95 1 Mehdi Abaakouk
96 5 Laurent GUERBY
Si il n'y a pas d'erreur c'est bon, maintenant on créée un volume rbd :
97 1 Mehdi Abaakouk
98 1 Mehdi Abaakouk
<pre>
99 1 Mehdi Abaakouk
$ rbd --id sileht --pool sileht-pool create --size 100000 backup
100 1 Mehdi Abaakouk
$ rbd --id sileht -p sileht-pool ls
101 1 Mehdi Abaakouk
backup
102 1 Mehdi Abaakouk
</pre>
103 1 Mehdi Abaakouk
104 5 Laurent GUERBY
On configure le mapping automatique du volume rbd :
105 1 Mehdi Abaakouk
106 1 Mehdi Abaakouk
<pre>
107 1 Mehdi Abaakouk
$ echo sileht-pool/backup  id=sileht >> /etc/ceph/rbdmap
108 1 Mehdi Abaakouk
$ service rbdmap restart
109 1 Mehdi Abaakouk
RBD Mapping: 'sileht-pool/backup'...done.
110 1 Mehdi Abaakouk
</pre>
111 1 Mehdi Abaakouk
112 1 Mehdi Abaakouk
113 5 Laurent GUERBY
le disque est prêt, on peut soit le formater directement :
114 1 Mehdi Abaakouk
115 1 Mehdi Abaakouk
<pre>
116 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/rbd/sileht-pool/backup 
117 1 Mehdi Abaakouk
$ mount /dev/rbd/sileht-pool/backup  /backup
118 1 Mehdi Abaakouk
</pre>
119 1 Mehdi Abaakouk
120 1 Mehdi Abaakouk
soit le chiffrer:
121 1 Mehdi Abaakouk
122 1 Mehdi Abaakouk
<pre>
123 1 Mehdi Abaakouk
$ sudo cryptsetup luksFormat /dev/rbd/sileht-pool/backup
124 1 Mehdi Abaakouk
125 1 Mehdi Abaakouk
WARNING!
126 1 Mehdi Abaakouk
========
127 1 Mehdi Abaakouk
This will overwrite data on /dev/rbd/sileht-pool/backup irrevocably.
128 1 Mehdi Abaakouk
129 1 Mehdi Abaakouk
Are you sure? (Type uppercase yes): YES
130 1 Mehdi Abaakouk
Enter passphrase:
131 1 Mehdi Abaakouk
Verify passphrase:
132 1 Mehdi Abaakouk
</pre>
133 1 Mehdi Abaakouk
134 1 Mehdi Abaakouk
<pre>
135 1 Mehdi Abaakouk
$ cryptsetup luksOpen /dev/rbd/sileht-pool/backup backup1
136 1 Mehdi Abaakouk
$ mkfs.ext4 /dev/mapper/backup1
137 1 Mehdi Abaakouk
$ mount /dev/mapper/backup1 /backup
138 1 Mehdi Abaakouk
</pre>
139 1 Mehdi Abaakouk
140 2 Laurent GUERBY
Attention : ne pas remplir le device de données aleatoires comme suggéré dans les tutoriaux luks cela ferait perdre le provisionning progressif de ceph (utilisation effective uniquement sur les blocks non zero)
141 2 Laurent GUERBY
142 5 Laurent GUERBY
Ajout de la configuration persistante via un keyfile (attention : c'est une clé privée qui permet d'ouvrir le volume cryptfs sans passphrase) :
143 1 Mehdi Abaakouk
144 1 Mehdi Abaakouk
<pre>
145 1 Mehdi Abaakouk
$ dd if=/dev/urandom of=/etc/luks.key bs=1024 count=4
146 1 Mehdi Abaakouk
$ chmod 0400 /etc/luks.key
147 1 Mehdi Abaakouk
$ cryptsetup luksAddKey /dev/rbd/sileht-pool/backup /etc/luks.key
148 1 Mehdi Abaakouk
149 1 Mehdi Abaakouk
$ sudo blkid | grep -e rbd0 -e backup1
150 1 Mehdi Abaakouk
/dev/rbd0: UUID="1a268f70-6f6d-41f7-9216-43ba0bd0750b" TYPE="crypto_LUKS"
151 1 Mehdi Abaakouk
/dev/mapper/backup1: UUID="51db13d9-4ac4-4e47-bb7a-b111994cdefd" TYPE="ext4" 
152 1 Mehdi Abaakouk
153 1 Mehdi Abaakouk
154 1 Mehdi Abaakouk
$ echo "backup1 UUID=1a268f70-6f6d-41f7-9216-43ba0bd0750b /etc/luks.key luks" >> /etc/crypttab 
155 13 Mehdi Abaakouk
$ echo "UUID=51db13d9-4ac4-4e47-bb7a-b111994cdefd  /backup ext4   defaults,noatime,_netdev       0       2" >> /etc/fstab
156 1 Mehdi Abaakouk
</pre>
157 14 Laurent GUERBY
158 14 Laurent GUERBY
Effacement d'une image :
159 14 Laurent GUERBY
160 14 Laurent GUERBY
# Editer /etc/ceph/rbdmap et enlever la ligne "backup"
161 14 Laurent GUERBY
# rbd --id sileht --pool -pool rm backup