Linux swap file 추가

conoha 같은 VPS 저가 서버에 gitlab 설치 후 잘 쓰다가 업데이트를 시도했는데 gitlab 업데이트에 실패했다.

Preparing to unpack .../gitlab-ce_8.8.3-ce.0_amd64.deb ...
gitlab preinstall: Automatically backing up only the GitLab SQL database (excluding everything else!)
rake aborted!
Errno::ENOMEM: Cannot allocate memory - whoami
/opt/gitlab/embedded/service/gitlab-rails/lib/gitlab/popen.rb:23:in `popen'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/task_helpers.rake:78:in `run'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/task_helpers.rake:99:in `warn_user_is_not_gitlab'
/opt/gitlab/embedded/service/gitlab-rails/lib/tasks/gitlab/backup.rake:8:in `block (3 levels) in <top (required)>'
Tasks: TOP => gitlab:backup:create
(See full trace by running task with --trace)
gitlab preinstall:
gitlab preinstall: Backup failed! If you want to skip this backup, run the following command and
gitlab preinstall: try again:
gitlab preinstall:
gitlab preinstall:   sudo touch /etc/gitlab/skip-auto-migrations
gitlab preinstall:
dpkg: error processing archive /var/cache/apt/archives/gitlab-ce_8.8.3-ce.0_amd64.deb (--unpack):
 subprocess new pre-installation script returned error exit status 1
hostname: Name or service not known
gitlab: Thank you for installing GitLab!

밑으로 어쩌구 저쩌구 로그가 더 찍히는데 아무튼 중요한 부분은,

Errno::ENOMEM: Cannot allocate memory - whoami

라인이다.

메모리가 부족하다고?!

http://docs.gitlab.com/omnibus/common_installation_problems/README.html#errnoenomem-cannot-allocate-memory-during-backup-or-upgrade
gitlab 문서를 보니까.. 권장 메모리가 2기가 이상이다...

http://docs.gitlab.com/ce/install/requirements.html#memory
이렇게 말이지..

방법은, 위 문서에도 적혀있지만 swap 메모리를 늘려주거나 서버 업그레이드.. [...]

그래서 스왑파일을 만들어보자.

swap file

sudo swapon -s
free -m
명령들로 스왑 상태를 확인할 수 있다.

이제 스왑 파일을 만들자.

$ df -h               # 디스크/파티션 용량 확인
$ sudo fallocate -l 2G /swapfile # 2GB 파일 생성
$ ls -lh /swapfile    # 생성 확인
$ sudo chmod 600 /swapfile
$ sudo mkswap /swapfile
$ sudo swapon /swapfile
$ sudo swapon -s      # 혹은 free -m

이러면 이번 부팅 상에서 쓸 수 있는 swap file 생성 및 적용이 끝났다.
이를 매 부팅 시마다 작동하게 하려면 다음과 같이 한다.

/etc/fstab 파일의 끝에 다음 내용을 추가한다.

# additional swap file
/swapfile   none    swap    sw    0   0

이제 gitlab 업데이트든 뭐든 해보자.

출처

How To Add Swap on Ubuntu 14.04
Swap memory