장치에 남은 공간이 없음 No space left on device
파일을 수정하거나 새로 작성할때 장치에 남은 공간이 없음 / No space left on device 라고 메세지가 발생할때
실제 서버의 디스크 부분에는 용량이 많이 남아 있으나 더 이상 기록이 안되는 부분
1. 파일을 작성하려면 장칭에 남은 공간이 없음 이라고 표시됨
1 2 |
[root@localhost ~]# touch a.txt touch: cannot touch `a.txt': 장치에 남은 공간이 없음 |
2. 기본 파티션에 용량이 full경우 이런 메세지가 발생되는데 df -h 파티션 체크를 해보자
1 2 3 4 5 6 7 8 9 10 |
[root@localhost ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda2 9.8G 1.9G 7.4G 21% / tmpfs 3.9G 0 3.9G 0% /dev/shm /dev/sda1 190M 73M 107M 41% /boot /dev/sda8 76G 2.8G 69G 4% /free /dev/sda7 976M 1.3M 924M 1% /tmp /dev/sda3 9.8G 2.0G 7.3G 22% /usr /dev/sda5 9.8G 606M 8.7G 7% /usr/local /dev/sdb1 459G 54G 382G 13% /backup |
3. 기본 파티션에서는 100% 없는데 문제가 발생 이럴땐 inodes값을 확인 명령어는 df -i
1 2 3 4 5 6 7 8 9 10 |
[root@localhost /]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 655360 655360 0 100% / tmpfs 1006383 1 1006382 1% /dev/shm /dev/sda1 51200 46 51154 1% /boot /dev/sda8 5021696 334 5021362 1% /free /dev/sda7 65536 18 65518 1% /tmp /dev/sda3 655360 90663 564697 14% /usr /dev/sda5 655360 13498 641862 3% /usr/local /dev/sdb1 30531584 3049 30528535 1% /backup |
해당 파티션에 / 영역이 100%이다 즉 inodes를 더이상 쓰지 못하기 때문에 발생하는것이다. 그럼 / 파티션이니 여기서 어디인지 체크해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@localhost /]# for i in /*; do echo $i; find $i |wc -l; done /bin 120 /boot 37 생략 /sys 9945 /tmp 4 /usr 106506 /var 628736 |
확인해보면 /var 부분이 값이 가장 많다 그럼 var 부분에서 또 어디 폴더가 많은지 체크
1 2 3 4 5 6 7 8 9 10 11 12 |
[root@localhost /]# for i in /var/*; do echo $i; find $i |wc -l; done /var/account 2 /var/cache 89 생략 /var/log 86 /var/run 38 /var/spool 621435 |
/var/spool 영역인것을 확인 할 수 있다
그럼 여기서 용량을 한번 다시 체크해보자
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@localhost /]# cd /var/spool/ [root@localhost spool]# du -sh * 4.0K abrt 4.0K abrt-upload 16K anacron 8.0K at 2.5G clientmqueue 8.0K cron 8.0K cups 4.0K lpd 4.0K mail 4.0K mqueue 4.0K plymouth 12K postfix |
clientmqueu 폴더가 2.5G 용량이 많다 이폴더 안에 있는 내용을 삭제하자
1 2 |
[root@localhost clientmqueue]# rm -f * -bash: /bin/rm: 인수 명단이 너무 김 |
너무 많기 때문에 바로 지워지지 않는다 이럴땐 xargs 명령어 사용
1 |
[root@localhost clientmqueue]# ls | xargs -n1000 rm -f |
이제 inode값을 확인해 보면
1 2 3 4 5 6 7 8 9 10 |
[root@localhost clientmqueue]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 655360 33975 621385 6% / tmpfs 1006383 1 1006382 1% /dev/shm /dev/sda1 51200 46 51154 1% /boot /dev/sda8 5021696 334 5021362 1% /free /dev/sda7 65536 18 65518 1% /tmp /dev/sda3 655360 90663 564697 14% /usr /dev/sda5 655360 13498 641862 3% /usr/local /dev/sdb1 30531584 3049 30528535 1% /backup |
정상적으로 돌아왔다 6%
이제 파일 쓰기를 해보면 정상적으로 파일이 작성된다
1 |
[root@localhost clientmqueue]# touch /root/a.txt |
기존 내용 아래 방법도 같이 체크
1 |
[root@xinet var~]# touch a.txt touch: cannot touch `a.txt’: No space left on device |
문제가 발생되는 부분은 해당 디스크(파티션) 부분에 inode 의 수가 많아진 경우 발생함
inode 의 값을 확인해 보자 /var 영역이 inode 수가 100%라 발생한 부분이다
1 2 3 4 5 6 7 8 9 |
[root@se ~]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda2 655360 71765 583595 11% / tmpfs 489750 1 489749 1% /dev/shm /dev/sda1 51200 51 51149 1% /boot /dev/sda9 6004736 59227 5945509 1% /free /dev/sda8 65536 41 65495 1% /tmp /dev/sda3 655360 101021 554339 16% /usr /dev/sda5 655360 5117 650243 1% /usr/local /dev/sda6 655360 2746 6555360 100% /var |
해당 파티션의 많은 파일이 어디에 있는지 find로 검색을 해보면 된다 검색을 해보면 /var/spool 폴더에 갯수가 많아가 그렇다
1 2 3 4 5 |
[root@se var]# for i in /var/*; do echo $i; find $i |wc -l; done /var/account /var/log 186 생략 /var/spool 3342467 |
/var/spool에 dropmail 에 용량이 가득차 있으므로 해당 부분에 데이터가 필요하지 않으면 삭제 진행하면 된다
1 |
rm -rf /var/spool/dropmail |