fstrim이 btrfs(+ecrypts)에서 블록을 자르지 않는 것처럼 보이는 이유는 무엇입니까?

fstrim이 btrfs(+ecrypts)에서 블록을 자르지 않는 것처럼 보이는 이유는 무엇입니까?

여러 파티션이 있는 SSD 디스크가 있습니다. 그 중 하나는 /homeecryptfs 홈 디렉터리를 포함하는 로 마운트된 btrfs 볼륨이 있다는 것입니다 .

볼륨을 정리할 때 fstrim이 해당 볼륨의 데이터 블록을 정리하지 않는 것 같습니다. 이유는 무엇입니까? 아래에서 제가 설명과 함께 따라온 프로세스 및 설정에 대한 모든 정보를 볼 수 있습니다.

$ cat /etc/fstab:

UUID=xxx /               ext4    errors=remount-ro 0       1
UUID=yyy /media/vfio     ext4    defaults          0       2
UUID=zzz /home           btrfs   defaults          0       2

$ mount | grep sda:

/dev/sda5 on / type ext4 (rw,relatime,errors=remount-ro,data=ordered)
/dev/sda1 on /media/vfio type ext4 (rw,relatime,stripe=32721,data=ordered)
/dev/sda2 on /home type btrfs (rw,relatime,ssd,space_cache,subvolid=5,subvol=/)

$ ls -la /home /home/myuser/.Private # summary:

/home:
.ecryptfs
myuser

/home/myuser/.Private -> /home/.ecryptfs/myuser/.Private

$ df -h:

Filesystem              Size  Used Avail Use% Mounted on
/dev/sda5                16G   11G  4,7G  69% /
/dev/sda1                93G   52G   36G  60% /media/vfio
/dev/sda2               828G  542G  286G  66% /home
/home/myuser/.Private   828G  542G  286G  66% /home/myuser

처음으로 모든 볼륨에서 fstrim을 수행했습니다.

$ fstrim -va:

/home/myuser: 286,4 GiB (307518836736 bytes) trimmed
/home: 286,4 GiB (307485450240 bytes) trimmed
/media/vfio: 40,4 GiB (43318886400 bytes) trimmed
/: 5,4 GiB (5822803968 bytes) trimmed

/home추가 ecryptfs 마운트로 인해 fstrim이 트리에서 두 번 실행되는 것 같습니다. 이것은 문제가 되지 않습니다(특정 마운트 지점으로 fstrim을 실행하면 이를 방지할 수 있습니다). 문제는 /home매 실행마다 동일한 양의 데이터가 발견되어 정리되기 때문에 정리가 예상대로 작동하지 않는다는 것입니다.

추가 실행에서는 이를 보여주었습니다.

$ fstrim -v /(좋아요):

/: 0 B (0 bytes) trimmed

$ fstrim -v /home(이것은 작동하지 않습니다):

/home: 286,4 GiB (307478061056 bytes) trimmed

sda2( /home) 가지치기는 실행하는 데 시간이 좀 걸리므로 실제로 뭔가를 하고 있다는 점에 유의하세요.

답변1

fstrim이 보고한 크기에 대해 걱정하는 것은 일반적인 오해입니다.

정말 말이 안 돼요. 그냥 무시하세요.

fstrim적절한 것을 발행하면 ioctl다른 모든 것은 파일 시스템 결정이며 파일 시스템은 매우 다르게 작동합니다. 예를 들어, ext4동일한 내용을 계속해서 볼 수 있도록 다듬지 말고 항상 볼 수 있도록 모든 무료 내용을 다듬어 보세요 0 bytes trimmed. 다른 파일 시스템은 다른 작업을 수행할 수 있으며 이는 모두 파일 시스템이 시스템 호출 논리를 구현하기 위해 선택하는 방법에 따라 다릅니다(전혀 구현하는 경우).xfs<roughly free space> bytes trimmedFITRIM

정리하는 데이터의 양이 사용 가능한 공간보다 크지 않다면 (실제로 파일 시스템에서) 보고하는 내용에 관계없이 fstrim문제가 없습니다.

결국, SSD 자체만이 현재 정리된 내용과 정리되지 않은 내용을 실제로 알 수 있습니다. 이미 정리된 블록을 잘라내도 문제가 되지 않습니다.

x bytes trimmed보고서를 토대로 결론을 내리지 마십시오 fstrim.

데이터가 정리되었는지 확인하려면 디스크의 원본 데이터를 검사해야 합니다. (https://unix.stackexchange.com/a/85880/30851) 그러나 그 방법은 btrfs에서는 작동하지 않을 수 있습니다. 나는 그것을 시도한 적이 없습니다.

관련 정보