2014年3月29日土曜日

Oracle VM Server 3.3.1 は OL6 ベース。

ちょっと乗り遅れ感がありますが、
Oracle VM Server 3.3 のベータ版をインストールしてみました。
Oracle VM Early Access Downloads
http://www.oracle.com/technetwork/server-storage/vm/downloads/ovm-early-access-1743261.html

OVS のインストールメディア(ISOファイル)は
OVS-3.3.1-trunk-776.1.iso です。

Dom-0 のカーネルは UEK R3(3.8.13-~)になっています。
[root@ovs331-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.3.1
[root@ovs331-1 ~]# uname -r
3.8.13-16.3.1.el6uek.x86_64
[root@ovs331-1 ~]# rpm -q xen
xen-4.3.0-22.el6.x86_64

ちなみに、メモリ2GB、ディスク8GB のマシン(VM ですが)にインストールしたところ、
デフォルトだと、パーティション構成は下記のようになりました。
[root@ovs331-1 ~]# sfdisk -uM -l

ディスク /dev/sda: シリンダ数 1044、ヘッド数 255、63 セクタ/トラック
Units = 1048576 バイトをメガバイト、1024 バイトのブロック、0 から数えます

デバイス ブート 始点   終点   MiB  #ブロック   Id  システム
/dev/sda1   *     1    500    500     512000   83  Linux
/dev/sda2       501   3863   3363    3443712   83  Linux
/dev/sda3      3864   7863   4000    4096000   82  Linux スワップ / Solaris
/dev/sda4      7864   8191    328     335872   83  Linux
[root@ovs331-1 ~]# df -h
Filesystem      Size  Used Avail Use% Mounted on
/dev/sda2       3.2G  1.1G  2.0G  36% /
tmpfs           243M     0  243M   0% /dev/shm
/dev/sda1       477M   45M  407M  10% /boot
none            243M   40K  243M   1% /var/lib/xenstored
[root@ovs331-1 ~]# swapon -s
Filename                                Type            Size    Used    Priority
/dev/sda3                               partition       4095996 0       -1

OVS 3.3 ~ は、
Oracle Linux 6 をベースにしています。
起動画面も OL6 っぽくなりました。
右下には「Oracle VM server 3.3.1」と表示されています。



起動完了すると、これまでと同じ感じになります。
まだ Oracle VM Manager には登録していません・・・




以上、OVS 3.3 ベータ版をインストールしてみた話でした。

2014年3月26日水曜日

USB の Oracle VM Server がこわれた話。


安いUSBメモリにOSをインストールしていると
(ソフトウェア的に)結構こわれやすい気がしますが、
Oracle VM Server も安価な USBメモリに インストールしていると
結構こわれることがあります。

こんなことがありました。

ある日突然、Oracle VM Manager から
VM が起動できなくなりました・・・
しかし既に起動されている VM は何ともなそうです。



ためしに、Oracle VM ServerにSSHでログインして
状態確認してみると、xm コマンドが実行できない・・・
/etc/xen/xend-config.sxp (Xenの設定ファイル)が怪しそうです。
[root@ovs2 xen]# cat /etc/ovs-release
Oracle VM server release 3.2.1
[root@ovs2 ~]# xm li
xend [ERROR] Reading config file /etc/xen/xend-config.sxp: invalid character: code 3
Traceback (most recent call last):
  File "/usr/sbin/xm", line 5, in ?
    from xen.xm import main
  File "/usr/lib64/python2.4/site-packages/xen/xm/main.py", line 51, in ?
    from xen.xend.server.DevConstants import xenbusState
  File "/usr/lib64/python2.4/site-packages/xen/xend/server/DevConstants.py", line 21, in ?
    xoptions = XendOptions.instance()
  File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 571, in instance
    inst = XendOptionsFile()
  File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 158, in __init__
    self.configure()
  File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 172, in configure
    self.set_config()
  File "/usr/lib64/python2.4/site-packages/xen/xend/XendOptions.py", line 463, in set_config
    config = sxp.parse(fin)
  File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 742, in parse
    pin.input(buf)
  File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 174, in input
    self.input_char(c)
  File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 187, in input_char
    self.state.fn(c)
  File "/usr/lib64/python2.4/site-packages/xen/xend/sxp.py", line 226, in state_start
    raise ParseError(self, "invalid character: code %d" % ord(c))
xen.xend.sxp.ParseError: invalid character: code 3

「もしや何か自動編集でもされたのか?」などと思い、
内容を見ようとしてみると・・・
テキストファイルのはずが、バイナリファイルと認識されました。
[root@ovs2 ~]# grep -v ^# /etc/xen/xend-config.sxp
Binary file /etc/xen/xend-config.sxp matches
[root@ovs2 ~]# file /etc/xen/xend-config.sxp
/etc/xen/xend-config.sxp: data

ファイルは一部が文字化けしているように見えます。


ためしに、文字化けしているところを
手作業で修正・・・
[root@ovs2 xen]# cp -p xend-config.sxp xend-config.sxp_orig
[root@ovs2 xen]# vi xend-config.sxp

xend-config.sxp ファイルは
テキストファイルとして認識されるようになりました。
[root@ovs2 xen]# file xend-config.sxp
xend-config.sxp: ASCII English text

この問題が起きてから一度 Oracle VM Server を再起動していて、
その時からこのファイルの問題で xend が起動できていませんでした。
そのため、xend を起動します。
[root@ovs2 xen]# xm li
Error: Unable to connect to xend: No such file or directory. Is xend running?
[root@ovs2 xen]# service xend status
xend daemon is stopped
[root@ovs2 xen]# service xend start
Starting xend...
xend daemon (pid 25641) is running...
[root@ovs2 xen]# service xend status
xend daemon (pid 25641) is running...

xm コマンドが実行できるようになりました。
そして VM も起動できるようになりました・・・
[root@ovs2 xen]# xm li
Name                 ID   Mem VCPUs      State   Time(s)
Domain-0              0   816     2     r-----    562.3

本当に USB インストールのせいか?といわれると微妙ですが、
あまりに安い USB メモリ(秋葉原で数百円くらいの)に
OS をインストールしていると、結構こういうことがあります。
ちゃんとした環境で USB インストールするときは、
USB メモリも「それ用」のもの(数千円するような)がよいのでしょう。

以上、USB の OVS がこわれた話でした。

2014年3月17日月曜日

ifconfig より ip コマンドがナウいのかもしれない。

Oracle Linux 6 のマニュアルを見ていて知ったのですが、
ifconfig コマンドは、廃止が検討されているらしいです。

参考にしたマニュアルは下記のあたりです。
タイトルの日本語訳は不思議な感じですが・・・

Oracle Linux 管理者ガイドfor リリース6
第11章 ネットワーク構成
11.3. コマンドラインのネットワーク構成インタフェース
http://docs.oracle.com/cd/E39368_01/e48214/ch11s03.html
これらの操作の実行にifconfigコマンドを使用する場合があります。しかし、ifconfigは廃止が検討されており、将来的にipコマンドによって完全に置換されます。

ifconfig は ほぼ毎日使っているコマンドなので、なくなると困る気がします。

ちなみに、ip コマンドの表示はこんな感じになります。
[root@ovmm3-n2 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.2
[root@ovmm3-n2 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UNKNOWN qlen 1000
    link/ether 00:0c:29:fb:06:42 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.232/24 brd 192.168.4.255 scope global eth0
    inet6 fe80::20c:29ff:fefb:642/64 scope link
       valid_lft forever preferred_lft forever

[root@ovmm3-n2 ~]# ifconfig
eth0      Link encap:Ethernet  HWaddr 00:0C:29:FB:06:42
          inet addr:192.168.4.232  Bcast:192.168.4.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fefb:642/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:44523274 errors:0 dropped:0 overruns:0 frame:0
          TX packets:34537090 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:20051011406 (18.6 GiB)  TX bytes:4795734085 (4.4 GiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:875743865 errors:0 dropped:0 overruns:0 frame:0
          TX packets:875743865 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:185927772279 (173.1 GiB)  TX bytes:185927772279 (173.1 GiB)

ip コマンドでインターフェースに IP アドレスを追加した時は、
ifconfig だと表示されなかったりするようです。
[root@vm01 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.5
[root@vm01 ~]# ip addr add 192.168.5.190/24 dev eth0
[root@vm01 ~]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 00:50:56:B0:6C:62
          inet addr:192.168.5.191  Bcast:192.168.5.255  Mask:255.255.255.0
          inet6 addr: fe80::250:56ff:feb0:6c62/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:1728098 errors:0 dropped:1134 overruns:0 frame:0
          TX packets:2194406 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:4175562730 (3.8 GiB)  TX bytes:13326583545 (12.4 GiB)

[root@vm01 ~]# ip addr show eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:b0:6c:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.191/24 brd 192.168.5.255 scope global eth0
    inet 192.168.5.190/24 scope global secondary eth0
    inet6 fe80::250:56ff:feb0:6c62/64 scope link
       valid_lft forever preferred_lft forever
[root@vm01 ~]# ip addr  ★これだけでもIPアドレスなどは表示されます。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:50:56:b0:6c:62 brd ff:ff:ff:ff:ff:ff
    inet 192.168.5.191/24 brd 192.168.5.255 scope global eth0
    inet 192.168.5.190/24 scope global secondary eth0
    inet6 fe80::250:56ff:feb0:6c62/64 scope link
       valid_lft forever preferred_lft forever

表示結果にある「~ qdisc pfifo_fast state UP qlen 1000」あたりから
何となく tc コマンドを思い出させられます。

ちなみに、Oracle VM Server でも ip コマンドは使えます。
ip コマンドだと、サーバプールに設定した IP アドレスの見え方が
ちょっと変わるようです。

たとえば、下記の例だと
ブリッジ「c0a80400」に直接IPアドレスがついているように見えたり、
「c0a80400:0」についているように見えたり・・・
ちなみに、このOVSの環境だと 「c0a80400」 は bond0 に構成されているブリッジ(仮想スイッチ)で
2つのIPアドレス(このOVSの管理IPと、OracleVMサーバプールの管理IP)が
割り当てられています。
[root@ovs326-1 ~]# cat /etc/ovs-release
Oracle VM server release 3.2.6
[root@ovs326-1 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
101931c3cd              8000.0021f6000021       no              bond1.5
10d7422275              8000.0021f6000021       no              bond1.4
c0a80400                8000.0021f6000015       no              bond0
                                                        vif10.0
                                                        vif13.0
[root@ovs326-1 ~]# ifconfig c0a80400
c0a80400  Link encap:Ethernet  HWaddr 00:21:F6:00:00:15
          inet addr:192.168.4.21  Bcast:192.168.4.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:34674562 errors:0 dropped:7935 overruns:0 frame:0
          TX packets:19853439 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:9549384619 (8.8 GiB)  TX bytes:17459667792 (16.2 GiB)
[root@ovs326-1 ~]# ifconfig -a | nl | grep 192.168.4.2 -B1
   145  c0a80400  Link encap:Ethernet  HWaddr 00:21:F6:00:00:15
   146            inet addr:192.168.4.21  Bcast:192.168.4.255  Mask:255.255.255.0
--
   152  c0a80400:0 Link encap:Ethernet  HWaddr 00:21:F6:00:00:15
   153            inet addr:192.168.4.29  Bcast:192.168.4.255  Mask:255.255.255.0
[root@ovs326-1 ~]# ip addr show dev c0a80400
7: c0a80400: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP
    link/ether 00:21:f6:00:00:15 brd ff:ff:ff:ff:ff:ff
    inet 192.168.4.21/24 brd 192.168.4.255 scope global c0a80400
    inet 192.168.4.29/24 brd 192.168.4.255 scope global secondary c0a80400:0

ip コマンドはけっこう省略ができるようで、慣れれば使い勝手がいいかもしれません。

以上、ifconfig がなくなるのかもしれない話でした。

2014年3月5日水曜日

Oracle VM 3.3 の Early Access 始まってました。

Oracle VM 3.3 の Early Access Download が開始されました。

Oracle VM Early Access Downloads
http://www.oracle.com/technetwork/server-storage/vm/downloads/ovm-early-access-1743261.html




が、なんとこれから(Oracle VM 3.3.1 ~)は
Oracle VM Manager のリポジトリDBで、Oracle Database が使われなくなるみたいです。
そして、同梱の MySQL Enterprise database に一本化されます。
サポート品質向上やトラブルシュートしやすくすることが目的とのことです。

Oracle VM Release Notes for 3.3
http://www.oracle.com/technetwork/server-storage/vm/downloads/ovm-early-access-1743261.html

超衝撃的! ですがよく考えたら
うちのOracle VM Manager はすべて MySQL でした・・・

以上、Oracle VM Manager が Oracle 使わなくなる話でした。

2014年2月19日水曜日

btrfs の RAID0 からディスクデバイス削除してみる。

btrfs ではソフトウェア RAID が構成できます。
そして、オンラインでファイルシステムへのディスク追加、削除ができてしまいます。

現在、/fs02 にマウントされているファイルシステムは btrfs でフォーマットされています。
10GBのディスク 2つで RAID0 を構成していますが、
そのうちの一つ(/dev/sdd)を削除してみます。
[root@ovnfs3 fs02]# mount | grep /fs02
/dev/sde on /fs02 type btrfs (rw)
[root@ovnfs3 fs02]# btrfs filesystem show /fs02
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 2 FS bytes used 10.05GB
        devid    2 size 10.00GB used 7.01GB path /dev/sde
        devid    1 size 10.00GB used 7.03GB path /dev/sdd

Btrfs v0.20-rc1

RAID0 でファイルシステム作成してあるので、
構成するディスクの容量をあわせて、使用することができます。
※冗長構成ではないです。

今の時点では、ファイルシステムを半分以上使用しています。
※1つのディスクだけではデータが収まらない状態です。
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         20G   11G  8.0G  56% /fs02

ディスク削除のあとでファイルが開けることを確認するために、
テストファイルを置いておきます。(ただのテキストファイルです)
[root@ovnfs3 fs02]# cat -n /fs02/test.f
     1  test file
     2   test file
     3    test file

わざと容量不足になる状態でデバイス削除を試みてみました。
これは期待通り、空き領域不足で失敗します。
[root@ovnfs3 fs02]# btrfs device delete /dev/sdd /fs02
ERROR: error removing the device '/dev/sdd' - No space left on device

/var/log/messages ファイルを見ると
下記のような感じでデータを移動している様子が見られます。
Feb 18 23:44:55 ovnfs3 kernel: btrfs: relocating block group 12922650624 flags 9
Feb 18 23:45:08 ovnfs3 kernel: btrfs: found 6 extents
Feb 18 23:45:10 ovnfs3 kernel: btrfs: found 6 extents
Feb 18 23:45:10 ovnfs3 kernel: btrfs: relocating block group 10775166976 flags 9
Feb 18 23:47:20 ovnfs3 kernel: btrfs: found 34 extents
Feb 18 23:47:26 ovnfs3 kernel: btrfs: found 34 extents
Feb 18 23:47:26 ovnfs3 kernel: btrfs: relocating block group 37748736 flags 12
Feb 18 23:47:30 ovnfs3 kernel: btrfs: found 3368 extents
Feb 18 23:47:30 ovnfs3 kernel: btrfs: relocating block group 20971520 flags 10
Feb 18 23:47:30 ovnfs3 kernel: btrfs: relocating block group 12582912 flags 1
Feb 18 23:47:31 ovnfs3 kernel: btrfs: found 3 extents
Feb 18 23:47:31 ovnfs3 kernel: btrfs: found 3 extents
Feb 18 23:47:31 ovnfs3 kernel: btrfs: relocating block group 4194304 flags 4
Feb 18 23:47:32 ovnfs3 kernel: btrfs: found 1969 extents
Feb 18 23:47:32 ovnfs3 kernel: btrfs: relocating block group 0 flags 2
Feb 18 23:47:33 ovnfs3 kernel: btrfs: found 1 extents

空き容量が十分であれば、RAID を構成するディスクを削除できます。
ためしにファイルを削除して空き容量を作ってから、
もう一度 /fs02 から、/dev/sdd を 削除してみます。
[root@ovnfs3 fs02]# rm -rf /fs02/data1
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         20G  3.4G   17G  17% /fs02

今度は削除できました。
/fs02 の情報を表示しても /dev/sdd が表示されなくなりました。
[root@ovnfs3 fs02]# btrfs device delete /dev/sdd /fs02
[root@ovnfs3 fs02]# btrfs filesystem show /fs02
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 1 FS bytes used 3.35GB
        devid    2 size 10.00GB used 7.25GB path /dev/sde

Btrfs v0.20-rc1

全体容量が半分に減っていますが、
/fs02 に置いてあるテストファイルは開けました。
[root@ovnfs3 fs02]# df -h /fs02
Filesystem      Size  Used Avail Use% Mounted on
/dev/sde         10G  3.4G  6.4G  35% /fs02
[root@ovnfs3 fs02]# cat -n /fs02/test.f
     1  test file
     2   test file
     3    test file

ファイルシステムをマウントしたままでも、
ディスク削除によってファイルシステムも縮小できてしまいました。

以上、btrfs からデバイスを削除してみる話でした。

2014年2月16日日曜日

btrfs コマンド の「failed to open /dev/fd0」を気にならなくする・・・


btrfs コマンドで、なぜか頻繁に /dev/fd0(FDD)のエラーが表示されます。
しかし、このエラーが表示されていてもコマンドが異常終了したりはしていません。

同じコマンドでも、オプション指定によって出たり・・・
[root@ovnfs3 ~]# btrfs filesystem show /fs02
failed to open /dev/fd0: No such device or address
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 2 FS bytes used 10.05GB
        devid    2 size 10.00GB used 7.01GB path /dev/sde
        devid    1 size 10.00GB used 7.03GB path /dev/sdd

Btrfs v0.20-rc1

出なかったりします。
[root@ovnfs3 ~]# btrfs filesystem show --all-devices
Label: '/fs01'  uuid: a0833497-61c0-44c2-a5bc-3e51b8c04f4b
        Total devices 2 FS bytes used 3.35GB
        devid    1 size 40.00GB used 3.03GB path /dev/sdb
        devid    2 size 40.00GB used 3.01GB path /dev/sdc

Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 2 FS bytes used 10.05GB
        devid    1 size 10.00GB used 7.03GB path /dev/sdd
        devid    2 size 10.00GB used 7.01GB path /dev/sde

Btrfs v0.20-rc1

strace コマンドで見てみると、
エラーが出る方は /proc/partitions にあるデバイスをオープンしようとしていそうですが・・・
[root@ovnfs3 ~]# strace -e open btrfs filesystem show /fs02 2>&1 | cat -n
     1  open("/etc/ld.so.cache", O_RDONLY)      = 3
     2  open("/lib64/libuuid.so.1", O_RDONLY)   = 3
     3  open("/lib64/libblkid.so.1", O_RDONLY)  = 3
     4  open("/lib64/libm.so.6", O_RDONLY)      = 3
     5  open("/lib64/libz.so.1", O_RDONLY)      = 3
     6  open("/usr/lib64/liblzo2.so.2", O_RDONLY) = 3
     7  open("/lib64/libpthread.so.0", O_RDONLY) = 3
     8  open("/lib64/libc.so.6", O_RDONLY)      = 3
     9  open("/proc/partitions", O_RDONLY)      = 3
    10  open("/dev/fd0", O_RDONLY)              = -1 ENXIO (No such device or address)
    11  failed to open /dev/fd0: No such device or address
    12  open("/dev/sr0", O_RDONLY)              = 4
    13  open("/dev/sda", O_RDONLY)              = 4
    14  open("/dev/sda1", O_RDONLY)             = 4
    15  open("/dev/sda2", O_RDONLY)             = 4
    16  open("/dev/sda3", O_RDONLY)             = 4
    17  open("/dev/sdb", O_RDONLY)              = 4
    18  open("/dev/sdc", O_RDONLY)              = 4
    19  open("/dev/sdd", O_RDONLY)              = 4
    20  open("/dev/sde", O_RDONLY)              = 4
    21  open("/proc/partitions", O_RDONLY)      = 3
    22  Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
    23          Total devices 2 FS bytes used 10.05GB
    24          devid    2 size 10.00GB used 7.01GB path /dev/sde
    25          devid    1 size 10.00GB used 7.03GB path /dev/sdd
    26
    27  Btrfs v0.20-rc1

エラーが出ないほうは、最初から /dev 配下のデバイスをオープンしようとしていて
/proc/partitions は読んでいなそう・・・
[root@ovnfs3 ~]# strace -e open btrfs filesystem show --all-devices 2>&1 | cat -n
     1  open("/etc/ld.so.cache", O_RDONLY)      = 3
     2  open("/lib64/libuuid.so.1", O_RDONLY)   = 3
     3  open("/lib64/libblkid.so.1", O_RDONLY)  = 3
     4  open("/lib64/libm.so.6", O_RDONLY)      = 3
     5  open("/lib64/libz.so.1", O_RDONLY)      = 3
     6  open("/usr/lib64/liblzo2.so.2", O_RDONLY) = 3
     7  open("/lib64/libpthread.so.0", O_RDONLY) = 3
     8  open("/lib64/libc.so.6", O_RDONLY)      = 3
     9  open("/dev", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = 3
    10  open("/dev/ram9", O_RDONLY)             = 4
    11  open("/dev/ram5", O_RDONLY)             = 4
    12  open("/dev/ram6", O_RDONLY)             = 4
(以下略)

/proc/partitions の内容は下記です。
[root@ovnfs3 ~]# cat /proc/partitions
major minor  #blocks  name

   2        0          4 fd0
  11        0    3794060 sr0
   8        0   10485760 sda
   8        1     204800 sda1
   8        2    1048576 sda2
   8        3    9231360 sda3
   8       16   41943040 sdb
   8       32   41943040 sdc
   8       48   10485760 sdd
   8       64   10485760 sde

使用していない floppy のモジュールが読み込まれているので、
それを削除すればエラーは出ません。
[root@ovnfs3 ~]# lsmod | grep fl
zlib_deflate           21991  1 btrfs
floppy                 65361  0 ★これを削除する。
[root@ovnfs3 ~]# rmmod floppy
[root@ovnfs3 ~]# lsmod | grep fl
zlib_deflate 21991 1 btrfs ★floppy は表示されなくなった。
[root@ovnfs3 ~]# cat /proc/partitions
major minor  #blocks  name

  11        0    3794060 sr0 ★先頭にあった fd0 がなくなった。
   8        0   10485760 sda
   8        1     204800 sda1
   8        2    1048576 sda2
   8        3    9231360 sda3
   8       16   41943040 sdb
   8       32   41943040 sdc
   8       48   10485760 sdd
   8       64   10485760 sde

fd0 のエラーも出なくなります。
[root@ovnfs3 ~]# btrfs filesystem show /fs02
Label: '/fs02'  uuid: d1a7982b-b9cb-49ac-aaba-3b4945b389bf
        Total devices 2 FS bytes used 10.05GB
        devid    2 size 10.00GB used 7.01GB path /dev/sde
        devid    1 size 10.00GB used 7.03GB path /dev/sdd

Btrfs v0.20-rc1

以上、fd0 のエラーはあまり気にならなくなりました・・・

2014年2月5日水曜日

Btrfs にラベルを付けてみる。

Btrfs を使い始めてみましたが、
これで ソフトウェア RAID を構成するとなんとなく悩ましい気がします。

たとえば /dev/sdb と /dev/sdc で RAID0 を構成すると、
/dev/sdb でも /dev/sdc でも、どちらを指定してもマウントできます。
fstab ファイルにも、どちらかを記載しておけばマウントできます。
※最近の Oracle Linux では、デフォルトだと fstab でも UUID が使われています。
[root@ovnfs3 ~]# cat /etc/oracle-release
Oracle Linux Server release 6.5

[root@ovnfs3 ~]# cat /etc/fstab
UUID=e35804ed-5eca-4a97-9415-1d07158e297d /     ext4    defaults        1 1
UUID=fddf4134-4067-48fb-a8de-a61b790ebbdb /boot ext4    defaults        1 2
UUID=f5d199da-3fec-4c76-bdb2-8d0d9ed7256a swap  swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
/dev/sdb                /fs01                   btrfs   defaults        0 0
/dev/sdd                /fs02                   btrfs   defaults        0 0

Btrfsファイルシステムの一覧を表示したときも
デバイスが増えてきたら、わかりづくなりそうな予感がします。
※下の例だと、RAID0 のファイルシステムが2つ(Diskは2つづつ)あります。
[root@ovnfs3 ~]# btrfs filesystem show --all-devices
Label: none  uuid: a0833497-61c0-44c2-a5bc-3e51b8c04f4b
        Total devices 2 FS bytes used 3.35GB
        devid    1 size 40.00GB used 3.03GB path /dev/sdb
        devid    2 size 40.00GB used 3.01GB path /dev/sdc

Label: none  uuid: 685f8baf-52a7-473f-90f1-0738511cd837
        Total devices 2 FS bytes used 1.03MB
        devid    1 size 10.00GB used 2.03GB path /dev/sdd
        devid    2 size 10.00GB used 2.01GB path /dev/sde

Btrfs v0.20-rc1

ファイルシステムへのラベル付与

普段は、私はファイルシステムにラベルを付けないのですが、
ちょっとわかりやすくしたいと思ってラベルを付けてみました。

マウントしたままデバイス名を指定してラベルをつけようとしたら、
(期待通り)エラーになりました。
/dev/fd0 のエラーが気になります・・・
[root@ovnfs3 ~]# btrfs filesystem label /dev/sdd /fs02
failed to open /dev/fd0: No such device or address
ERROR: dev /dev/sdd is mounted, use mount point
Btrfs をマウントしたままでも、
マウントポイントを指定したらラベル付けができてしまいました。
ちょっとわかりやすくなった気がします。
[root@ovnfs3 ~]# btrfs filesystem label /fs01 /fs01
[root@ovnfs3 ~]# btrfs filesystem label /fs02 /fs02
[root@ovnfs3 ~]# btrfs filesystem show --all-devices
Label: '/fs01'  uuid: a0833497-61c0-44c2-a5bc-3e51b8c04f4b
        Total devices 2 FS bytes used 3.35GB
        devid    1 size 40.00GB used 3.03GB path /dev/sdb
        devid    2 size 40.00GB used 3.01GB path /dev/sdc

Label: '/fs02'  uuid: 685f8baf-52a7-473f-90f1-0738511cd837
        Total devices 2 FS bytes used 1.03MB
        devid    1 size 10.00GB used 2.03GB path /dev/sdd
        devid    2 size 10.00GB used 2.01GB path /dev/sde

Btrfs v0.20-rc1

ちなみに、ラベル付けのコマンドラインの、
一番後ろで指定しているのがラベルです。
[root@ovnfs3 ~]# btrfs filesystem | grep label
    btrfs filesystem show [--all-devices] [<uuid>|<label>]
    btrfs filesystem label [<device>|<mountpoint>] [<newlabel>]
        Get or change the label of a filesystem

ラベルを指定してでマウント

一度アンマウントして、
[root@ovnfs3 ~]# umount /fs01
[root@ovnfs3 ~]# umount /fs02
[root@ovnfs3 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.6G  2.7G  5.5G  33% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/sda1       190M   54M  126M  31% /boot

「-L」 でラベルを指定してマウントします。
当然ながら、結局、見た目は変わりません。
[root@ovnfs3 ~]# mount -L /fs01 /fs01
[root@ovnfs3 ~]# mount -L /fs02 /fs02
[root@ovnfs3 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.6G  2.7G  5.5G  33% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/sda1       190M   54M  126M  31% /boot
/dev/sdb         80G  3.4G   75G   5% /fs01
/dev/sdd         20G  1.1M   18G   1% /fs02

fstab もラベル指定にしてみました。
[root@ovnfs3 ~]# cat /etc/fstab
UUID=e35804ed-5eca-4a97-9415-1d07158e297d /     ext4    defaults        1 1
UUID=fddf4134-4067-48fb-a8de-a61b790ebbdb /boot ext4    defaults        1 2
UUID=f5d199da-3fec-4c76-bdb2-8d0d9ed7256a swap  swap    defaults        0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0
LABEL=/fs01             /fs01                   btrfs   defaults        0 0
LABEL=/fs02             /fs02                   btrfs   defaults        0 0

fstab を上記のように編集したあとに一度アンマウントして、
[root@ovnfs3 ~]# umount /fs01 /fs02
[root@ovnfs3 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.6G  2.7G  5.5G  33% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/sda1       190M   54M  126M  31% /boot

マウントします。マウントされました。
[root@ovnfs3 ~]# mount -a
[root@ovnfs3 ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on
/dev/sda3       8.6G  2.7G  5.5G  33% /
tmpfs           498M     0  498M   0% /dev/shm
/dev/sda1       190M   54M  126M  31% /boot
/dev/sdb         80G  3.4G   75G   5% /fs01
/dev/sdd         20G  1.1M   18G   1% /fs02

以上、Btrfs にラベルを付けてみる話でした・・・