ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
検索
オンライン状況
13 人のユーザが現在オンラインです。 (1 人のユーザが ニュース を参照しています。)

登録ユーザ: 0
ゲスト: 13

もっと...
投稿者: f-otake 投稿日時: 2017-11-4 11:56:38 (81 ヒット)
Linux (サーバー制作)




それぞれのパーティションのコピーが終わったので、KVMのサブホストを起動します。
アプリケーション → システムツール → 仮想マシンマネージャーと進み起動し、web6 を選び、開くをクリック(画像1)すると、画像2が開きますので、電球アイコンをクリックして画像3を表示させる。ここでルートになる領域を指定しますが、コピーしているのでweb4は使えません(webだけにしとけば良かったが、時既に遅し、同じにしてもホストが違うので問題ないし、他の領域ではそうしている)ので削除をします。Virtio 1 を選び、削除をクリックすると、小さなウィンドウが表示されますので、はい をクリックし、削除します。次にハードウェアの追加をクリックすると、
画像4が開きますので、ローカルを閲覧をクリック、



すると画像5が開きますので、管理さえているストレージ,,,,,を選び、閲覧をクリックし、ルートにするパーティションを選び、デバイスタイプは Virtio Diskにしてから、完了をクリック。

そして web6仮想マシン のウィンドウを閉じます。

そして画像1で、web6 を右クリックし、実行をクリックして、起動します。
このままでは、何も表示されないので、上にある 開く アイコンをクリックし、画面を表示します。

あれれ、ブートしないぞー。又,MBRの問題か?(画像6)
2017ー11ー25追記
これはMBRが解らなくなっているから、この問題は”バックアップ用のホストを作り直す(1)”で既に行っているが、仮想ディスクを指定はどうするか解らなかった(hd0,0)では無いと思っていたが、結論は同じ指定で良かった。ただメインホストでは無く、サブホストなのでCentoOSのDVDをサブホストにアタッチしなくてはならない。その方法

まず、仮想マシンマネージャー(画像1)でサブホストを選び、電球のアイコンをクリックすると

画像7が開きますので、(説明の為ですので、サブホストの名前が違いますが)
Boot Optionsを選び、右ペインでCDROMにチェックを入れ、最初にブートさせるため、上矢印(画像は既に最初になっているのでグレーアウトしている)で、一番上にして、適用をクリック
次に画像8で IDE CDROM 1 を選び、右ペインで接続をクリック、これでCD(DVD)ROMにCentOSのインストールDVDを挿入後、加増マシンマネージャーからサブホストを実行すると
Resucureに入れます。

インストールDVDからブートしてMBRを修復する方法はここを参照して下さい。その際、ディスクの指定は (hd0,0) でOKです。
作業が終わったら、最後にCDROMの接続を必ず解除してください。
これでやっとバックアップ用のホストが完成。


投稿者: f-otake 投稿日時: 2017-11-4 8:25:49 (98 ヒット)
Linux (サーバー制作)

”バックアップ用のホストを作り直す”で何回も出てくるので、ここに方法を書く
もちろん baculaの設定は終わっていて、起動している。
bacula-dirが起動していないホストでも出来るみたいだが、やっていないのでbacula-dirが起動しているホスト(smb3) で作業をする。
例として、Clientの名前が web-fd、リストアしたいデーターが web-Rdata、余裕のあるホスト名が smb-fd とする。
# bconsole

Connecting to Director localhost:9101
1000 OK: bacula-dir Version: 5.0.0 (26 January 2010)
Enter a period to cancel a command.
* restore
Automatically selected Catalog: MyCatalog
Using Catalog "MyCatalog"

First you select one or more JobIds that contain files
to be restored. You will be presented several methods
of specifying the JobIds. Then you will be allowed to
select which files from those JobIds are to be restored.

To select the JobIds, you have the following choices:
     1: List last 20 Jobs run
     2: List Jobs where a given File is saved
     3: Enter list of comma separated JobIds to select
     4: Enter SQL list command
     5: Select the most recent backup for a client
     6: Select backup for a client before a specified time
     7: Enter a list of files to restore
     8: Enter a list of files to restore before a specified time
     9: Find the JobIds of the most recent backup for a client
    10: Find the JobIds for a backup for a client before a specified time
    11: Enter a list of directories to restore for found JobIds
    12: Select full restore to a specified Job date
    13: Cancel
Select item:  (1-13): 5
Defined Clients:
     1: kvm-fd
     2: smb-fd
     3: web-fd
Select the Client (1-3): 3
The defined FileSet resources are:
     1: web-Mail
     2: web-Rdata
     3: web-root
     4: web-webdata
Select FileSet resource (1-4): 2
+-------+-------+----------+-------------+---------------------+------------+
| JobId | Level | JobFiles | JobBytes    | StartTime           | VolumeName |
+-------+-------+----------+-------------+---------------------+------------+
|    49 | F     |   15,282 | 187,557,669 | 2017-10-18 03:47:34 | Vol-0020   |
|   164 | D     |      167 |   1,542,522 | 2017-10-29 03:32:22 | Vol-0115   |
|   174 | I     |        1 |   1,193,046 | 2017-10-30 03:28:10 | Vol-0124   |
|   184 | I     |        1 |   1,193,146 | 2017-10-31 03:28:31 | Vol-0133   |
|   194 | I     |      167 |   1,543,736 | 2017-11-01 03:29:03 | Vol-0142   |
|   204 | I     |        1 |   1,194,890 | 2017-11-02 03:26:33 | Vol-0151   |
|   217 | I     |        1 |   1,195,480 | 2017-11-03 04:05:36 | Vol-0160   |
|   233 | I     |      167 |   1,548,364 | 2017-11-04 08:26:48 | Vol-0170   |
+-------+-------+----------+-------------+---------------------+------------+
You have selected the following JobIds: 49,164,174,184,194,204,217,233

Building directory tree for JobId(s) 49,164,174,184,194,204,217,233 ...  +++++++++++++++++++++++++++++++++++++++++
12,664 files inserted into the tree.

You are now entering file selection mode where you add (mark) and
remove (unmark) files to be restored. No files are initially added, unless
you used the "all" keyword on the command line. Enter "done" to leave this mode.

cwd is: / 
$ mark *
15,282 files marked.
$ done
Bootstrap records written to /var/spool/bacula/bacula-dir.restore.8.bsr

The job will require the following
   Volume(s)                 Storage(s)                SD Device(s)
===========================================================================
     Vol-0020                  File                      FileStorage
     Vol-0170                  File                      FileStorage
Volumes marked with "*" are online.

15,282 files selected to be restored.

The defined Restore Job resources are:
     1: Restore-smb-root
     2: Restore-smb-SmbData
     3: Restore-kvm-root
     4: Restore-kvm-Download
     5: Restore-kvm-Thunderbird
     6: Restore-web-root
     7: Restore-web-webdata
     8: Restore-web-Mail
     9: Restore-web-Rdata
Select Restore Job (1-9): 9
Run Restore job
JobName:         Restore-web-Rdata
Bootstrap:       /var/spool/bacula/bacula-dir.restore.8.bsr
Where:           /SmbData/kinryo/Restores/web-Rdata
Replace:         always
FileSet:         web-Rdata
Backup Client:   web-fd
Restore Client:  web-fd
Storage:         File
When:            2017-11-04 09:18:22
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): m
Parameters to modify:
     1: Level
     2: Storage
     3: Job
     4: FileSet
     5: Restore Client
     6: When
     7: Priority
     8: Bootstrap
     9: Where
    10: File Relocation
    11: Replace
    12: JobId
    13: Plugin Options
Select parameter to modify (1-13): 5
The defined Client resources are:
     1: smb-fd
     2: kvm-fd
     3: web-fd
