2011/01/21

CentOS 5.X 設定 No.18 RAID6について

鯖の構成を変更するにあたって、データ領域をmdadmを使用しRAID6で作った訳ですが。。。
ここで落とし穴が。。。
その落とし穴とは!!
CentOSのkernelのバージョンが古過ぎて(2.6.18系統)RAID6にHDDが追加できない!
(RAID6の領域拡張は2.6.21系統かららしい)
というものです。
情報元: 「データ用HDDの準備@CentOSでホームサーバを作ろう」
これは致命的です。
かと言ってkernelの入れ替えが出来る程腕がある訳でもなく。。。
(前に一度やってみたんですが、OS自体起動しなくなるという最悪の事態になったので。)
途方に暮れる事2日。

ふと考えついたのが、
mdadmでのRAID情報はスーパーブロックに記録され、RAIDを構成しているHDD自体に残っている。

kernelが新しいOSのLiveCDで起動し、RAID6の領域を拡張すればいいのでは?
という考えに至りました。
前回のLVM事件でデータは欠損したものの、バックアップは辛うじて存在しているので試してみようかな。!

という訳で、FedoraのLiveCDを落としてきます。
HPを覗いてみると、結構種類があるんですね。
まぁGNOMEで問題ないですし(というか、GNOMEしか使った事がないというのが正しい)、汎用性を考えi686(32bit)版で。
いつの間に32nitはi386からi686に変わったんでしょうかね?
(まぁ適したCPUの世代が異なるというだけなんで、あまり気にしなくてもいいんでしょうけど。)

LiveCDから起動して、Applications > System Tools > Terminal で作業してもいいのですが、SSHでメインマシンから入れるようにします。
System > Preferences > Network Connections からIPを固定。
System > Administration > Firewall でファイヤーウォール自体を殺すか、SSHを許可。
Applications > System Tools > Terminal で以下のコマンドを。
[liveuser@localhost ~]$ su - #パスワードが設定されていないので簡単にrootになれる
[root@localhost ~]# getenforce #SELinuxの状態を確認
Enforcing #SELinuxが有効
[root@localhost ~]# setenforce 0 #SELinuxを無効化
[root@localhost ~]# getenforce
Permissive #SELinuxが無効
[root@localhost ~]# service sshd start #SSHを起動
[root@localhost ~]# passwd root #rootのパスワードを設定, 設定しないとメインマシンからSSHで入れない
ここまでくればメインマシンからSSHでログイン出来るようになりました。
Fedoraから直でRAIDをいじってもいいのですが、キーボードの設定変更しないと調べ物が大変なので。

ここからはメインマシンからの操作
(別に直で操作しても可)
構成としてはHDD4発(sd[abcd]1)で構成されているRAID6に、HDD1発(sde1)を追加して領域を拡張したい。
CentOSの時にsde1は追加済みで、スペアとして認識されている。
[root@localhost ~]# mdadm -D /dev/md/X_X #CentOSと異なり/dev/md/の配下にある
[root@localhost ~]# mdadm --manage /dev/md/X_X --add /dev/sdc1 #sdc1が外れていたので、アレイに戻す。この際リビルドが発生。
[root@localhost ~]# mdadm --grow /dev/md/X_X --raid-disks=5 #スペアを合わせて5発なので。因みにリビルドの時間は2TBで約10時間でスピードは40~60MBps
[root@localhost ~]# mdadm -D /dev/md/X_X #アレイに問題がない事を確認
[root@localhost ~]# yum info mdadm #念の為mdadmのバージョンを記載
Name : mdadm
Arch : i686
Version : 3.1.3
Release : 0.git20100722.2.fc14
Size : 680 k
Repo : installed
From repo : fedora
リビルドが終わったところで、CentOSに戻します。
だがしかし!!
やっぱり認識してくれていなかった。。。
OSによって/dev/sdXの認識の仕方が異なるらしく、アレイからHDDが外れているという事態に!
まぁ1発なので、問題はないのですが。
やはりRAID6の領域拡張は無理なのでしょう。
CentOS 6で出来る事を祈りつつ、早くリリースされる事を願っています。
因みに、CentOS 5.5でのmdadmのバージョンは
Name : mdadm
Arch : i386
Version : 2.6.9
Release : 3.el5
Size : 1.8 M
Repo : installed
です。

