I was messing around with my storage cluster this evening and wanted
to added a new node to it. I wasn't too sure how to actually do it and
didn't find any info on it on the wiki so I tried to figure out how to
do it. However, I ran in to a few issues so I thought I'd ask for the
correct way to add a new node to a storage cluster.

Currently, I have 2 nodes in the storage cluster and I wanted to add a
new node to the storage cluster. Information from the monitor was as
follows:

# cmonctl osd stat
mon0 <- 'osd stat'
mon0 -> 'e4: 2 osds: 2 up, 2 in' (0)
# cmonctl osd getmaxosd
mon0 <- 'osd getmaxosd'
mon0 -> 'max_osd = 2 in epoch 4' (0)
#

So I increased the max_osd parameter and then initialized the object
store on the new storage node and started up the osd daemon.

# cmonctl osd setmaxosd 3
mon0 <- 'osd setmaxosd 3'
mon0 -> 'set new max_osd = 3' (0)
# cosd --mkfs_for_osd 2 /mnt/btrfs/osd2
080803.122127.676683 filestore(/mnt/btrfs/osd2) mkfs in /mnt/btrfs/osd2
080803.122127.725061 filestore(/mnt/btrfs/osd2) mkfs done in /mnt/btrfs/osd2
080803.122127.725313 filestore(/mnt/btrfs/osd2) mount detected btrfs
created object store for osd2 fsid 14194a0f1f8a2419.5a35d8576aa6ea7c
on /mnt/btrfs/osd2
# cosd /mnt/btrfs/osd2 -d --debug_osd 10
starting osd2 at 0.0.0.0:50110/3056/0 dev /mnt/btrfs/osd2
#

I had expected the OSD to send the monitor an OSDBoot message which I
see in the log file for osd2

080803.122314.210036 osd2 0 do_mon_report
080803.122314.210076 osd2 0 send_boot to mon0
080803.122314.210489 osd2 0 send_pg_stats
080803.122314.473473 osd2 0 heartbeat: stat(080803.122314.473366
rdlat=0 / 0 fshedin=0)

However looking at the monitor's log file, I see the following:

080803.041119.037116 1108556096 -- 192.168.221.137:12345/0/0 mon0 -->
mds0 192.168.221.137:33808/3125/0 -- mdsbeacon(up:active seq 255) --
0x74bcb0
080803.041120.109373 1108556096 -- 192.168.221.137:12345/0/0 mon0 <==
osd2 192.168.221.140:50110/3056/0 ==== osd_boot(osd2) ==== 0x74b460
080803.041120.109424 mon0(leader).osd e6 preprocess_query
osd_boot(osd2) from osd2 192.168.221.140:50110/3056/0
080803.041120.109435 mon0(leader).osd e6 preprocess_boot from osd2
192.168.221.140:50110/3056/0
080803.041120.109443 mon0(leader).osd e6 prepare_update osd_boot(osd2)
from osd2 192.168.221.140:50110/3056/0
080803.041120.109452 mon0(leader).osd e6 prepare_boot from osd2
192.168.221.140:50110/3056/0
080803.041120.109459 mon0(leader).osd e6 boot from non-existent osd2,
increase max_osd?

And cmonctl tells me I still only have 2 osd's:

# cmonctl osd stat
mon0 <- 'osd stat'
mon0 -> 'e5: 2 osds: 2 up, 2 in' (0)
#

So my new node is not joining the storage cluster. I was under the
impression that the storage node would join the cluster after
contacting the monitor with the OSDBoot message (after the monitor
sends incremental updates to the new node). Is there something else I
need to do here? Do I need to explicitly mark osd2 as in the
distribution? I'm under the impression from these log messages that
the cluster map does not know about the new storage node but I don't
know how to add it to the cluster map explicitly.

-Padraig

-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
Ceph-devel mailing list
Ceph-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ceph-devel

Reply via email to