squashfsを使ってみる
squashfsとは、Zlibを使ったLinux用の高圧縮率と高速読込み専用を実現するファイルシステムで、
マウント出来る読み込み専用の圧縮ファイルシステムを作成することができます。
バックアップ等に使用すると、非常に力を発揮するのではないでしょうか?
検証環境
CentOS 5.1
インストール
いつもどおりお手軽簡単なyumでインストールします。
# yum -y install squashfs-tools
Loading "installonlyn" plugin
Setting up Install Process
Setting up repositories
extras 100% |=========================| 1.1 kB 00:00
updates 100% |=========================| 951 B 00:00
base 100% |=========================| 1.1 kB 00:00
addons 100% |=========================| 951 B 00:00
Reading repository metadata in from local files
Parsing package install arguments
Resolving Dependencies
--> Populating transaction set with selected packages. Please wait.
---> Downloading header for squashfs-tools to pack into transaction set.
squashfs-tools-3.0-4.i386 100% |=========================| 3.7 kB 00:00
---> Package squashfs-tools.i386 0:3.0-4 set to be updated
--> Running transaction check
Dependencies Resolved
=============================================================================
Package Arch Version Repository Size
=============================================================================
Installing:
squashfs-tools i386 3.0-4 base 67 k
Transaction Summary
=============================================================================
Install 1 Package(s)
Update 0 Package(s)
Remove 0 Package(s)
Total download size: 67 k
Is this ok [y/N]: y
Downloading Packages:
(1/1): squashfs-tools-3.0 100% |=========================| 67 kB 00:00
Running Transaction Test
Finished Transaction Test
Transaction Test Succeeded
Running Transaction
Installing: squashfs-tools ######################### [1/1]
Installed: squashfs-tools.i386 0:3.0-4
Complete!
yumを使えば特に問題なくインストールが完了すると思います。
使い方
インストールが完了しましたら、実際に使ってみましょう。
squashfsファイル作成
squashfsファイルを作成するには、「mksquashfs」コマンドを使います。
今回は/homeディレクトリを/tmp/home-backという名前でsquashfsファイルを作成することにします。
# mksquashfs /home /tmp/home-back -noappend
Creating little endian 3.0 filesystem on home-back, block size 65536.
Little endian filesystem, data block size 65536, compressed data, compressed metadata, compressed fragments
Filesystem size 706244.54 Kbytes (689.69 Mbytes)
67.39% of uncompressed filesystem size (1048040.44 Kbytes)
Inode table size 90196 bytes (88.08 Kbytes)
33.34% of uncompressed inode table size (270573 bytes)
Directory table size 62198 bytes (60.74 Kbytes)
52.06% of uncompressed directory table size (119470 bytes)
Number of duplicate files found 556
Number of inodes 6538
Number of files 5865
Number of fragments 583
Number of symbolic links 1
Number of device nodes 0
Number of fifo nodes 0
Number of socket nodes 0
Number of directories 672
Number of uids 8
mailadmin (501)
maint (502)
unknown (10132)
root (0)
tamo (500)
test_user (505)
wiki (503)
apache (48)
Number of gids 4
wheel (10)
root (0)
test_user (507)
wiki (505)
特に問題なく作成されるはずです。
squashfsマウント方法
作成された/tem/home-backファイル/mntにマウントしてみます。
マウント方法はmountコマンドを使用します。
# mount -t squashfs -o loop /tmp/home-back /mnt/
正常にマウントされたかどうかdfコマンドにて確認してみましょう
# df
Filesystem 1K-ブロック 使用 使用可 使用% マウント位置
/dev/hda5 20315812 8416508 10850664 44% /
/dev/hda3 101105 89731 6153 94% /boot
tmpfs 517644 0 517644 0% /dev/shm
/dev/hda8 20751424 10384700 9295592 53% /export
/dev/hda7 2030736 1231932 693984 64% /var
/dev/hdb1 76920416 43115660 29897348 60% /export2
/tmp/home-back 706304 706304 0 100% /mnt
正常にマウントされている事が確認できると思います。
このsauashfsファイルは一旦マウントしてしまうと、普通のディレクトリのようにアクセスすることができます。
ただしsquashfsで作成されたファイルは読み込みオンリーでしかアクセスできないので注意してください。
では、実際にマウントしたファイルにアクセスしてみます。
# cd /mnt/
# ls
mailadmin tamo test_user wiki
# ls -la
合計 0
drwx------ 2 mailadmin mailadmin 70 6月 1 2007 mailadmin
drwx------ 27 tamo tamo 1141 1月 30 11:52 tamo
drwx------ 4 test_user test_user 91 1月 23 10:36 test_user
drwxr-xr-x 3 wiki wiki 95 7月 11 2007 wiki
このようにsquashfsファイルで圧縮されたファイルは、(リードオンリー)ですが、
通常のファイルと同様にアクセスできるので、「特定ファイルだけをリストア」なども簡単に実現できるので幸せになれますね:-p
おまけ 圧縮率の比較
ここで圧縮率を、tar.gzでアーカイブ圧縮したファイルと比較してみます。
元の/homeの大きさをduコマンドで確認してみたところ「1.1G」ありました。
圧縮前の/homeの大きさ
# du -m /home/
1 /home/wiki/public_html/wiki
1 /home/wiki/public_html/plugin
1 /home/wiki/public_html/image/face
1 /home/wiki/public_html/image
######## 中略 ########
16K /home/test_user/mbox/.imap
20K /home/test_user/mbox
84K /home/test_user
1.1G /home
suqashfsとtar.gzの比較
home-backがsquashfsを使用したもの
home.tar.gzがtarとgzipで圧縮したものです。
# ls -lha /tmp/home.tar.gz
-rwx------ 1 root root 690M 1月 31 15:30 home-back
-rw-r--r-- 1 root root 699M 1月 31 15:40 home.tar.gz
今回の結果を見ると、tar.gzでの圧縮よりも圧縮率が若干良いことが確認できます。
※ただし、圧縮するファイルの種類によって結果は変わってくる事があると思いますので
一概にtar.gzよりもsquashfsの方が圧縮率が高いとは言えないでしょう。