0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Ubuntu 16.04のVMをUbuntu 18.04上のLXCにlxd-p2cした手順と遭遇したエラー

Last updated at Posted at 2019-07-07

概要

  • VirtualBoxで動かしていたUbuntu 16.04のVMをUbuntu 18.04上のLXCとして移行する
  • goがaptで入るバージョンだとうまく動作しなかったが,snapで導入すればうまくできた
  • LXDのバージョンが微妙に違ったけど移行できた
  • 元々snapで動かしていたもの(例えばnextcloud)は動かない.snapではなく入れていたもの(Apache環境のRedmineとかソースコードから入れていたowncloud)は動く

前書きメモ

前提&環境

移行元(VirtualBox上のVM)

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.04.6 LTS
Release:	16.04
Codename:	xenial
$ uname -a
Linux hostnameA 4.4.0-154-generic #181-Ubuntu SMP Tue Jun 25 05:29:03 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

移行先

既にLXD環境として利用中であることを想定しています.

$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.2 LTS
Release:        18.04
Codename:       bionic
$ uname -a
Linux hostnameB 4.15.0-51-generic #55-Ubuntu SMP Wed May 15 14:27:21 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux
$ lxc --version
3.0.3
$ lxd --version
3.0.3

移行したいVM上での作業

snap版のLXDとgoのインストール

apt版の削除

$ lxd --version
2.0.11
$ lxc --version
2.0.11
$ sudo apt purge lxd lxd-client
$ go version
go version go1.6.2 linux/amd64
$ sudo apt purge golang-go

snap版のインストールとgoの環境設定

$ sudo snap install lxd
$ lxd --version
3.14
$ sudo snap install go --classic
$ export PATH=/snap/bin:$PATH
$ go version
go version go1.12.6 linux/amd64
$ mkdir ~/go
$ export GOPATH=~/go

なお,上記でexport PATHしているように,/snap/binにPATHを通さないとlxcとgoコマンドが使えない.

lxd-p2cのbuild

$ go get github.com/lxc/lxd/lxd-p2c
$ cd ~/go
$ go build github.com/lxc/lxd/lxd-p2c/
$ ./lxd-p2c --version
3.14

# 移行先のLXC環境設定
転送開始時に聞かれるパスワードを設定する.

$ sudo lxc config set core.trust_password exsample-password

移行とIP設定

移行したいVM上で以下のコマンドを実行する.IP(192.168.10.5)とコンテナ名(containerA)は適宜読み替えてください.

$ sudo ./lxd-p2c https://192.168.10.5:8443 containerA /

HDDの1Gbps回線環境で,大体5MB/sぐらいで転送が進んだ.

起動とIP設定

元々,Brdige接続で固定IPを振っていたので,デバイス名を修正して再起動することで,元のIPを引き継ぐ(本作業の前にVirtualBoxのVMはシャットダウンしておく

$ lxc start containerA
$ lxc exec containerA bash
# vim /etc/network/interfaces
# reboot

デバイス名がenp0s3になっているのでeth0に修正し,reboot.

遭遇したエラー

aptで入るgoだとbuildができない(解決済み)

$ sudo apt install golang-go
$ go version
go version go1.6.2 linux/amd64
$ mkdir ~/go
$ export GOPATH=~/go
$ go get github.com/lxc/lxd/lxd-p2c
$ cd ~/go
$ go build github.com/lxc/lxd/lxd-p2c/
src/github.com/gorilla/websocket/client.go:9:2: cannot find package "context" in any of:
        /usr/lib/go-1.6/src/context (from $GOROOT)
        /home/userA/go/src/context (from $GOPATH)
src/github.com/gorilla/websocket/client.go:16:2: cannot find package "net/http/httptrace" in any of:
        /usr/lib/go-1.6/src/net/http/httptrace (from $GOROOT)
        /home/userA/go/src/net/http/httptrace (from $GOPATH)

snapが動かない

# snap list
Name       Version  Rev    Tracking  Publisher   Notes
core                7270   stable    canonical✓  broken
go                  3947   stable    mwhudson    broken
lxd                 11098  stable    canonical✓  broken
nextcloud           13968  stable    nextcloud✓  broken

全滅.どうもマウントできていないようだが…原因調査中

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?