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.
msg06772/pgp00000.pgp
Description: PGP signature
