別に仮想マシンじゃなくても手順変わらないと思うんですが…。
仮想マシンに複数の仮想ハードディスクをつけたときの利点といえば
- たとえばOSとデータ領域に分けてあれば、データ領域用の仮想ハードディスクだけ転用することで、OSの移行がとっても簡単になる。
- 複数の仮想ハードディスクをそれぞれ別の物理ハードディスクに格納することで、簡単に負荷が分散できる。
- バックアップとりたい部分だけバックアップをとるのが容易になる。
こんなところでしょうか。
今回は CentOS 5.8 x64 の入っている仮想マシンに、mysql専用の仮想ハードディスクを用意して、そこにすべてのmysqlデータベースのデータを置いて、のちのちSSDを買ってきてmysql用仮想ハードディスクを配置して、データベースだけ高速化しよう!
…を目標としています(但し悲しいことに貧乏なのでSSDは今回出てきません)。
試験環境は
Hyper-V 2.0 on Windows Server 2008 R2 なサーバ。
その中に CentOS 5.8 x64 な仮想マシン。
です。
今回は移転するべきmysqlのデータベースがあるという事情から、ハードディスクを追加する前に、まずは現在のデータベースのサイズを du コマンドでみてみます。
それより小さいハードディスクを用意してしまうと、そこに移転することはできません。
[root@code.zobe.jp]# du -m -s /var/lib/mysql 160 /var/lib/mysql
「-m」をつけているので、この「160」は「160MB」を表します。
さて、ハードディスクの作成と取り付けです。
作業対象のサーバをシャットダウンし、ハードディスクをとりつけます。
(仮想マシンではなく、ホットスワップ可能な環境であれば、シャットダウンしなくてもできます。USBでHDDを追加する場合なんかそうです)
試験環境は物理PCではないので、シャットダウン後、
Hyper-Vの管理画面で仮想HDDを作成し、仮想マシンへ取り付けます。
容量はお好みで必要なサイズを決めてください。
今回は試験用に、100GBの可変仮想ハードディスクを作成します。余りまくりです。
僕のテスト環境では、現在配置先が他にないため起動ドライブと同じ場所に配置しますが、
将来的にはこの仮想ハードディスクを、SSDに移動する予定をしています。
なお、上の例だと、ホストOSや、他の仮想マシンと同じ場所に、新しい仮想ハードディスクを配置しています。これだと負荷は分離できていません。
本当はこのときに、暇しているHDDやSSDなど、別の物理媒体に仮想ハードディスクを設置することで、
負荷を分離できます。
データベースとそれ以外とで同時に負荷がかかって困っているときは、保存先を変えてみましょう。
そして仮想マシンを起動します。ここからは仮想マシンでも物理マシンでもほぼ同じ作業です。
…。
起動してみて、さて、新しいハードディスクはどこに行ったでしょう?
きちんと見つけられずに、間違えて既に使っていて大事なデータが入っているハードディスクをフォーマットしてしまうと、きっとあなたは深く落ち込むことでしょう。
だから、慎重に、確実に、今とりつけたからっぽのハードディスクと、それ以外のハードディスクを、見分ける能力が求められます。
その方法は(他にもいくらでもあるけど)、以下の通りです。
[root@code.zobe.jp]# ls -al /dev/hd* brw-r----- 1 root disk 3, 0 8月 5 16:42 /dev/hda brw-r----- 1 root disk 3, 1 8月 5 16:42 /dev/hda1 brw-r----- 1 root disk 3, 2 8月 5 16:42 /dev/hda2 brw-r----- 1 root disk 3, 3 8月 5 16:42 /dev/hda3 brw-r----- 1 root disk 3, 4 8月 5 16:42 /dev/hda4 brw-r----- 1 root disk 3, 5 8月 5 16:42 /dev/hda5 brw-r----- 1 root disk 3, 6 8月 5 16:42 /dev/hda6 brw-r----- 1 root disk 3, 64 8月 5 16:42 /dev/hdb brw-r----- 1 root disk 3, 65 8月 5 16:42 /dev/hdb1 brw------- 1 code disk 22, 0 8月 5 16:42 /dev/hdc brw-r----- 1 root disk 22, 64 9月 6 2012 /dev/hdd (←ここだけ作成日時が異なる) もしくは、環境によっては [root@code.zobe.jp]# ls -al /dev/sd* かもしれません。
日付が異なるので、今回は /dev/hdd が新しいHDDであるとわかります。
以下は作業対象ハードディスクを /dev/hdd として続けていきますが、
マネされる際はお手持ちの環境に合わせて読み替えてください。
つづく。
1 ping
MySQLのデータベースを、データベースごとに別々の物理ディスクに分散配置するには » code.zobe.jp
2012/09/27 at 02:03 (UTC 9) Link to this comment
[…] 以前、MySQLデータベースの配置先をまるごと別の領域に移転する方法を紹介しました[ 1, 2, 3 ]。 […]