1. 상황

1. 상황

1. 상황

1.1 장비

내 파일 시스템은 다음과 같이 배열되어 있습니다

  • /dev/sda8323GiB 설치/home
  • /dev/sda1390GiB 설치/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 (저장소)

그런 다음 시작할 때 gparteduser1 또는 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가 로그인하든 디렉토리의 내용은 항상 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/sda1if 가 위치하지 않은 경우의 사용법을 보여주는 또 다른 극단적인 경우가 있습니다 . 살펴보면 장치 노드에 액세스하지 않는다는 것을 알 수 있습니다. 마운트에서 디렉터리를 찾은 다음 직접 실행하는 것이 좋습니다./devsda1strace df /dev/sda8statfs("/home", ...)df -h /home

...하지만 이렇게 과도하게 마운트된 파일 시스템이 있을 때 출력이 그렇게 복잡해질 것이라고는 기대하지 않습니다. sda13의 생략 또는 결과 ( 옵션 -에 따라 다름 ) 는 과부하 조건을 감지하는 일부 코드가 있음을 나타내지만 모든 경우에 작동하지는 않습니다. 편집하다:-adf업스트림 보고.

답변2

문제는 이 파일의 권한인 것 같습니다. user1 및 user2 group명령을 추가할 수 있습니까? 내가 올바르게 기억한다면 이러한 출력은 공통 그룹을 공유하지 않는다는 것을 나타냅니다.

실제 값을 확인하는 또 다른 방법은 root해당 계정을 통해 이러한 모든 명령을 사용하여 전체 파일 구조에 대한 모든 권한 있는 액세스를 갖는 것입니다. 관련 정보를 추가해 주실 수 있나요?

좀 더 의미 있는 정보를 얻는 데 도움이 되기를 바랍니다.

관련 정보