Jump to content
  • 0

Symbolic Link Support


JazzMan

Question

Just had a project where it would have been nice if the DrivePool volume supprted the creation of symbolic links (mklink).  I did what I needed to by having the link targets reference the individual drives that made up the pool, but having direct support for this within DrivePool would have been a plus.  Not sure how hard that would be to add or what issues there might be. 

Link to comment
Share on other sites

11 answers to this question

Recommended Posts

  • 0

Missing support for sumbolic links are also preventing use DrivePool to host Plex Media Server. It uses symbolic links a lot for it's file based meta-database. Totally crashes when run off the pool. I can still have my media in the pool, but PMS and it's meta database has to go on a non-pooled drive. I expanded the C:-partition to make room for Plex since I don't have any non-pooled drives except the server backup drive.

Link to comment
Share on other sites

  • 0

@JazzMan:  I've flagged this thread for Alex, so he can weigh in. But I'm pretty sure it's not possible, given how DrivePool work. It's a virtual drive that just passes the IO operations to the actually drives basically. (this is a vast oversimplification of how it works, though).

 

@Pal:

For Plex, do you mean it's local database/cache? 

I've used plex before with DrivePool without issue. But I have manually scrapped the data (using XBMC metadata, and a 3rd party tool), and had it installed to the default location (C:\Program Files)

Link to comment
Share on other sites

  • 0

@Pal:

For Plex, do you mean it's local database/cache? 

I've used plex before with DrivePool without issue. But I have manually scrapped the data (using XBMC metadata, and a 3rd party tool), and had it installed to the default location (C:\Program Files)

 

Yes, it's local DB/cache uses symbolic links. I quess to link related data. The database is file-based and an actor picture is stored once but linked to from all the movies he/she is in. Works fine in the default (Program Files) location as long as I extended the partition. The default 20GB C: size was to small for me.

Link to comment
Share on other sites

  • 0

>> It's a virtual drive that just passes the IO operations to the actually drives basically. (this is a vast oversimplification of how it works, though).

 

With this oversimplification, it would seem possible then.  Symlinks are just another IO operaion that can be "passed to the drives".  Although, it seems like other features of NTFS are not supported; for example it looks like EFS (Encrypting File System) files are also not supported via DrivePool?  I wonder if streams are?  I guess this is all based on which NTFS features you choose to pass through the CoveFS layer and which you do not.

 

Link to comment
Share on other sites

  • 0

The drivePool disk isn't a "real" drive. It's a Virtual drive, and windows itself has some rather strict requirements (and they tend to be undocumented too) about what features will work on what drives (API, file system features, etc).  For example: NFS. Both Alex and the Drive Bender team had issues getting the built in NFS Server to work on WHS2011. And Server 2012 changed something and now the built in NFS server doesn't want to work with the same settings that did on WHS2011...

 

But for the Symbolic Links... how would you create them? Where would they point to? I understand that it sounds like there are easy answers, but everything must be done within the confines of Windows API. Which while it may be very robust, it isn't exactly well documented. Nor is it as "fully featured" as many would like.

 

 

Either way, I've let Alex know. And if it's possible, and feasible... 

Link to comment
Share on other sites

  • 0

Guys, I've added preliminary support for symbolic links (reparse points). It still needs more testing, but here is the internal build with this feature:

Link to comment
Share on other sites

  • 0

I installed the 2.0.0.281_x64_BETA above on Win7.  I was able to successfully create a symlink.  However, if I try to access the files via that link I don't see any files.  If I look at the PoolPart directory the link appears to be created correctly and it does resolve to the target location.  Also; in Win Explorer, if I do a properties of the PoolPart object it shows a "Shortcut" tab, but the properties of the CoveFS object don't show a Shortcut tab.  The CoveFS object icon does show the shortcut arrow thingy though.

 

 

C:\Users\JazzMan>d:

D:\>cd pictures

D:\Pictures>dir "d:\sorted\pic jpg0" /b/a-d | find /v /c "::"
100000

D:\Pictures>mklink /d "pic jpg0" "d:\sorted\pic jpg0"
symbolic link created for pic jpg0 <<===>> d:\sorted\pic jpg0

D:\Pictures>dir "d:\pictures\pic jpg0" /b/a-d | find /v /c "::"
File Not Found
0

D:\Pictures>dir "U:\PoolPart.e142bb7a-bef5-4415-bf1a-f47a426a45c2\Pictures\pic jpg0" /b/a-d | find /v /c "::"
100000
 

Link to comment
Share on other sites

  • 0

Thanks for testing it out.

 

My initial implementation in build 281 above was based on the premise that we can reuse the reparse functionality that's already present in NTFS.

 

I've been reading up some more on exactly how this is supposed to work and playing around with some different approaches, it looks like the entire concept of reusing NTFS for this is not going to work.

 

So don't use build 281 :)

 

I'm going to take the current reparse implementation out and rewrite it from scratch using a different approach.

 

Using this new approach, reparse points (or symbolic links) will appear as regular files or directories on the underlying NTFS volume, but will work like reparse points on the pool. This will also eliminate the burden of accounting for reparse points when duplicating or rebalancing, since they will be regular files on the underlying NTFS volume.

 

Look for that in a future build. I don't think that it will make it into the next build because that one is concentrating on updating the locking and caching model, which is a big change as it is.

Link to comment
Share on other sites

  • 0

Storage Spaces should definitely handle it. It's basically conventional RAID and functions as such.  

As for Drive Bender, I'm not sure, but I don't think they do either.

 

 

And yeah, everything with file systems seems to end up more complicated that it would seem.  I'm sure Alex has horror stories along those lines. :)

But like he said, it's on his to-do list.

Link to comment
Share on other sites

  • 0

JazzMan,

 

Simply put, it is much harder than I initially thought to make a reliable implementation of symbolic links.

 

As far as I can tell, we can make a reliable implementation in the future, it's just going to take some time.

 

Look for this in a future build.

 

Regards,

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...