ラベル CentOS の投稿を表示しています。 すべての投稿を表示
ラベル CentOS の投稿を表示しています。 すべての投稿を表示

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
    となっていて、すべてインストールされているように思える。
    色々面倒なので、一度ここで終わっておきましょう。
    バージョンアップや複数台の監視は次回という事で。

    2010/12/08

    運用管理ツール 「CLI Companion」

    なにか面白そうなツールを紹介していたので、紹介してみたいと思う。
    http://journal.mycom.co.jp/articles/2010/12/07/cli-companion-unix-command-tool/index.html


    詳細はマイコミに任せるとして。
    このツール、ダウンロードしに行くと.debファイル。。。
    うちのサーバは全部CentOSだし、管理はWin or MacからSSHだし。
    SSHログインを兼ねたWindows & Mac用で出してくれるととても助かるんだけどなぁ。
    そうしたらとても使いやすいと思うだけど。
    (SSHで管理しているくらいなんだから、コマンドくらい覚えておけって感じなんでしょうけど。)

    2010/11/07

    CentOS 5.X 設定NO.11 sendmailでroot宛のメールをGmailに

    メールサーバーのOP25B対策(sendmail編)
    を参考に設定したのですが、何故か上手く行かないので、
    SendmailでGmailに転送
    sendmailでGmailへ転送すること
    も少し参考にしてみました。

    Gmailのサーバの仕様は、
    その他のメール クライアントの設定
    を参考に。

    ・sendmail.mc
     [root@centos ~]# cp -p /etc/mail/sendmail.mc /etc/mail/sendmail.mc.back
     [root@centos ~]# vi /etc/mail/sendmail.mc
    で、
     dnl define(`SMART_HOST', `smtp.your.provider')dnl
    の下に、以下を追加。
     define(`SMART_HOST', `esmtp:[smtp.gmail.com]')dnl
     define(`ESMTP_MAILER_ARGS',`TCP $h 587')
     define(`RELAY_MAILER_ARGS',`TCP $h 587')
     FEATURE(authinfo, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`authinfo')
     define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')
     TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')

    次に、
     dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl
    のコメントを外す。(以下に書き換え)
     DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl

    そして、
     dnl FEATURE(masquerade_envelope)dnl
    の下に、以下を追加。
     FEATURE(masquerade_envelope)dnl
     FEATURE(genericstable, DATABASE_MAP_TYPE` -o 'MAIL_SETTINGS_DIR`genericstable')
     GENERICS_DOMAIN_FILE(MAIL_SETTINGS_DIR`genericsdomain')
     FEATURE(`generics_entire_domain')

    ・sendmail.mcからsendmail.cfを生成する。
     [root@centos ~]# m4 /usr/share/sendmail-cf/m4/cf.m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

    ・authinfoファイル
     [root@centos ~]# echo AuthInfo:smtp.gmail.com \"U:root\" \"I:user@gmail.com\" \"P:password\" > /etc/mail/authinfo
     [root@centos ~]# chmod 640 /etc/mail/authinfo
     [root@centos ~]# makemap hash /etc/mail/authinfo.db < /etc/mail/authinfo
     [root@centos ~]# chgrp smmsp /etc/mail/authinfo.db ・genericsdomainファイル
     [root@centos ~]# echo localhost >> /etc/mail/genericsdomain
     [root@centos ~]# echo `hostname` >> /etc/mail/genericsdomain

    ・genericstableファイル
     [root@centos ~]# echo root user@gmail.com > /etc/mail/genericstable
     [root@centos ~]# makemap hash /etc/mail/genericstable.db < /etc/mail/genericstable
     [root@centos ~]# chgrp smmsp /etc/mail/genericstable.db

    ・設定を反映
     [root@centos ~]# /etc/rc.d/init.d/sendmail reload

    P.S.
    でも、Gmailには到達していない。。。
    /var/log/maillog には「gethostbyaddr」って書いているので、IPからホスト名に解決出来てないのが原因???
    (ポート開放していなかっただけだったw)

    P.S.2 (2010/11/10)
    SendmailでGmailに転送設定時のエラーを参考に
     [root@centos ~]# yum -y install cyrus-sasl-md5
    を行ったら、
    以下のログが2行表示されなくなった。
     Nov 10 13:44:51 sendmail[3287]: oAA4in33003287: Losing ./qfoAA4in33003287: savemail panic
     Nov 10 13:44:51 sendmail[3287]: oAA4in33003287: SYSERR(root): savemail: cannot save rejected email anywhere
    その代わり、以下のログが増えた。
     Nov 10 13:49:39 usb sendmail[3303]: oAA4nc4w003303: oAA4nc4x003303: return to sender: Service unavailable
    未だにGmailにテストメールは到達していない。。。


    2010/03/07

    CentOS5.X 設定 No.10 netatalk (AFP over TCP) No.01 追記有

    Mac OSとの通信の為、AFPを実装しようと思います。

    ファイルサーバの場合、
    対Windowsなら、Samba
    対Linuxなら、NFS
    対Mac OSなら、AFP
    という形になると思います。
    Mac OSはNFSも使用できるので、NFSで代用する事も可能ですが、Macでの自動マントがうまく行かなかったので、AFPを実装してみようと思います。
    各プロトコル等の説明や設定は以下を参照して下さい。
    「netatalk and samba」

    参考にしたサイトは
    notohirogさんの「CentOS 5でAFPを使ってファイル共有を行うには」
    うえちょこ@ぼろぐさんの「[mac]netatalk でmacのEclipseからVMware上のCentOSにアクセス」
    です。

    [root@CentOS]# wget http://www003.upp.so-net.ne.jp/hat/files/fedora/12/SRPMS/netatalk-2.1.0-0.1.69.beta1.fc12.src.rpm
    [root@CentOS]# rpm -ivh netatalk-2.1.0-0.1.69.beta1.fc12.src.rpm
    [root@CentOS]# cp -p /usr/src/redhat/SPECS/netatalk.spec /usr/src/redhat/SPECS/netatalk.spec.back
    [root@CentOS]# vi /usr/src/redhat/SPECS/netatalk.spec
    37行目に「# If you use CentOS, remove tcp_wrappers-libs」とあるので、39行目を以下のように変更します。
    Requires: pam cracklib openssl cups-libs krb5-libs perl libgcrypt tcp_wrappers tcp_wrappers-libs
    ↓
    Requires: pam cracklib openssl cups-libs krb5-libs perl libgcrypt tcp_wrappers

    47〜50行目に
    # If you use CentOS, replace
    # quota-devel -> quota
    # cracklib-devel -> cracklib
    # tcp_wrappers-devel -> tcp_wrappers
    とあるので、52行目を以下のように変更する。
    BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel krb5-devel libgcrypt-devel quota-devel cracklib-devel tcp_wrappers-devel
    ↓
    BuildRequires: pam libtool automake autoconf openssl-devel pam-devel cups-devel krb5-devel libgcrypt-devel quota cracklib tcp_wrappers

    # viで行数を指定するには「:set nu」
    # 指定行にジャンプするには「指定行G」
    # 「/CentOS」で検索した方が早いかもしれませんが。

    [root@CentOS]# rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec
    「エラー:ビルド依存性の失敗:」と出たら、パッケージが足りないので、yumでインストールして下さい。
    因に自分は、pam-devel, cups-devel, libgcrypt-devel, db4-devel >= 4.6 が足りないと言われました。

    db4-develは4.6以上でないといけないらしいが、CentOS5.4では4.3.29がインストールされる。
    という事で、今までの方法では無理。
    打開策として、netatalkのバージョンを下げる事にしよう。

    参考サイトは
    M.C.P.C.さんの「x86_64のCentOS 5.3にnetatalk 2.05RC1を入れてみた」
    HATさんの「netatalk 2.1beta1 リリース [netatalk]」
    「netatalk2.0.5のRPM置き場」を辿ると、ここまで来る。

    [root@CentOS]# wget http://kojipkgs.fedoraproject.org/packages/netatalk/2.0.5/2.fc13/src/netatalk-2.0.5-2.fc13.src.rpm
    [root@CentOS]#rpm -ivh netatalk-2.0.5-2.fc13.src.rpm
    「エラー: アーカイブの伸長に失敗:」「MD5 チェックサムが適合しません。」だと。
    [root@CentOS]# rpm -ivh --nomd5 netatalk-2.0.5-2.fc13.src.rpm
    でMD5をチェックしないようにして回避。
    警告はいくつか出ますが、気にせずに行きましょう。

    /usr/src/redhat/SPECS/netatalk.specの内容で
    「quota-devel」は「quota」に。
    「cracklib-devel」は「cracklib」に。
    「tcp_wrappers-libs」と「tcp_wrappers-devel」は「tcp_wrappers」に変更します。
    [root@CentOS]# cp -p /usr/src/redhat/SPECS/netatalk.spec /usr/src/redhat/SPECS/netatalk.spec.back
    [root@CentOS]# vi /usr/src/redhat/SPECS/netatalk.spec
    [root@CentOS]# rpmbuild -bb /usr/src/redhat/SPECS/netatalk.spec
    /usr/src/redhat/RPMS/配下にRPMが3つあればO.K.
    [root@CentOS]# rpm -ivh /usr/src/redhat/RPMS/i386/netatalk-*2.0.5-2.i386.rpm
    「エラー: 依存性の欠如:」「/usr/local/bin/perl は netatalk-2.0.5-2.i386 に必要とされています」
    とでたので、「/usr/local/bin/perl」が必要らしい。
    [root@CentOS]# whereis perl
    perl: /usr/bin/perl /usr/local/bin/perl /usr/share/man/man1/perl.1.gz
    とでるので、リンクはあるはず。
    という訳で、
    [root@CentOS]# rpm -ivh --nodeps /usr/src/redhat/RPMS/i386/netatalk-2.0.5-2.i386.rpm
    でインストール。

    /etc/atalk/配下が設定ファイルらしい。
    後は適宜に変更する。
    参考サイトは
    らむの備忘録さんの「CentOS でAppleTalkServerを動かしてみる」
    [root@CentOS]# cp -p /etc/atalk/netatalk.conf /etc/atalk/netatalk.conf.back
    [root@CentOS]# vi /etc/atalk/netatalk.conf
    ATALK_MAC_CHARSET='MAC_ROMAN'
    ↓日本語環境だから
    ATALK_MAC_CHARSET='MAC_JAPANESE'

    ATALK_UNIX_CHARSET='LOCALE'
    ↓サーバはUTF-8で統一しているから
    ATALK_UNIX_CHARSET='UTF8'

    ATALKD_RUN=yes
    ↓Apple TalkではなくTCPを使用するため?
    ATALKD_RUN=no

    [root@CentOS]# cp -p /etc/atalk/afpd.conf /etc/atalk/afpd.conf.back
    [root@CentOS]# vi /etc/atalk/afpd.conf
    最後に以下を追記
    - -uamlist uams_dhx.so -savepassword -maccodepage MAC_JAPANESE -unixcodepage UTF8
    [root@CentOS]# cp -p /etc/atalk/atalkd.conf /etc/atalk/atalkd.conf.back
    [root@CentOS]# vi /etc/atalk/atalkd.conf
    ポートが複数ある場合は、最後に使用するLANポートを追記
    eth0
    [root@CentOS]# cp -p /etc/atalk/AppleVolumes.default /etc/atalk/AppleVolumes.default.back
    [root@CentOS]# vi /etc/atalk/AppleVolumes.default
    最後に共有するフォルダの絶対パスを追記

    [root@CentOS]# /etc/rc.d/init.d/atalk start
    [root@CentOS]# chkconfig atalk on
    iptablesを使用しているならば、TCPとUDPで548番を開ける事。
    Macから「command + k」で「afp://[サーバのIP]」で接続できるはず。
    自分は駄目だったので、設定の見直しですね。

    追記
    netatalk2.0.Xではシンボリックリンクが辿れないという問題はSambaと一緒。
    2.1以降で辿れるようになっているらしい。
    という訳で、現時点におけるnetatalkを実装する意味なし。
    NFSを自動マウントする設定の見直しを優先事項としたいと思います。

    2010/03/06

    CentOS5.X 設定 No.09 phpMyAdmin

    参考サイトである、「CentOS で自宅サーバー構築」ではまったので、備忘録として。

    「CentOS で自宅サーバー構築」の「MySQL用GUI設定ツール導入 (phpMyAdmin)」において
    [root@centos ~]# svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/STABLE/phpMyAdmin phpmyadmi
    とある。
    これはphpMyAdminの最新版を取得してくるコマンドである。
    phpMyAdminの最新版はPHP5.2以上で無いと動作しない。
    しかし、CentOS5.4におけるPHPは5.1.6である。
    これではphpMyAdminが動作せず、ブラウザには「PHP 5.2+ is required」と表示される。
    なので、PHPが5.2未満でも動作するphpMyAdminを取得してくる必要がある。
    phpMyAdminの2.Xなら大丈夫だという情報を得て、以下のコマンドに切り替えました。
    [root@centos ~]# svn checkout https://phpmyadmin.svn.sourceforge.net/svnroot/phpmyadmin/tags/RELEASE_2_11_9_6/phpMyAdmin/ phpmyadmin
    これで、phpMyAdminは動作しました。

    しかし、今度は「mcrypt 拡張をロードできません。PHP の設定を確認してください」という表示が。
    [root@centos ~]# yum install php-mcrypt
    で大丈夫でした。

    2010/03/03

    CentOS5.X 設定 No.08 umaskとか

    ファイルサーバとかですと、一人よりも大人数で共有している場合が多いかと思います。
    その場合のグループとか、アクセス権に関してまとめておきたいと思います。

    何も設定していない初期状態では、ユーザを新規作成すると1:1でユーザ名と同じグループが作成されます。
    # 勿論、既存のグループを指定してユーザを新規作成する事も可能ですが。

    ここで、ユーザを新規作成します。
    uid=500(userA) gid=500(userA) 所属グループ=500(userA)
    uid=501(userB) gid=501(userB) 所属グループ=501(userB)
    uid=502(userC) gid=502(userC) 所属グループ=502(userC)
    としよう。
    ここで、userAさんのプロジェクトにuserBさんが応援に来ました。
    その為、userAさんとuserBさんはファイルを共同管理しなくてはいけなくなった。
    しかし、デフォルトのアクセス権はディレクトリならば755、ファイルならば644となっている。

    ここで、一端デフォルトのアクセス権の確認方法に移る。
    [user@CentOS]$ umask
    を実行するとデフォルトのアクセス権が確認できる。
    [userA@CentOS]$ umask
    0022
    となるはずだ。
    後ろ3桁が許可しないアクセス権を示しているので、ディレクトリなら777、ファイルなら666から引き算する必要がある。
    ディレクトリ:777 - 022 = 755
    ファイル:666 - 022 = 644
    なので、自分以外は参照できるが、書き換えできない状態である。
    これでは、userAさんとuserBさんはファイルが共同管理できない。
    共同管理するために、
    [userA@CentOS]$ chmod 777 [共同管理したいディレクトリのパス]
    を実行したとしよう。
    共同管理は出来るようになったが、プロジェクトに関係ないuserCさんまで閲覧及び書き換えまで出来るようになってしまった。
    これではまずいので、どうすればよかったのかを説明しよう。

    最初にuserAさんはプロジェクト用のグループ(projectAB)を作成しておきます。
    [root@CentOS]# groupadd projectAB
    プロジェクト用の新規ディレクトリを作成します
    [root@CentOS]# mkdir -p /home/projectAB
    [root@CentOS]# ls -al /home/
    drwxw-xw-x 数値 root root 数値 変更日付 projectAB
    なので、このままではrootの所属でuserA&userBは手出しが出来ません。
    そこで所有者とグループを変更します。
    [root@CentOS]# chown userA:projectAB /home/projectAB
    [root@CentOS]# ls -al /home/
    drwxw-xw-x 数値 userA projectAB 数値 変更日付 projectAB
    グループに所属しているれば書き換えできるようにグループにもアクセス権を与えます。
    この際、グループにセットIDも一緒に与えておきましょう。
    こうする事によって、セットIDが与えられたディレクトリの配下でディレクトリ or ファイルを作成した場合、セットIDを与えた権限を保持したまま作成されます。
    [root@CentOS]# chmod 2775 /home/projectAB
    [root@CentOS]# ls -al /home/
    drwxwrsw-x 数値 userA projectAB 数値 変更日付 projectAB

    セットIDが付与されているので
    [root@CentOS]# mkdir -p /home/projectAB/test
    [root@CentOS]# ls -al /home/projectAB
    drwxwrsw-x 数値 root projectAB 数値 変更日付 test
    となる。
    これで、projectAB配下で誰がファイルを作ろうと読み書きが出来るようになる。
    もしかすると
    drwxw-sw-x 数値 root projectAB 数値 変更日付 test
    となる可能性もある。
    その場合は、umaskを設定する。
    [userA@CentOS]$ umask 002
    で、ログアウトするまで、新規作成するファイルはグループまで読み書き可能な状態で作成される。
    これを恒久的にするには、「/etc/.bashrc」に設定すればいいのですが、全てのユーザに適応されてしまうので問題です。
    各ユーザの「~/.bashrc」に「umask 002」と記すと、そのユーザだけ新規作成するファイルのアクセス権が変更になる。

    最後に。
    SSHサーバー構築(OpenSSH) - CentOSで自宅サーバー構築( http://centossrv.com/openssh.shtml )の「chrootユーザー作成」を参照してユーザを作成しました。
    この時、各ユーザのホームのアクセス権と所有者を変更するとSSHでログインできなくなります。
    グループに関しては変更しても大丈夫ですが、chrootなので、意味はありませんね。
    強いて言うなら、chrootで作成しなかったユーザが所属しているグループにしておくと管理がしやすいかも。
    権限的には
    root > rootになれるユーザ > 普通ユーザ > chrootユーザ
    ですね。

    2010/02/28

    サーバのOSを入れ替えた

    デスクトップ用のUbuntuをサーバにして、外向けのサービスを公開してきたが、設定が面倒なのでCentOSに入れ替えを行った。

    まず最初に、なぜUbuntuをインストールしたのか。
    1) 流行だったから、触ってみたかった
    2) Linuxで唯一Simplify Mediaがインストールできたから
    という理由だったはず。
    1)に関しては、ちょこちょこと触ったのだが、サーバという用途の為かカスタマイズ出来ず、あまり意味は無かったと思う。
    やっぱり、クライアントとして使用してこそ真価を発揮するのだろう。
    2)に関しては、Mac miniを手に入れて以来、別にUbuntuでSimplify Mediaを起動している必要も無くなった。
    という事より、管理がしやすいように2台とも同じCentOS5.Xにしてしまおうという考えに至ったのです。

    マシンのスペックを記載しておくと、
    型番:COMPAQ Evo D510 CMT
    CPU:Pentium 4 1.80GHz
    メモリ:1GB×2
    HDD-A:320GB(Seagate ST3320620A)
    HDD-B:200GB (HD722520DLAT80)

    HDDがIDEな為、RAIDを組むのも不安ですし。
    # IDEでRAID組むとRAIDが活用出来そうですが。。。HDD代が馬鹿にならなさそう。。。
    それ以前にパーツ自体が古くなってきている。
    HP ML115 G5も安いし、CPUをAthlonX4にでも乗せかえれば、ClamAVやTripwireを毎日回しながらVMwareServerを乗せる事を考えても十分以上に使えるだろう。
    Windows Server 2008 Foundationがバンドルされているものでも、約4万で買える。
    http://nttxstore.jp/_II_QZX0004047
    これを機にWindows Serverを一度触ってみるのも悪くないと思う。

    インストールや初期設定は、以下を参照して欲しい。
    CentOS で自宅サーバー構築( http://centossrv.com/ )
    お便利サーバー.com( http://www.obenri.com/index.html )

    次は、nfsのクライアントとして設定しなくてはいけない。
    Ubuntu 設定No.03 NASの自動マウント & CentOS 設定No.05 NFSサーバ( http://sherlock-pc.blogspot.com/2009/10/ubuntu-no03-nas-centos-no05-nfs.html )では、CentOSをNFSサーバとしたが、今回はクライアントである。
    CentOS5の場合、特別にインストールするものも無いので上記のように設定して終わりです。

    2009/11/09

    CentOS5.X 設定 No.06 RAID

    この概要は表示できません。投稿を閲覧するには ここをクリック してください。

    2009/10/14

    Ubuntu 設定No.03 NASの自動マウント & CentOS5.X 設定 No.05 NFSサーバ

    前回は、Sambaを使用したNASの自動マウントはご紹介しました。
    しかし、fstabを見られるとIPやユーザ名、パスワードがだだ漏れ。。。
    パーミッションの変更で凌ぐくらいしか思いつきませんね。
    折角市販のNASではなくLinuxを使用しているので、ファイルサーバであるCentOSをNFSサーバにし、外部公開用のUbuntuで自動マウントするようにします。

    では最初にCentOSサイドの設定から。
    参照URL:ttp://kajuhome.com/nfs.shtml
    [root@centos~]# yum install nfs-utils
    で、NFSをインストール。
    /etc/exports を編集して外部公開するディレクトリを設定します。
    [root@centos~]# cp -p /etc/exports /etc/exports.back
    [root@centos~]# vi /etc/exports
    書式は [ディレクトリの絶対パス] [クライアントのIP or ホスト名](オプション) です。
    ex) /home/samba/ 192.168.1.3/32(ro) 192.168.1.4/32(rw,sync)
    /home/samba のディレクトリを 192.168.128.3に対しては読み取り専用で、192.168.1.4に対しては読み書き可能かつ遅延書き込みで公開する。という意味になる。

    次はデーモンの起動。
    NFSはmortmapを使用するので、先に立ち上げておく事。
    [root@centos~]# /etc/rc.d/init.d/portmap start
    再起動しても自動で立ち上がるようにします。
    [root@centos~]# chkconfig portmap on
    設定されたかどうかの確認。
    [root@centos~]# chkconfig --list portmap
    # 3番と5番が重要。詳しくは「ランレベル」を調べる事。
    [root@centos~]# /etc/rc.d/init.d/nfs start
    [root@centos~]# chkconfig nfs on
    [root@centos~]# chkconfig --list nfs

    もし、/etc/exports を書き換えた場合
    [root@centos~]# exportfs -ra
    で、再設定する事。
    設定内容は
    [root@centos~]# exportfs -v
    で確認可能。

    外部からの接続を許可する為に、/etc/hosts.allow に設定を追加します。
    [root@centos~]# cp -p /etc/hosts.allow /etc/hosts.allow.back
    [root@centos~]# vi /etc/hosts.allow
    portmap : 192.168.1.0/255.255.255.0
    だけでいい気もしますが、もしこれで駄目なら
    lockd : 192.168.1.0/255.255.255.0
    mountd : 192.168.1.0/255.255.255.0
    statd : 192.168.1.0/255.255.255.0
    を追加してみて下さい。
    # ご自身のネットワーク環境に合わせた設定に適宜変えてくださいね。

    次にクライアントであるUbuntuの設定を。
    nfs-commonが必要ですので、インストールします。
    [user@Ubuntu]$ sudo apt-get install nfs-common
    マウント先のフォルダを作成
    [user@Ubuntu]$ sudo mkdir /mnt/nas
    実際にマウントします。
    [user@Ubuntu]$ sudo mount -t nfs [サーバのIP or ホスト名]:[共有するディレクトリの絶対パス] [マウント先の絶対パス]
    この時、「mount.nfs: mount to NFS server '[サーバのIP or ホスト名]:[共有するディレクトリの絶対パス]' failed: RPC Error: Program not registered」と出た場合、NFSサーバが起動していないかアクセス制限で引っかかっているか。
    # 自分の場合はTCP Wrapper(アクセス制限)で引っかかってました。
    # hosts.allow に ALL:192.168.128.0/255.255.255.0 を追加して表示されなければ、アクセス制限の設定間違い。

    次は、再起動したらアンマウントしている。だと意味がないので、自動でマウントするようにします。
    ここで、設定No.01でもお世話になった fstab を使用します
    [user@Ubuntu]$ sudo cp -p /etc/fstab /etc/fstab.back
    [user@Ubuntu]$ sudo vi /etc/fstab
    書式は [サーバのIP or ホスト名]:[公開しているディレクトリの絶対パス] [マウント先ディレクトリの絶対パス] nfs [オプション(カンマで区切っていくつでも)] 0 0
    ex)192.168.1.5:/home/samba /mnt/nas nfs ro 0 0
    192.168.1.5 の /home/samba ディレクトリを /mnt/nas に読み込みのみでマウント
    これでクライアントの設定も完了。
    今回はパスワード等をファイルに記載してないので大丈夫。

    次はSFTPでログインするとlastlogみても記録されていない点について考えてみたいと思います。

    2009/09/18

    CentOS5.X 設定 No.04 アクセス制限

    TCP Wrapperとiptablesの違い

    先日も書きましたが、具体例が書かれてなかったと思うので追加で。
    TCP Wrapperはサービスをホスト単位でのアクセスを制限
    iptablesはポート単位でアクセスを制限

    ここで、Webサーバを例に考えてみる。
    Webサーバへのアクセスを特定のホストに許可する場合
    /etc/hosts.allow に
    httpd : 192.168.0.0/255.255.255.0
    と追記します。
    Webサーバへの不特定多数のアクセスを許可する場合
    /etc/sysconfig/iptables に
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
    と追記します。
    しかし、80番ポートはSSL無しですね。
    セキュリティの為にSSL有りでの通信であるhttps://~の443番ポートへのアクセスを許可します。
    その場合は /etc/sysconfig/iptables に
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
    と追記するだけ。
    /etc/hosts.allow にはhttpdを既に許可している為、追記する必要はありません。
    つまり、同じサービス(デーモン)であれば、iptablesでしかアクセスを制限できません。
    SSLのみを許可する場合は、80番ポートへのアクセス許可のiptablesルールを削除すればO.K.

    2009/08/23

    CentOS5.X 設定 No.3 tripwire

    参考サイト:CentOSで自宅サーバー構築(ttp://centossrv.com/)
    に「ファイル改竄検地システム導入」(ttp://centossrv.com/tripwire.shtml)があります。
    参考URL:ttp://www.atmarkit.co.jp/fsecurity/rensai/unix_sec11/unix_sec02.html
    とかも参考になります。

    ここの設定では毎日検査する事になっていますが、自分のファイルサーバーは3TBもあるので非効率です。
    なので、毎週月曜と水曜に検査するようにcronを変更します。
    参考サイトどおりに設定すると /etc/cron.d/tripwire には
    00 3 * * * root /root/tripwire.sh
    と記述されているはずです。
    そこを
    00 3 * * 1 root /root/tripwire.sh
    00 3 * * 4 root /root/tripwire.sh
    と書き換えます。
    cronの記述方法に関しては、以下のサイトを参考にしました。
    参考URL:ttp://www.server-memo.net/tips/crontab.html
    曜日を数値化すると
    0:日曜
    1:月曜
    …
    6:土曜
    7:日曜
    となります。

    2009/08/19

    CentOS5.X 設定 No.2 ssh

    sshは狙われやすいサービスです。
    そこで色々対策を施していく必要があります。

    注) ファイルの中身を変更しますので、前もってファイルのバックアップは行っておいて下さい。
    [root@centos~]# cp -p [ファイルのパス] [ファイルのパス.back]
    などで。
    [root@centos~]# はコマンドを表す。
    # はコメントか、ファイルないでコメントアウトされているものを表す。

    1)ポート番号を変更する。
    一番簡単なのはポート番号を22番から違う番号に変更する事です。
    ウェルノウンポート以外に変更する必要があります。
    ウェルノウンポート:ttp://e-words.jp/w/E382A6E382A7E383ABE3838EE382A6E383B3E3839DE383BCE38388.html
    ウェルノウンポート一覧:ttp://www.security.ocn.ne.jp/information/port/port.html

    sshのポート番号を変更する為には /etc/ssh/sshd_config の記述を変更します。
    #Port 22
    とありますので#を削除し、好きなポート番号へ変更します。
    また、 /etc/services のsshのポート番号も変更しておきます。

    注)ポート番号を変更するとiptablesによってパケットが破棄されます。
    前もってiptablesを修正しておきましょう。
    /etc/sysconfig/iptables の記述を変更します。
    -A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
    とあるので、22という数字を変更後のsshのポート番号に置き換えて下さい。
    これで、ポート番号を変更しても大丈夫です。
    また、外出先(職場や学校等)でのファイヤーウォールなどで22番ポートしか空いていない場合があります。
    その場合は、ポート番号を変更せずに使用して下さい。
    その場合、執拗な攻撃が来ますので、iptablesやTCP Wrapper等の設定を厳しくしておきましょう。

    2)rootでのsshログインを不可にする。
    /etc/ssh/sshd_config の記述を変更します。
    #PermitRootLogin yes
    とあるので#を削除し、yesをnoに変更。

    3)sshログインを許可するユーザを設定
    /etc/ssh/sshd_config の記述を変更します。
    AllowUsers users
    # usersは自分が使用するユーザ名に置き換える。
    という記述を追加する。
    これによって、許可されたユーザ以外はsshログインが不可能になる。

    最後に、
    [root@centos~]# /etc/init.d/sshd restart
    を
    行い、設定を反映させる。

    2009/08/12

    CentOS5.X 設定 No.1 TCP Wrapper

    今回からは設定をいじることにしましょう。

    注)
    [root@centos~]# はコマンドを表す。
    # はコメントか、ファイルないでコメントアウトされているものを表す。

    特定のホストからのアクセスを許可し、その他のホストからのアクセスを制限します。
    iptablesだけでも大丈夫なのですが、サービスとホストを組み合わせてかけるので、TCP Wrapperも併用します。
    # TCP Wrapper
    # 説明:ttp://e-words.jp/w/TCP20wrapper.html
    # 設定:ttp://www.atmarkit.co.jp/fsecurity/rensai/unix_sec03/unix_sec02.html

    /etc/hosts.allow に許可するホストを、/etc/hosts.deny に拒否するホストを記述します。
    流れとしては、
    /etc/hosts.allow を読み、アクセスを許可
    ↓
    /etc/hosts.deny を読み、アクセスを拒否
    ↓
    上記2つのファイルに記述されていないアクセスは許可
    となります。
    2つのファイルに一致する記述が無い場合、アクセスが許可されてしまうので、/etc/hosts.deny には「ALL : ALL」を必ず記述し、すべてのアクセスを拒否します。
    記述して保存するだけで反映されるので、再起動する必要はありません。

    ファイルへ記述する書式は
    サービス名 : ホスト名
    ex)sshd : 192.168.1.0/255.255.255.0 # ネットワーク単位での指定

    TCP Wrapperの設定をチェックする方法
    ttp://www.atmarkit.co.jp/flinux/rensai/linuxtips/235chktcpwrapper.html
    コマンドの書式は
    [root@centos~]# tcpdchk [オプション]
    です。
    特定のホストと特定のサービスをチェックする時のコマンドの書式は
    [root@centos~]# tcpdmatch [サービス名] [クライアント名]
    ex)# tcpdmatch ssh 192.168.1.15
    です。

    今回はこの辺で。

    追記 2009/08/25
    CnOS5初期設定
    (6)root宛メールを転送する
    http://centossrv.com/centos5-init.shtml
    において、外部にメールを送ることになります。
    なので、/etc/hosts.allow に 「sendmail : 自分のサーバのドメイン名」を追加します。
    # 自分のサーバから送るので「sendmail : 127.0.0.1」でもO.K.
    # 自分のサーバから自分自身へのアクセスをすべて許可しておく場合は「ALL : 127.0.0.1」です。
    これで、毎日のメールが届きます。

    2009/08/11

    CentOS インストール No.3

    CentOS5.3からの新機能じゃないかもしれませんが、パーティション作成時にencryptという項目が増えました。
    これはパーティション全体を暗号化し、パスワードを入力しないと中身を見れなくする項目です。
    HDD単体を抜き出され、他のPCで読もうとしてもパスワードがわからなければ読めません。
    重要なデータを扱うようなサーバを立てるならチェックは入れておくべきですが、普通の人はそこまでではないので、入れないほうがいいでしょう。

    CentOSが完全に立ち上がるまでに最大4回パスワードを入力させる事ができます。
    ttp://www.atmarkit.co.jp/fwin2k/operation/notesec/notesec_02.html
    # 内容は少々異なりますが、BIOSとencrypt等に関して書かれています。

    1)BIOSにパスワードを設定
    これで、PC自体が立ち上がらないので、CD起動すらできません。
    2)GRUBにパスワードを設定
    ttp://www.atmarkit.co.jp/flinux/rensai/linuxtips/318grubpasswd.html
    PCは立ち上がっているので、CD起動は可能。
    しかし、カーネルが選べないので、OSは立ち上がらない。
    CD起動が可能なので、LiveCDから立ち上げ、中身をサルベージ可能
    3)encrypt
    PCは立ち上がっているので、CD起動は可能。
    しかし、HDDが暗号化されているので、CD起動されたり、持ち出されても読めません。
    4)ログイン
    ここでは個人の環境設定のみのロードなので、OSとしては立ち上がっています。
    なので、ログインしていなくてもssh等のデーモン(daemon)は使用可能です。
    アプリ(SimplifyMediaやBittorrent等)はログインして起動させないと無理です。

    後は参考URLを参照して下さい。
    同じですので。

    次は設定編に行きたいですねぇ。