No space left on device 에러
작성자 정보
- 이충구 작성
- 작성일
컨텐츠 정보
- 1,063 조회
- 0 추천
- 목록
본문
답변이 늦어 죄송합니다.
출처 : http://www.linuxlab.co.kr/docs/98-05-4.htm
하드 공간이 부족할 때
만약 리눅스를 사용 중에 다음과 같은 에러 메시지를 받는다면 어떻게 할까?
No space left on device?
보통 리눅스를 맛 배기로 사용하려는 사람들은 리눅스의 설치에 그렇게 많은 용량을 할당하지 않는다. 그래서 가끔 보조 기억 장치의 용량 부족으로 이러한 에러 메시지를 받는 경우가 있다. 이럴 때는 아무 것도 못하게 되는데 결국 불필요한 내용을 지워줘야 하거나, 또는 추가적인 보조 기억장치를 장착하여 일부 디렉토리를 옮겨 주어야 할 것이다. 이 두 가지 방법도 상당히 고민을 해야 한다. 즉, 첫 번째 방법에서는 어떤 것이 불필요한 것인지를 생각해야 하고 두 번째 방법도 어차피 현재 위치에서는 지워지는 것이기 때문에 현재 위치에서 다른 곳으로 이동이 되었을 때, 이전과 동일하게 동작할 것인가를 생각해 봐야 하기 때문이다. 그러면 방법을 생각해보자.
먼저 지우는 것은 개인적인 문제이기 때문에 다를 필요가 없고 보조 기억 장치를 추가한 경우를 생각해 보자. 추가적인 보조 기억장치를 장착한 후 현재 파일 시스템에 있는 것 중에서 옮겨야 할 것을 생각한다. 만약 옮겼다면 추가적인 보조 기억 장치를 마운트 한 후 원래의 디렉토리로 링크를 시켜서 사용할 수 있고, 아예 마운트 장소를 원래의 디렉토리로 할 수도 있을 것이다. 그러나 마운트라는 과정이 필요하기 때문에 부팅되는 과정에서 필요한 파일이 있는 디렉토리를 옮겨주면 부팅에 곤란한 문제가 생길 것이다. 즉, local 파일 시스템의 마운트는 부팅이 상당히 진행된 후에 이루어지기 때문에, 그전에 사용되는 fsck 나 그 외 여러 가지 명령어들은 옮기면 곤란하게 되는 것이다. 그래서 옮길 디렉토리를 잘 선택해야 한다. 특히 /bin 이나 /sbin 등은 절대 안될 것이다. 이러한 제약을 생각한다면 옮길 수 있는 디렉토리는 용량도 많이 차지하고 부팅시에는 사용하지 않는 디렉토리인 /uar 나 /home 디렉토리가 적당할 것이다. 보통 /usr 가 제일 많은 부분을 차지하게 되기 때문에 다른 장치로 옮기면 루트 파티션의 용량을 줄일 수 있을 것이다.
이렇게 해서 옮기는 경우에 주의할 사항이 있다. 즉 우리가 보통으로 사용하는 cp나 mv 명령을 사용하면 옮기려는 동작에 문제가 생길 수 있다는 것이다. cp 명령은 옵션을 잘 확인하여 옮기려는 디렉토리 하위에 있는 모든 파일이 제대로 다 복사될 수 있도록 해야 하고 mv는 서로 다른 파티션 사이에는 동작하지 않는다. 그러므로 주의가 필요하다.
이때 사용될 수 있는 명령이 tar 이다. 이 명령은 기존의 모든 파일들을 그 파일의 특성을 모두 가진채로 묶어주기 때문에 옮기기에 편하고 에러가 발생할 가능성도 상당히 줄어들게 된다. 물론 옮겨서 다시 풀어야 하기 때문에 두 배의 용량이 필요한 단점이 있지만, 옮긴 후 실행이 안돼서 곤란하게 되는 것보다는 나을 것이다.
이제 순서를 따라가면서 정리를 해보자. 먼저 새로운 보조 기억 장치(주로 하드디스크가 될 것이다)를 장착한 후 ext2 파일 시스템을 구성한다. 새로 추가된 하드디스크가 Secondary IDE 의 Master 라면 다음과 같이 하면 될 것이다.
[root]# fdisk /dev/hdc
실행하여 파티션을 하드 전체로 잡고 ext2 시스템으로 사용한다고 지정한다. 다음에 파일 시스템을 구성한다.
[root]# mke2fs /dev/hdc1
위와 같이 하면 사용할 수 있다. 이것을 아무 디렉토리나 마운트해서 옮기려고 하는 디렉토리를 tar로 묶어서 그 하드로 복사하여 그 하드에서 untar 해준다. 이러면 원래의 디렉토리가 새로운 하드에 구성이 되었다. 이것을 부팅시에 바로 마운트 될 수 있도록 하기 위해서 /etc/fstab 편집해 준다.
/dev/hdc1 /usr ext2 defaults 0 0
이와 같이 해주면 부팅시에 바로 마운트가 되기 때문에 하드 디스크를 추가하기 전처럼 바로 사용할 수 있다. 혹시 문제가 생기면 single 모드로 부팅한 후
bash# e2fsck /dev/hdc1
을 해주면 된다.
관련자료
-
이전
-
다음