XFS 잘못된 문장 "장치에 남은 공간 없음"


6

서버 설정이 있습니다. XFS 파티션 ...에 LVM ~에 우분투 14.04.1 LTS . 파일을 홈 파티션에 복사하는 동안 " 기기에 남은 공간이 없습니다. "이 표시됩니다.

df -h 충분한 공간을 표시합니다.

/dev/mapper/prod--vg-home     35G   21G   15G  60% /home

할당량이나 다른 디스크 공간 문제가 관련되지 않도록 동일한 홈 계좌에서 디스크를 거의 완전하게 채우는 데 fallocate를 사용했습니다.

/dev/mapper/prod--vg-home     35G   34G  1.5G  96% /home

df -i 또한 충분한 inode를 표시합니다.

/dev/mapper/prod--vg-home   36700160  379390 36320770    2% /home

나는 또한 많은 양의 작은 임의 파일 동일한 주택 계좌에서 문제를 재현했다. :

mkdir 1
cd 1
dd if=/dev/zero of=masterfile bs=10000000 count=1
split -b 10 -a 10 masterfile
cd ..
cp -R 1 2

이로 인해 추가 공간이 거의 필요하지 않고 "장치에 남은 공간 없음"이 다시 발생했습니다 (약 30MB). df -i 언급 :

/dev/mapper/prod--vg-home   36700160 1310464 35389696    4% /home

나는 같은 기계에 대한 두 번째 테스트 (우분투 14.04.1 LTS).

나는 새로운 논리 볼륨 5GB의 작은 파일들 위의 dd 및 분할 절차를 사용하십시오.

다음과 같은 디스크 공간 및 inode를 사용할 수있는 "No space left device"가 나타납니다.

/dev/mapper/prod--vg-test    5.0G  4.2G  811M  85% /mnt/test
/dev/mapper/prod--vg-test    4257712  937920  3319792   23% /mnt/test

예약 된 공간이 여전히 여기에서 무의미하다는 것을 확인하기 위해 루트 권한을 사용하여이 테스트를 수행했습니다.

나는 다른 기계에 대한 세 번째 테스트 (데비안 2.6.32-5).

나는 5GB의 새로운 논리 볼륨을 생성하고 위의 dd 및 split 절차를 사용하여 작은 파일로 채 웁니다.

그만큼 절차가 성공했습니다. 다음 디스크 공간 및 inode를 사용할 수 있습니다.

/dev/mapper/data-test      5.0G  4.2G  909M  83% /mnt/test
/dev/mapper/data-test      4721904 1000005 3721899   22% /mnt/test

예약 된 공간이 여전히 여기에 무관한지 확인하기 위해 루트 권한을 사용하여이 테스트를 수행했습니다.

이 점은 Ubuntu 14.04.1 LTS의 버그 ?

우분투 14.04.1 LTS에서 odes의 최대 비율 변경의 영향을 확인했습니다.

xfs_growfs -m 25 /dev/mapper/prod--vg-home

이 금액은 쉽게 줄이거 나 늘릴 수 있습니다.

이 설정을 실험하면서 3 %로 줄이고 다시 25 %로 늘리거나 일부 파일을 삭제하면 많은 파일을 다시 추가 할 수 있지만 여전히 저장소 나 inode를 채우기 전에 오류가 발생한다는 것을 알았습니다 .

xfs_info 표시 :

meta-data=/dev/mapper/prod--vg-home isize=256    agcount=14, agsize=655360 blks
         =                       sectsz=512   attr=2
data     =                       bsize=4096   blocks=9175040, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0
log      =internal               bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0

"No space left on device"메시지를 유발할 수있는 다른 설정이 있습니까? 아니면 이것이 버그라고 결론 내릴 수 있습니까?

고맙습니다

답변:


6

inode가 파티션 전체에 제대로 분배되지 않게하는 xfs_growfs의 버그가 있습니다. 해결책은 단순히 inode64 옵션으로 다시 마운트하는 것입니다. 예를 들어 이것이 / dev / vda1 인 경우 다음을 수행합니다.

mount -o remount,inode64 /dev/vda1

버그에 대한 자세한 정보를 찾을 수 있습니다. 이리 .


1
감사합니다. Daniel, 나는 다시 마운트를 실행했으며 디스크가 가득 찰 때까지 작은 파일을 저장할 수있었습니다. xfs_growfs 이후에 다시 마운트를 실행해야했습니다. 그러나 위의 remount 명령을 다시 실행 한 후에 디스크를 다시 채울 수있었습니다.
Purf

"나는 다시 디스크를 채울 수있었습니다." 이것은 무엇을 의미 하는가? 오류를 다시 가져 오거나 오류가 발생하지 않습니까?
Geoffrey Anderson

0

디렉토리 (특별히 /home )는 디스크가 꽉 찼다 고 말할 수 있으며 그 상황은 사용자의 할당량을 의미합니다. 사용자의 사용 가능한 공간에 제한이있을 수 있습니다. 문제가 있는지 확인하십시오.


안녕하세요, Isaac, 제안을 주셔서 감사하지만 할당량이 서버에 설치되어 있지 않습니다.
Purf
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.