Projet

Général

Profil

Management Cluster Ceph » Historique » Version 44

Mehdi Abaakouk, 05/06/2020 10:53

1 10 Mehdi Abaakouk
{{>toc}}
2 1 Mehdi Abaakouk
3 10 Mehdi Abaakouk
h1. Management Cluster Ceph
4 9 Mehdi Abaakouk
5 8 Mehdi Abaakouk
h2. Liens
6 8 Mehdi Abaakouk
7 44 Mehdi Abaakouk
* [[Libvirt]]
8 44 Mehdi Abaakouk
* [[HOWTO add a VM]]
9 44 Mehdi Abaakouk
* [[Management_Cluster_Ceph]]
10 44 Mehdi Abaakouk
* [[Ceph]]
11 8 Mehdi Abaakouk
* [[Ceph-Sharing-Disk]]
12 44 Mehdi Abaakouk
* [[Openstack Setup VM pas dans openstack]] (obsolete)
13 44 Mehdi Abaakouk
* [[Openstack Installation TTNN]] (obsolete)
14 44 Mehdi Abaakouk
* [[Openstack Installation nouvelle node du cluster]] (obsolete)
15 44 Mehdi Abaakouk
* "Openstack tools for ttnn":/projects/git-tetaneutral-net/repository/openstack-tools
16 8 Mehdi Abaakouk
17 2 Mehdi Abaakouk
h2. Ajout d'un OSD classique
18 2 Mehdi Abaakouk
19 20 Mehdi Abaakouk
20 20 Mehdi Abaakouk
21 20 Mehdi Abaakouk
<pre>
22 1 Mehdi Abaakouk
$ ceph-disk prepare --zap-disk --cluster-uuid 1fe74663-8dfa-486c-bb80-3bd94c90c967 --fs-type=ext4 /dev/sdX
23 34 Laurent GUERBY
$ tune2fs -c 0 -i 0 -m 0 /dev/sdX1
24 1 Mehdi Abaakouk
$ smartctl --smart=on /dev/sdX  # Pour le monitoring.
25 1 Mehdi Abaakouk
</pre>
26 1 Mehdi Abaakouk
27 1 Mehdi Abaakouk
Récuperer l'id avec (c'est celui tout en bas pas accroché à l'arbre):
28 1 Mehdi Abaakouk
29 1 Mehdi Abaakouk
<pre>
30 1 Mehdi Abaakouk
ceph osd tree
31 1 Mehdi Abaakouk
</pre>
32 1 Mehdi Abaakouk
33 26 Mehdi Abaakouk
*DEBUT WORKAROUND BUG PREPARE*
34 26 Mehdi Abaakouk
35 26 Mehdi Abaakouk
Dans le cas ou l'osd est DOWN après le prepare c'est surement ce bug
36 26 Mehdi Abaakouk
37 26 Mehdi Abaakouk
ID est le premier numero libre d'osd en partant de zero (en bas du ceph osd tree)
38 26 Mehdi Abaakouk
39 26 Mehdi Abaakouk
<pre>
40 26 Mehdi Abaakouk
mkdir /var/lib/ceph/osd/ceph-<ID>
41 26 Mehdi Abaakouk
chown ceph:ceph /var/lib/ceph/osd/ceph-<ID>
42 26 Mehdi Abaakouk
ceph-disk activate /dev/sd<X>1
43 26 Mehdi Abaakouk
systemctl status ceph-osd@<ID>
44 26 Mehdi Abaakouk
</pre>
45 26 Mehdi Abaakouk
46 26 Mehdi Abaakouk
*FIN WORKAROUND BUG PREPARE*
47 26 Mehdi Abaakouk
48 17 Mehdi Abaakouk
Pour un HDD: 
49 2 Mehdi Abaakouk
<pre>
50 2 Mehdi Abaakouk
$ ceph osd crush add osd.<ID> 0 root=default host=<host>
51 1 Mehdi Abaakouk
</pre>
52 2 Mehdi Abaakouk
53 17 Mehdi Abaakouk
Pour un SSD:
54 2 Mehdi Abaakouk
<pre>
55 2 Mehdi Abaakouk
$ ceph osd crush add osd.<ID> 0 root=ssd host=<host>-ssd
56 2 Mehdi Abaakouk
</pre>
57 2 Mehdi Abaakouk
58 42 Mehdi Abaakouk
Ensuite, autoriser Ceph à mettre des data dessus WEIGHT == 1 par 1To (ie: 4To -> 4)
59 2 Mehdi Abaakouk
60 2 Mehdi Abaakouk
<pre>
61 42 Mehdi Abaakouk
$ ceph osd crush reweight osd.<ID> <WEIGHT>
62 19 Mehdi Abaakouk
</pre>
63 19 Mehdi Abaakouk
64 35 Mehdi Abaakouk
h3. helper
65 35 Mehdi Abaakouk
66 36 Mehdi Abaakouk
<pre>
67 35 Mehdi Abaakouk
add_osd(){
68 35 Mehdi Abaakouk
  dev="$1"
69 35 Mehdi Abaakouk
  type="$2"
70 35 Mehdi Abaakouk
  host=$(hostname -s)
71 35 Mehdi Abaakouk
  [ "$type" == "ssd" ] && host="${host}-ssd"
72 39 Mehdi Abaakouk
73 39 Mehdi Abaakouk
  found=0 ; next=-1 ; for i in $(ceph osd ls); do next=$((next+1)) ; [ $(($i - $next)) -gt 0 ] && found=1 && break; done ; [ $found -eq 0 ] && next=$((next+1))
74 39 Mehdi Abaakouk
75 35 Mehdi Abaakouk
  mkdir /var/lib/ceph/osd/ceph-$next
76 35 Mehdi Abaakouk
  chown ceph:ceph /var/lib/ceph/osd/ceph-$next
77 35 Mehdi Abaakouk
78 41 Mehdi Abaakouk
  ceph-disk prepare --zap-disk --cluster-uuid 1fe74663-8dfa-486c-bb80-3bd94c90c967 --fs-type=ext4 $dev
79 37 Mehdi Abaakouk
  tune2fs -c 0 -i 0 -m 0 ${dev}1
80 1 Mehdi Abaakouk
  smartctl --smart=on $dev
81 37 Mehdi Abaakouk
82 37 Mehdi Abaakouk
  systemctl start ceph-osd@$next
83 35 Mehdi Abaakouk
  systemctl status ceph-osd@$next
84 35 Mehdi Abaakouk
85 38 Mehdi Abaakouk
  sleep 1
86 35 Mehdi Abaakouk
  ceph osd crush add osd.$next 0 root=${type} host=${host}
87 35 Mehdi Abaakouk
}
88 36 Mehdi Abaakouk
</pre>
89 35 Mehdi Abaakouk
90 19 Mehdi Abaakouk
h2. Vider un OSD:
91 19 Mehdi Abaakouk
92 1 Mehdi Abaakouk
<pre>
93 35 Mehdi Abaakouk
vider_osd(){
94 19 Mehdi Abaakouk
  name="$1"
95 19 Mehdi Abaakouk
  ceph osd out ${name}
96 19 Mehdi Abaakouk
  ceph osd crush reweight ${name} 0
97 19 Mehdi Abaakouk
  ceph osd reweight ${name} 0
98 19 Mehdi Abaakouk
}
99 19 Mehdi Abaakouk
</pre>
100 19 Mehdi Abaakouk
101 19 Mehdi Abaakouk
h2. Suppression d'un OSD:
102 19 Mehdi Abaakouk
103 19 Mehdi Abaakouk
<pre>
104 19 Mehdi Abaakouk
remove_osd(){
105 19 Mehdi Abaakouk
 name="$1" 
106 19 Mehdi Abaakouk
 ceph osd out ${name}
107 19 Mehdi Abaakouk
 systemctl stop ceph-osd@${name#osd.}
108 19 Mehdi Abaakouk
 ceph osd crush remove ${name}
109 19 Mehdi Abaakouk
 ceph auth del ${name}
110 19 Mehdi Abaakouk
 ceph osd rm ${name}
111 19 Mehdi Abaakouk
 ceph osd tree
112 19 Mehdi Abaakouk
}
113 19 Mehdi Abaakouk
</pre>
114 19 Mehdi Abaakouk
115 19 Mehdi Abaakouk
h2. Arrêter les IO de recovery:
116 19 Mehdi Abaakouk
117 19 Mehdi Abaakouk
<pre>
118 19 Mehdi Abaakouk
ceph osd set nobackfill 
119 19 Mehdi Abaakouk
ceph osd set norebalance
120 19 Mehdi Abaakouk
ceph osd set norecover
121 19 Mehdi Abaakouk
</pre>
122 19 Mehdi Abaakouk
123 23 Mehdi Abaakouk
h2. Procédure d'upgrade
124 23 Mehdi Abaakouk
125 23 Mehdi Abaakouk
+
126 23 Mehdi Abaakouk
_*/!\Lire la release note (contient très très souvent des trucs à faire en plus) /!\*_+
127 23 Mehdi Abaakouk
128 23 Mehdi Abaakouk
129 23 Mehdi Abaakouk
h4. Upgrade des MONs:
130 23 Mehdi Abaakouk
131 23 Mehdi Abaakouk
Mettre le flags noout:
132 23 Mehdi Abaakouk
133 23 Mehdi Abaakouk
<pre>ceph osd set noout</pre>
134 23 Mehdi Abaakouk
135 23 Mehdi Abaakouk
Sur chaque MONs (g1/g2/g3)
136 23 Mehdi Abaakouk
<pre>
137 23 Mehdi Abaakouk
apt-get upgrade -y
138 23 Mehdi Abaakouk
systemctl restart ceph-mon@g*
139 23 Mehdi Abaakouk
ceph -s
140 23 Mehdi Abaakouk
</pre>
141 23 Mehdi Abaakouk
142 23 Mehdi Abaakouk
Note que seulement le node 'leader/master' va provoquer une micro/nano coupure, souvent c'est même invisible.
143 23 Mehdi Abaakouk
144 23 Mehdi Abaakouk
h4. Upgrade des OSDs:
145 23 Mehdi Abaakouk
146 23 Mehdi Abaakouk
Pour chaque machine
147 23 Mehdi Abaakouk
<pre>
148 23 Mehdi Abaakouk
apt-get upgrade -y
149 23 Mehdi Abaakouk
systemctl restart ceph-osd@*
150 23 Mehdi Abaakouk
</pre>
151 23 Mehdi Abaakouk
152 23 Mehdi Abaakouk
Puis attendre que le recovery termine avant de faire la suivante.
153 23 Mehdi Abaakouk
154 23 Mehdi Abaakouk
Une fois toutes les OSDs upgrader et relancer, faire:
155 23 Mehdi Abaakouk
156 23 Mehdi Abaakouk
<pre>ceph osd unset noout</pre>
157 23 Mehdi Abaakouk
158 19 Mehdi Abaakouk
h2. Remplacement à froid d'un tier cache:
159 19 Mehdi Abaakouk
160 19 Mehdi Abaakouk
upstream  doc: http://docs.ceph.com/docs/master/rados/operations/cache-tiering/
161 19 Mehdi Abaakouk
162 19 Mehdi Abaakouk
<pre>
163 19 Mehdi Abaakouk
ceph osd tier cache-mode ec8p2c forward
164 19 Mehdi Abaakouk
rados -p ec8p2c cache-flush-evict-all
165 19 Mehdi Abaakouk
ceph osd tier remove-overlay ec8p2
166 19 Mehdi Abaakouk
ceph osd tier remove ec8p2 ec8p2c
167 19 Mehdi Abaakouk
168 19 Mehdi Abaakouk
rados rmpool ec8p2c ec8p2c  --yes-i-really-really-mean-ita
169 19 Mehdi Abaakouk
ceph osd pool create ec8p2c 128 128 replicated
170 19 Mehdi Abaakouk
171 19 Mehdi Abaakouk
ceph osd tier add ec8p2 ec8p2c
172 19 Mehdi Abaakouk
ceph osd tier cache-mode ec8p2c writeback
173 19 Mehdi Abaakouk
ceph osd tier set-overlay ec8p2 ec8p2c
174 19 Mehdi Abaakouk
175 19 Mehdi Abaakouk
ceph osd pool set ec8p2c size 3
176 19 Mehdi Abaakouk
ceph osd pool set ec8p2c min_size 2
177 19 Mehdi Abaakouk
ceph osd pool set ec8p2c hit_set_type bloom
178 19 Mehdi Abaakouk
179 19 Mehdi Abaakouk
ceph osd pool set ec8p2c hit_set_count 1
180 19 Mehdi Abaakouk
ceph osd pool set ec8p2c hit_set_period 3600
181 19 Mehdi Abaakouk
ceph osd pool set ec8p2c target_max_bytes 200000000000
182 19 Mehdi Abaakouk
ceph osd pool set ec8p2c target_max_objects 10000000
183 19 Mehdi Abaakouk
ceph osd pool set ec8p2c cache_target_dirty_ratio 0.4
184 19 Mehdi Abaakouk
ceph osd pool set ec8p2c cache_target_full_ratio 0.8
185 19 Mehdi Abaakouk
</pre>
186 19 Mehdi Abaakouk
187 16 Mehdi Abaakouk
h2. Ajout d'un OSD qui partage le SSD avec l'OS (OBSOLETE PLUS COMPATIBLE AVEC LES FUTURES VERSION DE CEPH)
188 2 Mehdi Abaakouk
189 2 Mehdi Abaakouk
190 2 Mehdi Abaakouk
En général avec ceph, on donne un disque, ceph créé 2 partitions une pour le journal de l'OSD, l'autre pour les datas
191 2 Mehdi Abaakouk
mais pour le SSD de tetaneutral qui a aussi l'OS, voici la méthode
192 2 Mehdi Abaakouk
193 2 Mehdi Abaakouk
Création manuelle de la partition de data ceph /dev/sda2 ici
194 7 Mehdi Abaakouk
195 7 Mehdi Abaakouk
Debian (MBR format):
196 2 Mehdi Abaakouk
<pre>
197 5 Mehdi Abaakouk
apt-get install partprobe
198 5 Mehdi Abaakouk
fdisk /dev/sda
199 5 Mehdi Abaakouk
200 2 Mehdi Abaakouk
n
201 14 Mehdi Abaakouk
p
202 14 Mehdi Abaakouk
<enter>
203 14 Mehdi Abaakouk
<enter>
204 14 Mehdi Abaakouk
<enter>
205 14 Mehdi Abaakouk
<enter>
206 14 Mehdi Abaakouk
w
207 14 Mehdi Abaakouk
208 14 Mehdi Abaakouk
$ partprobe
209 14 Mehdi Abaakouk
</pre>
210 14 Mehdi Abaakouk
211 14 Mehdi Abaakouk
Ubuntu (GPT format):
212 2 Mehdi Abaakouk
<pre>
213 2 Mehdi Abaakouk
# parted /dev/sdb
214 2 Mehdi Abaakouk
GNU Parted 2.3
215 13 Mehdi Abaakouk
Using /dev/sdb
216 13 Mehdi Abaakouk
Welcome to GNU Parted! Type 'help' to view a list of commands.
217 13 Mehdi Abaakouk
(parted) print                                                            
218 18 Mehdi Abaakouk
Model: ATA SAMSUNG MZ7KM480 (scsi)
219 13 Mehdi Abaakouk
Disk /dev/sdb: 480GB
220 13 Mehdi Abaakouk
Sector size (logical/physical): 512B/512B
221 13 Mehdi Abaakouk
Partition Table: msdos
222 13 Mehdi Abaakouk
223 13 Mehdi Abaakouk
Number  Start   End     Size    Type     File system     Flags
224 2 Mehdi Abaakouk
 1      1049kB  20.0GB  20.0GB  primary  ext4            boot
225 2 Mehdi Abaakouk
 2      20.0GB  36.0GB  16.0GB  primary  linux-swap(v1)
226 15 Mehdi Abaakouk
227 15 Mehdi Abaakouk
(parted) mkpart                                                           
228 15 Mehdi Abaakouk
Partition type?  primary/extended?                                        
229 15 Mehdi Abaakouk
Partition type?  primary/extended? primary
230 15 Mehdi Abaakouk
File system type?  [ext2]? xfs                                            
231 15 Mehdi Abaakouk
Start?                                                                    
232 15 Mehdi Abaakouk
Start? 36.0GB                                                             
233 15 Mehdi Abaakouk
End? 100%                                                                 
234 1 Mehdi Abaakouk
(parted) print                                                            
235 1 Mehdi Abaakouk
Model: ATA SAMSUNG MZ7KM480 (scsi)
236 1 Mehdi Abaakouk
Disk /dev/sdb: 480GB
237 1 Mehdi Abaakouk
Sector size (logical/physical): 512B/512B
238 1 Mehdi Abaakouk
Partition Table: msdos
239 1 Mehdi Abaakouk
240 1 Mehdi Abaakouk
Number  Start   End     Size    Type     File system     Flags
241 1 Mehdi Abaakouk
 1      1049kB  20.0GB  20.0GB  primary  ext4            boot
242 1 Mehdi Abaakouk
 2      20.0GB  36.0GB  16.0GB  primary  linux-swap(v1)
243 1 Mehdi Abaakouk
 3      36.0GB  480GB   444GB   primary
244 1 Mehdi Abaakouk
245 1 Mehdi Abaakouk
(parted) quit                                                             
246 1 Mehdi Abaakouk
Information: You may need to update /etc/fstab.
247 1 Mehdi Abaakouk
</pre>
248 1 Mehdi Abaakouk
249 1 Mehdi Abaakouk
On prepare le disk comme normalement
250 1 Mehdi Abaakouk
251 1 Mehdi Abaakouk
<pre>
252 1 Mehdi Abaakouk
ceph-disk prepare --fs-type=ext4 --cluster-uuid 1fe74663-8dfa-486c-bb80-3bd94c90c967 /dev/sda2
253 1 Mehdi Abaakouk
ceph-disk activate /dev/sda2
254 1 Mehdi Abaakouk
ceph osd crush add osd.<ID> 0 root=ssd host=g3-ssd
255 1 Mehdi Abaakouk
</pre>
256 1 Mehdi Abaakouk
257 1 Mehdi Abaakouk
Ensuite, autoriser Ceph à mettre des data dessus:
258 1 Mehdi Abaakouk
259 1 Mehdi Abaakouk
<pre>
260 1 Mehdi Abaakouk
$ /root/tools/ceph-reweight-osds.sh osd.<ID>
261 1 Mehdi Abaakouk
</pre>
262 28 Laurent GUERBY
263 28 Laurent GUERBY
h2. inconsistent pg
264 28 Laurent GUERBY
265 32 Laurent GUERBY
* Analyse d'une erreur de coherence detectee par ceph
266 32 Laurent GUERBY
** https://lists.tetaneutral.net/pipermail/technique/2017-August/002859.html
267 32 Laurent GUERBY
268 28 Laurent GUERBY
<pre>
269 28 Laurent GUERBY
root@g1:~# ceph health detail
270 28 Laurent GUERBY
HEALTH_ERR 1 pgs inconsistent; 2 scrub errors
271 28 Laurent GUERBY
pg 58.22d is active+clean+inconsistent, acting [9,47,37]
272 28 Laurent GUERBY
2 scrub errors
273 28 Laurent GUERBY
root@g1:~# rados list-inconsistent-obj 58.22d  --format=json-pretty
274 28 Laurent GUERBY
{
275 28 Laurent GUERBY
    "epoch": 269000,
276 28 Laurent GUERBY
    "inconsistents": [
277 28 Laurent GUERBY
        {
278 28 Laurent GUERBY
            "object": {
279 28 Laurent GUERBY
                "name": "rbd_data.11f20f75aac8266.00000000000f79f9",
280 28 Laurent GUERBY
                "nspace": "",
281 28 Laurent GUERBY
                "locator": "",
282 28 Laurent GUERBY
                "snap": "head",
283 28 Laurent GUERBY
                "version": 9894452
284 28 Laurent GUERBY
            },
285 28 Laurent GUERBY
            "errors": [
286 28 Laurent GUERBY
                "data_digest_mismatch"
287 28 Laurent GUERBY
            ],
288 28 Laurent GUERBY
            "union_shard_errors": [
289 28 Laurent GUERBY
                "data_digest_mismatch_oi"
290 28 Laurent GUERBY
            ],
291 31 Laurent GUERBY
            "selected_object_info": 
292 31 Laurent GUERBY
"58:b453643a:::rbd_data.11f20f75aac8266.00000000000f79f9:head(261163'9281748 osd.9.0:6221608 dirty|data_digest|omap_digest s 4194304 uv 9894452 dd 2193d055 od ffffffff alloc_hint [0 0])",
293 28 Laurent GUERBY
            "shards": [
294 28 Laurent GUERBY
                {
295 28 Laurent GUERBY
                    "osd": 9,
296 28 Laurent GUERBY
                    "errors": [],
297 28 Laurent GUERBY
                    "size": 4194304,
298 28 Laurent GUERBY
                    "omap_digest": "0xffffffff",
299 28 Laurent GUERBY
                    "data_digest": "0x2193d055"
300 28 Laurent GUERBY
                },
301 28 Laurent GUERBY
                {
302 28 Laurent GUERBY
                    "osd": 37,
303 28 Laurent GUERBY
                    "errors": [
304 28 Laurent GUERBY
                        "data_digest_mismatch_oi"
305 28 Laurent GUERBY
                    ],
306 28 Laurent GUERBY
                    "size": 4194304,
307 28 Laurent GUERBY
                    "omap_digest": "0xffffffff",
308 28 Laurent GUERBY
                    "data_digest": "0x05891fb4"
309 28 Laurent GUERBY
                },
310 28 Laurent GUERBY
                {
311 28 Laurent GUERBY
                    "osd": 47,
312 28 Laurent GUERBY
                    "errors": [],
313 28 Laurent GUERBY
                    "size": 4194304,
314 28 Laurent GUERBY
                    "omap_digest": "0xffffffff",
315 28 Laurent GUERBY
                    "data_digest": "0x2193d055"
316 28 Laurent GUERBY
                }
317 28 Laurent GUERBY
            ]
318 28 Laurent GUERBY
        }
319 28 Laurent GUERBY
    ]
320 28 Laurent GUERBY
}
321 29 Laurent GUERBY
root@g1:~# ceph osd map disks rbd_data.11f20f75aac8266.00000000000f79f9
322 29 Laurent GUERBY
osdmap e269110 pool 'disks' (58) object 'rbd_data.11f20f75aac8266.00000000000f79f9' -> pg 58.5c26ca2d (58.22d) -> up ([9,47,37], p9) acting ([9,47,37], p9)
323 29 Laurent GUERBY
324 30 Laurent GUERBY
325 30 Laurent GUERBY
root@g8:/var/lib/ceph/osd/ceph-9/current/58.22d_head# find . -name '*11f20f75aac8266.00000000000f79f9*'
326 30 Laurent GUERBY
./DIR_D/DIR_2/DIR_A/DIR_C/rbd\udata.11f20f75aac8266.00000000000f79f9__head_5C26CA2D__3a
327 30 Laurent GUERBY
328 30 Laurent GUERBY
root@g10:/var/lib/ceph/osd/ceph-37/current/58.22d_head# find . -name '*11f20f75aac8266.00000000000f79f9*'
329 30 Laurent GUERBY
./DIR_D/DIR_2/DIR_A/DIR_C/rbd\udata.11f20f75aac8266.00000000000f79f9__head_5C26CA2D__3a
330 30 Laurent GUERBY
331 30 Laurent GUERBY
$ scp g8:/var/lib/ceph/osd/ceph-9/current/58.22d_head/DIR_D/DIR_2/DIR_A/DIR_C/rbd*data.11f20f75aac8266.00000000000f79f9__head_5C26CA2D__3a g8data
332 30 Laurent GUERBY
$ scp g10:/var/lib/ceph/osd/ceph-37/current/58.22d_head/DIR_D/DIR_2/DIR_A/DIR_C/rbd*data.11f20f75aac8266.00000000000f79f9__head_5C26CA2D__3a g10data
333 30 Laurent GUERBY
334 30 Laurent GUERBY
$ md5sum *
335 30 Laurent GUERBY
bd85c0ef1f30829ce07e5f9152ac2d2f  g10data
336 30 Laurent GUERBY
4297d0bc373e6603e0ad842702e0ecaa  g8data
337 30 Laurent GUERBY
$ $ diff -u <(od -x g10data) <(od -x g8data)
338 30 Laurent GUERBY
--- /dev/fd/63	2017-08-13 10:43:52.837097740 +0200
339 30 Laurent GUERBY
+++ /dev/fd/62	2017-08-13 10:43:52.833097808 +0200
340 30 Laurent GUERBY
@@ -2617,7 +2617,7 @@
341 30 Laurent GUERBY
 0121600 439b 14f4 bb4c 5f14 6ff7 4393 9ff8 a9a9
342 30 Laurent GUERBY
 0121620 29a8 56a4 1133 b6a8 2206 4821 2f42 4b2c
343 30 Laurent GUERBY
 0121640 3d86 41a2 785f 9785 8b48 4243 e7b9 f0aa
344 30 Laurent GUERBY
-0121660 29b6 be0c 0455 bf97 1c0d 49e5 75dd e1ed
345 30 Laurent GUERBY
+0121660 29a6 be0c 0455 bf97 1c0d 49e5 75dd e1ed
346 30 Laurent GUERBY
 0121700 2519 d6ac 1047 1111 0344 38be 27a1 db07
347 30 Laurent GUERBY
 0121720 dff6 c002 75d8 4396 6154 eba9 3abd 5d20
348 30 Laurent GUERBY
 0121740 8ae4 e63a 298b d754 0208 9705 1bb8 3685
349 30 Laurent GUERBY
</pre>
350 30 Laurent GUERBY
351 30 Laurent GUERBY
Donc un seul bit flip 29b6 vs 29a6  
352 30 Laurent GUERBY
353 30 Laurent GUERBY
<pre>
354 30 Laurent GUERBY
>>> bin(0xa)
355 30 Laurent GUERBY
'0b1010'
356 30 Laurent GUERBY
>>> bin(0xb)
357 30 Laurent GUERBY
'0b1011'
358 28 Laurent GUERBY
</pre>
359 29 Laurent GUERBY
360 29 Laurent GUERBY
* http://cephnotes.ksperis.com/blog/2013/08/20/ceph-osd-where-is-my-data
361 33 Laurent GUERBY
* https://superuser.com/questions/969889/what-is-the-granularity-of-a-hard-disk-ure-unrecoverable-read-error