zfs/raidz on FreeBSD

zpoolの作成からファイルシステムの作成とマウント、それぞれの削除、アンマウントまでのコマンド備忘録。

ada0からada3までを使ってraidzのzpoolを作成する。

#zpool create zpool0 raidz ada0 ada1 ada2 ada3

作成したzpoolの状態はzpool statusコマンドで表示する。

#zpool status
	NAME	STATE	READ	WRITE	CKSUM
	zpool0	ONLINE	 0	0	0
	 raidz1	ONLINE	 0	0	0
	  ada0	ONLINE	 0	0	0
	  ada1	ONLINE	 0	0	0
	  ada2	ONLINE	 0	0	0
	  ada3	ONLINE	 0	0	0

zfsのファイルシステムの状態はzfs listコマンドで表示する。

#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/zpool0/storage

zpool0以下にstorageという名前のファイルシステムを作成する。

#zfs create zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/zpool0/storage

作成したzpool0/storageを/mnt/storageにマウントする。

#mkdir /mnt/storage
#zfs set mountpoint=/mnt/storage zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	/mnt/storage

マウントポイントを消去する。

#zfs set mountpoint=none zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0
zpool0/storage	31.4K	5.34T	31.4K	none

ファイルシステムを消去する。

#zfs destroy zpool0/storage
#zfs list
        USED	AVAIL	REFER	MOUNTPOINT
zpool0	155K	5.34T	31.4K	/zpool0

その他1:zpool0を消去する。

#zpool destroy zpool0

その他2:ada0とada1を使ってmirrorのzpoolを作成する。

#zpool create zpool0 mirror ada0 ada1

OpenSolarisのインストールと無線LAN設定

はじめに

OpenSolarisをインストールしてみました。

環境

  • IBM T43 2668-J3J Pentium(R) M770 2.13GHz PC2-4200 DDR2 SDRAM 2GB
  • Solaris10

手順

  1. まずopensolaris.orgからos200805.isoをダウンロードします。
  2. isoイメージをcdに書き込み、そこから起動してそのままインストールします。
  3. 再起動してインストール終了です。簡単。。。

各種設定

有線ネットワーク設定

#vi /etc/inet/netmasks //192.168.1.0 255.255.255.0
#vi /etc/nodename //hostname
#vi /etc/inet/hosts //127.0.0.1 localhost
#vi /etc/defaultrouter //192.168.1.1
#vi /etc/resolv.conf //nameserver 192.168.1.1
#vi /etc/nsswitch.conf //hosts: files dns
#/etc/init.d/nscd stop
#/etc/init.d/nscd start

無線ネットワーク設定

OpenSolarisにはt43の無線LANアダプタに対応するドライバが入っていませんので、Solarisを持って街に飛び出そう(ホットスポット編)Wireless Networking for OpenSolarisを参考にインストール作業をします。

私のマシンに搭載されている無線LANアダプタは以下のとおりです。

インテル(R) PRO/Wireless 2915ABG IEEE802.11a/b/g ワイヤレスLAN(Wi-Fi準拠) 

まず、上記サイトからドライバをダウンロードし、解凍、インストールと進めます。

# wget http://www.opensolaris.org/os/community/laptop/downloads/iwi-0.5-pkg.tar.gz
# gzip -dc iwi-0.5-pkg.tar.gz | tar xvf -
# pkgadd -d ./iwi-0.5 SUNWiwi

Processing package instance <SUNWiwi> from </export/home/hiro/tmp/iwi-0.5>

Intel Pro. Wireless 802.11a/b/g IPW2200B/G IPW2915A/B/G Driver(i386) 11.11,REV=2006.02.27.14.39
Copyright 2006 Sun Microsystems, Inc. All rights reserved.
Use is subject to license terms.
Using </> as the package base directory.
## Processing package information.
## Processing system information.
3 package pathnames are already properly installed.
## Verifying package dependencies.
## Verifying disk space requirements.
## Checking for conflicts with packages already installed.

The following files are already installed on the system and are being
used by another package:
* /kernel/drv/amd64/iwi
* /kernel/drv/iwi

* - conflict with a file which does not belong to any package.

Do you want to install these conflicting files [y,n,?,q] y
## Checking for setuid/setgid programs.

This package contains scripts which will be executed with super-user
permission during the process of installing this package.

Do you want to continue with the installation of <SUNWiwi.2> [y,n,?] y

Installing Intel Pro. Wireless 802.11a/b/g IPW2200B/G IPW2915A/B/G Driver as <SUNWiwi.2>

## Installing part 1 of 1.
/kernel/drv/amd64/iwi
/kernel/drv/iwi
[ verifying class <none> ]
## Executing postinstall script.

Installation of <SUNWiwi.2> was successful.

ここで、いざ起動!とばかりに次のコマンドを入力します。

# ifconfig iwi0 plumb
ifconfig: plumb: iwi0: no such interface

しかしながら見事に失敗。アダプタ自体が見つからないということで、dmesgしてみると、本当にない。困りました。。。

いろいろと調べて、次のページに解決法らしきを見つけました。

laptop-discuss Re: Intel PRO/Wireless 2915ABG on IBM ThinkPad R52 18464CG

なんでも/etc/driver_aliasesに存在するe1000gシリーズというデバイス名が優先的に読まれてしまうため、肝心の iwiシリーズドライバが読み込まれないとのこと。この方も「この方法が正しい解決方法ではないかもしれないがひとまず動く」とおっしゃっていますが、私 も見よう見まねでトライしてみました。

