1 xfs_freezeコマンドとは?
XFSファイルシステムへのアクセスを中断もしくは再開させるコマンドです。
XFSファイルシステムを作成したあと、スナップショットを作成するため、
ファイルシステムへのアクセスを一時的に中断したい場合に使用するコマンドです。
なお、xfsファイルシステム自体は、スナップショットの機能はありません。
2 検証環境
VMware Workstation 14 Player上の仮想マシンを使いました。
仮想マシンは、「最小限のインストール」->「開発ツール」を選択して作成しました。
[root@server ~]# cat /etc/redhat-release
CentOS Linux release 7.4.1708 (Core)
[root@server ~]# uname -r
3.10.0-693.el7.x86_64
[root@server ~]# xfs_freeze -V
xfs_freeze version 4.5.0
3 オプション一覧
[root@server ~]# xfs_freeze
Usage: xfs_freeze [-V] [-f | -u] <mountpoint>
4 事前準備(テスト用のXFSファイルシステム作成)
練習用にxfsファイルシステムを作成します。
まず、1Gのファイルを作成します。
なお、fallocateコマンドの使い方は、ここ(すぐ忘れてしまう、仕事で使う技)を参照してください。
[root@server ~]# pwd
/root
[root@server ~]# fallocate -l 1G disk.img
[root@server ~]# ls -l disk.img
-rw-r--r--. 1 root root 1073741824 5月 11 19:35 disk.img
作成したファイルをループバックデバイスとして登録します。
losetupコマンドの使い方は、ここ(losetupコマンドの使い方)を参照してください。
[root@server ~]# losetup -f /root/disk.img
[root@server ~]# losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /root/disk.img
ループバックデバイスに対してxfsファイルシステムを作成します。
[root@server ~]# mkfs.xfs /dev/loop0
meta-data=/dev/loop0 isize=512 agcount=4, agsize=65536 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=262144, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[root@server ~]# mkdir /mnt
[root@server ~]# mount -o loop /dev/loop0 /mnt
[root@server ~]# df -ht xfs
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sda3 18G 15G 3.9G 79% /
/dev/sda1 1014M 174M 841M 18% /boot
/dev/loop1 1014M 33M 982M 4% /mnt
5 実行例
作成したファイルシステムへのアクセス中断(-f)、再開(-u)を実行してみます。
まず、xfsファイルシステムへのアクセスを中断してみます。
[root@server ~]# xfs_freeze -f /mnt
もう1つターミナルを開きます。
touchコマンドを使って、作成したファイルシステムにファイルを作成してみます。
作成したファイルシステムへのアクセスが中断されているので、
touchコマンドが復帰してきません。
[root@server ~]# time touch /mnt/test.dat
xfsファイルシステムへのアクセス中断を解除します。
[root@server ~]# xfs_freeze -u /mnt
アクセス中断を解除すると、touchコマンドが復帰してきます。
touchコマンド復帰まで、約2秒かかっていることがわかります。
[root@server ~]# time touch /mnt/test.dat
real 0m2.168s
user 0m0.000s
sys 0m0.001s