[solaris]ネットワーク設定まとめ

忘れそうなので・・・
他のOS同様、一時的なon memoryな設定であればifconfigコマンドとrouteコマンドで設定。
ではOS起動時から有効に設定するには・・・

NICに割り振るIPアドレスの設定

# vi /etc/hostname.<ネットワークインターフェース名>
<ホスト名>

実は、このファイルに記述する内容は、ifconfigコマンドの引数全てそのもの。
ちなみにサーバで保有するネットワークインターフェース名全てを表示するには

# dladm show-dev
e1000g0    リンク: up   速度: 1000 Mbps    デュプレックス: full
e1000g1    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown
e1000g2    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown
e1000g3    リンク: unknown 速度: 0   Mbps    デュプレックス: unknown

ネットマスクの設定

# vi /etc/inet/netmask
192.168.1.0 255.255.255.0
<ネットワークアドレス> <ネットマスク>

デフォルトゲートウェイの設定

# vi /etc/defaultrouter
<デフォルトゲートウェイのIPアドレス>

hostsファイル

# vi /etc/hosts
192.168.1.1? hogeserver
<IPアドレス>? <ホスト名>

ネットワーク関連のファイルはできるだけ<ホスト名>で記述して、IPアドレスはhostsファイルのみに書くというのがsolarisのお作法みたい。IPアドレスが変わったらhostsファイルだけを書き換えたらよいだけだから、確かに楽だね。

[solaris] ディスクのミラーリング(ソフトウェアRAID)

solarisでのディスクミラーリング方法

ルート領域と、swap領域、その他の領域で手順が若干異なる
0.metadb作成
metadbの複製のガイドラインは

  • ディスクが1つの場合は3つの複製を作成
  • ディスクが2~4つの場合は2つの複製を作成
  • ディスクが5つ以上の場合は1つの複製を作成

1つのmetadbが論理破損しても、過半数のメタ情報が1つのmetadbに残るようにすることから。(要するに2つのmetadbが残っていれば過半数残っているだろう、という考えから)

# metadb -a -f -c 2 c1t0d0s4 c1t1d0s4

1.ルート領域

# metainit -f d10 1 1 c1t0d0s0
d10:連結/ストライプがセットアップされます
# metainit d20 1 1 c1t1d0s0
d20:連結/ストライプがセットアップされます
# metainit d0 -m d10
d0:ミラーがセットアップされます
# cp -p /etc/vfstab /etc/vfstab.bak
# metaroot d0
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd /dev/fd fd – – no –
/proc – /proc proc – no –
/dev/dsk/c1t0d0s1 – – swap – no –
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no –
/dev/dsk/c1t0d0s3 /dev/rdsk/clt0d0s3 /usr ufs 1 no –
/dev/dsk/c1t0d0s6 /dev/rdsk/c1t0d0s6 /var ufs 1 no –
/dev/ask/c1t0d0s7 /dev/rdsk/c1t0d0s7 /export/home ufs 2 yes –
/dev/dsk/c1t0d0s5 /dev/rdsk/c1t0d0s5 /opt ufs 2 yes –
swap – /tmp tmpfs – yes –
# lockfs -fa
# sync;sync;sync
# /usr/sbin/shutdown -y -g0 -i6

2.swap領域

# metainit -f d11 1 1 c1t0d0s1
d11:連結/ストライプがセットアップされます
# metainit -f d21 1 1 c1t1d0s1
d21:連結/ストライプがセットアップされます
# metainit d1 -m d11
d1:ミラーがセットアップされます
# metattach d1 d21
d1:サブミラーd21 is attached
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd /dev/fd fd – – no –
/proc – /proc proc – no –
/dev/md/dsk/d1 – – swap – no –
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no –
/dev/dsk/c1t0d0s3 /dev/rdsk/clt0d0s3 /usr ufs 1 no –
/dev/dsk/c1t0d0s6 /dev/rdsk/c1t0d0s6 /var ufs 1 no –
/dev/ask/c1t0d0s7 /dev/rdsk/c1t0d0s7 /export/home ufs 2 yes –
/dev/dsk/c1t0d0s5 /dev/rdsk/c1t0d0s5 /opt ufs 2 yes –
swap – /tmp tmpfs – yes –

