On Thu, Feb 13, 2003 at 01:02:07PM -0500, Jeff Teitel wrote:
> 
> Some time ago I asked how I could split my datastore across multiple 
> filesystems.  The answer I got was to creat symbolic links from the store 
> directory to the other FS.  I've done this but it doesn't seem to work.
> 
> Most of my datastore is on an FS that is mounted below the directory that 
> freenet runs in.
> 
> jteitel@jeff:~/freenet/store$ df
> Filesystem  blocks   Used      Avail    Use%   Mounted on
> /dev/hda3   9843308  2443568   6899720  27%    /
> /dev/hda5  16000212  1280708  14719504   9%    /home/jteitel/freenet/store
> /dev/hda7   1999992    32840   1967152   2%    /tmp
> 
> There are symbolic links to another directory (freenet/store_1/) at the 
> same level for a portion of the directories under freenet/store/.
> 
> jteitel@jeff:~/freenet/store$ ls -l
> total 862
> lrwxrwxrwx jteitel jteitel 31  0 -> /home/jteitel/freenet/store_1/0
> lrwxrwxrwx jteitel jteitel 31  1 -> /home/jteitel/freenet/store_1/1
> lrwxrwxrwx jteitel jteitel 32 10 -> /home/jteitel/freenet/store_1/10
> lrwxrwxrwx jteitel jteitel 32 11 -> /home/jteitel/freenet/store_1/11
> lrwxrwxrwx jteitel jteitel 32 12 -> /home/jteitel/freenet/store_1/12
> lrwxrwxrwx jteitel jteitel 32 13 -> /home/jteitel/freenet/store_1/13
> lrwxrwxrwx jteitel jteitel 32 14 -> /home/jteitel/freenet/store_1/14
> lrwxrwxrwx jteitel jteitel 32 15 -> /home/jteitel/freenet/store_1/15
> lrwxrwxrwx jteitel jteitel 32 16 -> /home/jteitel/freenet/store_1/16
> lrwxrwxrwx jteitel jteitel 32 17 -> /home/jteitel/freenet/store_1/17
> lrwxrwxrwx jteitel jteitel 32 18 -> /home/jteitel/freenet/store_1/18
> lrwxrwxrwx jteitel jteitel 32 19 -> /home/jteitel/freenet/store_1/19
> lrwxrwxrwx jteitel jteitel 32 1a -> /home/jteitel/freenet/store_1/1a
> lrwxrwxrwx jteitel jteitel 32 1b -> /home/jteitel/freenet/store_1/1b
> lrwxrwxrwx jteitel jteitel 32 1c -> /home/jteitel/freenet/store_1/1c
> lrwxrwxrwx jteitel jteitel 32 1d -> /home/jteitel/freenet/store_1/1d
> lrwxrwxrwx jteitel jteitel 32 1e -> /home/jteitel/freenet/store_1/1e
> lrwxrwxrwx jteitel jteitel 32 1f -> /home/jteitel/freenet/store_1/1f
> lrwxrwxrwx jteitel jteitel 31  2 -> /home/jteitel/freenet/store_1/2
> lrwxrwxrwx jteitel jteitel 32 20 -> /home/jteitel/freenet/store_1/20
> lrwxrwxrwx jteitel jteitel 32 21 -> /home/jteitel/freenet/store_1/21
> lrwxrwxrwx jteitel jteitel 32 22 -> /home/jteitel/freenet/store_1/22
> lrwxrwxrwx jteitel jteitel 32 23 -> /home/jteitel/freenet/store_1/23
> lrwxrwxrwx jteitel jteitel 32 24 -> /home/jteitel/freenet/store_1/24
> lrwxrwxrwx jteitel jteitel 32 25 -> /home/jteitel/freenet/store_1/25
> lrwxrwxrwx jteitel jteitel 32 26 -> /home/jteitel/freenet/store_1/26
> lrwxrwxrwx jteitel jteitel 32 27 -> /home/jteitel/freenet/store_1/27
> lrwxrwxrwx jteitel jteitel 32 28 -> /home/jteitel/freenet/store_1/28
> lrwxrwxrwx jteitel jteitel 32 29 -> /home/jteitel/freenet/store_1/29
> lrwxrwxrwx jteitel jteitel 32 2a -> /home/jteitel/freenet/store_1/2a
> lrwxrwxrwx jteitel jteitel 32 2b -> /home/jteitel/freenet/store_1/2b
> lrwxrwxrwx jteitel jteitel 32 2c -> /home/jteitel/freenet/store_1/2c
> lrwxrwxrwx jteitel jteitel 32 2d -> /home/jteitel/freenet/store_1/2d
> lrwxrwxrwx jteitel jteitel 32 2e -> /home/jteitel/freenet/store_1/2e
> lrwxrwxrwx jteitel jteitel 32 2f -> /home/jteitel/freenet/store_1/2f
> lrwxrwxrwx jteitel jteitel 31  3 -> /home/jteitel/freenet/store_1/3
> drwxr-xr-x jteitel jteitel 1392 30
> drwxr-xr-x jteitel jteitel 1584 31
> drwxr-xr-x jteitel jteitel 1776 32
> drwxr-xr-x jteitel jteitel 1584 33
> drwxr-xr-x jteitel jteitel 1840 34
> drwxr-xr-x jteitel jteitel 1648 35
> drwxr-xr-x jteitel jteitel 2032 36
> drwxr-xr-x jteitel jteitel 1264 37
> drwxr-xr-x jteitel jteitel 1520 38
> drwxr-xr-x jteitel jteitel 2288 39
> drwxr-xr-x jteitel jteitel 1840 3a
> drwxr-xr-x jteitel jteitel 1712 3b
> drwxr-xr-x jteitel jteitel 2160 3c
> drwxr-xr-x jteitel jteitel 1264 3d
> drwxr-xr-x jteitel jteitel 1456 3e
> drwxr-xr-x jteitel jteitel 1904 3f
> lrwxrwxrwx jteitel jteitel 31  4 -> /home/jteitel/freenet/store_1/4
> drwxr-xr-x jteitel jteitel 1200 40
> drwxr-xr-x jteitel jteitel 1712 41
> drwxr-xr-x jteitel jteitel 1584 42
> drwxr-xr-x jteitel jteitel 1136 43
> drwxr-xr-x jteitel jteitel 1456 44
> drwxr-xr-x jteitel jteitel 1968 45
> drwxr-xr-x jteitel jteitel 1520 46
> drwxr-xr-x jteitel jteitel 1968 47
> drwxr-xr-x jteitel jteitel 1904 48
> drwxr-xr-x jteitel jteitel 1456 49
> drwxr-xr-x jteitel jteitel 1776 4a
> drwxr-xr-x jteitel jteitel 1328 4b
> drwxr-xr-x jteitel jteitel 1520 4c
> drwxr-xr-x jteitel jteitel 1776 4d
> drwxr-xr-x jteitel jteitel 2032 4e
> drwxr-xr-x jteitel jteitel 1712 4f
> lrwxrwxrwx jteitel jteitel 31  5 -> /home/jteitel/freenet/store_1/5
> drwxr-xr-x jteitel jteitel 1456 50
> drwxr-xr-x jteitel jteitel 1456 51
> drwxr-xr-x jteitel jteitel 1584 52
> and so on.
> 
> However, it looks like freenet is unable to write to the directories that 
> are symbolic links.  There are no files in the linked directories and my 
> freenet.log is full of these error messages:

