2016年2月20日土曜日

ソフトウェアRAIDからハードウェアRAIDへ移行(データ用HDDのバックアップ)

SATAでRAID10になっている4台のHDDをRAIDカードに繋ぎかえるため、バックアップ用4TBに退避。

partedでパーティションを作成。
[root@papa ~]#parted /dev/sdb
(parted) mklabel gpt
(parted) unit s
(parted) mkpart backup 2048s -1s
(parted) set 1 lvm on
(parted) p
Model: ATA ST4000DM000-1F21 (scsi)
Disk /dev/sdb: 7814037168s
Sector size (logical/physical): 512B/4096B
Partition Table: gpt
Disk Flags:

Number  Start  End          Size         File system  Name    Flags
 1      2048s  7814037134s  7814035087s  ext4         backup  lvm
(parted) q

4TBのHDDをLVMで作る。3.6TB。
[root@papa ~]# pvcreate /dev/sdb1
[root@papa ~]# pvdisplay -C
  PV         VG     Fmt  Attr PSize   PFree
  /dev/sda2  centos lvm2 a--  417.25g 4.00m
  /dev/sdb1         lvm2 ---    3.64t 3.64t
[root@papa ~]# vgcreate -s 64m VGhome /dev/sdb1
[root@papa ~]# vgdisplay -C
  VG     #PV #LV #SN Attr   VSize   VFree
  VGhome   1   0   0 wz--n-   3.64t 3.64t
  centos   1   2   0 wz--n- 417.25g 4.00m
[root@papa ~]# lvcreate -L 3.6t -n home VGhome
[root@papa ~]# lvdisplay -C
  LV   VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home VGhome -wi-a-----   3.60t
  root centos -wi-ao---- 410.00g
  swap centos -wi-ao----   7.25g

homeのスナップショットを作る場合こんな感じ
[root@papa ~]# lvcreate -s -L 36.93g -n home_snap /dev/VGhome/home
[root@papa ~]# lvdisplay -C
  LV        VG     Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  home      VGhome owi-a-s---   3.50t
  home_snap VGhome swi-a-s--- 36.93gg      home   0.00
  root      centos -wi-ao---- 410.00g
  swap      centos -wi-ao----   7.25g

xfsでフォーマット
[root@papa ~]# mkfs.xfs -m crc=1 /dev/VGhome/home
中々終わらなくて変だと思ったらスナップショットを作っていたからだった。
[root@papa ~]# lvremove /dev/VGhome/home_snap
lvremoveで削除したらすぐに終わった。

システム、データをバックアップ
mount /dev/VGhome/home /backup/
mkdir /backup/backup
xfsdump -J - /      | xfsrestore -J - /backup/backup/
dump 0af - /home | ( cd /backup/backup/home && restore rf -)
2.1TBぐらいあるので今日はここまで。

ソフトウェアRAIDからハードウェアRAIDへ移行(システムHDD)

間違えてデータ消えたら悲しいので別のPCにRAIDカードとHDDを繋いでOSをインストール。
その後、元のPCに繋ぐ

SATA
0,1      システム(80GBのRAID1)
2,3,4,5 データ(2TB*4のRAID10)
RAIDカード
0,3      システム(500GBのRAID1)  <- OSインストール、アップデート済み。

旧システムを移行させる。cp -pRとかだとうまくいかず、最終的にはxfsdimp,xfsrestoreで移行。

mount /dev/centos/root /mnt
cd /mnt
cp -pR etc etc.org
rm -rf etc.org以外
/sbin/xfsdump -J - /      | /sbin/xfsrestore -p 10 -J - /mnt/    (-pオプションで10秒毎に状況を表示する)
cp etc/fstab etc.org/fstab     <- UUIDのことがあるから元のファイルで書き戻し
元の/etc/fstabから不足している行(/home)を追加
RAIDカードから起動、して動作を確認。データもマウントできて第一段階はクリアできたたので元のシステムHDDを外してバックアップ用の4TBを繋ぐ。

ひょっとしたらネットワークカードの設定はやり直しが必要かも知れない。

現在のHDD状況
SATA
0         バックアップ用(4TB)
2,3,4,5 データ(2TB*4のRAID10)
RAIDカード
0,3      システム(500GBのRAID1)

ソフトウェアRAIDからハードウェアRAIDへ移行(確認)

