Linux Hacks:xfs_fsrを使ってXFSファイルシステムをベストの状態で使用する - ITmedia エンタープライズをみて、XFSでフォーマットしたls-hglと、それにバックアップ用に接続したUSBハードディスクをデフラグしてみようとおもいました。 前回構築したnetatalkインストール時の開発環境を基に、 今回は、ARMアーキテクチャのlinuxマシンであるls-hglにxfsprogsの最新版をインストールしてみます。
※以下の作業は、すべてsshでログインしたls-hgl上で、ネイティブ開発環境で行います。
uuid.hがないため、e2fsprogs, e2fsprogs-libを構築します。
e2fsprogsのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared --disable-defrag
make
make install
ncurses.hがないため、ncuesesを構築します。
ncursesのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared
make
make install
xfsprogsのconfigureで失敗するため、libtoolをインストールします。
libtoolのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared
make
make install
attrのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared
makeを2回した後(1回目はsandboxのgzipによるエラーが出るが気にしなくてよい)
make install
make install-dev
make install-lib
aclのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared
makeを2回した後(1回目はsandboxのgzipによるエラーが出るが気にしなくてよい)
make install
make install-dev
make install-lib
xfsprogsのソースをダウンロードし、展開する
LIBTOOL=/usr/local/develop/bin/libtool MAKE=/usr/local/develop/bin/make CFLAGS="-O2 -I/include -I/usr/local/develop/include -I/usr/local/develop/include/ncurses/ -I." ./configure --prefix=/usr/local/develop --enable-gettext=no --without-debug --without-normal --with-shared
パッチを当てます。xfsprogs.patch
makeを2回した後(1回目はsandboxのgzipによるエラーが出るが気にしなくてよい)
make install
make install-dev
make install-lib
xfs_fsrコマンドは、2009年1月にxfsprogsにも含まれるようになりましたので、xfsdumpのインストールは不要です。
デフラグ対象ドライブは、マウントされている必要があります。また、デフラグにはかなり時間がかかります(1TBのディスクで4時間以上かかりました)。
デフラグ中のファイルへのアクセスは問題無いようです。
ls-hglのシステムにはcronが元々入っているので、スケジュール実行することが可能です。
※断片化されたファイルを一塊になるようにコピーするという作業の繰り返しをおこないます。(ファイルを再配置して、ファイルシステムの前方につめる訳ではありません。)
以下、実行例です。勝手に書き込み可能なxfsパーティション(共有フォルダ&バックアップ用USBHDD)を検出して実行してくれます。
bash-2.05b# xfs_fsr -v
Found 2 mounted, writable, XFS filesystems
xfs_fsr -m /proc/mounts -t 7200 -f /var/tmp/.fsrlast_xfs ...
START: pass=5 ino=344452842 /dev/sda6 /mnt/disk1
/mnt/disk1 start inode=344452842
ino=453051875
extents before:6 after:3 DONE ino=453051875
ino=453051882
extents before:3 after:1 DONE ino=453051882
.....
以上の手順でxfsprogsをインストールすると、aclをインストールすることになります。
ここで改めてnetatalkをコンパイルすると、aclに対応したnetatalkを生成できます。
さらに、以下の手順でopenldapのヘッダファイルを補完してから、コンパイルすることでaclとopenldapに対応したnetatalkを生成できます。
openldap-2.3.11_arm.tgz をダウンロードし、展開
cd openldap-2.3.11
cd include
make install
LDFLAGS=”-L/usr/lib -ldl” CFLAGS=”-O2 -I/include” ./configure --prefix=/usr/local/develop --with-bdb=/usr/local/develop --with-ssl-dir=/usr/local/develop