ブログパーツ Twitter

« Twiterアカウント凍結の顛末 | トップページ | ササクレパンダの新動画を発見 »

2012.02.12

Virtualbox上のUbuntuで/homeを別ドライブにする

近所の Joshin で新しいデジカメ用のケースを買いました。
(メーカー純正は高いので ELECOM のやつを。)
サンワサプライのストラップも欲しかったのですが、希望のものは売っていませんでした。


----------
突然ですが、こんな表示が出ました。
 
容量不足の警告
(ディスクの空きが1GBを切っている(706.7MB)なんて...)
 
Ubuntu に使用している VirtualBox の仮想ディスクの容量を「20GB」にしているのですが、それの空きがもうないと。
これはいけません。早急に対策が必要です。
 
最初に考えたのは「仮想ディスクのサイズをもっと大きくする」。
しかしこの方法を web で調べたところ、ディスクのパーティションをいじったりする必要があって、結構面倒そうなんですよね。
(Gpartedとか使う。やってみたい方は次参照:VirtualBox の仮想ハードディスクの容量を増やす方法 - なんでもかんでもコンピュータ)
 
そこで考えたのが Linux でユーザデータなどを保持している「/home」を別ディスク(別パーティション)に移すという方法。
調べてみると、/home だけで11GBも使用しており、この分を他に移せば、かなり大きな空き容量が確保できます。
/home を分けるのは前からやってみたかったこともあり、この方法で行くことにしました。
 

なお、今回の作業は以下の web ページを参考にしました。
homeディレクトリを移設したら別ユーザーでのログインができなくなってしまった - Ubuntu日本語フォーラム
(3番目の発言。実PCでの作業方法ですが、新ディスク(新パーティション)の作成以外は共通。)
 

注意!:以下の作業を行う前に、必ず VirtualBox にて現状のスナップショットを撮っておいて下さい。
失敗すると Ubuntu が「起動できなくなる」ような操作が含まれます。
私も今回何度スナップショットに助けられたか...


まずは VirtualBox にて追加の仮想ディスクを作成しました。
(容量は現 /home の約2倍の20GBを指定。※やりかたは省略。)
 
Ubuntu を起動後、「ディスクユーティリティ」を起動します。
(Unity の検索欄に「ディスク」と入力して、挙がってきたアイコンをクリック。)
追加したディスクの情報を表示させてみます。
 
ディスクユーティリティの表示(その1)
(20GBで作ったはずなのに21GBでできていました。)
※クリックすると拡大します。


・新ドライブのフォーマット
ドライブのグラフ表示の左上にある「ドライブをフォーマット」をクリック。
 
フォーマット画面
(MBR(マスターブートレコード)よりGUIDの方が新しい形式らしい。)
 
ドライブの形式みたいなののコンボボックスがあるので、今回は「マスターブートレコード」を選択しました。
(現ディスクが「マスターブートレコード」だったので合わせた。)
 
フォーマットは2、3秒ほどで完了。
フォーマット完了後のディスクユーティリティの表示がこちら。
 
ディスクユーティリティの表示(その2)
(「パーティション」欄の表示が「マスターブートレコード」になっていますね。)
※クリックすると拡大します。


・パーティションの作成
ドライブのグラフ表示の左下にある「パーティションを作成」をクリック。
 
パーティション作成画面
(「Ext4」はファイルシステムの形式で、Windows で言う「NTFS」のようなもの。)
 
サイズは当初の予定通り「20GB」。
タイプは「Ext4」を指定(初期値のまま)。
名前は空白でもよかったのですが、「home」にしました。
2つのチェックボックスは、初期値のままです。
 
パーティションの作成もすぐに完了しました。
パーティション作成後のディスクユーティリティの表示がこちら。
 
ディスクユーティリティの表示(その3)
(「パーティションタイプ」を指定した覚えがないのに「Linux (0x83)」になっていて、ちょっとびっくり。)
※クリックすると拡大します。
 
これでディスクとして使用できる準備が整いました。
ディスクユーティリティの「ボリュームをマウント」をクリックして、新パーティションを仮の場所にマウントします。
(私の場合、自動的に「/media/home」としてマウントされました。)

これ以降の記述で「/media/home」となっている箇所は、すべてこのマウントポイントを指します。
異なった箇所にマウントされた場合は、以降のすべてを読み替える必要があります。


・現 /home の内容を新パーティションにコピーする
データコピーから fstab 変更まで
(色枠ごとに説明していきます。)
 
