一、情况

一、情况

一、情况

1.1 设备

我的文件系统有以下安排

  • /dev/sda8323 GiB 安装到/home
  • /dev/sda1390 GiB 安装到/home/user2/storage

初衷是将 /home/user2/storage 的命运与其他所有的命运分开。两者都是逻辑分区。lsblk引用如下。

1.2 安装

安装指令/etc/fstab用以下行编码

UUID=[that of /dev/sda8]  /home/  ext4  defaults 0 2
UUID=[that of /dev/sda13] /home/user2/storage  ext4  defaults 0 2

坦率地说,我复制了其他安装指令的最后一行。此外,/etc还安装到另一个分区。mount下面引用了的输出。

2. 证据

这种安排对系统工具报告磁盘使用情况的方式产生了一些副作用。

因此,我不太确定我应该信任哪些诊断,以及我实际上可以依靠多少磁盘空间。

请注意,在点计算机中有一个用户1和一个用户2

2.1 从df看到的/dev/sda13(存储)

使用df user1 或 user2 给出

  • df -h根本没有显示任何输出/dev/sda13
  • df -ha仅显示-磁盘使用情况/dev/sda13

如果user2已登录(且存储目录已挂载)

  • sudo df -h /dev/sda13(存储)显示相同的磁盘使用量(比如 300 GiB)作为df -h /dev/sda8(home),尽管它们是不同的实体并且使用的大小不可能用于存储

别的

  • sudo df -h /dev/sda13(存储)显示适度的磁盘使用量为 0.5 GiB,我可以将其视为 user1

2.2 从gparted看到的/dev/sda13(存储)

然后,当我启动时gparted,使用的大小会有所不同,具体取决于我是以 user1 还是 user2 身份登录。

报告的值对于 user2(应该访问存储)来说看起来不错,但对于 user1(不应该从存储中点击)来说则不然。然而,无论我是谁,从用户角度来看,我都希望获得公平的信息。为了更好地衡量,gparted 报告的值与任何 df 都不相符。

附注:关于/dev/sda8(家)的报道在各方面都是一致的。

3. 问题

我确信这种看似不一致的行为背后是有逻辑的。

  • 有人能解释一下吗?
  • 有任何迹象表明可以干净地实施此文件系统安排,以便报告公平吗?

4.1 附加信息

sudo df -h4.2 (user1,2)的输出

这是用户 1 的输出

udev                          5,9G  8,0K  5,9G   1% /dev
tmpfs                         1,2G  1,3M  1,2G   1% /run
/dev/sda6                      48G  5,1G   41G  12% /
none                          4,0K     0  4,0K   0% /sys/fs/cgroup
none                          5,0M     0  5,0M   0% /run/lock
none                          5,9G  380K  5,9G   1% /run/shm
none                          100M   64K  100M   1% /run/user
/dev/sda9                      26G   23G  1,7G  94% /opt
/dev/sda11                     20G   11G  8,1G  57% /usr
/dev/sda12                    2,0G  1,2G  636M  66% /boot
/dev/sda8                     314G  298G  4,9G  99% /home
/dev/sda10                    4,8G  2,9G  1,7G  64% /var
/home/user1/.Private          314G  298G  4,9G  99% /home/user1

当 user2 登录时,最后一行被替换或补充为

/home/user2/.Private          314G  298G  4,9G  99% /home/user2

4.2 输出sudo lsblk

NAME    MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
sda       8:0    0 698,7G  0 disk 
├─sda1    8:1    0   100M  0 part 
├─sda2    8:2    0  41,1G  0 part 
├─sda3    8:3    0     1K  0 part 
├─sda5    8:5    0   145G  0 part 
├─sda6    8:6    0  48,6G  0 part /
├─sda7    8:7    0   2,1G  0 part 
├─sda8    8:8    0 322,8G  0 part /home
├─sda9    8:9    0    22G  0 part /opt
├─sda10   8:10   0     5G  0 part /var
├─sda11   8:11   0    20G  0 part /usr
├─sda12   8:12   0     2G  0 part /boot
└─sda13   8:13   0    90G  0 part 
sr0      11:0    1  1024M  0 rom 

4.3 输出sudo mount