まずはN8103-117の管理画面でもみてみようとところ、2台繋いだHDDが1つしか見えない。
合わせて買ったケーブルがおかしいのか繋ぎ変えてしたところ0~3、4~7のうち、1,2に繋ぐと見えないことが発覚。
ジャンク扱いとはいえ残念だけど、システムを0と3、データを4~7にすれば今の状態で移行できるからよしとする。

2016年2月17日水曜日

ソフトウェアRAIDからハードウェアRAIDへ移行(計画)

今の環境
OS CentOS Linux release 7.2.1511 (Core)
RAID mdadamで構築
sdaとsdbでRAID1'(各2.5inchの80GB)
 /dev/md126       /
 /dev/md125       /boot
 /dev/md127       swap
sdcとsddでRAID1、sdeとsdfでRAID1。この2組でRAID10(各2TBで計4TB)
 /dev/md2          /home
マザーボードにSATAは6ポートで空きは無し。

ここにバックアップ用にSATAのカード(asrockの!!)を使って4TBのHDDを追加したけど
エラー頻発で切断されたりまともに使えない。

そこでN8103-117ってのがジャンク扱いで980円だったので買ってみた。
(megaRAIDの8708EM2のOEM)

初めは
8708EM2に4TBを繋いで/homeをコピー
2TB*4でRAID10を作り直して4TBはマザーのSATAに繋いでバックアップ用
とするつもりだったけど、このカードは2TBまでしか認識しないのでらしいので4TBは使えない。(しまった)

そこで、ノートPCをSSDにして余ってる500GBが2台あったので、まずこれを8708EM2でRAID1に。
マザーのSATAに4TBを繋いで/homeをコピー
8708EM2で2TB*4でRAID10にして再度コピー
とする方針に変更。

面倒くさ~

2013年1月26日土曜日

/dev/ に作ったリンクが再起動すると無くなる

ln -s /dev/ttyS0 /dev/usvとかリンクを作っても再起動すると初期化される件。
rc.localに書いてもいいんだろうけど、/etc/udev/rules.d/50-udev.rules に

KERNEL=="ttyS0", SYMLINK+="usv"

こんな風に書くのが正しいらしい。

参考
http://www.gentoo.gr.jp/transdocs/udevrules/udevrules.html#multiple-symlinks

2012年12月13日木曜日

crontabでMAILTO='' が有効にならない

ローカル用にsendmailを設定してもこんなエラーが。
failed parsing crontab for user hoge: MAILTO='' 書き方がおかしいのかとか、mail関連を入れてからcronを再起動すればいいのかと試したけど何をやってもだめだし、MAILTO=rootとしてもメールは自分宛に届く。

調べたらよく見かける(と思う)cronはVixie cronというcronで我がslackwareのcronはdcronとcronにも種類があることが分かった。
(確かにslackwareのcronはパッケージ名がdcron)
そしてdcronはMAILTOやSHELLなんて書いて制御はできないことが分かった。
メールを出さないようにするには出力自体を制御するしかないみたい。

何も出さない場合 > /dev/null 2>&1
エラーだけメールに 1> /dev/null
メールは出さずログに出力 > /var/log/origin.lo 2>&1) > /dev/null
UNIXアカウント以外にメールを送信するにはパイプで渡すしかないのか?

参考
http://www.gentoo.org/doc/ja/cron-guide.xml
http://landisk.kororo.jp/diary/30_cron.php

最低限のsendmail

実はcrontabがエラーを吐いてちゃんと動いていないことに気づく。
どうもメール配送のプログラムが入っていないのが理由のようだ。

今のところ外部とやり取りする予定はないので、CDから
d/m4-1.4.16-x86_64-1.txz
n/cyrus-sasl-2.1.23-x86_64-4.txz
n/mailx-12.5-x86_64-1.txz
n/sendmail-8.14.5-x86_64-3.txz
n/sendmail-cf-8.14.5-noarch-3.txz
n/procmail-3.22-x86_64-2.txz
を入れる。

後は以下のコマンドでとりあえず動いた模様。
cd /usr/share/sendmail/cf/cf
sh Build sendmail-slackware.mc
cp sendmail-slackware.cf /etc/mail/sendmail.cf
cp submit.cf /etc/mail/
chmod +x /etc/rc.d/rc.sendmail
/etc/rc.d/rc.sendmail start

起動した瞬間溜まっていた自分宛のメールが一気に送られてくる。
mailコマンドでUNIXアカウントに送信できることも確認。