いますぐ実践! Linuxシステム管理

[バックナンバーのトップへ] [Linux システム管理のトップへ]


いますぐ実践! Linux システム管理 / Vol.163 / 読者数:1323名

こんばんは、うすだです。

先々週、つまり前回発行した日に、オカメインコの雛がやってきました。
それ以来、オカメインコに振り回される生活を送っております。

まず、初日から餌を食べてくれなくて、一家全員、 一丸となってヤキモキさせていただきました。

その後、あの手この手を駆使して食べるようになりますと、 あちらさんもニンゲンに慣れてくださいまして、手に乗って甘えてきたりして、 なんてかわいい生き物なんだ! と思える段階まで進むことができました。

…と思いきや、昨日は、朝から餌を食べず、変なくしゃみをして、 徐々に弱々しくなり、またしても一家一丸となってあわてて、 動物病院へ連れていきました。

幸い、薬を投与してもらったりするなどして、餌を普通に食べるくらいに回復しました。

ただ、鳥は体温が高いため、病気の進行が早く、 あっけなく死んでしまうことが多いそうです。今後も、 ハラハラさせられる生活が続きそうな予感がしております。

で、も、やっぱり、かわいいですよ。(^ε^)
もし検討されている貴兄がおられましたら、一日中世話してくれるひと、 鳥を飼っている知人、そして信頼できる動物病院、を確保してから、 飼うことをお勧めします。

まだ少しソワソワしていますが、今回もはりきってまいりましょう。

今回のお題 - Amazon S3 をバックアップとして使う

というわけで、猫も杓子もクラウドー! な世の中になってまいりました。

Amazon や Google などの企業が、クラウドのサービスを展開していますが、 その中でも、Amazon S3 というストレージサービスが、 安価でよいと言われているように思われます。

Amazon Simple Storage Service (Amazon S3)
http://aws.amazon.com/s3/

そこで今回は、時代の流れに乗って、 Amazon S3 を試してみたい…具体的にはバックアップとして使用してみたい… と思います。

泣く子も黙る Amazon のインフラを使用したサービスですので、 ファイルを失う危険性は、限りなく低いのではないかと思います。
ですので、バックアップにはかなり適しているのではないでしょうか。
(厳密には、情報漏洩という危険性が若干あるかもしれませんが…。)

いきなり、会社のシステム管理に適用というわけにはいかないと思いますが、 とりあえず個人で試す分には問題ないだろうということで、 実践していただけますと幸いです。


まず、Amazon S3 の特徴を簡単に述べますと、以下の通りです。

  • オブジェクト(ファイル)の読み書きおよび消去を行える。
  • オブジェクトのサイズは5GBまでだが、オブジェクト数に制限はない。
  • バケットというものにオブジェクトを格納する。
  • ディレクトリという概念がないが、オブジェクト名に / は使用可能。
  • ストレージ容量、データ転送量およびリクエスト数で課金される。
    ストレージ: $0.15/GB (〜50TB の場合)
    データ転送: $0.17/GB (〜10TB/月 の場合)
    リクエスト: $0.01/1000回のPUT,COPY,POST,LIST
    $0.01/10000回のGET

とりあえず2週間、お試しで使いましたが、合計でまだ $0.06 です。
たいして使っていませんが、それでも一通りの動作を試しつつ、 一定期間バックアップに使用した上で、この値段です。やっぱり安いと思います。

それでは、以下にしたがって、話を進めていきたいと思います。

  1. Amazon S3 を使用するためのサインアップ
  2. S3Sync ツールのインストール
  3. S3Sync ツールの簡単な使いかた
  4. バックアップの仕込み

Amazon S3 を使用するには、まずサインアップが必要です。
なにはともあれ、Amazon S3 のサイトにアクセスしてください。

Amazon Simple Storage Service (Amazon S3)
http://aws.amazon.com/s3/

そして、以下の手順でサインアップを行います。(2009年8月7日現在)

  1. Sign Up For Amazon S3 ボタン(右上と右下にあり)を押下する。
  2. メールアドレスを入力し、I am a new customer. にチェックを入れて Sign in using our secure server ボタンを押下する。
     
    Amazon S3 signup 1
  3. 名前などを入力して、Create account ボタンを押下する。
     
    Amazon S3 signup 2
  4. もろもろの情報を入力して、Continue ボタンを押下する。
    (ZIP Code に7桁を入力すると叱られます。3桁を入力しましょう。)
     
    Amazon S3 signup 3
  5. クレジットカードの情報を入力して、Continue ボタンを押下する。
     
    Amazon S3 signup 4
  6. たいていは Use This Address ボタンを押下するだけ。
     
    Amazon S3 signup 5
  7. 内容を確認して、Complete Sign Up ボタンを押下する。
     
    Amazon S3 signup 6
  8. 最終的に、Thank you 云々とか言われれば、おそらく完了。
     
    Amazon S3 signup 7