RAID5ならCentOS 5.5でも領域拡張出来るのかな?
RAID6からRAID5にオンラインダウングレード出来るのかな?
RAID5からRAID6へのオンラインアップデートは?
上記3つが出来るなら時間は掛かるがCentOS 5.5でもなんとかなるんだけど。

2011/01/19

CentOS 5.X 設定 No.16 munin No.02 複数台の場合

[CentOS 5.X 設定 No.12 munin No.01 1台のみの場合]の続きです。
今回は各サーバではデータを収集する(munin-node)のみとし、1台でグラフ化(munin)したいと思います。
標準リポジトリにはmuninが入っておらず、「RPMforgeリポジトリ」にはあるので、リポジトリを追加したいと思います。
「CentOS 5.X 設定 No.15 RPMforgeリポジトリ追加」を参考にして下さい。

  • データをグラフ化するサーバの設定(監視サイド, マスター)
[root@CentOS ~]# yum --enablerepo=rpmforge install -y munin
[root@CentOS ~]# cp -p /etc/munin/munin.conf /etc/munin/munin.conf.back
[root@CentOS ~]# vi /etc/munin/munin.conf
#追記
[Server] #サーバの表記名, スペースが入らないように
address 192.168.XXX.XXX #監視先サーバのIP
use_node_name yes

  • データを収集するサーバの設定(被監視サイド, ノード)
[root@CentOS ~]# yum --enablerepo=rpmforge install -y munin-node #nunin-nodeのインストール
[root@CentOS ~]# chkconfig munin-node on #起動時にmunin-nodeを自動起動させる
[root@CentOS ~]# chkconfig --list munin-node #ランレベルに応じて起動するかどうかの確認。3&5がonであれば問題ない
[root@CentOS ~]# service munin-node start munin-nodeを起動させる
このままではlocalhostからのアクセスしか許可されておらず、マスターからデータを取得する事は出来ません。
なので、マスターからのアクセスを許可する必要があります。
[root@CentOS ~]# cp -p /etc/munin/munin-node.conf /etc/munin/munin-node.conf.back
[root@CentOS ~]# vi /etc/munin/munin-node.conf
#一番最後の行
allow ^127\.0\.0\.1$ #localhostからのアクセス
allow ^192\.168\.1\.1$ #マスターのIPを追加
[root@CentOS ~]# service munin-node restart

デフォルトのままでは調べたいもののデータが収集されていない場合があります。
例えばHDDの温度。
デフォルトではIDE接続と見なされている/dev/hdXのHDDしかデータが収集されていません。
そこで、/dev/sdXのHDDのデータを収集するようにします。
(これを行うと/dev/hdXのデータは収集されなくなります。)
[root@CentOS ~]# yum install smartmontools
[root@CentOS ~]# ln -s /usr/share/munin/plugins/hddtemp_smartctl /etc/munin/plugins
[root@CentOS ~]# cp -p /etc/munin/plugin-conf.d/hddtemp_smartctl /etc/munin/plugin-conf.d/hddtemp_smartctl.back
[root@CentOS ~]# vi /etc/munin/plugin-conf.d/hddtemp_smartctl
user root
env.drives sda sdb #追加 (sda&sdbの温度を収集する場合)
env.args_sda --all -d ata #追加
env.args_sdb --all -d ata #追加
[root@CentOS ~]# serice munin-node restart

生の状態はmuninでいいのですが、CPUとかHDDの型番等を忘れる時が偶にあります。
/procの配下を調べれば判るのですが、それぞれ見ていくのは面倒です。
なので、一覧表示してくれる「hardinfo」をインストールします。
これは標準リポジトリにはないので、RPMforgeリポジトリからインストールします。
色々と表示されるので、ファイルにリダイレクションしてから見た方がいいかも知れません。

2011/01/18

CentOS5.X 設定 No.17 LVM No.02