Hmm. Well then mount them rather than symlinking (2.4's bind mount may
be useful here). It does look like a permissions problem though... su to
the user that the node runs as and try to touch store/15/somefile.

> 
> Feb 13, 2003 12:50:17 PM (freenet.node.states.maintenance.Checkpoint, 
> QThread-5607): unhandled throwable in Checkpoint: Native Filesystem 
> Directory checkpoint
> freenet.fs.dir.DirectoryException: finalizing rename failed
>         at 
> 
>freenet.fs.dir.NativeFSDirectory$NativeBuffer.reallyCommit(NativeFSDirectory.java:1910)

This means that the store cannot move a file from store/temp/ to
store/<number>. Hmmm. It is possible that the call we use,
File.renameTo(), does not actually move files between filesystems, but
only within a filesystem. Since java does not know what a filesystem is,
this is borken - what JVM are you using? Hmm. Apparently this is in the
java spec(!!!):  

Whether or not this method can move a file from one filesystem to 
another is platform-dependent. The return value should  always be
checked to make sure that the rename operation was successful.

Wonderful. So if it fails we need to copy it manually. Fine. I will
implement it after I have fixed the CSS filter (this will hopefully not
take more than a couple of days...).

Personally, I'd just install LVM, make a PV of the partitions/disks 
in question, and allocate a single logical volume for the store.