Select Client (File daemon) resource (1-3): 1
Run Restore job
JobName:         Restore-web-Rdata
Bootstrap:       /var/spool/bacula/bacula-dir.restore.8.bsr
Where:           /SmbData/kinryo/Restores/web-Rdata
Replace:         always
FileSet:         web-Rdata
Backup Client:   web-fd
Restore Client:  web-fd
Storage:         File
When:            2017-11-04 09:18:22
Catalog:         MyCatalog
Priority:        10
Plugin Options:  *None*
OK to run? (yes/mod/no): y
Job queued. JobId=235
*
この意味は restore でリストアを宣言し、5で最新のバックアップを選び、3でリストアしたいホストを選び、2でリストアしたいデーターを選び、mark*で全てのファイルをリストアする宣言をし、doneでここから抜け、9でディレクターのリストアジョブを選び、リストアされる場所を変更したいので mで変更し、5でリストアされるホストを変える事を伝え、1で余裕のあるホストsmb-fdをセレクトし、yでリストアをスタートする。
しばらくして終わったらメールが来る(bacula-dir.confに設定がある。bconsole のままmessageとして同じ内容が表示される。

リストアされたデーターをコピーするには
smb-fd(ホスト名smb3)ではsambaが起動しているので、保存された場所は(Where: /SmbData/kinryo/Restores/web-Rdata)は他のホストから参照が可能。
まずこのデーターをマウントする。
# mount.cifs //smb3.kinryokai.net/kinryo /test1 -o username=administrator
パスワードを聞かれる。/test1は作成して置く
ディレクトリを変更。
# cd /test1/Restores/web-Rdata
コピー先をマウント(例はLVMの領域)
# mount /dev/Data/Rdata /test2
/test2も作成して置く
# cp -pr ./ /test2

NFSでマウントする方法もある。ここを参照


投稿者: f-otake 投稿日時: 2017-11-4 8:13:17 (97 ヒット)
Linux (サーバー制作)

39:バックアップ用のホストを作り直す(3)からの続き
バックアップ用のサーバーで動くサブホストのルートがコピー出来たので、ここからは各サブホストにマウントするデーター領域をコピーする。
これはweb6に
WEBのコンテンツの置き場所である /webdata(ここにWEBで使うmysqlのデーターもある、パーティションは /dev/Data/webdata)
Railsを使うWEBのコンテンツの置き場所の /Rdata(パーティションは /dev/Data/Rdata)
postfix(メール)が使う保存場所である /Mail(メールサーバーはIMAPで運用しているので、すべてのメールがここに溜まり、ユーザーが削除しない限り増え続ける、パーティションは /dev/Data/Mail)
蛇足だがメインとサブホストのルート、smb6以外の各ホストにマウントする領域は250GのSSDに保存してあるのでアクセスが早い筈
smb6にマウントされる領域は
baculaでバックされる各ホストのバックアップデーターの保存場所である /Backup(パーティションは /dev/Backup/Backup)
sambaがデータを置いておく /SmbData(パーティションは /dev/SmbData/Data)
この二つは1TBのHDDにある。ただし/Backupのコピーはいらない、メインの方にデーターがある。
例によってbaculaでリストアで各データーはsambaが走っているsmb3の
/SmbData/kinryo/Ristores/web-webdata
/SmbData/kinryo/Ristores/web-Rdada
/SmbData/kinryo/Ristores/web-Mail
に出来るのでそれをコピーする。
又,/dev/Backup/Backupはコピーしないし、
/dev/SmbData/Dataは大きすぎるので、nfsでコピーすることにする。
これはライブ中にコピーすることになるが、夜中はアクセスが無いので大丈夫だろう
baculaのバックアップデーターをコピーする方法はここを参照

nfsでコピーする方法
運用中のサブホスト smb3 で
# yum install nfs-utils
インストールされていた。
# gedit /etc/idmapd.conf

抜粋
Domain = kinryokai.net ←コメントを外し、自分のドメインにする。
# gedit /etc/exports
/SmbData 192.168.xxx.0/24(rw,no_root_squash,no_all_squash) 
この意味はsmb3にある /SmbData を内部ネットワーク(192.168.XX.0/24)からのみアクセスを許す。オプションはgoogle先生で調べてね
# service rpcbind status
起動していたので
# service nfslock status
これも起動していた
# service nfs status
今度は起動していないので
# service nfs start
NFS サービスを起動中: [ OK ]
NFS クォータを起動中: [ OK ]
NFS mountd を起動中: [ OK ]
NFS デーモンを起動中: [ OK ]

*******************
ここでバックされるメインのホスト(kvm6)に移り
nfs-utilsがインストールされているか確認し(インストール済みだった)、/etc/idmapd.conf を同じように設定する
nfsを起動する
# service rpcbind status
起動済み
# service rpcidmapd status
停止していたので
# service rpcidmapd start
OKが表示されれば起動成功
# service netfs start
mounting filesystems:        [ OK ]

そしてマウントする
# mount -t nfs -o rw smb3.kinryokai.net:/SmbData /test1
これで /test1 に SmbData がマウントされコピー出来る。PWD変更
# cd /test1
sambaのデーター保存場所である /dev/SmbData/Data をマウント
# mount /dev/SmbData/Data /test2
そしてコピー開始
# cp -pr ./ /test2
これは保存容量にもよるが、数時間以上かかる(私は10時間以上かかった用な気がする)


投稿者: f-otake 投稿日時: 2017-11-3 13:58:26 (108 ヒット)
Linux (サーバー制作)

38:バックアップ用のホストを作り直す(2)より
実は前項で触れていませんでしたが、再起動は何回か行っております。その際

設定サーバーに問題があるようです
(/usr/libexec/gconf-sanity-check-2がステータス256で終了しました)
とウィンドウが表示されたり、ログイン画面の時
インストールに問題があります
GNOMEの電源管理,,,,,,,,,
等のエラーが出てたのですが、何回か前回の修正をしていくうちにエラーが出なくなりました。何かの設定と関連しているようです。
いよいよfstabでコメントアウトしている領域を作り、運用中のホストとシンクロさせます。
先ずはLVMの作成
私はsdaに3つのパーティションを作り、sda1はext4でフォーマットし、親ホストの / 領域にしています。
sda2とsda3のパーティションはLVMでさらに領域を作っています。
swap領域は1TBのHDDにありますが、これは壊れて以降、変更していないので、そのまま使えます。
それでは PV の作成
# pvcreate /dev/sda2
# pvcreate /dev/sda3
VGの作成
# vgcreate Kvm6 /dev/sda2
# vgcreate Data6 /dev/sda3
ボリュームグループをsda2にKvm6、sda3にData6と言う名前で作る。
ここで重要なのはVG名をオリジナルのホストのVG名とは違える事、さもないと何かの都合でオリジナルのホストにこのディスクをつなげるとエラーになる。
LVの作成
# lvcreate -L 13G -n web Kvm6
書式は lvcreate -L 割り当てるサイズ -n lvの名前 どのVGに作成するか
同様に、他のLVも作って行きます。
2017-11-13追記(これをしないと起動しません):

 起動Diskにするためにパーティションをmsdosにする(赤のアンダーラインはSHELLへのコマンド、青のは各アプリへのコマンド、緑は表示部分の注意する所)
画像1の説明、(この画像は例の為LVがtempになっています)
parted /dev/vg名/lv名 でパーティションをを作成
(parted)と表示されたら、現在の状況を見るため、pコマンド
パーティションテーブルがloopになっている(アンダーラインで見にくいが)
テーブルを変更する為にmklabelコマンド
ラベルとして msdos
警告には y
次にパーティションが無くなったので再度作成、mkpart
種類は p
ファイルシステムは ext4
開始は 1049K
終了は 14G
出来たか見るために、再度 p
出来たがブートフラグが経ってないので
set 1 boot on (これは領域1にbootフラグをセットと言う意味)
再度 p コマンド
テーブルがmsdosでブートフラグも立っている。
q コマンドで parted を終わる
一部作業の記入を忘れていました 2017ー11ー25
# losetup -f ← loopの空いている番号を調べる、初めてなら loop0
# losetup /dev/loop0 /dev/Kvm6/temp ← loop0にtempを指定
# kpartx -a /dev/loop0
2017-11-25追記ここまで
ここで ls /dev/mapper で見ると tempp1が出来ているので
mkfs.ext4 /dev/mapper/Kvm6-tempp1で領域をフォーマットする
ここで重要なのはlv名(ここではtemp)の直ぐ後にp1(パーティションの1)が付く名前にすること
2017-11-13追記ここまで

全部のLVにprted と フォーマットを行う
一様LVを確認
# lvscan
作成したLVが表示されて入ればOK、LVの名前もチェックする事。
念のため再起動し、コピー作業をしていきます。
バックアップ用のサブホストにmountしている領域は
色々なダウンロードファイルの保存場所である、/dev/Data/Download とメールソフトのthunderbird が使用している /dev/Data/Thunderbird です。
(thunderbirdはメールの保存場所を標準の設定から変更してここにある。こうするとホストの変更の際にメールデーターの移動が簡単になる)
先ずは運用中のサーバーでbaculaでリストアをして置く。
この辺の作業はここを参照してください
必要なデーターは smb3サブホストの /SmbData/kinryo/Restores/ 以下に kvm-Download と kvm-Thunderbird として出来る
smb3ではsambaが走っているので、windowsやLinuxから参照出きるので、先ずはDownloadから
# mount.cifs //192.168.XX.XX/kinryo /test1 -o username=administrator
一部伏せ字、パスワードを聞かれるので入力する。これで、smb3の /SmbData/kinryo以下のファイルが /test1にマウントされた。そしてPWD(現在のディレクトリ位置を表示するコマンドだが)変更
# cd /test1/Restores/kvm-Download
コピーされるLVMをマウント
# mount /dev/Kvm/Download /test2
そしてコピー
# cp -pr ./ /test2
同様に kvm-Thunderbird もやる
そして fstabの変更
# gedit /etc/fstab
/dev/sda1				/                  ext4       defaults 0 0
/dev/Swap/kvm			swap               swap       defaults 0 0
devpts					/dev/pts           devpts     gid=5,mode=620 0 0
proc					/proc              proc       defaults 0 0
sysfs					/sys               sysfs      defaults 0 0
tmpfs					/dev/shm           tmpfs      defaults 0 0
/dev/Data/Download	/Download          ext4       defaults 0 0 ← # を取る
/dev/Kvm/Thunderbird	/Thunderbird       ext4       defaults 0 0 ← # を取る
# mount -a
でmountし直す。そしてマウントしたデーターが正しいかチェックする
ここで念のため再起動

****** ここからは運用中のサーバーで
次はサブホストのルートになるコピーですがbaculaでrestoreしたデーターを使用する事にします。
(各サブホストは起動中なので、そのままコピーしたくない)
コピーしたいサブホストは WEB(web5)とsamba(smb3)の二つ、
又、resutoreされるデーターは smb3の SmbData/kinryo/Restoresの下にコピーされる様に設定してある。(restoreの最後に保存されるホストの設定が必要)
restoreはここを参照してください。
リストアが終了したら

******* バックアップ用のホストに移り
LVMにコピーをしていくので、マウント、
# mount /dev/Kvm6/web /test2
test2は事前に作ってある。そしてsambaに出来たデーターは既にkinryo以下にマウントしてあるので、
(サブホストweb5のルート以下のデーターは web-rootにリストアされている。)
作業しやすいようにPWDを変更
# cd /test1/Restores/web-root
そしてコピーをしていく
# cp -pr ./ /test2
コピーが終わったら、ダブリの修正、ダブっている物は
サブホスト名、サブホストのUUID、 IPアドレス、ディスクのUUID等、

先ずはホスト名の変更
# gedit /test2/etc/sysconfig/network
抜粋
HOSTNAME=XXXX.kinryokai.net ← XXXXの所を使いたいホスト名に変更

サブホストのUUIDは
# uuidgen
da4be530-b98f-4876-9a56-ddb71dfd1f30
で表示されたUUIDをコピーし、
# virsh edit web
textモードにしてから、名前を使いたいホスト名(hostnameと合わせるため)とUUIDを Shift+Ctrl+v でペーストし、esc : w q と順に押して保存し終了するがエラーが出た
エラー: operation failed: domain 'smb' already exists with uuid 62418b8a-cd51-48e2-6185-627ec437aa93
失敗しました。 再試行しますか ? [y,n,f,?]:
fでforceしても同じエラーになるので、仕方なしに n で保存しないで終了。
色々やったがよくわからない、もっと良い方法がありそうだが,取りあえず
/etc/libvirt/qemu/web5.xmlを他の場所にコピーし、それをエディターで修正後、
# virsh undefine web
で削除し、別の場所に修正保存しているweb.xml(ファイル名も変えた)を /etc/libvirt/qemu/ に切り取り後、コピーし
# virsh define /etc/libvirt/qemu/web.xml
で定義しなおしたら出来た。
邪道だが(もっとも上のやり方も邪道みたいだが)強引に web.xml のファイル名と各変更をし、メインホストを再起動しても出来た)
次はIP
# gedit /test2/etc/sysconfig/network-scripts/ifcfg-eth0
抜粋
IPADDR=192.168.ZZ.XX ←XXの所を使いたいアドレスに