「CentOS5.X 設定 No.13 LVM No.01」では、LVMの基礎と失敗について書きました。
今回はLVMのVolume Group(VG)にあるHDDの外し方を書きたいと思います。
まず最初に用語の復習を。
LVM: 正式名称は「Logical Volume Manager」, 日本語としては「論理ボリュームマネージャ」
PE: 正式名称は「Physical Extents」, 日本語としては「物理エクステント」, 最小単位
PV: 正式名称は「Physical Volume」, 日本語としては「物理ボリューム」, 追加されたHDD, PE単位に分割されVGとなる
VG: 正式名称は「Volume Group」, 日本語としては「ボリュームグループ」, パーティションに分割する前の総容量
LV: 正式名称は「Logical Volume」, 日本語としては「論理ボリューム」, VGをパーティションに分けた物

[root@CentOS ~]# pvscan #PVの各使用量
PV /dev/sdb1 VG VolumeX lvm2 [1.82 TB / 0 free]
PV /dev/sdc1 VG VolumeX lvm2 [1.82 TB / 0 free]
PV /dev/sdd1 VG VolumeX lvm2 [1.82 TB / 0 free]
PV /dev/sde1 VG VolumeX lvm2 [1.82 TB / 79.25 GB free]
PV /dev/sdf1 VG VolumeX lvm2 [1.36 TB / 1.36 TB free]
Total: 5 [8.64 TB] / in use: 5 [8.64 TB] / in no VG: 0 [0 ]
[root@CentOS ~]# pvdisplay #PVの詳細
--- Physical volume ---
PV Name /dev/sdX #HDD
VG Name VolumeX #使用されているVG
PV Size X.XXTB / not usable XXX.XX KB #PVとして使用されている容量 / PVとして使用されていない容量
Allocatable yes
PE Size (KByte) 4096 #1PEあたりの容量
Total PE XXXXXX #PEの総数, PV Size = PE Size * Total PE
Free PE XXXXXX #総PE中未使用PE数
Allocated PE 0
PV UUID XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
[root@CentOS ~]# vgdisplay #VGの詳細
--- Volume group ---
VG Name VolumeX #VGの名前
System ID
Format lvm2 #ファイルシステム
Metadata Areas 4 #アクティブなPV(HDD)数?
Metadata Sequence No 5 #VGに使用されているPV(HDD)数?
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 5 #VGに使用されているPV(HDD)数?
Act PV 5
VG Size X.XX TB #VGの総容量
PE Size 4.00 MB #1PEサイズ
Total PE XXXXXXX #総PEサイズ
Alloc PE / Size XXXXXXX / X.XX TB #LVとして使用されているPE数 / LVの総容量
Free PE / Size XXXXXX / X.XX TB #未使用PE数 / 空き容量
VG UUID XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
[root@CentOS ~]# lvdisplay #LVの詳細
--- Logical volume ---
LV Name /dev/VolumeX/LogVolX #LVの名前
VG Name VolumeX #使用しているVGの名前
LV UUID XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX
LV Write Access read/write
LV Status available
# open 1
LV Size X.XX TB #LVの総容量
Current LE XXXXXXX #総PE数?
Segments 4 #使用されているPV(HDD)数?
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0

現状4発のHDD(sd[abcd])で構成してあるLVMのHDDを交換(sd[abce])してみたいと思います。
順序としては HDD追加 → データの移動 → HDD外す となると思います。
[root@CentOS ~]# pvcreate /dev/sde #新しいHDD(sde)をPVに追加
[root@CentOS ~]# vgextend VolumeX /dev/sde #新しいHDD(sde)をVGに追加
[root@CentOS ~]# pvdisplay #「交換する予定のHDDのAllocated PE」 < 追加したHDDのFree FE」となっている必要がある, (追加したHDDの容量が小さい場合は以下のlvreduceを行う)
[root@CentOS ~]# lvreduce -L X.XXTB /dev/VolumeX/LogVolX #必要であればLVの容量を減らしておく。(追加したHDDの容量が小さい場合)
[root@CentOS ~]# pvmove /dev/sdf1 /devsde1
WARNING: dev_open(/dev/sdf1) called while suspended
Volume group VolumeX metadata is inconsistent
WARNING: dev_open(/dev/sdf1) called while suspended
Volume group VolumeX metadata is inconsistent
ここでエラーが発生した為、以下の方法を試した。
[root@CentOS ~]# vgcfgrestore VolumeX -f /etc/lvm/archive/VolumeX_XXXXX.vg #現在の構成の1つ前くらいを指定
しかしデータが復旧出来ず、500GB程のデータが失われた。
[root@CentOS ~]# vgreduce VolumeX /dev/sdf1 #VolumeXからsdf1を外す
[root@CentOS ~]# pvscan #VGから外れているかどうかを確認
[root@CentOS ~]# pvremove /dev/sdf1 #PVからsdf1を外す
[root@CentOS ~]# pvscan #PVから外れているかどうかを確認
LVMって怖いわ。
やっぱり自分は使うのやめておこう。
頻繁にパーティションを変更することもないし。
容量増加はRAIDでHDD交換で対応します。

