1 xfs_copyコマンドとは?
xfsファイルシステムをコピーするコマンドです。
コピー元の属性(inode番号等)を維持したまコピーすることができます。
ここでは、/dev/loop0
に作成したxfsファイルシステムを
/dev/loop1
にコピーしてみます。
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_copy -V
xfs_copy version 4.5.0
3 オプション一覧
[root@server ~]# xfs_copy
Usage: xfs_copy [-bdV] [-L logfile] source target [target ...]
4 事前準備(テスト用のXFSファイルシステム作成)
ループデバイスに使用するファイルを作成します。
fallocateコマンドの使い方は、ここ(すぐ忘れてしまう、仕事で使う技)を参照してください。
[root@server ~]# fallocate -l 100M disk1.img
[root@server ~]# fallocate -l 100M disk2.img
作成したファイルを確認します。
[root@server ~]# ls -l disk*
-rw-r--r--. 1 root root 104857600 5月 12 19:44 disk1.img
-rw-r--r--. 1 root root 104857600 5月 12 19:44 disk2.img
作成したファイルをループデバイスとして登録します。
losetupコマンドの使い方は、ここ(losetupコマンドの使い方)を参照してください。
[root@server ~]# losetup -f /root/disk1.img
[root@server ~]# losetup -f /root/disk2.img
登録したループデバイスを確認してみます。
[root@server ~]# losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0 0 0 0 0 /root/disk1.img
/dev/loop1 0 0 0 0 /root/disk2.img
[root@server ~]# lsblk -fip
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sda
|-/dev/sda1 xfs 7bd0c5ce-21ab-4964-871d-61d04a09cc8c /boot
|-/dev/sda2 swap 708d5fef-16c1-4e0b-86ae-06e09153b155 [SWAP]
`-/dev/sda3 xfs a4951ce9-0d6e-4550-9460-dfbae7ea82c7 /
/dev/sr0 iso9660 CentOS 7 x86_64 2017-09-06-10-51-00-00
/dev/loop0
/dev/loop1
/dev/loop0
にxfsファイルシステムを作成します。
[root@server ~]# mkfs.xfs /dev/loop0
meta-data=/dev/loop0 isize=512 agcount=4, agsize=6400 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=25600, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=855, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
/dev/loop0
にxfsファイルシステムが作成されたことがわかります。
/dev/loop1
には、ファイルシステムは作成されていません。
[root@server ~]# lsblk -fip
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sda
|-/dev/sda1 xfs 7bd0c5ce-21ab-4964-871d-61d04a09cc8c /boot
|-/dev/sda2 swap 708d5fef-16c1-4e0b-86ae-06e09153b155 [SWAP]
`-/dev/sda3 xfs a4951ce9-0d6e-4550-9460-dfbae7ea82c7 /
/dev/sr0 iso9660 CentOS 7 x86_64 2017-09-06-10-51-00-00
/dev/loop0 xfs 057082a2-c2c6-4efb-8095-decbfac1a311
/dev/loop1
/mntに/dev/loop0
をマウントします。
[root@server ~]# mount -o loop /dev/loop0 /mnt
[root@server ~]# df -ht xfs
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sda3 18G 15G 3.8G 79% /
/dev/sda1 1014M 174M 841M 18% /boot
/dev/loop2 97M 5.2M 92M 6% /mnt
マウントしたファイルシステムにファイル(test1.dat)を作成してみます。
inode番号は67、ファイル作成日時は2019-05-12 19:52:00.736573237
であることがわかります。
[root@server ~]# touch /mnt/test1.dat
[root@server ~]# ls -li --full-time /mnt/test1.dat
67 -rw-r--r--. 1 root root 0 2019-05-12 19:52:00.736573237 +0900 /mnt/test1.dat
xfs_copyコマンドを実行するには、コピー元をアンマウントする必要があります。
[root@server ~]# umount /mnt
[root@server ~]# df -ht xfs
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/sda3 18G 15G 3.8G 79% /
/dev/sda1 1014M 174M 841M 18% /boot
5 ファイルシステムのコピー
/dev/loop0
から/dev/loop1
にxfsファイルシステムをコピーしてみます。
[root@server ~]# xfs_copy /dev/loop0 /dev/loop1
0% ... 10% ... 20% ... 30% ... 40% ... 50% ... 60% ... 70% ... 80% ... 90% ... 100%
All copies completed.
xfs_copyコマンドによって、
/dev/loop1
にxfsファイルシステムが作成されたことがわかります。
[root@server ~]# lsblk -fip
NAME FSTYPE LABEL UUID MOUNTPOINT
/dev/sda
|-/dev/sda1 xfs 7bd0c5ce-21ab-4964-871d-61d04a09cc8c /boot
|-/dev/sda2 swap 708d5fef-16c1-4e0b-86ae-06e09153b155 [SWAP]
`-/dev/sda3 xfs a4951ce9-0d6e-4550-9460-dfbae7ea82c7 /
/dev/sr0 iso9660 CentOS 7 x86_64 2017-09-06-10-51-00-00
/dev/loop0 xfs 057082a2-c2c6-4efb-8095-decbfac1a311
/dev/loop1 xfs 8262eb5d-31a4-4450-9f85-db95788caa8a
xfsファイルシステムのコピー先の中身を確認してみます。
ファイル(test1.dat)のinode番号、作成日時がコピー元ファイルと同じであることがわかります。
[root@server ~]# mount -o loop /dev/loop1 /mnt
[root@server ~]# ls -li --full-time /mnt/test1.dat
67 -rw-r--r--. 1 root root 0 2019-05-12 19:52:00.736573237 +0900 /mnt/test1.dat
Z 参考情報
XFS ファイルシステムのその他のユーティリティー
xfs_copy command examples
Beginning Ubuntu Server Administration: From Novice to Professional