次はディスクのUUIDだがumountしてからだが、blkidで確認しておく、そして
# umount /test2
# blkid
web6のUUIDを控えておいて
# tune2fs -U `uuidgen` /dev/Kvm/web6
これで、UUIDが変更になった筈だが、確認
# blkid

次はsambaのサブホストであるsmb6のコピー。これは /test1/Restores/smb-root にあるので
# cd ../smb-root
# mount /dev/Kvm/smb6 /test2
そしてコピー
# cp -pr ./ /test2
終わったらweb6の場合と同じように、ホスト名, IPアドレス、ディスクのUUID を変更してumount する。
40:バックアップ用のホストを作り直す(4)に続く


投稿者: f-otake 投稿日時: 2017-11-3 12:08:57 (127 ヒット)
Linux (サーバー制作)

まずはエラーの整理
1:私は色々な領域を / にmountしているが、ここはまだ出来ていない所があるのでエラーになるから、一時的に/etc/fstab を修正する
2:ネットワークカードのMACが違っているので、udev がエラーになり、ネットワークが使えない
3:hostnameがコピーの為ダブっている。
4:mysqld のスタートで失敗になる。
5:mcelog daemon が CPU is unsupported と表示が出る
又,起動時にネットワークが働いていないのでそこら中で時間がかかる(cups等)が気長に待つとログイン画面になる
最初にfstabの修正
# gedit /etc/fstab

/dev/sda1				/                  ext4       defaults 0 0
/dev/Swap/kvm			swap               swap       defaults 0 0
devpts					/dev/pts           devpts     gid=5,mode=620 0 0
proc					/proc              proc       defaults 0 0
sysfs					/sys               sysfs      defaults 0 0
tmpfs					/dev/shm           tmpfs      defaults 0 0 
#/dev/Data/Download	/Download          ext4       defaults 0 0 ← # を付けコメントアウト
#/dev/Kvm/Thunderbird	/Thunderbird       ext4       defaults 0 0 ← # を付けコメントアウト
コメントアウトした領域ままだ無いので
次はネットワークだが、エラーは
Device eth0 does not seem to be present, delaying initialization
と出る
原因はMACアドレスの違いなので、udevが誤検知するので
# gedit /etc/udev/rules.d/70-persistent-net.rules
# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="d0:50:99:25:XX:XX", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
上の2行はオリジナルのMACなので削除する

# PCI device 0x10ec:0x8168 (r8169)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="d0:50:99:95:XX:XX", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
上が本来のMAC、なのでeth1 を eth0 に変更する
そして保存。(一部伏せ字)次はIPの変更、このホストはブリッジがあるのでeth0ではなくbr0にIPの設定がある
# gedit /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
TYPE="Bridge"
ONBOOT=yes
IPADDR=192.168.XX.XX ← ここを使いたいIPアドレスに
PREFIX=24
GATEWAY=192.168.XX.1
NAME="br0"
(一部伏せ字)
ホスト名の変更
# gedit /etc/sysconfig/network
抜粋
HOSTNAME=XXXXX.kinryokai.net ← XXXXの所を使いたいホスト名に

mysqldのスタートの失敗を直す。
/etc/my.cnf を調べたがエラーになりそうな所は無い。
色々調べると /tmp のアクセス権が問題見たい。バックアップからリストアーしているのに何故だか解らないが /tmp のアトリビュートがrootしか書き込み出来なくなっていたので
# chmod 777 /tmp
で全てが書き込み可に。
mcelogのエラー
色々調べるとmcelogd は普通はいらないようです。なのでこれを走らない様にします。
# chkconfig mcelogd off
そして再起動、無事エラー無く起動した
39:バックアップ用のホストを作り直す(3)に続く


投稿者: f-otake 投稿日時: 2017-11-3 10:53:18 (100 ヒット)
Linux (サーバー制作)

