『お知らせ』 blog復活しました

色々な訳があって、2015年11月個頃にWebサーバーの再インストールを行いました。

Webサーバーの再構築をする時間が取れなかったので今まで放置してきたのですが、本日ようやく復旧しました。
が、バックアップが不十分で写真などの画像データのバックアップを取っていませんでした。

Webデーターが入っている部分をすべてtarで固めたので大丈夫だと思っていたけど、バックアップできていなかったです。
パーミッションの関係?、そんなことは無いと思うが。

その様な事情で、復旧させたが過去記事の画像データが無い状態に(;つД`)

過去記事の一部は自分のメモ代わりにしている所もあるので復旧させたけれども、ブログ書く時間が取れないここ最近状況を考えると、どうすべきか悩んでいるところです。

『PC関連』 MacBook ProのSSDを大容量SSDに換装する

思い立って、手持ちの13インチMacBook Pro Mid 2009と13インチMacBook Pro Early 2011のHDDとSSDを換装したのでそのメモ。
Early 2011のMacBook Proは、MacOSのパーティションのコピーでかなり手こずりました。
そのためのメモを残すのが主目的です。

背景

MacBook Pro Mid 2009はメモリ4GB、160GB HDDでWindows7を入れています。
これは艦これ専用マシンになってます。

MacBook Pro Early 2011はメモリ8GB、120GB SSDでMacOSが入っています。
これ、SSDがとっくの昔に容量が足りなくなったので、DVD-ROMドライブを取り外して余っていた500GB HDDを入れていました

で、ここ最近の使っている感じだと、
Mid 2009のマシンは、艦これをやるには十分なんだけれども複数アプリを起動させているとタスク切り替えが異様に重たかったり、サスペンド状態から復帰するときに重たかったりとストレスがたまる状態でした。
重たいのはメモリスワップが発生するときのHDDアクセスが原因と感じていました。
これはSSDに変えたらレスポンス改善すると考えました。

Early 2011のマシンは、ウェブブラウジングやTwitterクライアントを動かしたりしていましたが、Yosemiteにアップグレードしてから、レスポンスがかなり悪化して使いにくい状態でした。
ここ最近のMacOSは、メモリをできる限り使うポリシーになっているので、そこが悪さをしているのかなとも思っていました。
正直、MacOSである必要もないので、Windowsをインストールして普段はWindowsを使うようにしようかなと考えたのです。
で、DVDドライブの代わりにつけているHDDにWindowsをインストールしようと思ったのですが、DVDドライブが内蔵されていないとWindowsをインストール出来ないのです。
そうなると、こちらもSSDを交換して内蔵DVDドライブを元に戻す必要があると考えました。

SSDドライブを購入

256GBのSSDをMid 2009に、512GBのSSDをEarly 2011にと考えて、以下のSSDを購入しました。

Crucial MX100 2.5インチ内蔵型SSD 256GB SATAIII CT256MX100SSD1
Crucial Technology (2014-06-05)
売り上げランキング: 126
Crucial MX100 2.5インチ内蔵型SSD 512GB SATAIII CT512MX100SSD1
Crucial Technology (2014-06-05)
売り上げランキング: 101

特にこだわりがあったわけでは無いので、コストパフォーマンスで選びました。

SSD交換

まず、Mid 2009のMacBook Proの換装は、Windowsマシン化していたこともあったので、SSDをクローンさせて換装して終わりです。
新しいSSDで起動させたあとにパーティションを拡大して終了です。

SSD化でレスポンスが大幅アップしました。
今までは、艦これをしながらブラウザで他のページを見ていると重たくなって仕方が無かったのですが、気にならないレベルまで改善しました。
これであと2年は戦えそうです。

Early 2011のMacBook ProのSSD換装は、素直にクローンさせてパーティションを拡張させれば良いと思って試しました。
が、クローンされてちゃんと起動したのですが、パーティション拡大は出来ませんでした。

色々調べてみると、この記事が見つかりました。
新しいSSDが内蔵してある状態で、古いSSDをUSB接続して、古いSSDの復元ユーティリティを使えばパーティションサイズも拡張させつつ、古いSSDの内容を新しいSSDにコピーできるとあります。

ですが、自分の環境では外付けSSDに入っているはずの復元ユーティリティが起動しませんでした。
Optionキーを押しながらMacBook Proの電源を入れても復元ユーティリティのパーティションが現れません。

それではと、内蔵SSDの復元ユーティリティを起動させます。
これは、電源ONの時にCommand+Rを押しっぱなしで起動します。

やり方は先ほどの記事にも書いてあるので省略ですが、外付けSSDから内蔵SSDの方向への復元は出来ませんでした。

色々試行錯誤をした結果、古いSSDを内蔵させて、新しいSSDを外付けにして復元ユーティリティを起動させることで無事に復元できました。

MacOSが無事に立ち上がったことを確認した後に、Bootcampを設定してWindowsのインストールも行いました。
パーティションを半分半分にすることで、どちらのOSでも問題なく使えるようになる予定です。
現在、Windowsの設定中ですが、手持ちのライセンスはWindows7なので、インストール後のWindowsUpdateが中々終わりません(;つД`)
#そういえば、Windows8のライセンスも一つ余っているけど、どうしようか