文章ではわかりにくいですが、 英語がそこそこわかるかたであれば問題なく進めると思います。
(もれなくメールも届きます。)

あとは、Access Key ID と Secret Access Key を控えておきます。
右上の Your Account -> Access Identifiers でわかります。
 
Amazon S3 access keys


次に、S3Sync というツールをインストールします。

Amazon S3 用のツールはいくつかありますが、一番お手軽だと思われるのが、 S3Sync だと思います。ですので、以降では S3Sync を使っていこうと思います。

S3Sync は、以下から入手可能です。
以降では、バージョン 1.2.6 を使用して確認しています。

S3Sync.net - S3Sync Wiki
http://s3sync.net/wiki

おっとその前に、S3Sync を動作させるには、Ruby 1.8.4 以降と OpenSSL ruby library が必要です。
パッケージがインストールされていなければ、 以下のようにインストールしてくださいませ。

  # yum install ruby  (RedHat系の場合)
  # apt-get install ruby ruby1.8 libopenssl-ruby1.8  (Debian系の場合)

さて、3sync.tar.gz を入手しましたら、適当な場所で伸長します。
以降では、個人で試すことを想定して ~/work/ で伸長しますが、 どこで伸長しても動作するはずです。お好みの場所でお試しください。

  $ cd ~/work/
  $ tar xvfz /some/where/s3sync.tar.gz

次に、Access Key ID および Secret Access Key を登録します。
具体的には、~/.s3conf/s3config.yml というファイルに、 控えておいた Access Key ID と Secret Access Key を書くだけです。
以下の手順で、s3config.yml を作成してください。

  $ mkdir ~/.s3conf
  $ chmod 700 ~/.s3conf
  $ cat > ~/.s3conf/s3config.yml << E-O-F
  aws_access_key_id: Access Key ID をここに書く
  aws_secret_access_key: Secret Access Key をここに書く
  E-O-F
  $ chmod 400 ~/.s3conf/s3config.yml

S3Sync のインストールが終わりましたので、次に、S3Sync の簡単な使いかたを、 ご紹介したいと思います。

バックアップには s3sync.rb を使用しますが、 手動であれこれ操作などを行うためには、s3cmd.rb を使用します。
ですので、ここでは、s3cmd.rb の簡単な使いかたをご紹介します。

 

まず、オブジェクト(ファイル)を格納するためのバケットを作成します。
バケットを作成するには、s3cmd.rb createbucket を実行します。
たとえば、usupiorg-archive という名のバケットを作成するには、 以下のように実行します。

  $ cd ~/work/s3sync/
  $ ./s3cmd.rb createbucket usupiorg-archive
  $ ./s3cmd.rb listbuckets
  usupiorg-archive

はい、お察しのとおり、s3cmd.rb listbuckets で、 バケットの一覧表示をしてくれます。
ここで、作成したバケットが出力されれば、問題ないと思います。

 

次に、s3cmd.rb put で、ファイルをバケットに格納してみましょう。
/foo/backup.tgz というファイルを、 先ほど作成した usupiorg-archive へ格納するには、以下のように実行します。

  $ ./s3cmd.rb put usupiorg-archive:backup.tgz /foo/backup.tgz
  $ ./s3cmd.rb list usupiorg-archive:
  --------------------
  backup.tgz

同様に、s3cmd.rb list バケット名: でファイルを表示してくれます。

 

格納したファイルを入手するには、s3cmd.rb get を実行します。
先ほどの backup.tgz をカレントディレクトリに持ってくるには、 以下のように実行します。

  $ ./s3cmd.rb get usupiorg-archive:backup.tgz backup.tgz
  $ cmp backup.tgz /foo/backup.tgz && echo "OK" || echo "NG"
  OK

念のため、2行目では、cmp コマンドで内容を確認しています。

 

ファイルを削除するには、s3cmd.rb delete を実行します。
先ほどの backup.tgz を削除するには、以下のように実行します。

  $ ./s3cmd.rb delete usupiorg-archive:backup.tgz

ちなみに、全部のファイルを削除するには、s3cmd.rb deleteall を実行します。 ファイル名を途中まで指定しますと、その名前にマッチしたものだけが削除されます。

  $ ./s3cmd.rb deleteall usupiorg-archive:     (すべて削除)
  $ ./s3cmd.rb deleteall usupiorg-archive:foo  (foo* を削除)

 

ところで、Amazon S3 に置かれたファイルは、Web からアクセスすることができます。

  http://バケット名.s3.amazonaws.com/ファイル名

ですが、上記では、だれでも読めるように設定していませんので、

  http://usupiorg-archive.s3.amazonaws.com/backup.tgz

にアクセスしても、Access Denied になってしまいます。