ここにあるように、不注意(部品の問題も多々あり)でホストが壊れたので、早速バックアップ用のホストを作って行きますが、オリジナルのホストはBACULAでバックアップを取っているので、最初からインストールするのではなく、baculaからリストアーします。
実はもっと簡単な方法があります。運用中のホストを停止出来れば、サブホストに付けるSSD(HDD)をUSBでアタッチしてddコマンドでディスクを丸ごとコピーしてしまえばよい(私は250GBのSSDなので結構時間がかかるが)。あるいはサブホストだけならクローンを作る手もある(サブホストの停止が必要だが)ただ、ダブリが出てくるのでその対処が必要。
まずは、バックアップ用のホストに使用するSSDを初期化します。
このSSDを運用中のホストにUSBで継ぎ、
# parted /dev/sdc
(私の場合はsdcだが、皆さんの環境で違う)。
今ある領域を全部消す(rm 領域ナンバー)
その後、今運用中のホストと同じ順序、サイズで、新規にパーティションを作る(mkpart、詳しくはgoogle先生に聞いて)
その後、sdc1をフォーマット
# mkfs.ext4 /dev/sdc1
私はさらに領域2と3もあり、ここはlvmにしているが、この辺はCentOSが動いてから手当てする
ここで出来たsdc1をマウントする
# mount /dev/sdc1 /test1
test1は以前に作成済み。また、親ホストは /bootも含め すべてsda1(この場合はsdc1)にしている
ここでbaculaの出番、bacula-dir.confにリストアーする場所を指定するが、今回はこれを変更し、
restore jobに where = /test1 とし、baculaを再起動してからリストアをする。しばらくすると終わるので、
# umount /test1
で取り外し、バックアップ用のサーバーに接続する。
この辺の作業はここを参照してください
****ここからは バックアップ用サーバーでの作業****
まずはブートしてみるが、うんでもなければすんでもない、多分MBRがチャンとリストアーされていないと思う。
なので、CentOS 6.8 (実際は6.9になっているが)のインストール CDからブートし、LINUX RESUCURE を選ぶ、言語をJapaneseにしてキーボードをjp106を選び、
ネットワーク設定は不要で、続いて、続行(Contiue)を選ぶとSHELLが表示されるので
sda1は /mnt/sysimage にマウントされているので、これを / のするため
bash-4.1# chroot /mnt/sysimage
GRUBを走らす
bash-4.1# grub
rootの指定
grub> root=(hd0,0)
MBRを修正する(ここに詳しくある
grub> install (hd0,0)/boot/grub/stage1 d (hd0) (hd0,0)/boot/grub/stage2 p (hd0,0)/boot/grub/grub.conf
grub> quit
でGRUBを終了し、
bash-4.1# exit
で再起動する
無事、起動するがエラーがいっぱいだー。これはコピーをしているので、hostname, 固定IPアドレス等などがダブっているからだ
38:バックアップ用のホストを作り直す(2)に続く


投稿者: f-otake 投稿日時: 2016-6-14 20:43:31 (385 ヒット)
Linux (サーバー制作)

KVMを使用して普通にサブホストを作ると、領域1(イメージファイルやLVM)の中にさらに領域2を作って(複数の領域を作れるようにする為?、ルートやスワップなどの複数の領域為?)しまいます。画像0
ここで一番問題になるのはバックアップの方法です。私はbaculaを使用し、サブホストをバックアップしていますが、これでは完全なバックアップになりません。というのもこのバックアップは領域1の中の領域2をバックアップしているので、baculaでリストアしてもそのリストアしたデーター(領域2)をさらに領域1の中に入れ込まなければ、完全なサブホストのバックアップになりません。私はその方法が解りません(ddコマンドで作れそうですが??)
なので、一度作成したサブホストを、カーネルイメージから直接起動する様に変更しました。これでbaculaでリストアされたサブホストもそのままリストアできます。(領域の中に入れ込まなくてもよい)
只,わたしはKVMを正式に勉強したわけではなく、又、真剣にググった訳でもないので、かなりいい加減です(でもちゃんと動いています)
その過程の中で疑問に思ったのが、
仮想マシンマネージャーで、サブホストを指定し、開くアイコンをクリックし、開いたウィンドウの電球アイコンをクリックし、左ペインの Boot Options をクリックし、さらに右ペインで、Direct kernel boot をクリックすると展開された中に Kernel path:、initrd path:、kernel auguments: があり、最初の二つには Browse アイコンがあります。画面1。そこで、それらを選べますが、
ここで問題!この時点での作業はメインのOSでしているので、ブラウズ出来るのはメインの中だけです(サブホストはマウントされてない)でもサブホストの指定だよなー?
と言う訳で実験
1:メインのホストとサブホストに同じバージョンを入れる
 例:Kernel path: /boot/vmlinuz-2.6.32-642.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-642.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 ブートOK
2:メインのホストにはあるがサブホストにはない場合
 例:Kernel path: /boot/vmlinuz-2.6.32-573.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-573.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 途中で could not load /lib/modules/2.6.32-573.el6.x86_64/modules.dep: No such file or directory
 と表示されログイン出来る状態だが、まともに動かない筈。どういう事か、最初のブートではメインの/bootを見て,途中からサブホストの/libを見にいくが、サブホストにはないのでエラーとなっている。

3:サブホストにはあるがメインのホストにはない場合
 例:Kernel path: /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 ブートすらしない。
 Errot starting domain: unable to set user and group to '107:107' on '/boot/vmlinuz-2.6.32-642.1.1.el6.x86_64': No such directory
 と表示されブートが止まる。

ということは最初はメインのOSの /bootを見て、途中からサブホストを見ていることになると思う。
と言う訳でここから作業
まず、サブホストのvdaに指定される領域(私はLVM)をddコマンドでバックアップ
# dd if=vdaに指定されている領域 of=バックアップを保存する領域
サブホストのルート領域をマウントしますが、前に触れたようにこの中にさらに領域を作っているので
# lesetup -f
で使える最初のloop番号を調べる。何もしていなければloop0の筈
# losetup /dev/loop0 ddでバックアップされた領域
# kpartx -a /dev/loop0
# ls /dev/mapper
で展開された領域を調べる、loop0p1やloop0p2 等がある筈、私はここにはルート領域のみしか作っておらず、スワップや他の領域は別のlvでマウントしているので、あるのはloop0p1だけ
# mount /dev/mapper/loop0p1 /test1 ← 私はテスト用にこのdirectoryを作っている
これでサブホストのルート領域が/test1にマウントされた。私は/bootは別の領域にせず全部ここに入っている。
次にサブホストに使っている領域をフォーマット(私はLVM)
# mkfs.ext4 /dev/VG名/LV名
これで、このままではサブホストを二度と起動で出来ない!
# mount /dev/VG名/LV名 /test2 ← 私はテスト用にこのdirectoryを作っている
# cd /test1
# cp -pr ./ /test2
これで、しばらくするとコピーが終わるので、後処理
# cd
# umount /test1
# umount /test2
# kpartx -d /dev/loop0
# losetup -d /dev/loop0
これで準備が出来たので、前項の 1:メインのホストとサブホストに同じバージョンを入れる と同じように(もちろんカーネルバージョン等は自分にあわせる)Direct kernel boot を設定する。
尚、Kernel arguments: にvda になっているのは、DISK1 に VirtIOを指定している為、ここがIDEだと違うはず、/etc/libvirt/qemu/サブホストxml を見れば指定が解る。
これでサブホストを起動すれば問題ない。
2016ー6ー16追記:大嘘を言っていました。このままでは起動できません。と言うのもフォーマットをするとディスクのUUIDが変わり、grub.confにあるブートdiskが古いUUIDのままだからです。と言う訳でgrub.confを修正しますが、この際UUIDでなく、ディスク(vda)の指定にします。と言うのもサブホストのルートのディスクはVirtIOを使用し、素直に作ると、必ずvda になるからです。ですので再度マウントし、編集します。
# mount /dev/VG名/LV名 /test2
# gedit /test2/boot/grub/grub.conf

抜粋
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-642.1.1.el6.x86_64)
 	root (hd0,0)
	kernel /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64 ro 本当はここから次のタイトルの前までは1行
    root=UUID=467a31a2-d8b5-4b05-8878-0d65d0015be4/dev/vda ここを変更する
        rd_NO_LUKS LANG=ja_JP.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16
        crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM rhgb quiet
        enforcing=0 	initrd /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img