これで、Early 2011のほうは、あと4年くらい戦えそうです。

まとめ

最近発売されているMacBook Pro Retinaはユーザーによるメモリの増設もSSD交換も出来ないですが、古いMacBook Proはユーザーの手でメモリ増設とSSD交換が出来るため、結構なところまで延命できそうです。

ということは、MacBook Retinaを買う場合は、少なくともメモリはMaxまで積んだマシンを買っておかないと長く使えなくなるってことですね。

『ingress』 リアル課金でモバイルバッテリー Anker Astro E4を購入

ingressの為だけではないのですが、モバイルバッテリーを追加で購入しました。
買ったのは、
Anker Astro E4 第2世代 13000mAh モバイルバッテリー 2ポート 急速充電可能 【5V/2A電源アダプタ付属】 iPhone6/6plus/5s/5c/5/iPod/iPad/iPad Air, Air2/iPad mini, mini2, mini3/Xperia/GALAXY/3DS/PSVita/ウォークマン等対応【PowerIQ搭載】
です(Amazonの商品タイトル長すぎる)。

モバイルバッテリーはNTTdocomo(三洋電機OEM)のモバイルブースター01と02を持っていて、それでほとんど足りていたのですが、
11月頭の3連休で止まりの旅行をしたときに困った事態が発生しました。

朝から電車で移動して、その電車内ではスマホでテザリングしながら艦これをプレイしつつ、目的地ではingressをしながらウロウロという活動をしていたら、16時頃にはバッテリーが無くなる非常事態に。
実はもう一つモバイルバッテリーを持っていったのですが、そちらは充電に大型ACアダプターが必要なため、充電用ACアダプターは持ってきてませんでした。
つまり、非常時につなぎとして使うために持ってきたバッテリーでした。
そのため、1日目から使うのは勇気が要る状況でおそるおそるスマホを充電する状況になりました。
更に言えば、このバッテリーはスマホとか言う時代より昔に買ったバッテリーなので、USB経由の高速充電に対応していないので使い勝手がわるいです。

こんなことがあったため、
・大容量(スマホとタブレットを充電しても余裕がある)
・USBケーブルで充電できるか、小型のACアダプタで充電できる
・高速充電可能
この3つを満たすモバイルバッテリーを探すことに。

探したところ、ちょうどAnkerから新しいモバイルバッテリーが発売されていたので、そちらを購入することに。
USBポートに刺したデバイスにあった適切な電流を流してくれるので、どのポートにどのデバイスをつなげるか気にしなくて良い、
バッテリー自体の充電も高速に行える、
安い、
といったメリットがあるので即決しました。

今のところ1回放電させるために使い切っただけですが、普段使いでは使い切れないですな。
旅行の時にこそ真価が問われます。

使ってみて、1個だけダメだと思ったところがあります。

IMG_0429
届いた箱。

IMG_0430
中身はこんな感じ。

IMG_0431
バッテリーをしまえるポーチが付いてくる。