>         at 
> freenet.fs.dir.NativeFSDirectory.writeIndex(NativeFSDirectory.java:795)
>         at 
> freenet.fs.dir.NativeFSDirectory.checkpoint(NativeFSDirectory.java:1186)
>         at 
> freenet.node.states.maintenance.Checkpoint.checkpoint(Checkpoint.java:56)
>         at 
> freenet.node.states.maintenance.Checkpoint.received(Checkpoint.java:49)
>         at freenet.node.StateChain.received(StateChain.java:161)
>         at freenet.node.StateChain.received(StateChain.java:52)
>         at 
> freenet.node.StandardMessageHandler$Ticket.run(StandardMessageHandler.java:212)
>         at 
> freenet.node.StandardMessageHandler$Ticket.received(StandardMessageHandler.java:159)
>         at 
> freenet.node.StandardMessageHandler$Ticket.access$0(StandardMessageHandler.java)
>         at 
> freenet.node.StandardMessageHandler.handle(StandardMessageHandler.java:68)
>         at freenet.Ticker$Event.run(Ticker.java:214)
>         at 
>         freenet.thread.QThreadFactory$QThread.run(QThreadFactory.java:213)
> 
> 
> Also, the freemet/store/temp directory is getting full of files even though 
> I have a specific temp directory specified in freenet.conf (tempDir=/tmp/).
> 
> I've given full permissions to the relevant dirs:
> 
> jteitel@jeff:~/freenet$ ls -lad stor*
> drwxrwxrwx  212 jteitel  jteitel      6240 Feb 13 12:55 store
> drwxrwxrwx   50 jteitel  jteitel      4096 Dec 20 20:12 store_1
> 
> jteitel@jeff:~/freenet/store_1$ ls -l
> total 628
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:47 0
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:47 1
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:49 10
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:49 11
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:49 12
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:49 13
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:50 14
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:50 15
> drwxrwxrwx    2 jteitel  jteitel     12288 Feb 12 18:50 16
> and so on
> 
> From http://127.0.0.1:8888/servlet/nodeinfo/internal/env
> Architecture i386
> Available processors 1
> Operating System Linux
> OS Version 2.4.19
> JVM Vendor Sun Microsystems Inc.
> JVM Name Java HotSpot(TM) Server VM
> JVM Version 1.4.1-b21
> Maximum memory the JVM will allocate 320 MiB
> Memory currently allocated by the JVM 72,680 KiB
> Memory in use 34,726,944 Bytes
> Unused allocated memory 39,695,928 Bytes
> Total size of the data store 14 GiB
> Space used by temp files in the data store None
> Free space in the data store 13,357,884 KiB
> Used space in the data store 1,322,180 KiB
> Most recent file timestamp Thu Feb 13 12:59:13 EST 2003
> Least recent file timestamp Wed Feb 12 19:24:37 EST 2003
> 
> What next?
> 
>               Jeff
> -- 
> Those who would give up essential liberty, to purchase a little
> temporary safety, deserve neither liberty nor safety. -Benjamin Franklin
> 
> 
> _______________________________________________
> devl mailing list
> [EMAIL PROTECTED]
> http://hawk.freenetproject.org:8080/cgi-bin/mailman/listinfo/devl
> 

-- 
Matthew Toseland
[EMAIL PROTECTED][EMAIL PROTECTED]
Full time freenet hacker.
http://freenetproject.org/
Freenet Distribution Node (temporary) at http://amphibian.dyndns.org:8889/ahNdJC6opVw/
ICTHUS.

Attachment: msg06772/pgp00000.pgp
Description: PGP signature

Reply via email to