以下、手順です。 まずscanpciでデバイスがあるかどうかを確認します。

#scanpci
pci bus 0x000b cardnum 0x02 function 0x00: vendor 0x8086 device 0x4224
Intel Corporation PRO/Wireless 2915ABG Network Connection

/etc/driver_aliasesから次の一行を削ります。

e1000g "pci8086,1012"

原本ではe1000g “pci8086,1010″を削るとありますが、私の環境においてDevice Driver Utilityでデバイスの詳細を見たところ、DevPathの値が次のようになっていましたので、1010を1012へ変更しました。(これ以上の根拠 はありません。単純に1010では動かなかったため、1012に変更したら動いただけのことです。。)

/pci@0,0/pci8086,2448@1e/pci8086,1012@2

同ファイルのiwiシリーズの記述の最後に次の1行を追加します。

iwi "pci8086,4224.8086.1012"

ここで、変更を保存して再起動します。起動後、prtconfを実行すると、先ほどまではなかった下記の記述が出力されます。その中に dev_path=/pci@0,0/pci8086,2448@1e/pci8086,1012@2:iwi0の記述、つまり2915ABGがiwi0 として正しく認識されたという一行が入っています。

#prtconf -v
pci8086,1012, instance #0
Hardware properties:
name='assigned-addresses' type=int items=5
value=820b1010.00000000.b4001000.00000000.00001000
name='reg' type=int items=10
value=000b1000.00000000.00000000.00000000.00000000.020b1010.00000000.00000000.00000000.00001000
name='compatible' type=string items=7
value='pci8086,4224.8086.1012.5' + 'pci8086,4224.8086.1012' + 'pci8086,1012' + 'pci8086,4224.5' + 'pci8086,4224' + 'pciclass,028000' + 'pciclass,0280'
name='model' type=string items=1
value='Network controller'
name='power-consumption' type=int items=2
value=00000001.00000001
name='fast-back-to-back' type=boolean
name='devsel-speed' type=int items=1
value=00000001
name='interrupts' type=int items=1
value=00000001
name='max-latency' type=int items=1
value=00000018
name='min-grant' type=int items=1
value=00000003
name='subsystem-vendor-id' type=int items=1
value=00008086
name='subsystem-id' type=int items=1
value=00001012
name='unit-address' type=string items=1
value='2'
name='class-code' type=int items=1
value=00028000
name='revision-id' type=int items=1
value=00000005
name='vendor-id' type=int items=1
value=00008086
name='device-id' type=int items=1
value=00004224
Interrupt Specifications:
Interrupt Priority=0x6 (ipl 6), vector=0xb (11)
Device Minor Nodes:
dev=(110,1)
dev_path=/pci@0,0/pci8086,2448@1e/pci8086,1012@2:iwi0
spectype=chr type=minor
dev_link=/dev/iwi0
dev_link=/dev/wifi/iwi0
dev_path=/pci@0,0/pci8086,2448@1e/pci8086,1012@2:iwi0
spectype=chr type=minor
dev_link=/dev/iwi0
dev_link=/dev/wifi/iwi0
dev=(110,1004)
dev_path=<clone>
Device Minor Layered Under:
mod=udp accesstype=chr
dev_path=/pseudo/udp@0
dev=(110,1003)
dev_path=<clone>
Device Minor Layered Under:
mod=udp accesstype=chr
dev_path=/pseudo/udp@0

気を取り直してifconfigコマンドを入力します。

# ifconfig iwi0 plumb
#

何も返さないかわりに、無線LANのランプが点灯しました。やった!

(「無線LANをONにしました」とかなんとか表示してくれれば良いのに。。。。)

あとはwificonfigでなんとかなりそうです。

パーティション

/ 4G
swap 1G
/var 10G
/usr 20G
/opt 10G
/export/home 70G

NTFSファイルシステムのマウント

NTFSファイルシステムをOpenSolarisからマウントします。 [# /usr/bin/prtpart] 上記サイトを参考にさせていただきました。

以下作業のみです。

まずBelenixから下記2つのファイルをダウンロードします。

FSWpart.tar.gz 	34 KB
FSWfsmisc.tar.gz 4.1 MB

続いて、解凍、インストールを行います。

# gzip -dc FSWfsmisc.tar.gz | tar xvf -
# pkgadd -d ./ FSWfsmisc
# gzip -dc FSWpart.tar.gz | tar xvf -
# pkgadd -d ./ FSWpart

ここまで正常に終了したら、あとはNTFSパーティションのチェックとマウントです。

# prtpart デバイス名の確認
# prtpart /dev/rdsk/デバイス名 -ldevs
# mount -F ntfs /dev/rdsk/デバイス名 /mnt

コマンド

リセット

ネットワークを始めすべての設定を初期化し再設定する。

# sys-unconfig

グループ追加

# groupadd -g 1001 ****

ユーザー追加

# useradd -g 1001 -u 1001 -m -d /export/home/**** -s /usr/bin/tcsh ****
# passwd ****
# chmod 711 /export/home/****

シェルの変更

# passwd -e ユーザー名
古いシェル: /usr/bin/sh
新しいシェル: /usr/bin/bash

tar.bz2の解凍

#bzcat filename.tar.gz | tar xvf -

困ったこと

インストール時

まずDVDから立ち上げた時点で下記のメッセージが続けて3つほど表示。

WARNING: /pci@0,0/pci1014,566@1d,7 (ehci0): No SOF interrupts have been received, this USB EHCI hostcontroller is unusable

再起動したらなぜか消えてました。うーん。