このポーチがヤバイ。
すべりやすいのです。
手に持っててもうっかりすべらせて袋ごとおとしてしまうことが何回かありました。
また、袋からスルッと抜け出て落ちちゃうこともありました。
このポーチは改善の必要があるのではと思ったのです。

それ以外では十分満足しています。

『FreeBSD』 ZFSでsnapshotを取ってzfs send/recvしてバックアップを作成する

ようやくファイルサーバーの移行が終わりました。

ZFSでsnapshotを取ることで履歴を残すことができるようになりました。
これで間違ってファイルを消しちゃった場合でも復活できる可能性があります。

とは言っても、Diskが2台壊れたらデータは吹っ飛びますので念のため他のディスクやマシンにバックアップを取っておく必要があります。
今まではrsyncを使ってバックアップを取っていましたが、ZFSではsnapshotを使ってバックアップを取ることができます。

vol1/hoge@backup0ってスナップショットがあった場合、バックアップ先をvol2/hogeとしたとき、zfs send/recvコマンドを使って次の手順でバックアップがとれます。

# zfs send vol1/hoge@backup0 | zfs recv vol2/hoge

vol2/hogeが既に存在している場合では、-Fオプションをつける必要があったような気がします(その様な場面があった)。

1回バックアップを取ってしまったら次からは差分を送るだけなので時間が短く済みます。
次のスナップショットをvol1/hoge@backup1とすると、

# zfs send -i vol1/hoge@backup1 vol1/hoge@backup0 | zfs recv vol2/hoge

で差分バックアップできます。
これだと、snapshotの履歴もバックアップ先に残るので色々と便利です。

注意点としては、バックアップ先に変更があればzfs send/recvでバックアップはとれません。
atimeを無効にしたのは、ファイルに変更が入ったら困るからです。

もし、ファイルに変更が入ってバックアップがとれなくなったときは、rollbackしてからコマンドを実行します。
#zfs recv -F とすればロールバックもしてくれるらしいのですが、未確認です。

2014/10/26追記
atimeを無効にしてもファイルに修正が入ったので、-Fオプションをつけてzfs recvを試したところ、ちゃんとrollbackしてバックアップをとれました。
スクリプトも修正しています
追記ここまで

以上を踏まえてバックアップの方針を次の通りにしました。
○1時間ごとにsnapshotを取ったらそのままバックアップする
これが一番楽&確実なのです。

前に作成したzfs_snapshot_hourlyをrubyスクリプトにしてバックアップの分も追加しました。
[ruby]
#!/usr/local/bin/ruby
# -*- coding: utf-8 -*-

#snapshot作成
now = Time.now
now_str = now.strftime(“%Y%m%d-%H%M”)

require “open3”

stdin,stdout,stderr = Open3.capture2(‘/sbin/zfs snapshot -r vol1/pub1@’+now_str)
stdin,stdout,stderr = Open3.capture2(‘/sbin/zfs snapshot -r vol1/pub2@’+now_str)

#バックアップ作成
stdin,stdout,stderr = Open3.capture2(‘/sbin/zfs list -o name -S creation -t snapshot’)
snapshot_list = stdin.split(“n”)
snapshot_list.delete_at(0)

def extract_target_snapshot_list(list, target_name)
l = Array.new
list.each do |s|
if s.include?(target_name) then
l.push(s)
end
end
return l
end

pub1_snapshot_list = Array.new
pub1_snapshot_list = extract_target_snapshot_list(snapshot_list,”vol1/pub1@”)

#ソートして結果の先頭が一番新しいsnapshot
pub1_snapshot_list.sort

stdin,stdout,stderr = Open3.capture2(‘/sbin/zfs send -i ‘+ pub1_snapshot_list[1] + ‘ ‘ + pub1_snapshot_list[0] + ‘ | /sbin/zfs recv -F vol2/pub1’)
[/ruby]

FreeBSDのperiodicの仕組みがよく解っていないので、snapshot関係のスクリプトはrootのcrontabに設定して実行させています。

サーバー移行を振り返ってみて、FreeBSDはあまり触りたくは無かったけれども何とかなったなと思いました。

