[mac] TimeMachine のバックアップ先として Linux サーバを使う

netatalk のインストール

久々に日記書くから書き方わすれた…

Mac の Time Machine を使うには、一般的には外付けHDDやTime Capsuleを使うらしいですが、常に外付けHDDつけてるのも嫌だし、Time Capsule 買うのも嫌なので、どうこうして Linux サーバを Time Machine で使えないかと思ってましたら、どうやら出来るらしいのでセットアップしてみます。

Scientific Linux 5.6 に Netatalk 2.2-beta4 をインストール | 複眼中心

この記事によれば、netatalk というものを使えば、Time Machine のサーバとして使えるようです。インストールします。

% aptitude install netatalk -t sid

netatalk は、AFP 3.3 に対応していないといけないらしく、それは 2.2 beta4 かららしいです。Debian のパッケージには、netatalk 2.1 しかなかったので、sid のパッケージから 2.2 beta4 をインストールします。

あと、avahi-daemon もいるらしいですね。インストールします。

% aptitude install avahi-daemon

設定ファイル

インストールしたらば、設定ファイルを編集です。netatalk と一緒にインストールされた afpd の両方を設定します。

Netatalk and Samba (閉鎖)

ここの記事の設定をほぼまるごと使わせていただきました。唯一違うのは AppleVolumes の設定だけ。自分のユーザのだけ公開されればいいので、以下の設定で ~/.AppleVolumes を作成しました。

# The line below sets some DEFAULT, starting with Netatalk 2.1.
:DEFAULT: options:upriv,usedots dperm:0700 fperm:0600 maccharset:MAC_JAPANESE ea:sys

# By default all users have access to their home directories.
#~/                      "Home Directory"

# For TimeMachine directory
/var/timemachine/hon_ya "Time Machine Vol for hon_ya" options:tm volsizelimit:190000

再起動

netatalk を再起動します。いちおう、avahi-daemon も(たぶん必要ない)

% sudo service avahi-daemon restart
% sudo service netatalk restart

Time Machine の設定

やっとこさ Time Machine を設定します。まず、Finder のツールバーから [移動] -> [ネットワーク] を見ると、netatalk を設定したサーバが見えているはずなので、接続します。ユーザとパスワードは、サーバのユーザとパスワードと同じです。

これで接続できれば、Time Machine からも認識してくれるみたいです。[システム環境設定] -> [Time Machine] を選択します。

[ディスクを選択] を選ぶと、バックアップ先の候補として、サーバが出てきてくれるはずなので、あとは Time Machine を設定するだけです。

感想

Time Machine の UI はやたらかっこいいですね。時間軸を遡る感じが大変良いです。

DLNAサーバをセッティングしてみるよ

DLNA というのは、家庭内の映像とか音楽とかをサーバに貯めこんで、そのサーバにテレビとか PS3 とかアクセスできれば、それぞれが個別にデータを抱え込まずに楽しめて便利!という雰囲気のものらしいです。

ということで、この環境を自宅につくってみたいと思いましたので、つくります。

MediaTomb

DLNA には、コンテンツを貯めこんでクライアントに提供するサーバが必要です。調べてみると、MediaTomb というのを使うと、LinuxDLNA サーバを実現できるようですので、これを使ってみます。

$ sudo aptitude install mediatomb -t sid

sid に入ってる MediaTomb をインストールします。上の記事にあるように、バージョンが 0.12.1 のほうでないとうまく接続できないようです。squeeze に入っているものではバージョンが合いませんでした。

設定

下記のページにある、「MediaTomb のインストール」の項を参考にしました。

続き書くのめんどうになった…

unix extensions = no

上記設定からいくつかピックアップして設定していったところ、
以下の設定をするといけるようになりました。

[global]
    unix extensions = no

この設定の意味なのですが、

この真偽値パラメータは、Samba が HP 社によって定義された CIFS の UNIX拡張を利用するかどうかを制御する。 これらの拡張は、UNIX クライアントから UNIX サーバに対して接続する際に有用な CIFS を有効にし、 シンボリックリンクやハードリンクなどを利用可能にする。 これらの拡張により、Samba は UNIX の CIFS クライアントに対して、シンボ リックリンクやハードリンクといった機能を提供することが可能となる。これらの拡張は、同様の機能が有効になったクライアントを必要とし、現在のところ、Windows クライアントには使用できない。

ふむ、どうもこの値が有効だといかんようなのですが、見る限り”利用可能”にするので
あって、有効にしていても REGZA が使おうとしないかぎりは YES でも NO でも同じことなのでは?
と思うのは間違いなのだろう、よくわからないけど。