title CentOS (2.6.32-573.26.1.el6.x86_64)
以下省略、注:root=の指定は他にもあるので全部変更する

もう一つ変更しなくてはならないファイルがある。fstabです。
どうも私はディスクの指定にUUIDを使うのに抵抗がある。確かにsda1等を使うと、認識の順序が変更になると問題がありますが、LVMを使えばこの問題はなくなりますし、
今回の様に仮想化もvdaを使えばいいのです。ともかくfstabを修正
# gedit /test2/etc/fstab
抜粋
UUID=467a31a2-d8b5-4b05-8878-0d65d0015be4/dev/vda     /	ext4    defaults        1 1 UUID=...... を /dev/vda に修正
tmpfs                   /dev/shm                tmpfs   defaults        0 0
そして保存後、umountし、起動すればよい

PS:/etc/libvirt/qemu にある .xmlファイルの抜粋を参考の為に下記に示します。
普通にサブホストを作った時
  <os>
     <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
     <boot dev='hd'/>
   </os>

カーネルイメージからサブホストを直接起動する設定の時
  <os>
     <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
     <kernel>/boot/vmlinuz-2.6.32-642.el6.x86_64</kernel>
     <initrd>/boot/initramfs-2.6.32-642.el6.x86_64.img</initrd>
     <cmdline>root=/dev/vda</cmdline>
     <boot dev='hd'/>
   </os>
この様にDirect kernel bootで指定した"kernel, initrd, kernel argumenyts(cmdline)"が追加されています。
2016ー6ー16追記:今日sambaの入っているサブホストを同じようにやっている時、cp -pr ./ /test2 の所で、
cp: preserving permissions for `/test2/./var/lib/samba/sysvol/kinryokai.net/scripts': サポートされていない操作です
cp: preserving permissions for `/test2/./var/lib/samba/sysvol/kinryokai.net/Policies/
{31B2F340-016D-11D2-945F-00C04FB984F9}/USER': サポートされていない操作です 本当はこの行は上の行と同じ行です。
以下省略
とエラーがいっぱい出ていた。エラーの所を見ると
# ls -la /test1/var/lib/samba/sysvol/
合計 20
drwxr-xr-x+ 3 root    root    4096 12月 17 17:52 2015 .
drwxr-xr-x. 7 root    root    4096  1月 30 22:18 2015 ..
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 kinryokai.net
ちょっと見にくいが + が付いているのでACLが効いているので、エラーになった見たい。でも /test1 と /test2 を比較しても、パーミッション、オーナー、ファイルの数やサイズを見てもまったく同じであるので正しくコピーされている見たい。それでこのサブホストを起動しWindowsからファイルサーバー(アクティブディレクトリーを使用したsamba)をテストしたが問題ない見たい。
でもコピーされた方にはACLの設定がなされてない見たい。これは問題、色々ググったらcpはACLに対応していないそう。Starと言うのが対応しているみたいなので、近日この項に結果を書きます。
2016-6-19追記:色々トライしてみましたが、getfact, setfaclを使用するのが簡単だった
まずはオリジナルのvdaをマウントするが、例によって領域の中に領域なので
# losetup /dev/loop0 ddでバックアップされた領域
# kpartx -a /dev/loop0
でloop0に本来ルート領域をマウントする(画像0の領域2)
# ls /dev/mapper/
でマッパーを見るとloop0p1等がある。
# mount /dev/mapper/loop0p1 /test1
で/test1にマウントして、
# cd /test1/var/lib/samba/
で該当個所に移動
# getfacl -R * > /root/acl-backup
でACLをバックアップ。
次に使用しているvdaをマウントしますが、ACLの設定をするので
# mount -o rw,acl /dev/VG名/LV名 /test2 私はLVMを使用
でオプションで ACLなどを指定し/test2にマウント
# cd /test2/var/lib/samba/
で該当個所に移動
# setfacl --restore=/root/acl-backup
でリストアする。
ACLの確認
# ls -la sysvol/kinryokai.net/
合計 32
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 .
drwxr-xr-x+ 3 root    root    4096 12月 17 17:52 2015 ..
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 Policies
drwxrwx---+ 2 3000017 3000000 4096  6月 27 20:50 2014 scripts

他のディレクトリーも調べたがOKだった。
あと、ACLの設定をしたので fstabを変更する(変更しないで起動するとACLの設定が反映されていなかった)
でも、領域の中に領域を作った(つまりオリジナル)vdaで起動すると fstab にはACLの設定が無いが、ACLの設定は反映している!
何で!!ともかくfstabの変更
# gedit /test2/etc/fstab
抜粋
/dev/vda   /          ext4       defaults,acl   0 0 ← ,aclを追記
保存後、後始末
# cd
# umount /test1
# umount /test2
# kpartx -d /dev/loop0
# losetup -d /dev/loop0
でもって、起動すればOK
2016-6-21追記
色々調べると、現在は tarも--aclオプションがあり対応しているようですので、その方法
サブホストの領域をフォーマットするまでは同じですが、これをマウントする所からが違います。
# mount -o rw,acl /dev/VG名/LV名 /test2
でオプションで ACLなどを指定し/test2にマウントしておきます。
次に/test1にマウントしたルート領域を tarで保存します。
# cd /test1
# tar --acls -cvf /tmp/subroot.tar ./
この様に --aclsオプションを付けて保存します。私はこのtarファイルが7GB弱になりましたので、保存場所(この場合は/tmp)の空き容量に注意してください。
これを復元します。
# cd /test2
# tar -xvf /tmp/subroot.tar -C ./
これで/test2に割り当てた領域にサブホストのルートがacl付きで保存されます


投稿者: f-otake 投稿日時: 2016-4-28 14:01:13 (374 ヒット)
Linux (サーバー制作)

今のサーバーはバックアップも取っていますが、まったく同じサーバーをもう一台製作し、rsyncで同期をして、何かあればすぐに予備サーバーに切り替えられる様にします。ただし予備のサーバーは普段は電源を落としておき、一日1回タイマーで立ち上げ同期を取ってシャットダウンします。
方針:予備のサーバーは一日1回UEFI(BIOS)のタイマーを使い立ち上げて、その後シャットダウンをする(省エネ化)
問題:予備のサーバーをシャットダウンするタイミングはどうするか?
 現状では名案が無いので、時間を見計らってシャットダウンする。
rsyncを走らすタイミング
 UEFI(BIOS)のタイマーで立ち上げった時、KVMホスト、全てのサブホストを起動し、起動時にスクリプトを走らすことが出来る /etc/rc.d/rc.local に起動スクリプトを記入していく。

まずは、現状のサーバーと同じサーバーを作ります。そして予備サーバーの設定をしていきます。
最初はUEFI(BIOS)の設定
 私の場合はマザーボードにASRockのAM1HーITXを使っていますので、設定は当然このマザーボードのもので。まず電源を入れDELキーでEUFIの設定画面を出し、Advanced → RTC Alarm Power On → Enble と選び、新しいウィンドウが開きますので、Every day をクリック後、時間:分:秒 を設定したらOKをクリックし、さらに設定を保存しEUFIを抜けます。
次にサブホストのシャットダウン時の設定
 ここを Resume にしていると、KVMホストが起動してもサブホストが起動では無く、Resumeしてしまい。起動スクリプトが走ってくれませんので、KVMホストがシャットダウンする時サブホストもシャットダウンする設定をします。この設定は /etc/init.d/libvirt-guests で設定します。
このスクリプトの

ON_SHUTDOWN=shutdown ← ホストがシャットダウンしたらゲストもシャトダウンする

にした。参考にした中には SHUTDOWN_TIMEOUT や START_DELAY を変更しているのもあったが、私はデフォルトのまま。これでホストをシャットダウンしたらゲストもシャットダウンする。又、ON_BOOT=start にしていると、ホストがシャットダウンするときに走っていたコンピューターがホストが起動するとゲストも起動するようになる。ここを参照
これで起動とサブホストのシャットダウンはうまくいく。
今度は本チャンのコンピューターとの同期である。これにはrc.local を使いrsyncで同期する。
rsyncの書式は rsync [option] SOURCE [SOURCE]... DEST でソースは複数指定できる。
(rsyncの設定はここを参照)
早速rsyncの設定をしていく。rsyncはリモートからリモートへの同期は出来ないので、各ホスト毎に設定が必要になる。まずはバックアップ元(SOURCE)でrsyncをデーモンで走らせておく(この方が何かとやりやすかったので)
最初にrsyncd.confの設定(この設定を全ての同期元のサーバー全部に設定していく)
# gedit /etc/rsyncd.conf
# Global options
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 192.168.XX.XX/24
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