誰でもアクセスできるようにするには、put する際に、 以下のように明示的に指定(x-amz-acl:public-read)する必要があります。

  $ ./s3cmd.rb put kuriking:080909.gif /some/where/080909.gif \
  x-amz-acl:public-read

すると、上記は以下の URL で参照できます。

  http://kuriking.s3.amazonaws.com/080909.gif

さあ、いよいよ、バックアップを仕込みたいと思います。

ここでは、ローカルマシンの ~/pgbackup/ に、バックアップファイルがいくつかあり、 これを s3sync.rb で Amazon S3 上にバックアップしたいと思います。

まずは、手動で行ってみましょう。
バケット usupiorg-archive の pgbackup/ に置いてみました。
(ファイル名に pgbackup/ が付加されただけで、 ディレクトリを作成したわけではありません。)

  $ ls -1 ~/pgbackup/
  pg_backup-20090803.tgz
  pg_backup-20090804.tgz
  ...中略...
  pg_backup-20090810.tgz
  $ ./s3sync.rb -r ~/pgbackup/ usupiorg-archive:pgbackup/
  $ ./s3cmd.rb list usupiorg-archive:pgbackup/
  --------------------
  pgbackup/pg_backup-20090803.tgz
  pgbackup/pg_backup-20090804.tgz
  ...中略...
  pgbackup/pg_backup-20090810.tgz

ちなみに、おおまかに速度を計ってみますと、860kB/秒弱くらいでした。
まあ、お世辞にも速いとは言えない…ですね。

 

では、これを、既存のバックアップスクリプトに仕込みたいと思います。

#!/bin/sh
SRCDIR=$HOME/pgbackup/

# backup
BACKUPFILE="$SRCDIR/pg_backup-`date '+%Y%m%d'`.tgz"
pg_dump -b -Ft usu | gzip -9 > $BACKUPFILE

# cleanup
find $SRCDIR -type f -mtime +7 -exec rm -f {} \;

# Amazon S3 sync
S3SYNCPATH=$HOME/work/s3sync
S3DST=usupiorg-archive:pgbackup/
(cd $S3SYNCPATH; ./s3sync.rb -r --delete $SRCDIR $S3DST; \
  ./s3cmd.rb list $S3DST) 2>&1 | \
  /usr/bin/Mail -s "[pgbackup] report" root

まず、pg_dump コマンドでその日のバックアップファイルを作成します。
そして、find コマンドで古いバックアップファイルを削除します。

後半の、Amazon S3 syncというコメント以降が、今回追加した部分です。
-r オプションで再帰的に実行、--delete オプションで元にないファイルの削除、 を行います。
最後に、s3cmd.rb list の出力を root 宛にメールしています。


以上、Amazon S3 をバックアップとして使用する方法をご紹介しました。

たまには流行ものに手を出してみるかな、と思ってやってみたのですが、 思った以上に使えそうな印象を受けました。

でかいバックアップファイルを毎日置いていると、 さすがにお金が結構かかるかもしれません。ですが、更新頻度が少ない場合や、 ファイルがそれほど大きくない場合であれば、お金もほとんどかからないと思います。

備えあれば憂いなし、ですので、 もしも用にバックアップとして使用してみてはいかがでしょうか。

宿題の答え

前回の宿題は、

  eth0〜eth2 をブリッジ接続したときに、eth0〜eth1 間の通信が eth2
  から見えるかどうか、確認してください。
でした。

eth0〜eth2 のそれぞれに、クロスケーブルを用いて PC を接続します。
自分自身のIPアドレスは 192.168.1.1/24 で、 eth0〜eth2 に接続する PC のIPアドレスは、 それぞれ 192.168.1.2, 192.168.1.3, 192.168.1.4 とします。
これを図で表すと、以下の通りです。

                      (eth0)      (eth1)
    [PC]----------------[Linux マシン]--------------[PC]
 192.168.1.2              192.168.1.1            192.168.1.3
                               |(eth2)
                               |                 192.168.1.4
                               +--------------------[PC]

ここで、192.168.1.2 と 192.168.1.3 がなんらかの通信を行い、 それが 192.168.1.4 から見えるかどうか、確かめてみたいと思います。

たとえば、192.168.1.2 から 192.168.1.3 に対して ping を実行して、 192.168.1.4 では tcpdump を実行します。

192.168.1.2(eth0側):
  $ /sbin/ping 192.168.1.3
192.168.1.3(eth1側):
  …なにもしないでいいです
192.168.1.4(eth2側):
  # tcpdump -n icmp

すると、eth0〜eth1間の ICMP Echo Request および Reply は、 tcpdump では捕獲できませんでした。
つまり、eth2 からは、eth0〜eth1間の通信は見えないようです。
ということは、スイッチングHUBとして動作している、と言えます。