実践FreeBSDサーバ構築・運用ガイド
技術評論社 (2013-05-10)
売り上げランキング: 78,390

『FreeBSD』 ZFSでatimeを無効にする

ZFSではsnapshotをとってそれをzfs send/recvして、別Diskや別マシンにバックアップを取ることができます。
1回バックアップを取ったあとは、snapshotの差分だけを転送する形になりますので短時間でのバックアップが可能になります。

このとき、転送先のpoolには変更を加えてはいけません。
なぜなら、差分の元になる部分で不一致が発生したら差分が解らなくなるからです。

しかしですね、何も触っていないpoolに勝手に変更が加えられて差分バックアップを取るときに不一致でエラーが出ることがたまにあります。

この原因でパッと思いついたのだatimeです。
これ、最後にファイルが参照された時間が記録されるので、catやlessしただけでファイルに変更が入ることになります。
おそらく、cronで何かやっちゃっているんだと思われます。

これはバックアップの運用でかなり困ったことになります。
解決方法はzfsでatimeを無効にすることです。
これはコマンド一発でできます。

#zfs set atime=off pool名
# zfs get atime pool名

NAME  PROPERTY  VALUE  SOURCE
vol1  atime     off    local

これで、zfs send/recvの問題も解決するはずなので、しばらく様子を見ようと思います。

実践FreeBSDサーバ構築・運用ガイド
技術評論社 (2013-05-10)
売り上げランキング: 78,250

『FreeBSD』 DNSが無いローカルネットワークでのマシンの名前解決方法

自宅のネットワーク構成が変わった話とそれに伴うサーバー変更の話を色々と書いてきました。

この過程で一番大きく変わったのが、ファイルサーバーが動的IPアドレスになったことです。
そして、DNSサーバーはマンションに設置しているサーバーを必ず使わなくてはいけなくなりました。

この環境でものすごく困るのが、クライアントマシンからサーバーへsshでログインするときです。
IPアドレスを直うちでログインする訳なのですが、毎日起動の度にIPアドレスが変わります。
また、各Windowsマシンにデータを共有させるためにファイルサーバー経由でrsyncをつかったデータ同期をさせているのですが、ここでもIPアドレスが必要になります。

その様なわけで、コロコロとIPアドレスが変わってしまうと困るわけです。
Windwosのファイル共有はSambaの名前解決機能を使うので特に問題は起きませんし、Macのファイル共有関係(主にTimeMachine)もAvahi-daemonの名前解決機能を使うので問題は起きません。

問題が起きるのは、sshなどのunix系(?)なツールを使うときです。

長々と背景を書いてきましたが要約すると、サーバーを含めてすべて動的IPアドレスで運用されているネットワークにおいて、名前解決をどのように行うかです。

解決方法ですが、Avahiの名前解決機能を使ってやります。
これは、Zeroconfって機能の実装の一つです。
AvahiではAppleが実装したmDNSに対応しています。
Macは標準でmDNS対応ですし、WindowsではiTunesと一緒にインストールされるBonjourで対応できます。

自宅のネットワーク環境ではこれをすべて満たすのでこれらを使って問題解決をしました。

具体的な設定方法ですが、FreeBSDマシン(Linuxマシン)でAvahi-daemonが動いている状態なら特に設定を変更しなくても、iTunesをインストール済みのWindowsマシンやMacから「サーバーのマシン名.local」でアクセス可能になります。
勿論、WindowsマシンやMacが相手でもマシン名.localでアクセス出来ます。

手っ取り早い確認方法は、

# ping 相手マシン名.local

をWindowsマシンやmacで実行することです。

FreeBSDなどのUnix系マシン上での名前解決には、ちょっと設定が必要なのです。
が、今回はWindwosとMacでローカルネットワーク内マシンの名前解決ができたら良いので、そこまで踏み込みません。
#/etc/nsswitch.confを編集するだけみたいですが。

今の今まで、こんな便利な機能を知らなかったなんて!

実践FreeBSDサーバ構築・運用ガイド
技術評論社 (2013-05-10)
売り上げランキング: 78,194