/dev/sda6 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/cgroup type tmpfs (rw)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
none on /run/user type tmpfs (rw,noexec,nosuid,nodev,size=104857600,mode=0755)
none on /sys/fs/pstore type pstore (rw)
/dev/sda11 on /usr type ext4 (rw)
/dev/sda12 on /boot type ext4 (rw)
/dev/sda8 on /home type ext4 (rw)
/dev/sda9 on /opt type ext4 (rw)
/dev/sda10 on /var type ext4 (rw)
/dev/sda13 on /home/user2/storage type ext4 (rw)
binfmt_misc on /proc/sys/fs/binfmt_misc type binfmt_misc (rw,noexec,nosuid,nodev)
rpc_pipefs on /run/rpc_pipefs type rpc_pipefs (rw)
systemd on /sys/fs/cgroup/systemd type cgroup (rw,noexec,nosuid,nodev,none,name=systemd)
nfsd on /proc/fs/nfsd type nfsd (rw)
/home/user1/.Private on /home/user1 type ecryptfs (ecryptfs_check_dev_ruid,ecryptfs_cipher=aes,ecryptfs_key_bytes=16,ecryptfs_unlink_sigs,ecryptfs_sig=...,ecryptfs_fnek_sig=...)
gvfsd-fuse on /run/user/1000/gvfs type fuse.gvfsd-fuse (rw,nosuid,nodev,user=user1)

4.4 输出sudo findmnt

TARGET   SOURCE FSTYPE OPTIONS
/dev/pts devpts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000

groups4.5 (user1,2)的输出

user1 adm cdrom sudo dip plugdev lpadmin sambashare common

user2 sudo common

5. 回顾

@sourcejedi 提供了一个有用的回答以下。

发生的情况是,无论user1还是user2登录,目录storage/的内容始终保存在sda8中为/home/user2/storage,并在user2登录时挂载到sda13上。假设storage/包含100G,那么100G是总是在 /dev/sda8 上进行,有时在 /dev/sda13 上进行。

我通过从 /etc/fstab 文件将 /dev/sda13 安装到全新的 /home/storage 上发现了这一点:我以 user2 身份登录,所有文件仍然位于 /dev/sda8 内的 /home/user2/storage 中。因此,我将文件移动到分区 sda13 内的目录,并按照建议从 /home/user2 内部使用符号链接引用这样的目录。

df -h /dev/sda13通过这种方式,我释放了 sda8 中的 100G,并获得了关于我是 user1 还是 user2 的存储大小的可靠报告。

答案1

我相信,无论用户如何,都会执行文件 /etc/fstab ,因此我认为分区始终已安装。

是的,但是与 ecryptfs 的使用有交互。 fstab 在启动时处理。输入解密密码后,ecryptfs 挂载将在登录时激活。/home/user1例如,问题中显示的 ecryptfs 挂载将掩盖 上的任何现有挂载。请注意,当您使用推荐的findmnt工具来显示安装的层次结构时,这会更加明显。 (mount不过,获取安装选项的完整列表的输出更简单)。

因此,您需要将存储文件系统安装在任何用户的主目录之外。请注意,主目录之外的文件将不是被加密,除非您弄清楚如何手动执行此操作。如果需要,您可以创建指向它的符号链接(例如ln -s /storage /home/user2/storage)。它现在的设置方式没有任何意义,并且还可能破坏其他东西(我对关闭时卸载的顺序表示怀疑)。

请注意,这个问题已经很难分析,因为它缺乏df命令的完整输出。还有另一个极端情况,它将显示if is not locateddf /dev/sda1的用法。如果你看一下,你会发现它没有访问设备节点;它从挂载中查找目录,然后调用.我更愿意自己跑.../devsda1strace df /dev/sda8statfs("/home", ...)df -h /home

...不过,当存在像这样的过度安装的文件系统时,我不一定期望输出会那么混乱。 sda13 的遗漏或-结果(取决于-a选项)表明df有一些代码可以检测超载情况,但并非在所有情况下都有效。编辑:上游报告

答案2

我猜你的问题是这些文件的权限,你能添加你的 user1 和 user2group命令吗?如果我没记错的话,这些输出将表明它们不共享共同的组。

查看实际值的另一种方法是通过该root帐户使用所有这些命令,这样您就可以拥有对整个文件结构的所有特权访问权限。您能否添加一些相关信息?

希望它能帮助您获得一些更有意义的信息。

相关内容