3.その他の領域
長くなるので1領域だけ

# metainit -f d13 1 1 c1t0d0s3
d13:連結/ストライプがセットアップされます
# metainit d23 1 1 c1t1d0s3
d23:連結/ストライプがセットアップされます
# metainit d3 -m d13
d3:ミラーがセットアップされます
# metattach d3 d23
d1:サブミラーd21 is attached
# vi /etc/vfstab
# vi /etc/vfstab
#device device mount FS fsck mount mount
#to mount to fsck point type pass at boot options
#
fd /dev/fd fd – – no –
/proc – /proc proc – no –
/dev/md/dsk/d1 – – swap – no –
/dev/md/dsk/d0 /dev/md/rdsk/d0 / ufs 1 no –
/dev/md/dsk/d3 /dev/md/rdsk/d3 /usr ufs 1 no –
/dev/dsk/c1t0d0s6 /dev/rdsk/c1t0d0s6 /var ufs 1 no –
/dev/ask/c1t0d0s7 /dev/rdsk/c1t0d0s7 /export/home ufs 2 yes –
/dev/dsk/c1t0d0s5 /dev/rdsk/c1t0d0s5 /opt ufs 2 yes –
swap – /tmp tmpfs – yes –

[solaris]システムバックアップリストア(ufsdump/ufsrestore テープ使用 SDS ミラーリング)

Solarisのシステムバックアップおよびにリストア方法