新パーティションに現在の /home の内容をコピーします。
(上記コンソール画像の「1」の部分。)
$ sudo cp -a /home/* /media/home
 
これは時間がかかります。
エラーメッセージが表示されているディレクトリがありますが、コピー終了後に手作業でコピーしました。
(中身は空だったのでコピーしなくても影響なかったかも。)


・/etc/fstab の内容を変更する
起動時に新パーティションを /home としてマウントするように、/etc/fstab の内容を変更します。
内容を間違えると Ubuntu が起動しなくなります。
 
まず、新パーティションの「UUID」の値を調べます。
(上記コンソール画像の「2」の部分。)
$ sudo blkid
 
UUIDとは - Linuxキーワード(IT Pro)
 
表示された情報の中から、新パーティション(/dev/sdb1)の「UUID="…"」の「…」部分の文字列をコピーして控えておきます。
 
/etc/fstab をエディタで開きます(今回は gedit を使用)。
(上記コンソール画像の「3」の部分。)
$ gksu gedit /etc/fstab
※実際にはこの前に、変更前の /etc/fstab をコピーして /etc/fstab_bak というファイルを作っておきました。
 
/etc/fstab の内容
(行番号11,12が今回追加した内容。※「#」で始まる行はコメントです。)
※クリックすると拡大します。
 
/etc/fstab の内容を開いたら、以下の内容を「/」(ルート)パーティションの記述の次に記載します。
UUID=(先にコピーして控えた文字列) /home ext4 defaults 1 2
 

次の書式でもいいらしいです。
/dev/sdb1 /home ext4 defaults 1 2
(「/dev/sdb1」の部分は、実際の新パーティションの値に合わせる。)
 
間違いがないか再度確認して保存しましょう。


・新 /home ディレクトリの所有者と権限を変更する
これで準備OKかと思ったのですが、念の為、今作業しているアカウントとは別のアカウントで、新 /home にアクセスできるかどうかを確かめてみました。
(普段使っているアカウント以外に、wine のテスト用にもうひとつアカウントを作っている。)
その結果、別アカウントでは新 /home にアクセスできないことが判明!
 
原因は新 /home のアクセス権限であると思われたので、ディレクトリの所有者とアクセス権限とを、現 /home と同じに変更しておくことにしました。
 
所有者とアクセス権の確認と変更
(赤枠ごとに説明していきます。)
 
まず、現 /home の所有者とアクセス権限を確認しておきます。
(上記コンソール画像の「1」の部分。)
$ ls -ld /home
 
所有ユーザ・グループとも「root」、アクセス権限は「rwxr-xr-x」(755)であることがわかります。
 
現在の新 /home の所有者とアクセス権限はどうでしょうか。
(上記コンソール画像の「2」の部分。)
$ ls -ld /media/home
 
所有ユーザ・グループとも現在作業中のアカウント名、アクセス権限は「rwx------」(700)であることがわかります。
 
所有ユーザ・グループを「root」に変更します。
(上記コンソール画像の「3」の部分。)
$ sudo chown root:root /media/home
 
変更後、所有ユーザとグループがいずれも「root」に変わったことが ls コマンドの結果より確認できます。
 
アクセス権限を「rwxr-xr-x」(755)に変更します。
(上記コンソール画像の「3」の部分。)
$ sudo chmod 755 /media/home
 
変更後、アクセス権限が「rwxr-xr-x」に変わったことが ls コマンドの結果より確認できます。


・いよいよ再起動
さあこれで「再起動」、といきたいところですが、ちょっと待った!
 
このまま再起動すると、現 /home と新 /home がぶつかってしまいます。
なので再起動直前に、現 /home の名前を変更しておきます。
$ sudo mv /home /home_bak
 
これが済んだら、いよいよ再起動を行います。
緊張の一瞬です。
 
おそらく再起動時にエラーなどは出なくて、いつものログオン画面が表示されると思います。
しかし「成功した!」と喜ぶのはまだ早い。
 
私の場合「パスワード入力後にまた再びログオン画面に戻ってしまう」という現象に何度も悩まされました。
今回の手順はそうした中で何度も試行錯誤してたどり着いたものなので、ちゃんとできていれば大丈夫だとは思います。
 
ログオンして見慣れたデスクトップが表示されたら一安心。
「ホーム」にアクセスして、各種データが見えるかを確認してみて下さい。
 
念のために「ファイルシステム」内に、「/home」と「/home_bak」があることを確認してみましょう。
 
ファイルシステムの確認
(ちゃんと「/home」と「/home_bak」があります。)
 
これで /home を別ドライブ(別パーティション)に移動させる作業が無事完了しました。
あとはしばらく様子を見て、問題なさそうならば「/home_bak」を削除すれば、空き容量の問題も完全解決です。


結論:何度も失敗したが、できてみれば案外簡単だった


・蛇足
うまくいったうれしさから blog 記事の作成に夢中になってしまい、大河ドラマを見るのを忘れ、週一のバックアップの開始が遅れてしまった...反省。


・2013年11月14日 追記
Ubuntu 13.10 をクリーンインストールした環境で /home の別ドライブ化をやってみたところ、「gksu」コマンドが使用できませんでした。
代わりに「sudo」コマンドを使用してみたところ問題なく gedit が起動できたので、もし「gksu gedit /etc/fstab」のところでそのようなエラーが出た場合は、「sudo gedit /etc/fstab」と実行してみてください。

« Twiterアカウント凍結の顛末 | トップページ | ササクレパンダの新動画を発見 »

コメント

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

« Twiterアカウント凍結の顛末 | トップページ | ササクレパンダの新動画を発見 »

2017年6月
        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30  

お気に入り

無料ブログはココログ