『FreeBSD』 FreeBSD 10+ZFSな環境でのAFT(4KBセクタ)HDDの運用

Debian/kFreeBSDな環境で構築したZFS poolをFreeBSD 10なマシンに持ってきたところ、4KBセクタなHDDだけど、512BセクタなHDDで認識させてるから的なメッセージが出ることを前のエントリーで書きました。
『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – FreeBSDインストール+etc

解決方法としては、ZFS poolを作り直すしかなく、その時に-o ashift=12をつけてcreateさせる必要があります。

が、FreeBSD 10からは、create時にオプション無しでも自動認識して正しく設定しくれるとの情報が。

そこで確認してみたところ、確かにオプション無しでも4KBセクタHDDとして取り扱ってくれました。
過去との互換性のためにデフォルトでは512Bセクタとして取り扱う方針から変わったようです。

結論は、FreeBSD 10なら色々と細かいことを考える必要は無い!って事です。

現在、zfs send/recvコマンドでデータの移動中です・・・・

実践FreeBSDサーバ構築・運用ガイド
技術評論社 (2013-05-10)
売り上げランキング: 78,194

『FreeBSD』 /etc/fstabでuuidでDiskを指定する。

ZFSでのHDDセクターサイズな問題を解決するために、予備で取っておいた2TB×3のHDDをFreeBSDマシンにつないで起動させたら、起動しなくなりました(;つД`)

ドライブレターが変わったために起動シーケンスでファイルシステムをマウントするときに、それが見つからずに起動途中で止まってしまうためです。
HDDを接続するポートをつなぎ替えて起動させましたが、根本的な解決手段が必要です。

最近のLinux系なら、インストールした時点でfstabの設定が、uuidを使った指定になっているからこのような問題は起きないのですが、FreeBSDでは/dev/ada1p2のようなデバイス名(?)で指定されているので、今回のようにドライブレターが変わってしまったら起動しなくなります(なんでや!)。

ちなみに、ZFSで管理されているDiskはドライブレターが変わってもZFS側でよろしくやってくれるので、気にする必要がありません。

解決方法ですが、探していたらそのものズバリなページが見つかりました。
コンピュータ/ソフトウェア関連Tips – FreeBSDのfstabでuuidを使用する

FreeBSDで各Disk、パーティションのuuidを知る方法は、

# gpart list

でできます。

ZFSで管理されているDisk以外のuuidが解りますので、これをメモして、Linuxのt時と同じようにfstabを設定します。

参照ページ→『linux関連』 /etc/fstabの表示形式をUUIDを使った形式にしてみる

インストール時にこの辺はやってくれても良いのに・・・

実践FreeBSDサーバ構築・運用ガイド
技術評論社 (2013-05-10)
売り上げランキング: 78,194

『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – netatalkの設定

『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – FreeBSDインストール+etc
『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – Sambaの設定
からの続きで、netatalkの設定をします。

インストールしたのは、やり方がある程度解っていたnetatalk 2.x系統です。

Debianでは、
apt-get install netatalk
ですべてインストールされたのですが、FreeBSDはそんな訳ではなかったので、少し手間取りました。

インストール

netatalk本体と、avahi-daemonが必要。

# pkg install netatalk-2.2.5_4,1
# pkg install avahi-0.6.31

設定と確認の段階でdbus-daemonも必要ってメッセージが出てきたのですが、気がついたらインストルされていたので、netatalkとavahi-daemonをインストールする段階で勝手にインストールされるのかもしれません。

emacs /etc/rc.conf

dbus_enable=”YES”
avahi_daemon_enable=”YES”
avahi_dnsconfd_enable=”YES”
netatalk_enable=”YES”
cnid_metad_enable=”YES”
afpd_enable=”YES”
を追加

netatalkの設定

afpd.confとAppleVolumes.defaultを設定してやります。

emacs /usr/local/etc/afpd.conf

“サーバー名” -tcp -noddp -uamlist uams_dhx2.so -nosavepassword -setuplog “default log_info /var/log/afpd.log”
を追加

emacs /usr/local/etc/AppleVolumes.default

#~
ディレクトリ名 “HDD名” options:tm volsizelimit:300000
ホームディレクトリをコメントアウトして、TimeMachineの設置を追加

avahiの設定

たぶん、この辺は設定をしなくても良いはずですが、設定した方が良いみたいなので設定します。

TimeMachineのDisk選択で勝手にDiskが出てくるために以下のファイルを追加します。

emacs /usr/local/etc/avahi/services/adiskservice

[xml]


%h

_adisk._tcp 9 sys=adVF=0x100
dk0=adVN=Time Machine,adVF=0x81


[/xml]
先に結論を書いてしまうと、TimeMachineのDisk選択でDiskが勝手に表示されなかったので、何か設定がまずそうです。

参照: NetatalkとAvahiを使ってFreeBSDマシンをTime Capsuleとして使う

ついでに、Samba側もMacのFinderに勝手に表示してくれるようにしました。

# emacs /usr/local/etc/avahi/services/smb.service

[xml]



%h

_smb._tcp 445


[/xml]
こちらは上手く動いてくれました。
でも、何も設定していない状態でもFinderに表示されていた気もします。

動作確認

rebootするか、手動でdbus、avahi、netatalkを起動させてやります。
rebootがお薦めです。

# /usr/local/etc/rc.d/dbus start
# /usr/local/etc/rc.d/avahi-dnsconfd start
# /usr/local/etc/rc.d/avahi-daemon start
# /usr/local/etc/rc.d/netatalk start

で起動すると思う(自信なし)。
ログが出ないからよく解らないんだよな・・・。

Mac側で確認ですが、本来ならTimeMachineの「ディスクを選択」を開いたら対象Diskが出ているはずなのですが出ていません。
Finderからサーバーの接続を選んでサーバー名を
afp://IPアドレス
afp://fqdn (ローカルでDNSを運用している場合など)
afp://マシン名.local
のどれかで接続させると、TimeMachineのDiskが見つかる状態になります。
#マシン名.localで見つかるはず・・・

バックアップがとれたらOKです。

積み残し

avahi-daemon回りの設定とnetatalk3ですかね。
動く形が整ったので、このまま運用を続ける気がします。

APPLE AirMac Time Capsule - 2TB ME177J/A
アップル (2013-06-11)
売り上げランキング: 9,798

『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – Sambaの設定

『FreeBSD』 FreeBSD+ZFS+Samba+netatalk環境を構築する – FreeBSDインストール+etcからの続きで、sambaの設定をします。

Sambaのインストール

# pkg install samba36-3.6.24_2

pkg install net/samba
ってのが正しいインストール方法なのかもしれませんが、その辺りがよく解っていません(;つД`)