# Module options
[Thunderbird]
         comment      = rsync server
         path         = /Thunderbird
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
[Download]
 	 comment      = rsync server
         path         = /Download
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
この設定の意味はrsyncをrootユーザーで走らして、chrootを可能にし、ローカルネットワーク(一部伏せ字)からのみRQを受付、圧縮しない拡張子を指定し、バックアップされる部分を指定している。注意するのはrsyncで指定するのは[ ]で指定した文字列になること。例えば
[abc]
     path=/XXX/YYY/CCC
としたらCCCディレクトリーの指定は abc になる。又、ここにある /etc/rsyncd.secrets に ユーザー名:パスワード の書式でを設定しておく。又、複数のユーザーが可能だが一行毎に記入しておく。大事なのはこのファイルのパーミッションを600にしておかないとエラーになる。そしてrsyncをデーモンモードで起動する。
# rsync --daemon --config=/etc/rsyncd.conf
これらを同期したい全てのサーバーに指定して置く。
次はバック先のホストの設定
先ずは予備のKVMホストの設定だが、rsyncdにパスワードを設定してあるのでそのファイルを作る。
/etc/rsync.passwd にバックアップ元で指定したパスワードのみを記入しておく(ユーザーはrsyncコマンドの中で指定する)。このファイルもパーミッションを600にしておかなければならない。
/etc/rc.d/rc.localに下記を追記
freshclam ← 予備のコンピューターはいつもは電源が入っていないのでVirusデーターのアップデートをする
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Thunderbird/ /Thunderbird
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Download/ /Download
私の場合は /Thunderbird (メールのデーター)と /Download(色々なダウンロードした物の置き場所)を同期した。--delete でバックアップ先にあってバックアップ元に無い物はdeleteされる(完全に同期)。パスワードファイルを指定し、rsync://root@ でユーザーを指定している。大事なのはバックアップ元の最後の / の指定、これが無いとバックアップ先のディレクトリーの下にバックアップ元のディレクトリーを作ってしまう。
これと同じように全てのバックアップ先のホストで指定する。
これで一様同期する筈だが、このままではシャットダウンしない。色々試したが、全ての同期に一時間もいらないので(毎日同期しているので)メインのホストでcron.dに設定を入れる。
# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root shutdown -h now
この設定は毎日午前3時10分にシャットダウンする(UEFIで午前2時に起動する設定をしている)
これを /etc/cron.d に Shutdwn(オーナーはroot、わざとshutdownにしていない)として保存する。
これで午前2時にEUFIのタイマーで起動し、午前3時10分にシャットダウンする筈。
あれ!シャットダウンしないぞ、何でだ??原因調査中
エラーメールが着ていた。内容は
/bin/sh: shutdown: command not found
だと!スペル間違えてないよなー、shutdownは確か/sbinにあったと思うので、/etc/cron.d/Shutdwnを下記に変更
# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root /sbin/shutdown -h now
。テストの為に今の時間の5分後に変更して試すと。無事シャットダウンしてくれたので、時間を戻し、保存。


投稿者: f-otake 投稿日時: 2014-11-13 14:00:11 (985 ヒット)
Linux (サーバー制作)

現行のサーバーのバックアップ用にもう一台同じ仕様のサーバーを作っている時、ネットワーク越しにDDコマンドが使えるか探すとここに回答があった。
考え方は dd コマンドの出力側と受け側に分け、間を nc コマンドでつなぐ見たいになっている。
まずは現行のサーバーの方で
# dd if=/dev/Kvm/web4 | nc 192.168.135.35 12345
if=の後ろは例によって領域(device)の指定。私はLVMでサブホストのルート領域を作っているのでこんな風になっている。普通なら /dev/sda1 とかかな
パイプ(|)の後は nc コマンド(netcat)の略らしい。その後のIPアドレスはバックアップ用のサーバーのIPアドレス、次の数字が使用するポート番号
ーーーーーーーーーーーーーーーーーーー
バックアップ用サーバーに移って
# nc -l 12345 | dd of=/dev/Kvm/web5
-l で nc をリッスンモードにし、同じポート番号にして、パイプの後は dd コマンドの後ろの設定
同じホスト間での dd だったら、上記は dd if=/dev/Kvm/web4 of=/dev/Kvm/web5 となるが、これを出力側(if)と受け側(of)に分けている。
ネットワークはギガビットだが思ったより早く終了した。多分同じホスト間より早いくらい。
これには理由がある。私はサブホストのルート領域、データー部分などを1台のSSDの押し込めているので(サーバーを小さく作りたい)出力側も受け側も同じディスクを指定する事になるからだと思う。


投稿者: f-otake 投稿日時: 2014-6-15 11:05:10 (396 ヒット)
Linux (サーバー制作)

先日、Redhat Enterprise Version 7 がリリースされ、CentOS 7 も間もなくとのアナウンスがあった。RedHatのリリースを読むと(ほんの一部分だけだが)、デフォルトのファイルシステムが ext4 から XFS に変更になり、MySQLがMariaDBに変更され、Microsoft Active Directory (AD) support(この意味がよくわからないが、sambaのバージョン4は既にアクティブ・ディレクトリーがサポートされている。デフォルトではバージョン3の様だったのでそのせい?)がサポートされるそうだ。
ここまで変更されると、このサーバーはCentOS7を待って、作り直した方が良さそうなので、製作を一時中断します。
2014ー07ー10追記:先日、CentOS バージョン7がリリースされた。早速製作しようと思ったが、少し調べてみる。
バージョン6からのアップグレードがサポートされているようだ。その場合ファイルシステムは?(ext4:XFS)、データーベースは?(mysql:mariaDB)。特にmysqlはそこら中のプログラムで使っており、変に変更されても困る(多分変更されないと思うが)。また新規に作っていくとデフォルトのDBはmariaDBなので多分互換性はかなりあるとは思うがどうなのか?mysqlを使っているのは、postfix, xoops, bacula, phpmyadmin, webmail(roundcube)
もう少しすればWEBに諸先輩方が参考になるコンテンツをアップしてくれると思うので、他人任せだが、もう少し様子見。


投稿者: f-otake 投稿日時: 2014-6-12 11:45:04 (518 ヒット)
Linux (サーバー制作)

参考URL:https://www.kinryokai.net/modules/news/article.php?storyid=162
 http://centossrv.com/postfix-targrey.shtml
現時点(2014-06-12)ではpostfixとpostgreyのバージョンは参考URLの前者と同じです。
2014年9月8日にやっと本運用になりました。今の所不具合はありませんが、何かありましたらここで発表します。
遅延応答したら即座にSMTPプロセスを終了するパッチを施行したPOSTFIX (rpm):ここをクリック
targreyパッチをあてたpostgrey (rpm): ここをクリック
ここからは、上の二つのファイルをrootにダウンロードした前提で進めます。
まずはpostfixのインストール
# rpm -Uvh --force /ダウンロードしたdirectory/postfix-2.6.6-2.2.el6_1.x86_64.rpm
インストールの確認
# rpm -qa|grep postfix
postfix-2.6.6-2.2.el6_1.x86_64 と表示されればOK
次にpostgreyですがその前に必要なパッケージのインストール
# yum -y install postgrey && rpm -e postgrey
注:2014-08-02:今日テストしたらエラーが出た。本来はEPELのミラーに在る筈だが、無くなっているみたい。私の場合はEPELのミラーはftp,iij.ad.jpに設定されているが、ここには無くなっている。試しにftp,riken.jpもチェックしたがやはり無い。でも本家のhttp://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/postgrey.htmlには置いてある。どうなっているんだ!!ともかくこれは付随してインストールが必要なパッケージのためのコマンドなので、無視して直接次に進んでもよい。但し環境によっては、必要なパッケージをインストールしろと言われるかも?必要なのは色々な下記のperlのパッケージなど」
これは perl-BerkeleyDB perl-IO-Multiplex perl-Net-DNS perl-Net-Server をインストールするため
# wget apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/perl-Parse-Syslog-1.10-1.el6.rf.noarch.rpm
# rpm -ivh perl-Parse-Syslog-1.10-1.el6.rf.noarch.rpm
でpostgreyのインストール
# rpm -Uvh /ダウンロードしたdirectory/postgrey-1.34-1.rf.noarch.rpm
/etc/postfix/main.cfの設定

smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    permit_auth_destination,
    reject_unauth_destination,
−−追加(ここから)−−
    check_recipient_access hash:$config_directory/whitelist_recipient
    check_client_access    hash:$config_directory/whitelist_client
    check_client_access    regexp:$config_directory/permit_client_nots25r
    check_policy_service   inet:60000
    permit

smtpd_data_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    check_recipient_access hash:$config_directory/whitelist_recipient
    check_client_access    hash:$config_directory/whitelist_client
    check_client_access    regexp:$config_directory/permit_client_nots25r
    check_policy_service   inet:60000
    permit
−−追加(ここまで)−−

taRgrey用Postfix設定ファイルダウンロード
# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
解凍
# tar zxvf postfix.conf.2.tar.gz
各ファイルをコピー
# cp postfix.conf.2/whitelist_recipient /etc/postfix/
# cp postfix.conf.2/whitelist_client /etc/postfix/
# cp postfix.conf.2/permit_client_nots25r /etc/postfix/
# rm -fr postfix.conf.2/
# rm -f postfix.conf.2.tar.gz
whitelist_recipientのDB化
# postmap /etc/postfix/whitelist_recipient
whitelist_clientのDB化
# postmap /etc/postfix/whitelist_client
/etc/rc.d/init.d/postgreyの設定
#OPTIONS="--unix=$SOCKET" ←コメントアウト
OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600" ←追記

postgreyの起動、postfix再起動など
# service postgrey start
# chkconfig postgrey on
# service postfix restart
その後メールのテストをする
postfixにパッチを当てているため、自動アップデートを無効にする。
# yum -y install yum-versionlock
# sed -i 's/enabled = 0/enabled = 1/g' /etc/yum/pluginconf.d/versionlock.conf
# touch /etc/yum/pluginconf.d/versionlock.list
# rpm -q postfix >> /etc/yum/pluginconf.d/versionlock.list
# rpm -q postgrey >> /etc/yum/pluginconf.d/versionlock.list
postfixのアップデートがあったらメールで知らせてくれるスクリプトの作成。もっともソースもアップデートされていなけば出来ないが
# gedit /etc/cron.daily/yum-check-update
#!/bin/bash

# versionlockパッケージアップデートチェックスクリプト

YUMTMP=$(mktemp)
for pkg in `cat /etc/yum/pluginconf.d/versionlock.list`
do
    chkname="$chkname `rpm -qi $pkg|grep Name|awk '{print $3}'`"
done
yum --noplugins check-update $chkname > $YUMTMP
[ $? -eq 100 ] && cat $YUMTMP
rm -f $YUMTMP

# chmod +x /etc/cron.daily/yum-check-update
アップデート検知時はroot宛にメール通知されるので、最新版で再インストールする


投稿者: f-otake 投稿日時: 2014-6-7 10:11:12 (428 ヒット)
Linux (サーバー制作)

一通り設定が終わったので、再度見直しておきます。エラーの殆どは設定ファイルのスペルミスとか記入漏れです。
このメールサーバーは本チャンで動いているサーバーと同じネットワーク・レンジにあり、ルーターの設定は本チャンのメールサーバーに転送する設定ですので、外部からはテスト出来ません。このホストはKVMのサブホストとして動いていますので、とりあえず親ホストにthunderbirdをインストールし、設定して行きます。マイグレーションを簡単にするためにホスト名は現在本チャンのサーバーと被っていますので、thunderbirdのホストの/etc/hostsにこのメールサーバーを登録しておきホスト名で問い合わせ時にこのサーバーのIPアドレスを返すようにしておきます。
次にpostfixadminでドメインやメアドを作り、それをthunderbirdに設定して送受信をテストします。その際外のメアドには発信が出来ますので、自分のISPのメアドにもコピーを入れメールが来るのを確かめておきます。うまくいかない時は /var/log/maillog にログがありますので参考にします。
テストが終わったら暗号化をしていきます。
 *サーバー証明書作成
参考URL:http://centossrv.com/postfix-tls.shtml
# cd /etc/pki/tls/certs/
# make mail.pem

前略
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Shinjuku ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:centossrv.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.centossrv.com ← メールサーバー名応答※
Email Address []:postmaster@centossrv.com ← 管理者メールアドレス応答

# cd
 main.cfの変更、下記のコードのコメントを取って有効化
# gedit /etc/postfix/main.cf
前略
# SMTPS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

 master.cfの変更、下記のコードのコメントを取って有効化
# gedit /etc/postfix/master.cf
前略
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
後略

参考URLではtlsmgrのコメントを取っていましたが、デフォルトで外れていました。
ここで、postfixと念のためdovecotも再起動
# service postfix restart
# service dovecot restart
再度一連のテストをやって確かめておく。


