mirror of https://github.com/trapexit/mergerfs.git
Browse Source
Merge pull request #1416 from trapexit/docs
Merge pull request #1416 from trapexit/docs
Add FAQ section on common perceived problemsmaster
committed by
GitHub
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 162 additions and 85 deletions
-
25mkdocs/docs/faq/configuration_and_policies.md
-
95mkdocs/docs/faq/technical_behavior_and_limitations.md
-
112mkdocs/docs/faq/why_isnt_it_working.md
-
14mkdocs/docs/setup/upgrade.md
-
1mkdocs/mkdocs.yml
@ -0,0 +1,112 @@ |
|||||
|
# "Why isn't it working?" |
||||
|
|
||||
|
## I modified mergerfs' config but it still behaves the same. |
||||
|
|
||||
|
mergerfs, like most filesystems, are given their options/arguments |
||||
|
at mount time. Unlike most filesystems, mergerfs also has the ability |
||||
|
to modify certain options at [runtime](../runtime_interfaces.md). |
||||
|
|
||||
|
That said: mergerfs does not actively try to monitor typical methods |
||||
|
of configuration (nor should it.) As such if changes are made to |
||||
|
`/etc/fstab`, a systemd unit file, etc. it will have no knowledge of |
||||
|
those changes. It is the user's responsibility to |
||||
|
[restart](../setup/upgrade.md) mergerfs to pick up the changes or use |
||||
|
the [runtime interface](../runtime_interfaces.md). |
||||
|
|
||||
|
|
||||
|
## Why are all my files ending up on 1 filesystem?! |
||||
|
|
||||
|
Did you start with empty filesystems? Did you explicitly configure a |
||||
|
`category.create` policy? Are you using an `existing path` / `path |
||||
|
preserving` policy? |
||||
|
|
||||
|
The default create policy is `epmfs`. That is a path preserving |
||||
|
algorithm. With such a policy for `mkdir` and `create` with a set of |
||||
|
empty filesystems it will select only 1 filesystem when the first |
||||
|
directory is created. Anything, files or directories, created in that |
||||
|
directory will be placed on the same branch because it is preserving |
||||
|
paths. That is the expected behavior. |
||||
|
|
||||
|
This may catch new users off guard but this policy is the safest |
||||
|
policy to start with as it will not change the general layout of the |
||||
|
underlying branches. If you do not care about path preservation ([most |
||||
|
should |
||||
|
not](configuration_and_policies.md#how-can-i-ensure-files-are-collocated-on-the-same-branch)) |
||||
|
and wish your files to be spread across all your filesystems change to |
||||
|
`pfrd`, `rand`, `mfs` or similar |
||||
|
[policy](../config/functions_categories_and_policies.md). |
||||
|
|
||||
|
|
||||
|
## Why isn't the create policy working? |
||||
|
|
||||
|
It probably is. The policies rather straight forward and well tested. |
||||
|
|
||||
|
First, confirm the policy is configured as expected by using the |
||||
|
[runtime interface](../runtime_interfaces.md). |
||||
|
|
||||
|
```shell |
||||
|
$ getfattr -n user.mergerfs.category.create /mnt/mergerfs/.mergerfs |
||||
|
# file: mnt/mergerfs/.mergerfs |
||||
|
user.mergerfs.category.create="mfs" |
||||
|
``` |
||||
|
|
||||
|
Second, as discussed in the [support](../support.md) section, test the |
||||
|
behavior using simple command line tools such as `touch` and then see |
||||
|
where it was created. |
||||
|
|
||||
|
|
||||
|
```shell |
||||
|
$ touch /mnt/mergerfs/new-file |
||||
|
$ getfattr -n user.mergerfs.allpaths /mnt/mergerfs/new-file |
||||
|
# file: mnt/mergerfs/new-file |
||||
|
user.mergerfs.allpaths="/mnt/hdd/drive1/new-file" |
||||
|
``` |
||||
|
|
||||
|
If the location of the file is where it should be according to the |
||||
|
state of the system at the time and the policy selected then the |
||||
|
"problem" lies elsewhere. |
||||
|
|
||||
|
[Keep in |
||||
|
mind](technical_behavior_and_limitations.md/#how-does-mergerfs-handle-moving-and-copying-of-files) |
||||
|
that files, when created, have no size. If a number of files are |
||||
|
created at the same time, for example by a program downloading |
||||
|
numerous files like a BitTorrent client, then depending on the policy |
||||
|
the files could be created on the same branch. As the files are |
||||
|
written to, or resized immediately afterwards to the total size of the |
||||
|
file being downloaded, the files will take up more space but there is |
||||
|
no mechanism to move them as they grow. Nor would it be a good idea to |
||||
|
do so as it would be expensive to continuously calculate their size and |
||||
|
perform the move while the file is still being written to. As such an |
||||
|
imbalance will occur that wouldn't if the files had been downloaded |
||||
|
one at a time. |
||||
|
|
||||
|
If you wish to reduce the likelihood of this happening a policy that |
||||
|
does not make decisions on available space alone such as `pfrd` or |
||||
|
`rand` should be used. |
||||
|
|
||||
|
|
||||
|
## Why can't I see my files / directories? |
||||
|
|
||||
|
It's almost always a permissions issue. Unlike mhddfs and |
||||
|
unionfs-fuse, which accesses content as root, mergerfs always changes |
||||
|
its credentials to that of the caller. This is done as it is the only |
||||
|
properly secure way to manage permissions. This means that if the user |
||||
|
does not have access to a file or directory than neither will |
||||
|
mergerfs. However, because mergerfs is creating a union of paths it |
||||
|
may be able to read some files and directories on one filesystem but |
||||
|
not another resulting in an incomplete set. And if one of the branches |
||||
|
it can access is empty then it will return an empty list. |
||||
|
|
||||
|
Try using [mergerfs.fsck](https://github.com/trapexit/mergerfs-tools) |
||||
|
tool to check for and fix inconsistencies in permissions. If you |
||||
|
aren't seeing anything at all be sure that the basic permissions are |
||||
|
correct. The user and group values are correct and that directories |
||||
|
have their executable bit set. A common mistake by users new to Linux |
||||
|
is to `chmod -R 644` when they should have `chmod -R u=rwX,go=rX`. |
||||
|
|
||||
|
If using a [network filesystem](../remote_filesystems.md) such as NFS |
||||
|
or SMB (Samba) be sure to pay close attention to anything regarding |
||||
|
permissioning and users. Root squashing and user translation for |
||||
|
instance has bitten a few mergerfs users. Some of these also affect |
||||
|
the use of mergerfs from [container platforms such as |
||||
|
Docker.](compatibility_and_integration.md) |
Write
Preview
Loading…
Cancel
Save
Reference in new issue