念のため、eth1〜eth2 間の通信が eth0 から見えるかどうかなど、 別のインターフェースでも同様であることを、ご確認くださいませ。

今回の宿題

今回の宿題は、

  Amazon S3 上のファイルをローカルマシンにバックアップしましょう。

です。

今回のお題では、 ローカルマシンにあるバックアップファイルを Amazon S3 にコピーしていました。
ということは、当然、Amazon S3 にあるファイルのバックアップを手元に置いてきたい、 という要求もあるのではないかと思います。

…まあ、カンタンですよね。
せっかく(?)ですので、cron で定期的に実行させてみてくださいませ。

あとがき

ものすごーく今さらなのかもしれませんが、 Firefox の便利な使いかたを知りましたので、ご紹介したいと思います。

[ブックマーク]->[ブックマークの管理]を選んで、 [新しいブックマーク] を押します。
すると、新しいブックマークを入力するためのダイアログが出てきます。
ここで、たとえば、以下のように入力して、[OK] を押します。

  名前: 栗日記
  URL: http://www.usupi.org/cre/dcontent?user=kuri&date=%s
  キーワード: kuri

そして、ロケーションバーに、 kuri 2009-07-31 と入力して [Enter]キーを押しますと、 以下にアクセスしてくれます。

  http://www.usupi.org/cre/dcontent?user=kuri&date=2009-07-31

つまり、ロケーションバーに入力された最初の文字がキーワードで、 後に入力した文字を、URL の %s の部分に置き換えてアクセスしてくれる、 という寸法です。

元ネタは、PERL HACKS という本です。しょっぱなで紹介されています。

PERL HACKS - プロが教えるテクニック&ツール101選
http://www.amazon.co.jp/exec/obidos/ASIN/4873113148/usupiorg06-22

CPANのモジュールやドキュメント、コメントの検索に、 上記のテクニックを使用していました。

他にも、いろんなサイトで使えそうですね。辞書とか便利そうです。
みなさんも、ぜひお試しください。

 

…ひょっとして栗日記の宣伝なのでは? と思われたかた、大正解です!
たまにはつられて(?)、アクセスしていただけますと、幸いです。

 

今回も、ここまで読んでいただき、誠にありがとうございました。
次回は、9月6日(日) 未明にお会いしましょう!

 

「いますぐ実践! Linux システム管理」の解除は、以下からできます。
http://www.usupi.org/sysad/ (まぐまぐ ID:149633)

バックナンバーは、こちらにほぼ全部そろっています。
http://www.usupi.org/sysad/backno.html

「栗日記」- 生まれて初めて、残暑お見舞いハガキを出しました。
http://www.usupi.org/kuri/ (まぐまぐ ID:126454)
http://usupi.seesaa.net/ (栗日記ブログ)
http://usupi.org/k/ (モバイル栗日記)


[バックナンバーのトップへ] [Linux システム管理のトップへ]

トップ

バックナンバー
    [日付順] [目的別]

プロフィール

▼ リンク

独学Linux
Linuxデスクトップ環境に関する情報が満載です。 メルマガもありますよ。
Server World
CentOS 6をサーバとしたときの設定例が、これでもかというくらいたくさん載っています。 CentOS以外のディストリビューション(Fedora, Ubuntu)も充実しています。
LINUXで自宅サーバーを構築・導入(Fedora9)
Fedora9のインストールの仕方から管理方法まで、詳しく載っています。 SearchManには情報がもりだくさんです。
マロンくん.NET
〜サーバ管理者への道〜
Linuxをサーバとして使用するための、いろいろな設定方法が載っています。 マロンくんもかわいいです。 なんといっても、マロンくんという名前がいいですね!!
日経Linux
今や数少なくなってしまったLinuxの雑誌。ニュースやガイドもあります。
Linux Square − @IT
@ITが提供する、Linux の情報が満載。 載っていない設定方法はないんじゃないでしょうか。
gihyo.jp…技術評論社
Linuxに限らず様々な技術情報が満載のサイト。 SoftwareDesign誌も、 ソフトウェア技術者は必見です。
SourceForge.JP Magazine
Linux に限らず、オープンソース関連の記事が網羅されています。
ITmediaエンタープライズ:Linux Tips 一覧
Tips というより FAQ 集でしょうか。わからないことがあれば覗きましょう。
IBM developerWorks : Linux
開発者向けですが、勉強になりますよ。
Yahoo!ニュース - Linux
Yahoo!のLinuxに関するニュース一覧です。
栗日記
システム管理とかと全然関係ありませんが、毎日栗の絵を描いています。
システム管理につかれちゃったとき、癒されたいときに、ご覧ください。:-)
WEB RANKING - PC関連
ランキングに参加してみました。押してやってください。

▼ 作ってみました

Add to Google

▼ せんでん




▼ 最近読んだ本

▼ 気に入ってる本