一、情况
1.1 设备
我的文件系统有以下安排
/dev/sda8
323 GiB 安装到/home
/dev/sda13
90 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 -h
4.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
groups
4.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
的用法。如果你看一下,你会发现它没有访问设备节点;它从挂载中查找目录,然后调用.我更愿意自己跑.../dev
sda1
strace df /dev/sda8
statfs("/home", ...)
df -h /home
...不过,当存在像这样的过度安装的文件系统时,我不一定期望输出会那么混乱。 sda13 的遗漏或-
结果(取决于-a
选项)表明df
有一些代码可以检测超载情况,但并非在所有情况下都有效。编辑:上游报告。
答案2
我猜你的问题是这些文件的权限,你能添加你的 user1 和 user2group
命令吗?如果我没记错的话,这些输出将表明它们不共享共同的组。
查看实际值的另一种方法是通过该root
帐户使用所有这些命令,这样您就可以拥有对整个文件结构的所有特权访问权限。您能否添加一些相关信息?
希望它能帮助您获得一些更有意义的信息。