Ubuntu 14.04 LTS -> 16.04 LTS 업그레이드
업무상 잡용도로 혼자 쓰는 우분투 서버를 운영한다.
루트파일시스템으로 btrfs 파일시스템을 쓰고 잡 백업 용도로 zfs raid-z2 볼륨을 구성해 쓴다.

처음엔 Ubuntu 12.04를 설치해서 한두해 쓰다가 몇 달 전에 14.04로 업그레이드했고,
이번에 다시 16.04로 업그레이드했다.

14.04 LTS -> 16.04 LTS 업그레이드하며 겪은 일을 생각나는대로 간단히 적어둔다.

업그레이드는 $ sudo do-release-upgrade -d 식으로 했다.
아직 14.04 -> 16.04 업그레이드가 정식으로 오픈되지 않은 상태이므로 -d 옵션을 줘야 했다.
운영중인 시스템에 이렇게 실험적인 업그레이드를 시도한 것은 btrfs snapshot 기능을 믿었기 때문이다.

btrfs snapshot을 이용한 안전한 do-release-upgrade 실험
    http://chanik.egloos.com/4099097

업그레이드는 위 글에 나온 식으로 @_16.04, @home_16.04 snapshot을 만들고
그 스냅샷으로 부팅한 상태에서 진행했다. 하다가 꼬이면 그냥 스냅샷을 날려버리고 원복할 생각이었다.

12.04 LTS -> 14.04 LTS 때와 달라진 점은 Ubuntu 16.04 LTS가 zfs를 커널 자체에서 지원하게 된 것이다.
14.04에서 http://zfsonlinux.org/ 리포로부터 설치해서 쓰던 zfs 모듈이 16.04에서는 커널 자체모듈로 대체되고,
zfsutils-linux 패키지도 http://zfsonlinux.org/ 리포의 것이 아닌, 우분투 자체 리포의 것을 써야 했다.

업그레이드 전에는 http://zfsonlinux.org/ 리포를 꺼야 했고,
업그레이드 뒤에는 자동으로 zfs 볼륨이 올라오지 않는 현상 때문에 아래와 같이
zfsutils-linux 패키지를 자체 리포의 것으로 교체해야 했다.

ZFS Pools not mounted 16.04
    http://askubuntu.com/questions/768179/zfs-pools-not-mounted-16-04

$ sudo apt-get remove zfs-doc
$ sudo apt-get install zfsutils-linux


그리고, remove 할 때 zfs-auto-snapshot 패키지도 함께 사라져서 아래와 같이 다시 설치했다.

$ wget https://github.com/zfsonlinux/zfs-auto-snapshot/archive/master.zip
$ unzip master.zip
$ cd zfs-auto-snapshot-master
$ sudo make install


그냥 설치했다가 "/bin/sh: 1: zfs-auto-snapshot: not found" 오류를 겪고 나서,
make install 전에 etc/zfs-auto-snapshot.cron.frequent 스크립트를 아래와 같이 수정해야 했다.

PATH="/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/sbin"

*/15 * * * * root zfs-auto-snapshot -q -g --label=frequent --keep=4  //


12.04 LTS -> 14.04 LTS 때와 달라진 점 또 한 가지는,
16.04 LTS에서는 python 2를 없애버려도 된다는 것이다.
아래와 같이 했다.

Ubuntu 16.04 LTS 파이썬2 제거
    http://chanik.egloos.com/4112679


끝으로, PostgreSQL 버전이 9.3 -> 9.5로 바뀌었으므로 데이터를 새 버전으로 이전해야 했다.
지난 번 12.04 LTS -> 14.04 LTS 업그레이드때도 해야 했던 작업이었고 아래 글을 참조했다.

Upgrading PostgreSQL 9.1 to 9.3 in Ubuntu
    http://nixmash.com/postgresql/upgrading-postgresql-9-1-to-9-3-in-ubuntu/

위 글의 명령대로 하면 너무 느리기도 하고 중간에 오류도 생겨서, 아래와 같이 좀 수정된 명령을 썼다.
( 그리고, 내가 관리하는 DB는 테이블이 너무 많고 데이터도 많아서 변환중에 오류를 뿜었다.
 /etc/postgresql/9.3/main/postgresql.conf 을 임시로 수정해서
 max_locks_per_transaction = 640 정도로 임시설정하고 다시 변환해야 했다)

$ sudo service postgresql stop
$ sudo pg_dropcluster --stop 9.5 main
$ sudo pg_upgradecluster -k -m upgrade 9.3 main
$ sudo service postgresql start 9.5
$ pg_dropcluster --stop 9.3 main

ㅇ "-m upgrade" means using pg_upgrade instead of pg_dump & pg_restore,
ㅇ "-k" means using hard links instead of file copying (so it can be used only if old DB and new DB is in the same partition). Manual page states that "-k" is merely passed to the pg_upgrade comand.

by 시험さま | 2016/05/09 18:37 | 트랙백 | 덧글(0)
트랙백 주소 : http://chanik.egloos.com/tb/4113404
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]

:         :

:

비공개 덧글

< 이전페이지 다음페이지 >