きちんとした説明が欲しいところですが、こんなときは解説してくれているサイトをさがすに限ります。

ふむ、やっぱりわからない。
また今度調べてみることにします。

/etc/samba/smb.conf

REGZA から参照する共有の設定を記述します。
share は共有用に作成したアカウントです。

[REGZA-REC]
   comment = REGZA REC
   path = /home/share/REGZA
   browseable = yes
   read only = no
   guest ok = no
   create mask = 0644
   directory mask = 0755
   valid users = @share
   force group = share

REGZA から登録する

REGZA から LAN ハードディスクとして設定します。

[設定メニュー] -> [レグザリンク設定] -> [LAN ハードディスク設定] -> [機器の登録]を開きます。
レグザは、指定のユーザアカウントを使ってアクセス可能な機器を一覧表示しますので、まずはユーザ設定をします。

REGZA Z1 だと、[青]ボタンで [ユーザ切り替え]ができるので、そこで開くダイアログにユーザ名とパスワードを設定します。
今回だと、ユーザ名: share です。パスワードは smbpasswd で設定したものを。

正しく設定できると、"REGZA-REC(マシンのホスト名)"が一覧に表示されますので、これを登録します。

REGZA からテストする

[設定メニュー] -> [レグザリンク設定] -> [LAN ハードディスク設定] -> [動作テスト] を開いて、登録した
LAN ハードディスクをテストします。

なぜかうまくいかない…

ここまでの設定では、うまくいきませんでした。なぜだ…

Google 先生に頼んでいろいろ見て回った結果、以下の設定ならうまくいきました。

guest ok な設定にする

まず、パスワードが設定されてるのはだめなんだよー、なものが多かったので、
ストアカウントで読み書き可能な共有設定をがんばってみました。

[global]
    --- (略) ---
    null passwords = yes
    guest account = nobody
    map to guest = Bad User
    create mask = 0666
    force user = nobody
    force group = nogroup
    directory mask = 0777
    unix extensions = no

[REGZA]
    path = /var/samba/regza
    read only = no
    guest ok = yes
    writable = yes
    browsable = yes

この設定にすると、録画できるようになりました。
でも、REGZA にはきちんとユーザ設定する方法があるのに、録画できないのが
納得いかないので、この設定を元に先の設定を修正してみます。

【Samba】REGZA で使える LAN ハードディスクを用意しようと頑張ってみる

いままで USB 接続した外付けHDD に録画していたのですが、せっかくのサーバなので LAN ハードディスクを用意してそちらに保存させるようにしようと Let's Try!!

新しく domain を作成する

LAN サーバ用に新しく domainU を作成しました。間違いなく不足すると思いますが、500G を割り当てて作りました。
仮想環境はいろいろ実験しやすくて便利だなーとしみじみ。

Samba をインストール

おなじみ Samba さんをインストールします。

$ sudo aptitude install samba

Xen4.0 の domainU の仮想ディスクを拡張する方法を試行錯誤しました。

環境

私のマシンの環境は下のとおり

  1. core i7
  2. HDD 2TB * 2
  3. Debian (squeeze) amd64
  4. Xen4.0 (aptitude install したもの)

とりあえず先人たちを参考に

domainU のディスク拡張はいろんな人がやってると思うので調べてみます。

  1. 2009-12-10

とりあえずこちらのページを参考に作業してみます。

今回は、4G のディスクに 3G を拡張してみます。

hon-ya@debian:% ll                                                [~/workspace/xen/vm-debian1]
合計 1384600
-rw------- 1 root root 4294967296 2011-05-23 23:09 disk.img
-rw------- 1 root root  134217728 2011-05-23 23:09 swap.img
hon-ya@debian:% mv disk.img disk.img.bak                          [~/workspace/xen/vm-debian1]
hon-ya@debian:% qemu-img create -f raw zerofile.img 3G            [~/workspace/xen/vm-debian1]
Formatting 'zerofile.img', fmt=raw size=3221225472 
hon-ya@debian:% ls                                                [~/workspace/xen/vm-debian1]
disk.img.bak  swap.img  zerofile.img
hon-ya@debian:% sudo cp disk.img.bak disk.img2
hon-ya@debian:% sudo cat disk.img.bak zerofile.img > disk.img     [~/workspace/xen/vm-debian1]
hon-ya@debian:% ll                                                [~/workspace/xen/vm-debia
合計 10115184
-rw-r--r-- 1 hon-ya hon-ya 7516192768 2011-05-23 23:20 disk.img
-rw------- 1 root   root   4294967296 2011-05-23 23:09 disk.img.bak
-rw------- 1 root   root   4294967296 2011-05-23 23:13 disk.img2
-rw------- 1 root   root    134217728 2011-05-23 23:09 swap.img
-rw-r--r-- 1 hon-ya hon-ya 3221225472 2011-05-23 23:12 zerofile.img
hon-ya@debian:%    

ディスク自体は拡張されたので、あとはパーティションなんかをどうこうする。

hon-ya@debian:% sudo losetup -f                                   [~/workspace/xen/vm-debian1]
/dev/loop2
hon-ya@debian:% sudo losetup /dev/loop2 ./disk.img                [~/workspace/xen/vm-debian1]
hon-ya@debian:% sudo fdisk /dev/loop2                             [~/workspace/xen/vm-debian1]
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x30d4e8d4.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.

Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)

WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
         switch off the mode (command 'c') and change display units to
         sectors (command 'u').

Command (m for help): p

Disk /dev/loop2: 7516 MB, 7516192768 bytes
255 heads, 63 sectors/track, 913 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x30d4e8d4

      Device Boot      Start         End      Blocks   Id  System

Command (m for help): 

と、なんか期待してた表示と違うんですけど…

fdisk でパーティション情報が表示されない

手順通りに作業していると、fdisk での処理につまずきました。
どうも fdisk さんではパーティション情報をうまく見れないようです。

2010年01月15日の記事 | 個人的健忘録 from 2009 - 楽天ブログ

いろいろ調べてみると、どうも GPT パーティションというのがあやしい。GPT パーティションは、大容量のHDDを扱えるタイプのパーティションで、2TB を超えるサイズを扱えるそうな。

parted の使用

どうも GPT なるパーティションテーブルになっているらしく、fdisk では歯がたたない。これを扱えるのは、gdisk とかあるらしいんですけど、stable のパッケージには入っていない。いざいれてみても、なんか使いづらい。
というので行き着いたのが上のリンクのページ下部で紹介されている parted なるツールでした。こちらは、stable のパッケージにも
入っているので早速 aptitude でインストール。

hon-ya@debian:% sudo parted /dev/loop2                            [~/workspace/xen/vm-debian1]
GNU Parted 2.3
Using /dev/loop2
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print                                                            
Model:  (file)
Disk /dev/loop2: 7516MB
Sector size (logical/physical): 512B/512B
Partition Table: loop

Number  Start  End     Size    File system  Flags
 1      0.00B  7516MB  7516MB  ext3

(parted)  

それっぽいものが見えます。これをみるかぎり、パーティションとしては拡張した分を認識してくれているようにみえます。

ファイルシステムのサイズ拡張

上記の状態で domainU を立ち上げてみたのですが、ファイルシステムが認識していないので、
相変わらず利用可能な領域は 4G でした。
ですので、ファイルシステム側を対処します。

hon-ya@debian:% sudo e2fsck -f /dev/loop2                         [~/workspace/xen/vm-debian1]
[sudo] password for hon-ya: 
e2fsck 1.41.12 (17-May-2010)
Pass 1: Checking inodes, blocks, and sizes
Pass 2: Checking directory structure
Pass 3: Checking directory connectivity
Pass 4: Checking reference counts
Pass 5: Checking group summary information
/dev/loop2: 19971/262144 files (1.2% non-contiguous), 192245/1048576 blocks
hon-ya@debian:% sudo resize2fs /dev/loop2                         [~/workspace/xen/vm-debian1]
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/loop2 to 1835008 (4k) blocks.
The filesystem on /dev/loop2 is now 1835008 blocks long.

hon-ya@debian:%        

拡張(リサイズ)されたようです。

domainU で確認してみる

拡張した disk.img を使って domainU を起動してみます。
すると、以下のようにたしかに 3+4=7G になっているようです。

ast login: Sun May 22 23:27:02 2011 from 192.168.1.129
hon-ya@vm-debian1:% df                                                                     [~]
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/xvda2             7224824    704212   6153616  11% /
tmpfs                    63916         0     63916   0% /lib/init/rw
udev                     47548        32     47516   1% /dev
tmpfs                    63916         4     63912   1% /dev/shm
hon-ya@vm-debian1:%   

おわりに

いまいち、GPT のこととかが分かっていないので、これで正しい手順なのかどうかがさっぱりです。今回はパーティションが1つだけでしたが、複数あったらどうなのかとか、いろいろ調べないといけないことが多そうです。