It sounds like xtfs_mount is unable to reach your MRC. Did you open
port 32636 on the MRC machine?
You can run xtfs_mount with
-f -d INFO --trace-network-operations
to see what it's trying to do on the network (and run in the foreground).
Hope this helps.
Minor
So it appears that the DIRectory service is not listening on the
STORAGE box, which is true, I didn't start it. We wanted to use the
DIR service on another box. However, when I START the directory
service (xtreem-dir) on the STORAGE server, then the connection
refused error goes away, however, "unknown volume" shows up instead.
But the real question is:
Can we run the DIRectory service on one box, and have several storage
servers set up that are running both of the other daemons, the MRC and
OSD service daemon? That's what we are trying to do.
On the storage boxes, there are directives in the
/etc/xos/xtreemfs/mrcconfig.properties file that points to the DIR
box:
dir_service.host = xdir1.domainname.com (pointing to the other box
running the DIR service daemon)
dir_service.port = 32638
But it doesn't seem to talk to the DIR box. After writing all of this,
I hope it makes sense.
Thanks for your help, and if this architecture seems ok.
Dennis
--
==============================
Dennis McEntire - gmail account
dmce...@gmail.com
==============================
On Wed, Nov 25, 2009 at 3:17 AM, Dennis McEntire <dmce...@gmail.com> wrote:
> So it appears that the DIRectory service is not listening on the
> STORAGE box, which is true, I didn't start it. We wanted to use the
> DIR service on another box. However, when I START the directory
> service (xtreem-dir) on the STORAGE server, then the connection
> refused error goes away, however, "unknown volume" shows up instead.
Did you xtfs_mkvol the volume first? The command is xtfs_mkvol
mrc_host/volume_name.
> Can we run the DIRectory service on one box, and have several storage
> servers set up that are running both of the other daemons, the MRC and
> OSD service daemon? That's what we are trying to do.
You can have the DIR, MRC, and OSDs on different machines, but there
can only be one MRC per volume, at least for the time being. Actual
file I/O is done with the OSDs, so you want to have these on different
machines so that they're close to clients on the network. The system
will pick OSDs for I/O based on network proximity (e.g. subnet
matching, network coordinates).
If you want multiple metadata servers then you'll need to set up
multiple volumes. This is inconvenient, I know, though it (a
centralized metadata server per volume) is a common limitation in
distributed file systems. We are working on replicated DIR and MRC
services.
> On the storage boxes, there are directives in the
> /etc/xos/xtreemfs/mrcconfig.properties file that points to the DIR
> box:
>
> dir_service.host = xdir1.domainname.com (pointing to the other box
> running the DIR service daemon)
> dir_service.port = 32638
>
> But it doesn't seem to talk to the DIR box.
That looks OK. Can you telnet to port 32638 from that machine? What
about xtfs_lsvol? You might try enabling debug.level = 6 or 7 in the
various configs and restarting the servers to get debug output in the
logs. Generally the MRC and OSDs will fail on startup if they can't
contact the DIR, however.
Minor
Let's start over with a new scenario. It doesn't seem to matter what I
do, I can't seem to get it working the way I think it should be
working.
Some facts:
1. Yes I did a xtfs_mkvol some time ago and it shows up when I do a
xtfs_lsvol - no problem there.
2. I tried moving the MRC service from the storage server over to the
directory server and changed the pointers, etc., and it didn't seem to
help.
3. The bottom line for me is that if the DIR service is NOT running on
the same box as the storage server, then I get a connection refused
error (#111) from any box.
So, in an effort to figure this out, I changed all the services to be
just on one box. I started all 3 services on one box, after changing
the configuration files of course. Once I did that, everything works,
no errors and I can mount the volume and put files into it. The files
get split as usual into the parts and put into the directories like
it's supposed to.
Here's the big question. Now that I have the single server setup and
running, what needs to happen to MOVE the directory service over to a
new server? This is where I am stuck. This is what I think needs to
happen, but correct me if I am wrong:
On the current storage server stop all the services, then update these files:
/etc/xos/xtreemfs/default_dir => update the host to point to the
directory server
/etc/xos/xtreemfs/dirconfig.properties => No change here since I am
not going to run a DIR service on this box.
/etc/xos/xtreemfs/mrcconfig.properties => Update dir_service.host to
point to the new directory server.
/etc/xos/xtreemfs/osdconfig.properties => Update dir_service.host to
point to the new directory server.
Then get the DIR service only (no MRC or OSD) running on the other
directory server, start everything up, and that's when I start getting
errors. I can still xtfs_lsvol storageserver.name and it shows my
volume, but I can't mount it (#111 connection refused).
Thanks again for your help,
Dennis
--
On quick question, the system seems to work pretty well,
but when
copying large files (250MB+) it generally starts the copying but quits
at random times with an error:
cp: writing `test\testfile250mb.mp4': Operation not permitted
When I view the mount directory the file is partially there, but is
not complete.
Couple more updates:
Things are working right now with the one storage node. When mounting
the share on a couple different computers, however, I have run into
some permission denied issues, but doing a chmod as the user who
dropped files in seems to fix those things.
One big question that comes up: How do we know when a file is done
copying into xtreem?
When using one computer to mount a share, we copy a large 1gig file to
the server.
When looking at the share from another computer, the file size just
slowly increases, showing that the file is copying into the system.
The filename is static, however.
So the question that arises, how can a "program" know when a file is
done copying (from a computer that is NOT the one doing the actual
copying)?
Sometimes, as with some FTP servers, files that are in the process of
being copied have a dot (.) in front of their name so they should not
appear in a list until the file is done uploading, then it gets
renamed to the actual file name.
This way, most people won't see the file if they do a standard LS
since it starts with a period. Once the file is done, the period
disappears and the file will show up for people doing an LS.