1. 상황
1.1 장비
내 파일 시스템은 다음과 같이 배열되어 있습니다
/dev/sda8
323GiB 설치/home
/dev/sda13
90GiB 설치/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
(스토리지) 디스플레이동일한df -h /dev/sda8
서로 다른 엔터티이고 사용된 크기가 스토리지에 사용되지 않더라도 (홈) 로서의 디스크 사용량(예: 300GiB)
기타
sudo df -h /dev/sda13
(스토리지)는 0.5GiB의 적당한 디스크 사용량을 보여줍니다. 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가 로그인하든 디렉토리의 내용은 항상 sda8에 /home/user2/storage로 저장되고 user2가 로그인할 때 sda13에 마운트됩니다. Storage/에 100G가 포함되어 있다고 가정하면 100G는 항상 /dev/sda8에서 수행되고 때로는 /dev/sda13에서 수행됩니다.
/etc/fstab 파일의 /dev/sda13을 새로운 /home/storage에 마운트하여 이를 발견했습니다. user2로 로그인했는데 모든 파일이 여전히 /home/user2/storage의 /dev/sda8에 있었습니다. 따라서 파일을 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
이 질문에는 명령의 전체 출력이 부족하기 때문에 이미 분석하기가 어렵습니다 . df /dev/sda1
if 가 위치하지 않은 경우의 사용법을 보여주는 또 다른 극단적인 경우가 있습니다 . 살펴보면 장치 노드에 액세스하지 않는다는 것을 알 수 있습니다. 마운트에서 디렉터리를 찾은 다음 직접 실행하는 것이 좋습니다./dev
sda1
strace df /dev/sda8
statfs("/home", ...)
df -h /home
...하지만 이렇게 과도하게 마운트된 파일 시스템이 있을 때 출력이 그렇게 복잡해질 것이라고는 기대하지 않습니다. sda13의 생략 또는 결과 ( 옵션 -
에 따라 다름 ) 는 과부하 조건을 감지하는 일부 코드가 있음을 나타내지만 모든 경우에 작동하지는 않습니다. 편집하다:-a
df
업스트림 보고.
답변2
문제는 이 파일의 권한인 것 같습니다. user1 및 user2 group
명령을 추가할 수 있습니까? 내가 올바르게 기억한다면 이러한 출력은 공통 그룹을 공유하지 않는다는 것을 나타냅니다.
실제 값을 확인하는 또 다른 방법은 root
해당 계정을 통해 이러한 모든 명령을 사용하여 전체 파일 구조에 대한 모든 권한 있는 액세스를 갖는 것입니다. 관련 정보를 추가해 주실 수 있나요?
좀 더 의미 있는 정보를 얻는 데 도움이 되기를 바랍니다.