読者です 読者をやめる 読者になる 読者になる

Saneyan Notes

軌跡を残す

Openfiler で Virtio を有効にする

Openfiler Virtio

 Openfiler で Virtio を有効にする方法を見つけたので、この記事にその方法を書き留めておく。

 

initrd の作成


 まずは既存の initrd のファイル名を確認する。

[root@localhost ~]# dir /boot | grep initrd

 

 virtio_blk, virtio_pci, virtio_net の3つのモジュールを含む initrd を作成する。このときのファイル名は先程確認した initrd のファイル名と同一にしておく。

[root@localhost ~]# mkinitrd -f /boot/initrd-2.6.32-71.18.1.el6-0.20.smp.gcc4.1.x86_64.img --with=virtio_blk --with=virtio_pci --with=virtio_net $(uname -r)

 

list-disks の設定


 /opt/openfiler/sbin/list-disks.pl を編集する。Perl の構文を知っていれば難なく出来るはず (とは言っても最後に触れたのは4年くらい前だが)。170と338行目のところに以下のコードを追加する。追加位置を把握しやすくするために前後のコードも載せておく。

[root@localhost ~]# vim /opt/openfiler/sbin/list-disks.pl
...

elsif (/\d+\s+\d+\s+\d+\s+xvd(\S)\s/) {
    # Xen Virtual Disk
    local $d = $1;
    push(@devs, "/dev/xvd$d");
}

### ADD THE FOLLOWING LINES (at line 170) ###
elsif (/\d+\s+\d+\s+\d+\s+vd(\S)\s/ || /\d+\s+\d+\s+\d+\s+vd(\S\D)\s/) {
    # virtio raid device
    local $d = $1;
	push(@devs, "/dev/vd$d");
}
### END ###

elsif (/\d+\s+\d+\s+\d+\s+vd(rc\/c(\d+)d\d+)\s/) {
    # Mylex raid device
    push(@devs, "/dev/$1");
}

...

elsif ($disk->{'device'} =~ /\/xvd(\S)$/) {
    # Xen disk
    $disk->{'desc'} = &text('select_device', 'IDE', uc($1)); 
	$disk->{'type'} = 'ide';
}

### ADD THE FOLLOWING LINES (at line 338) ###
elsif ($disk->{'device'} =~ /\/vd(\S)$/) {
    # VIRTIO disk
	$disk->{'desc'} = &text('select_device', 'IDE', uc($1)); 
	$disk->{'type'} = 'ide';
}
### END ###

elsif ($disk->{'device'} =~ /\/(scsi\/host(\d+)\/bus(\d+)\/target(\d+)\/lun(\d+)\/disc)/) {
...

 

その後


 仮想マシンを停止させ、ディスクバスと NIC のデバイスモデルを Virtio に変更する。そして起動させる。うまく起動できれば Virtio が有効になっている。

 

参考サイト

https://project.openfiler.com/tracker/ticket/900