2011/01/15

CentOS 5.X 設定 No.15 RPMforgeリポジトリ追加

標準リポジトリには入っていない物を使用したい時には
  • ソースを拾ってきてコンパイル
  • .rpmファイルを拾ってきてインストール
  • リポジトリを追加してインストール
の3つが考えられます。
上から順に簡単な方法です。
なので、今回はリポジトリを追加する方法を書きます。
[root@CentOS ~]# yum -y install yum-priorities #yum-prioritiesインストール
[root@CentOS ~]# vi /etc/yum.repos.d/CentOS-Base.repo #標準リポジトリ設定ファイル編集

[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#released updates
[updates]
name=CentOS-$releasever - Updates
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
#baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#packages used/produced in the build but not released
[addons]
name=CentOS-$releasever - Addons
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
#baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

#additional packages that may be useful
[extras]
name=CentOS-$releasever - Extras
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
#baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
priority=1 #追加

[root@CentOS ~]# wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt #RPMforgeのGPGキー
[root@CentOS ~]# rpm --import RPM-GPG-KEY.dag.txt
[root@CentOS ~]# rm -f RPM-GPG-KEY.dag.txt
[root@CentOS ~]#wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el5.rf.i386.rpm #RPMforgeリポジトリをダウンロード
[root@CentOS ~]# rpm -ivh rpmforge-release-0.5.2-2.el5.rf.i386.rpm #RPMforgeリポジトリを追加
これでRPMforgeリポジトリの追加は終わりました。
しかし、このままではyumをする度に参照してしまい、意図しない更新がおきたりやyumが遅くなります。
よって、以下の通りに編集します。
[root@CentOS ~]# vi /etc/yum.repos.d/rpmforge.repo #RPMforgeリポジトリ設定ファイル編集

### Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
### URL: http://rpmforge.net/
[rpmforge]
name = Red Hat Enterprise $releasever - RPMforge.net - dag
baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
#mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
enabled = 1
#↓変更
enabled = 0
protect = 0
gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
gpgcheck = 1
これで以下のコマンドを打たないとRPMforgeリポジトリを参照しません。
[root@CentOS ~]# yum --enablerepo=rpmforge [オプション] [パッケージ]

2010/12/16

CentOS5.X 設定 No.14 ソフトウェアRAID

ファイルサーバを一新するに当たり、WD20EARSでソフトウェアRAIDでRAID6を組みたいと思います。

WD20EARSですが、AFT(Advanced Format Technology)を採用しているので、パーティションの切り方に注意しなければいけません。
AFTでは何が違うかというと、従来のHDDにおける1セクタは512Byteでしたが、それを4,096Byte(= 4KB)としています。
1セクタの容量を大きくするとその分セクタ数が減る為、リードインやセクタギャップを減らす事が出来ます。
という理由で1プラッタあたりの容量を増加させる事が出来ます。
物理的には1セクタ = 4KBなのですが、OSからは1セクタ=512Bと見えています。
つまりOSからは4KBが従来通り8セクタと見えています。
OSから見た場合、セクタを8の倍数で切らないと物理的なセクタの境目になりません。
セクタの境目を跨ぐと、書き込み速度が低下します。
OSの多くは普通にパーティションを切ると63セクタを開始位置とします。
しかし、63は8の倍数ではないので、64セクタを開始位置とするようにパーティションを切ります。
62セクタ以内にはシステム情報が書き込まれる場合があるので、63セクタ以降で8の倍数となる最小の値64セクタ目を開始位置としました。

また、WD20EARSは2TB = 1.81TiBなので2TiBの壁にはぶち当たらず、MBR(Master Boot Record)での運用も可能です。
しかし、ここはGPT(GUID Partition Table)で運用します。
MBRは管理用のアドレスが32bitなので、2^32 = 4,294,967,2962セクタ = 2,199,023,255,552Byte = 2TiBの壁が存在します。
GPTは管理用のアドレスが64bitなので、2^64 = 18,446,744,073,709,551,616セクタ = 9,444,732,965,739,290,427,392Byte = 8,589,934,592TB = 8ZB
となります。
因みにGPTでのHDDを起動ディスクにする場合はOSの対応も必要ですが、ハードの対応も必要です。
正確には次世代BIOSであるEFI搭載のマザーボードが必要です。
データ置き場として使用する場合には対応OSのみで大丈夫です。

そこで実際のコマンドに移りたいと思います。
[root@CentOS ~]# parted /dev/sdX

(parted) mklabel
新しいディスクラベル? gpt
(parted) mkpart
パーティションの名前? []? primary
ファイルシステムの種類? [ext2]? ext3
開始? 64s
終了? -1s #最大セクタより1セクタ小さい所まで
警告: 32.8kB から 2000GB までのパーティションを指定されました。
可能な中で最も近いものは 32.8kB から 2000GB までのパーティションになります。それでもかまいませんか?
はい(Y)/Yes/いいえ(N)/No? y
(parted) set 1 raid on
(parted) print u s #パーティションの詳細をセクタ表示で表示
モデル: ATA WDC WD20EARS-00M (scsi)
ディスク /dev/sdX: 2000GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: gpt

番号 開始 終了 サイズ ファイルシステム 名前 フラグ
1 32.8kB 2000GB 2000GB primary raid

(parted) quit

[root@CentOS ~]# mdadm -C /dev/mdX -c512 -l6 -n4 /dev/sd[abcd]1
partedコマンド前にfdiskコマンドでパーティションを作成したのですが、うまく認識してくませんでした。
partedコマンドで作成したパーティションをfdiskコマンドで見るとセクタがおかしく見えます。
しかし、fdiskコマンドがGPTに対応してないだけだと思います。

RAIDアレイを作成するコマンドは以下の通りでも可能です。
[root@CentOS ~]# mdadm --create /dev/mdX --chunk=512 --level=6 --raid-devices=4 /dev/sd[abcd]1
見慣れないオプションに「--chunk=」がありますが、これは処理単位の大きさを指定するものです。
(データがストライプされる単位をチャンクサイズと言う。)
デフォルトでは64KBに設定されています。

参考サイト

現在の構成
  • CPU: Pentium Dual-Core E6600 3.06GHz
  • マザーボード: GA-EP45-UD3R (rev. 1.1)
  • メモリ: DDR2-6400 1GB×2枚
  • ケース: Twelve Hundred
  • グラフィックボード: WinFast PX8400GS TDH SILENT
  • HDD: WD1001FALS×4台, WD20EARS×4台
RAIDアレイの構築速度は平均15000K/secとなっている。
この調子では30時間以上かかる予想だ。

2010/12/15

CentOS5.X 設定 No.13 LVM No.01

今回はLVMでmissった事を書きます。

その前にLVMとはなんなのでしょうか?
普通ファイルを書き込める領域というのは1つのHDD(パーティション)の容量を超える事はありません。
容量が足りなくなった場合は、HDDを交換するか、増設してシンボリックリンクを貼る必要があります。
これではシステムの入れ替え等の際、大変苦労する事になります。
(自分は入れ替えの際もそうですが、Macからsanbaでアクセスするとシンボリックリンクが辿れず苦労しました。)
そこで、LVMの登場です。
LVMを例えるなら、HDDのプールですかね。
1つあたりのHDDの容量は関係なく、すべてを結合して1つの大きなHDDを見なす訳です。
そこから必要な容量だけ切り分けてパーティションとするといった感じでしょうか。
Windowsで言うならスパンボリュームですね。

複数のHDDを統合するならRAIDでもいいのでは?と思う方もいますが、RAIDの場合はHDDの使用する容量を揃えないければいけないという点が面倒です。
また、必要に応じてHDDの追加や削除を行うのが面倒です。
しかし、RAIDの場合特定のバージョンであれなHDDの故障に対する耐久度が上がるのは確かです。
LVMの場合は、複数のHDDにまたがってアクセスする為、1台でも故障するとアクセスできなくなり、最悪データが失われます。
なので、RAIDを構築し、そのアレイを使用してLVMを使用するのが柔軟性&耐久性が高いシステムになると思います。
因みに、RAIDはHDDの故障に対する耐久度は上がりますが、バックアップではありません。
バックアップというのは、過去に逆昇てファイルを救出できるようにするのもで、RAIDにそのような機能はありません。
missってファイルを削除してしまえばそれでお終いです。
バックアップがあれば、バックアップから削除してしまったファイルを戻す事が出来ますね。
あくまでもHDDが壊れてもデータが失われにくいという効果しかありません。
(まぁファイルサーバで5TBを超えてくると、バックアップを取る気が失せるというか、もう一台サーバ建てないと無理。)


上図がLVMのイメージ図になります。(OpenOffice.orgのDrawで作成)
正確に書くとPVはPE(Physical Extents, 物理エクステント)に分割され、VGとして集約される訳です。
PEの大きさはデフォルトで4MBとなっています。
ファイルサーバで大きいサイズのファイルが多い場合は、PEの大きさを大きくしたほうが効率がよくなります。
参考:「LVMとは@ITPro」

さて、ここでようやく今回の失敗に入る訳ですが。
何をしたのかというと、HDDをVGに追加した後にzero書き込みでHDDのパーティションを消してしまったんですね。
LVMはHDDをUUIDで管理しているみたいで、新たにパーティションを作成して追加しようとしても認識されず。
VGから消そうと思っても「PV Name」が不明になっており、コマンドが認識されず。
今回、このHDDにデータは入っておらず、このまま使用しても問題ないのですが、
[root@CentOS ~]# vgdisplay
と行う度に、「Couldn't find device with uuid ~」と表示されるのも目障りなので。
[root@CentOS ~]# fdisk /dev/sdX
で追加したいHDDにLVMのパーティションを作成しておく。
作成したパーティションに対し
[root@CentOS ~]# pvcreate --uuid XXXXXX-XXXX-XXXX-XXXX-XXXX-XXXX-XXXXXX /dev/sdX1
を行い、PVとして登録されているUUIDと新規パーティションを結びつける。
これで、完成です。

現在、ファイルサーバのHDDをWD20EARSに交換する作業をしている最中です。
現在はRAID5のアレイを組み合わせて運用しているのですが、容量やシンボリックリンクの関係でRAID6+LVMへの移行を思案中です。
試験運用としてML110 G6 XeonモデルにLVMを構築し、ファイルサーバのデータをバックアップ中です。
WD20EARSはAFTを使用しているので、セクタの操作が必要なのですが、思うような速度が出ず試行錯誤中です。
fdiskコマンドではパーティションが作成出来ず、partedコマンドでGPTパーティションを作成した後に、fdiskコマンド開始セクタを8の倍数にしているのですが。。。
ddコマンドで100GBも書き込まないうちに33Mbpsまで落ちるのはなんでなんでしょうか。。。
まぁ一度書きこんでしまえば、後は呼び出ししかしませんので問題は少ないような気がするのですが。

2010/12/10

CentOS 5.X 設定 No.12 munin No.01 1台のみの場合

今回は「munin」をインストールして、サーバの使用状況をブラウザから監視できるようにします。
鯖の使用状況をブラウザから監視できるツールは「Nagios」や「RRDtool」が存在します。
それらに関しては、「CentOSで自宅サーバー構築」さんで解説してあります。
SSも載っていますので、見やすいものを導入してみるのが一番でしょう。

参考にしたサイトは
です。

CentOS場合、通常のリポジトリには入っていないので
  • 別途リポジトリを追加する(ver.1.2.5)
  • .rpmファイルを拾ってきて、インストールする(ver.1.4.5)
という方法が考えられます。
    依存関係が面倒なので、「別途リポジトリを追加してインストール後、muninの最新.rpmを上書きインストール」を試してみたいと思います。

    参考にしたサイトでは「dag.repo」を追加していましたが、自分は「CentOSで自宅サーバー構築」を参考にしているので、「RPMforgeリポジトリ」が追加済みです。
    RPMforgeに関しては
    を参考にしました。
    [root@CentOS ~]# yum -y install yum-priorities #yum-prioritiesインストール
    [root@CentOS ~]# vi /etc/yum.repos.d/CentOS-Base.repo #標準リポジトリ設定ファイル編集

    [base]
    name=CentOS-$releasever - Base
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os
    #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
    priority=1 #追加

    #released updates
    [updates]
    name=CentOS-$releasever - Updates
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=updates
    #baseurl=http://mirror.centos.org/centos/$releasever/updates/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
    priority=1 #追加

    #packages used/produced in the build but not released
    [addons]
    name=CentOS-$releasever - Addons
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=addons
    #baseurl=http://mirror.centos.org/centos/$releasever/addons/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
    priority=1 #追加

    #additional packages that may be useful
    [extras]
    name=CentOS-$releasever - Extras
    mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=extras
    #baseurl=http://mirror.centos.org/centos/$releasever/extras/$basearch/
    gpgcheck=1
    gpgkey=http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-5
    priority=1 #追加

    [root@CentOS ~]# wget http://dag.wieers.com/rpm/packages/RPM-GPG-KEY.dag.txt #RPMforgeのGPGキー
    [root@CentOS ~]# rpm --import RPM-GPG-KEY.dag.txt
    [root@CentOS ~]# rm -f RPM-GPG-KEY.dag.txt
    [root@CentOS ~]# wget http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.1-1.el5.rf.i386.rpm #RPMforgeリポジトリ
    [root@CentOS ~]# rpm -ivh rpmforge-release-0.5.1-1.el5.rf.i386.rpm
    これでRPMforgeリポジトリの追加は終わりました。
    しかし、このままではyumをする度に参照してしまい、意図しない更新がおきたりやyumが遅くなります。
    よって、以下の通りに編集します。
    [root@CentOS ~]# vi /etc/yum.repos.d/rpmforge.repo #RPMforgeリポジトリ設定ファイル編集

    ### Name: RPMforge RPM Repository for Red Hat Enterprise 5 - dag
    ### URL: http://rpmforge.net/
    [rpmforge]
    name = Red Hat Enterprise $releasever - RPMforge.net - dag
    baseurl = http://apt.sw.be/redhat/el5/en/$basearch/rpmforge
    mirrorlist = http://apt.sw.be/redhat/el5/en/mirrors-rpmforge
    #mirrorlist = file:///etc/yum.repos.d/mirrors-rpmforge
    enabled = 1
    #↓変更
    enabled = 0
    protect = 0
    gpgkey = file:///etc/pki/rpm-gpg/RPM-GPG-KEY-rpmforge-dag
    gpgcheck = 1
    これで以下のコマンドを打たないとRPMforgeリポジトリを参照しません。
    [root@CentOS ~]# yum --enablerepo=rpmforge [オプション] [パッケージ]

    それではインストールに移りたいのですが、その前に。
    muninは「munin」と「munin-node」の2つのパッケージから構成されています。
    「munin」は「munin-node」からデータを収集し、グラフ化する
    「munin-node」はインストールされているサーバのデータを収集し、「munin」に対してデータを提供する
    という役割です。
    今回は1台のサーバでデータを収集してグラフ化するので、両方インストールする必要があります。
    複数台ある方は、「munin」は1台に、「munin-node」は各サーバにインストールする事になると思います。
    複数台の時の設定は次回にやりたいと思います。
    では、インストールに移ります。
    [root@CentOS ~]# yum --enablerepo=rpmforge info munin munin-node #バージョン確認

    Name : munin
    Arch : noarch
    Version : 1.2.5
    Release : 2.el5.rf
    Size : 339 k
    Repo : installed
    Summary : Network-wide graphing framework (grapher/gatherer)

    Name : munin-node
    Arch : noarch
    Version : 1.2.5
    Release : 2.el5.rf
    Size : 479 k
    Repo : installed
    Summary : Network-wide graphing framework (node)

    [root@CentOS ~]# yum --enablerepo=rpmforge install -y munin munin-node #依存確認等をすっ飛ばし、両方インストール
    [root@CentOS ~]# chkconfig munin-node on #起動時に自動的に起動させる
    [root@CentOS ~]# chkconfig --list munin-node #起動時にONになっているかどうかの確認
    [root@CentOS ~]# service munin-node start #muninを起動させる
    これで、muninのインストールは終わりです。
    しかし、muninはブラウザから監視できるようにするツールですので、Apacheがインストールされている必要があります。
    [root@CentOS ~]# yum -y httpd
    [root@CentOS ~]# chkconfig httpd on
    [root@CentOS ~]# chkconfig --list httpd
    [root@CentOS ~]# service httpd start
    これで、
    http://[muninのインストールされているサーバのIP]/munin/
    にアクセスするとグラフが表示されます。
    更新間隔は5分毎です。
    収集したファイルは「/var/lib/munin/[ノード名]/」に集められており、「.rrd」で終わる名前のファイルです。
    [root@CentOS ~]# rrdtool dump /var/lib/munin/[ノード名]/[ファイル名].rrd
    で見ることが出来ます。
    グラフ化しているファイルは、「/var/www/munin/[ノード名]/」に集められています。
    うまくいかない場合は、「/var/log/munin/」に各種のlogファイルが有りますので見てみましょう。

    さて、リポジトリからのインストールは無事に終わりましたが、バージョンが1.2.5なので最新バージョンに上げてみたいと思います。
    最新バージョンは「http://sourceforge.net/projects/munin/files/」にあります。
    今回は、安定バージョン 1.4.5を使用します。
    [root@CentOS ~]# rpm -ivh munin-1.4.5-2.el5.noarch.rpm
    エラー: 依存性の欠如:
    munin-common = 1.4.5 は munin-1.4.5-2.el5.noarch に必要とされています
    perl(Log::Log4perl) は munin-1.4.5-2.el5.noarch に必要とされています
    perl(Munin::Common::Config) は munin-1.4.5-2.el5.noarch に必要とされています
    perl(Munin::Common::Defaults) は munin-1.4.5-2.el5.noarch に必要とされています
    perl(Munin::Common::TLSClient) は munin-1.4.5-2.el5.noarch に必要とされています
    perl(Munin::Common::Timeout) は munin-1.4.5-2.el5.noarch に必要とされています
    と表示される。

    [root@CentOS ~]# yum info perl-rrdtool perl-Date-Manip perl-HTML-Template perl-Net-SNMP perl-Net-Server

    Name : perl-Date-Manip
    Arch : noarch
    Version : 5.56
    Release : 1.el5.rf
    Size : 589 k
    Repo : installed
    Summary : Date manipulation routines

    Name : perl-HTML-Template
    Arch : noarch
    Version : 2.9
    Release : 1.el5.rf
    Size : 161 k
    Repo : installed
    Summary : HTML Templates for CGI scripts

    Name : perl-Net-SNMP
    Arch : noarch
    Version : 5.2.0
    Release : 1.2.el5.rf
    Size : 340 k
    Repo : installed
    Summary : Net-SNMP Perl module

    Name : perl-Net-Server
    Arch : noarch
    Version : 0.99
    Release : 1.el5.rf
    Size : 395 k
    Repo : installed
    Summary : Perl module that implements an extensible, general Perl server engine

    Name : perl-rrdtool
    Arch : i386
    Version : 1.4.4
    Release : 1.el5.rf
    Size : 95 k
    Repo : installed
    Summary : Perl RRDtool bindings
    となっていて、すべてインストールされているように思える。
    色々面倒なので、一度ここで終わっておきましょう。
    バージョンアップや複数台の監視は次回という事で。