投稿者: f-otake 投稿日時: 2014-6-6 21:18:19 (893 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
mysql関連のドライバーのインストール
27:メールサーバーの設定:前提条件でインストールしましたが、やっていなければphp-imapとdovecot-mysqlをインストールしておきます。
/etc/dovecot/conf.dにある設定ファイルを設定していく
# gedit /etc/dovecot/conf.d/10-auth.conf

変更箇所のみ記載
disable_plaintext_auth = no ← プレーンテキストのパスワードを扱うので no に変更
auth_mechanisms = cram-md5 plain login ← 右辺変更
#!include auth-system.conf.ext ← システムの認証は使わないのでコメントアウト
!include auth-sql.conf.ext ← mysqlで認証するので
# gedit /etc/dovecot/conf.d/10-mail.conf
変更箇所のみ記載
mail_location = maildir:/Mail/%d/%n ← 右辺の変更、これはドメイン/ユーザー名
first_valid_uid = 10000
first_valid_gid = 10000
maildir:/Mail/%d/%nの最後を%uにするとメアドになる。postfixadminで設定したものと合わせる事
gedit /etc/dovecot/conf.d/10-master.conf
変更箇所のみ記載
service auth {
中略
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth { ←コメントを外す
    mode = 0666 ←コメントを外す
  } ←コメントを外す

gedit /etc/dovecot/conf.d/20-imap.conf
変更箇所のみ記載
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep ← コメントを外す

gedit /etc/dovecot/conf.d/20-pop3.conf
変更箇所のみ記載
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh ← コメントを外す

dovecot-sql.conf.extの作成
/usr/share/doc/dovecot-2.0.9/example-config/にサンプルがあります。
gedit /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=xxxxxxxx
default_pass_scheme = PLAIN
user_query = select concat('/Mail/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1';
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1';
dovecotをスタートする
# service dovecot start
# chkconfig dovecot on
やっと終わったので次はテストと暗号化を行う


投稿者: f-otake 投稿日時: 2014-6-6 19:31:58 (775 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
今まではlocalのメールはaliasesでkinryokai.netに転送出来ていましたが。localメールもvirtualを使用するようにしたので、転送出来なくなりますので、localのメールはISPのメアドに転送するようにします。
私はメールソフトはthunderbirdを使用しておりますので、フィルターの設定で、そのサーバー用のディレクトリーを設定していますので問題はありません。
# gedit /etc/aliases

前略
root: ISPのメアド

# newaliases
次にvirtual専用のユーザーを作ります
# groupadd -g 10000 vuser
# useradd -g vuser -u 10000 -s /sbin/nologin vuser
 *postfixの設定ファイルの編集(抜粋)
# gedit /etc/postfix/main.cf
変更箇所のみ
myhostname = mail.kinryokai.net ← 自分のホスト名
mydomain = kinryokai.net ← 自分のドメイン
myorigin = $mydomain ← 変更
inet_interfaces = all ← 変更
inet_protocols = ipv4 ← ipv4しか扱わない
mydestination = ← 右辺は必ずブランク
home_mailbox = Maildir/ ← #を取り有効化
header_checks = regexp:/etc/postfix/header_checks ← #を取り有効化
smtpd_banner = $myhostname ESMTP unknown ← #を取り右辺変更
#ここから下を追記
message_size_limit = 52428800
mailbox_size_limit = 9663676416
virtual_mailbox_limit = 9663676416

disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_sender_restrictions = reject_unknown_sender_domain

# Virtual Domains with MySQL
#local_transport = local
local_transport = virtual
#virtual_transport = virtual :デフォルト見たい
virtual_mailbox_base = /Mail
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
#virtual_alias_domains = $virtual_alias_maps :デフォルト見たい
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 10000
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

# SMTP AUTH
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions =
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_client,
    reject_rbl_client all.rbl.jp,
#    reject_rbl_client zen.spamhaus.org,
#    reject_rbl_client bl.spamcop.net,
    check_client_access hash:/etc/postfix/access,
    permit
smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    permit_auth_destination,
    reject_unauth_destination,
    reject

# SMTPS
#smtpd_use_tls = yes
#smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
#smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
#smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
SMTPSは全部コメントアウトしていますが、テスト後有効にするために記入して置きます。reject_rbl_clientはあまり多くすると遅くなるので、様子を見ながら有効化します。
smtpd_client_restrictions=に check_client_access hash:/etc/postfix/access,がありますが、デフォルトでは全てコメントアウトして存在しています。書式は文中に記入がありますが
IPアドレス REJECT で拒否するIP
IPアドレス OK でアクセプトするIPです。
又、IPを 1.2.3 のように記入すればIPレンジになります。
運用後に設定すればいいでしょう。

 *mysql関連の三つのファイルを作成
# gedit /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

# gedit /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'

# gedit /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

header_checksの編集
# gedit /etc/postfix/header_checks
/^From:.*<#.*@.*>/ REJECT
/^Return-Path:.*<#.*@.*>/ REJECT

を最後にでも追記
main.cfに check_client_access hash:/etc/postfix/access, と設定しているので、そのDBを作ります。
# postmap /etc/postfix/access
このアクセスリストの記入方法はhttp://www.postfix-jp.info/trans-2.2/jhtml/access.5.htmlに説明があります。自分でこのリストを変更したら、必ず上記のコマンドでDBを更新して置きます。
次はdovecotの設定です


投稿者: f-otake 投稿日時: 2014-6-6 13:59:32 (2715 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
http://sourceforge.net/projects/postfixadmin/files/latest/downloadから最新版のpostfixadminをダウンロード(2014-06-04現在はpostfixadmin-2.91.tar.gz)
ダウンロードしたディレクトリーに移り
# tar zxvf postfixadmin-2.91.tar.gz
出来たディレクトリーを自分のWEBのルートにコピーし、名前をpostfixadminに変更しておく。
mysqlにデーターベースを作り、パスワードなどを設定
# mysql -p
パスワードを入力後
mysql> CREATE DATABASE postfix;
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
mysql> quit
注:ある時テスト中に CREATE USER をするとエラーが出た

ERROR 1396 (HY000): Operation CREATE USER failed for 'postfix'@'localhost'
これはpostfix userをした後に行ったら出たエラー。ここに理由があった。ここによるとdeleteしただけでは完全に消去されず、DROP USER をするとよい。
次にインストールしたpostfixadminの下にあるconfig.inc.phpの設定(変更箇所のみ抜粋)
$CONF['configured'] = true; ← trueに変更
$CONF['default_language'] = 'ja'; ← jaに変更
$CONF['database_password'] = '設定したパスワード';
$CONF['encrypt'] = 'cleartext'; ← cleartextに変更
$CONF['show_password'] = 'YES'; ← YESに変更
$CONF['page_size'] = '50'; ← 50に変更
$CONF['default_aliases'] = array (
    'abuse' => 'abuse@kinryokai.net', ← ドメイン部分を変更
    'hostmaster' => 'hostmaster@kinryokai.net', ← ドメイン部分を変更
    'postmaster' => 'postmaster@kinryokai.net', ← ドメイン部分を変更
    'webmaster' => 'webmaster@kinryokai.net' ← ドメイン部分を変更
$CONF['aliases'] = '0'; ← 0に変更
$CONF['mailboxes'] = '0'; ← 0に変更
$CONF['maxquota'] = '0'; ← 0に変更
$CONF['domain_quota_default'] = '0'; ← 0に変更
$CONF['vacation_domain'] = 'autoreply.kinryokai.net'; ← ドメイン部分を変更
$CONF['header_text'] = ':: kinryokai.net ::'; ← 右辺を変更
$CONF['footer_text'] = 'Return to kinryokai.net'; ← ドメイン部分を変更
$CONF['footer_link'] = 'http://kinryokai.net'; ← ドメイン部分を変更
$CONF['emailcheck_resolve_domain']='NO'; ← NOに変更
$CONF['create_mailbox_subdirs_prefix']=''; ← ""に変更
保存後ブラウザから localhost/postfixadmin/setup.php にアクセスすると
Error: Smarty template compile directory templates_c is not writable.
Please make it writable.
If you are using SELinux or AppArmor, you might need to adjust their setup to allow write access.

Warning: Depends on: IMAP functions - NOT FOUND
To install IMAP support, install php5-imap
Without IMAP support, you won't be able to create subfolders when creating mailboxes.

と二つのエラーが表示された。一つ目はtenplates_cが書ける様になっていないと。又SELINUX等を使っていたら調整が必要だと。SELINUXは使っていないので、書き込めるようにするが、この際グループも変更しておこう。pwdをWEBのルートのディレクトリーに変更したら
# chown -R .apache postfixadmin
# chmod 770 postfixadmin
二つ目はphp5-imapをインストールしろとあるが、CentOSは
# yum install php-imap
変更したら再度アクセス、すると画面1が表示される。下の方にある Change setup password の下のパスワードのBOXは config.inc.php に設定するパスワードだが入力後は暗号化された分が表示される。
設定したいパスワードを2ヶ所に入れ、generate pasword hash をクリックすると
$CONF['setup_password'] = 'ホニャララ';
と表示がある筈。
config.inc.php にある $CONF['setup_password'] = 'changeme'; のchangemeの代わりにホニャララを設定し再度アクセスすると、画面2が表示されます(画面上部はカッとしてあります)
Setup password には今設定したパスワード、管理者にはメアドを設定しますが、メールサーバーはまだ出来ていませんのでISPのメアドでも入れ、パスワードを2回入力後、管理者追加をクリックします。再度同じような画面が表示されますが、これはさらに管理者を追加出来る為です。又、以前のバージョンでは setup.phpは消去しなくてはなりませんでしたが、必要なくなりました。今後の管理者の追加をする時の為にそのままにしておきます。
ブラウザから locahost/postfixadmin にアクセスすると画面3が表示され、今設定した管理者(メアド)とパスワードを入力し、ログインをクリックすると画面4が表示されます。
ここではこれ以上の説明は行いませんが、ドメインやメアドを作っていくのはそんなに難しくありません。それぞれの所をクリックすれば見当がつくと思います。
又、一般ユーザーは自分のパスワードを変更できますので、WEBのURL/postfixadmin/users/login.php を知らせておきます。
postfixadminからドメインやユーザーを削除してもデーターベースからは削除されますが実態であるディレクトリーなどは削除されません。私はドメインやユーザーの削除はほとんど無いので万が一あった場合はマニュアルで削除する事にしましたが、自動で行いたい時はhttp://e-garakuta.net/techinfo/doku.php/linux/postfix-virtualの”削除処理”に方法が記載されています。又、アクセスした時にお知らせが表示されるのですが、昔は別のファイル(motd.txt, motd-user.txt)で設定していたのですが、これらのファイルはなくなっており、config.inc.phpに$CONF['motd_user'] = '';等と設定がり、ここに記入するようになった見たいです。
次はpostfixの設定:https://www.kinryokai.net/modules/news/article.php?storyid=236





(1) 2 3 »
テーマ選択

(4 テーマ)
ミニカレンダー
前月2018年 6月翌月
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
<今日>
ピックアップ画像
11.01鐔
最近の画像
人気画像
ギャチュンカ... (4747 hits)
ギャチュンカ...
ゴーキョピー... (4669 hits)
ゴーキョピー...
タムセルク残... (4616 hits)
タムセルク残...
ばあちゃんミ... (4583 hits)
ばあちゃんミ...
ヒマラヤ壁 (4567 hits)
ヒマラヤ壁
Powered by Xoops2 Theme Modified by F-Otake
copyright (c) 2006 All rights reserved.