■前提条件

  • 復旧時にインストールCDを用いてCDブートする
  • 復旧時にミラーリングまでは復元しない(シングルディスクで復旧→ミラーリング
  • バックアップイメージはテープに保存
  • ファイルシステムはUFS
  • フルバックアップのみ

■ バックアップ
ローカルディスクのマウントしている全ファイルシステム(スライス)をテープにバックアップ。metadbなどはバックアップしない。

# mt -f /dev/rmt/0 rewind
# ufsdump 0uf /dev/rmt/0n /dev/md/rdsk/d10
# ufsdump 0uf /dev/rmt/0n /dev/md/rdsk/d40
# ufsdump 0uf /dev/rmt/0n /dev/md/rdsk/d60
# ufsdump 0uf /dev/rmt/0n /dev/md/rdsk/d70
# ufsdump 0uf /dev/rmt/0n /dev/md/rdsk/d80

■リストア
1.インストールCDからシングルユーザモードでブートする
起動途中(POSTやメモリ初期化、ハードウェア検索が終わったあと、boot ~ optionの表示があった後)でSTOP+A(TeraTermからのシリアル接続の場合はAlt+B)を押して、OKプロンプトに移行し、以下を入力

{1} ok boot cdrom -sr

2.ディスクスライスの設定
シングルユーザモードで起動したら、まず最初にやるのはディスクスライスの設定(スライスっていうのはsolarisぐらい??)。
ミラーリングする場合は2つのディスクでシリンダーの開始位置終了位置をピッタリ合わせる必要あり。

# format
format> type
AVAILABLE DISK SELECTIONS:
0. c1t0d0 (SUN72G cy1 14087 alt 2 hd 24 see 424)
/pci@1c,600000/scsi@2/sd@0,0
1. c1t1d0 (SUN72G cyl 14087 alt 2 hd 24 see 424)
/pci@lc,600000/scsi&/sd@1,0
specify disk (enter its number) : 0
selecting c1t0d0
:(省略)
19. SUN72G
20. Other
specify disk type (enter its nubber) [19]:
selecting c1t0d0
[disk formatted]
format> partition
partion> 0
Enter partion id tag [root]:
Enter partion permission flag[vm] :
Enter nev starting cyl [0]
Enter partion size[] ←ここは「1234e」とシリンダーの終了位置を
入力したほうが両ディスクでサイズをそろえやすい
:(省略)
partition> print
current partition table (original) :
Total disk cylinders available: 14087+2 (reserved cylinders)
Part Tag Flag Cylinders Size Blocks
0 root wm 0 – 2060 10. 00GB (2061/0/0) 20972736
1 swap wu 2061 – 3091 5. 00GB (1031/0/0) 10491456
2 backup vm 0 – 14086 68. 35GB (14087/0/0) 143349312
3 usr wm 3092 – 5152 10. 00GB (2061/0/0) 20972736
4 unassigned wm 5153 – 5157 24. 84MB (5/0/0) 50880
5 unassigned wm 5158 – 7218 10. 00GB (2061/0/0) 20972736
6 var vm 7219 – 9279 10. 00GB (2061/0/0) 20972736
7 home vm 9280 – 14086 23, 32GB (4807/0/0) 48916032

3.ファイルシステム作成(フォーマット)
マウントして使用するスライスにファイルシステムを作成してフォーマット。
+metadb領域も。ミラーリングする場合はもう片方のmetadb領域もファイルシステム作成する

# newfs /dev/rdsk/c1t0d0s0
# newfs /dev/rdsk/c1t0d0s3
# newfs /dev/rdsk/c1t0d0s4
# newfs /dev/rdsk/c1t1d0s4
# newfs /dev/rdsk/c1t0d0s5
# newfs /dev/rdsk/c1t0d0s6

4.テープの内容確認(わかっている場合はやらなくてもよい)
テープデバイスにnをつけてufsrestoreを連続実行すれば、いちいちテープに対する操作をしなくてもよい

# mt -f /dev/rmt/o rewind
#
# ufsrestore if /dev/rmt/0n
ufsrestore > ls
.:
2 *./ 116 kernel/ 128 sbin/
2 *‥/ 125 1ib 131 tmp/
1160 . sh_history 3487 logfile 3486 dump.ksh
9 bin 3 lost+found/ 3485 dump.log
6773 cdrom/ 126 mnt/ 4 usr/
10 dev/ 6771 net/ 5 var/
12 devices/ 3488 nohup.out 7767 vol/
14 etc/ 8 opt/ 6772 xfn/
6 export/ 476 platform/
1193 home/ 127 proc/
ufsrestore > what
Dump date: Mon Dec 29 17:13:25 2009
Dumped from: the epoch
Level 0 dump of / on test:/dev/md/dsk/d10
Label: none
ufsrestore > quit
#
# ufsrestore if /dev/rmt/0n
ufsrestore > ls
:(省略・繰り返し)
# mt -f /dev/rmt/0 rewind

5.ファイルシステムリストア
/mntにファイルシステムをマウントしてリストアする。
ufsrestoreするときのテープデバイスの指定にnを忘れぬこと(どこまでやったかわからなくなる)。
またアンマウントする前にsyncすること。

# mount /dev/dsk/c1t0d0s0 /mnt
# cd /mnt
# ufsrestore rf /dev/rmt/0n
# rm restoresymtable
# sync;sync;sync
# cd
# umount /mnt
# fsck /dev/dsk/c1t0d0s0
:(省略・繰り返し)

6.マウントテーブル変更(ミラーリング環境のみ)
ルートファイルシステムをマウントして、/etc/vfstabの内容を変更する。理由はマウントするデバイスファイルがミラーリング側のデバイスファイルになっているから(今回はミラーリングせずにリストアする(後にミラーリングしなおし))

/dev/md/dsk/d10 → /dev/dsk/c1t0d0s0
/dev/md/rdsk/d10 → /dev/rdsk/c1t0d0s0

# mount /dev/dsk/c1t0d0s0 /mnt
# cp -p /mnt/etc/vfstab /mnt/etc/vfstab.bak
# export TERM=vt100 ←シリアル接続でteraterm使っているときなど
# vi /mnt/etc/vfstab
:(省略)
/dev/dsk/c1t0d0s0 /dev/rdsk/c1t0d0s0 / ufs 1 no –
:(省略)

7.ミラーリング(ソフトウェアRAID)解除
ミラーリングを定義しているファイルの内容を消して、ミラーリングのサービスを起動しないようにする。
ミラーリングを定義しているファイルは2つ

  • /etc/lvm/md.cf
  • /etc/lvm/mddb.cf

/etc/lvm/md.cfはヘッダーの2行だけ残して、その他の内容を消す

# cp -p /mnt/etc/lvm/md.cf /mnt/etc/lvm/md.cf.bak
# head -n 2 /mnt/etc/lvm/md.cf.bak > /mnt/etc/lvm/md.cf

/etc/lvm/mddb.cf は「* Begin MDD root info (do not edit)」から「* End MDD root info (do not edit)」までの行の内容を消す

# cp -p /mnt/etc/lvm/mddb.cf /mnt/etc/lvm/mddb.cf.bak
# grep -n “Begin MDD root info” /mnt/etc/lvm/mddb.cf
79:* Begin MDD root info (do not edit)
# head -n 78 /mnt/etc/lvm/mddb.cf.bak > /mnt/etc/lvm/mddb.cf

8.metadbの内容消去
上記3で既にしているが、念のため・・・

# newfs /dev/rdsk/c1t0d0s4
# newfs /dev/rdsk/c1t1d0s4

9.ブートローダインストール
最後の仕上げ。
ブートローダをインストールする。これを忘れると起動しないので必ず実行すること。

# installboot /usr/platform/`uname -i`/lib/fs/ufs/bootblk /dev/rdsk/c1t0d0s0
# sync;sync;sync

10.後片付け

# umount /mnt
# mt -f /dev/rmt/0 offline

11.OS停止
リブートせずにいったんokプロンプトに戻る

shutdown -y -g0 -i0

OSが停止したらCD-ROMを取り出す
12.OS起動
念のため-rオプションでデバイスファイルを再作成してOSを起動する

{1} ok boot -r

13.metadb情報削除
OSが起動したら、中途半端に残っているmetadbの情報を削除する

# metadb -i
フラグ 最初のブロック ブロック数
F M p 16 未知 /dev/dsk/c1t1d0s4
a p 1 8208 8192 /dev/dsk/c1t1d0s4
# metadb -f -d /dev/rdsk/c1t1d0s4

以上。
ミラーリング構築に関しては別記事で。
# metadbの中に、meta情報が過半数以上ないと復帰できないんやったら意味ないやん
# 2本のうち1本のディスクが死ぬ→過半数消滅⇒復帰できるかは割り振りの運次第

[solaris]CD/DVDをマウントできないときの対処法

solarisでCD/DVDディスクをマウントできないときのマウントする方法

solaris 9 あたりから、CD/DVDのマウントが簡単にできない。(CUIは特に)
原因はvolmgtというディスクを管理する?デーモンがお邪魔をしているから。
何も対処しないでマウント使用とするとこうなる。

# mount -F hsfs -o ro /dev/dsk/c0t0d0s0 /cdrom
mount: /dev/dsk/c0t0d0s0はすでにマウントされているか、 /cdromが使用中であるか、
または許容マウントポイント数を超えています。

マウントするためには、このvolmgtというデーモンを先に停止すること。

# /etc/init.d/volmgt stop
# mount -F hsfs -o ro /dev/dsk/c0t0d0s0 /cdrom
#

これで無事にCD/DVDをマウントできた
ちなみに、CD/DVDドライブのデバイスファイル名を調べるには以下のコマンドを実行する。

# iostat -En
 :(省略)
c0t0d0 Soft Errors: 11 Hard Errors: 1 Transport Errors: 0
Vendor: TEAC Product: DV-28E-N Revision: 1.6A Serial No:
Size: 9. 30GB <9302294528 bytes>

※太字個所がデバイスファイル名