# emacs /etc/rc.conf

samba_enable=”YES”
を追加

smb.conf設定

FreeBSDでは
/usr/local/etc/smb.conf
って場所になります。
Slackwareを思い出すファイル配置です。

Debian/kFreeBSDで使っていたsmb.confをそのままコピーしてやりました。
ただし、
directory name cache size = 0
は削除してあります。

ユーザー追加

FreeBSDのユーザーアカウントとリンクさせる方法もありますが、素直にsambaにユーザーを追加してやります。

# smbpasswd -a new_user

動作確認

rebootするか、

# /usr/local/etc/rc.d/samba start

でsambaを起動させます。

このファイル配置はイケていないと思うんですが・・・。

FreeBSD 10 + ZFS + Sambaでは、『Linux/Debian』 Debian/kFreeBSD + ZFS + Samba でWindwosからのディレクトリ表示で同じディレクトリが複数表示される事象が発生て現象が発生しません。

この状態が普通だと思うのですが。。。。

iTunesの音楽ファイルを入れてあるディレクトリを表示させてみると、
directory3

directory4

まともな表示になっています。

これで目的の98%位は達成です。

あとは、Mac用にnetatalkを入れてTimeMachine対応にするだけです。
この件は別エントリーで書きます。

インテル Gigabit CT Desktop Adapter EXPI9301CT
インテル (2012-08-16)
売り上げランキング: 3,179