LoginSignup
0
1

More than 3 years have passed since last update.

xfs_copyコマンドの使い方

Last updated at Posted at 2019-05-12

1 xfs_copyコマンドとは?

xfsファイルシステムをコピーするコマンドです。
コピー元の属性(inode番号等)を維持したまコピーすることができます。
ここでは、/dev/loop0に作成したxfsファイルシステムを
/dev/loop1にコピーしてみます。

2 検証環境

VMware Workstation 14 Player上の仮想マシンを使いました。
仮想マシンは、「最小限のインストール」->「開発ツール」を選択して作成しました。

OS版数
[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ファイルシステムを作成します。

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

0
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
1