xfs_adminコマンドの使い方

#1 xfs_admin コマンドとは?
XFSファイルシステムのパラメータを変更するコマンドです。


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

```console: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
```

```console:コマンド版数
[root@server ~]# xfs_admin -V
xfs_admin version 4.5.0
```

#3 オプション一覧

```
[root@server ~]# xfs_admin
Usage: xfs_admin [-efjlpuV] [-c 0|1] [-L label] [-U uuid] device
```


#4 事前準備(テスト用のXFSファイルシステム作成)
ループデバイスに使用するファイルを作成します。
ここでは1Gのファイルを作成してみます。
fallocateコマンドの使い方は、[ここ(すぐ忘れてしまう、仕事で使う技)](https://qiita.com/hana_shin/items/53c3c78525c9c758ae7c)を参照してください。

```console:ファイルの作成
[root@server ~]# fallocate -l 1G disk.img
```

作成したファイルを確認します。

```console:ファイルの確認
[root@server ~]# ls -l disk.img
-rw-r--r--. 1 root root 1073741824  5月 14 18:04 disk.img
```

作成したファイルをループデバイスとして登録します。
losetupコマンドの使い方は、[ここ(losetupコマンドの使い方)](https://qiita.com/hana_shin/items/90b3c6fb54b59ebba076)を参照してください。

```console:ループデバイスの作成
[root@server ~]# losetup -f /root/disk.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
```

ループデバイスにxfsファイルシステムを作成します。

```console:ファイルシステム作成
[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
```

ループデバイスの状態を確認してみます。
xfsファイルシステムが作成されていることがわかります。
ラベルには何も設定されていません。
UUIDには61346701-c369-407a-8b39-eb6cc68ce311が設定されていることがわかります。
また、マウントされていないことがわかります。

```console:デバイスの確認
[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                     61346701-c369-407a-8b39-eb6cc68ce311
```


#5 ファイルシステムのUUIDを表示／設定する方法

##5.1 UUIDの表示方法(-u)
UUIDを表示してみます。

```console:UUIDの表示
[root@server ~]# xfs_admin -u /dev/loop0
UUID = 61346701-c369-407a-8b39-eb6cc68ce311
```

##5.2 UUIDの設定方法(-U)
uuidgenを使って、UUIDを作成します。

```console:UUIDの作成
[root@server ~]# uuidgen
a91baacc-4452-438f-bf90-2dd482780d1d
```

新たに作成したUUIDをxfsファイルシステムに設定してみます。

```console:UUIDの設定
[root@server ~]# xfs_admin -U a91baacc-4452-438f-bf90-2dd482780d1d /dev/loop0
Clearing log and setting UUID
writing all SBs
new UUID = a91baacc-4452-438f-bf90-2dd482780d1d
```

UUIDを確認してみます。新しいUUIDが設定されていることがわかります。

```console:UUIDの表示
[root@server ~]# xfs_admin -u /dev/loop0
UUID = a91baacc-4452-438f-bf90-2dd482780d1d
```


##5.3 UUIDをクリアする方法

```console:UUIDの設定
[root@server ~]# xfs_admin -U nil /dev/loop0
Clearing log and setting UUID
writing all SBs
new UUID = 00000000-0000-0000-0000-000000000000
```

```console:UUIDの表示
[root@server ~]# xfs_admin -u /dev/loop0
UUID = 00000000-0000-0000-0000-000000000000

```



##5.4 その他
以下のようにして、UUIDを設定することもできます。

```console:UUIDの設定
[root@server ~]# xfs_admin -U `uuidgen` /dev/loop0
Clearing log and setting UUID
writing all SBs
new UUID = bbd2ddd3-dee3-4b7d-a8fb-d6b92542a937
```

```console:UUIDの表示
[root@server ~]# xfs_admin -u /dev/loop0
UUID = bbd2ddd3-dee3-4b7d-a8fb-d6b92542a937
```


#6 ファイルシステムのラベルを表示／設定する方法
##6.1 ラベルの表示方法(-l)

ラベルを表示してみます。何も設定されていないことがわかります。

```console:ラベルの表示
[root@server ~]# xfs_admin -l /dev/loop0
label = ""
```

##6.2 ラベルの設定方法(-L)

ラベルをxfsファイルシステムに設定してみます。
ラベルは12文字までの制限があるようです。

```console:ラベルの設定
[root@server ~]# xfs_admin -L new-label /dev/loop0
writing all SBs
new label = "new-label"
```

```console:ラベルの表示
[root@server ~]# xfs_admin -l /dev/loop0
label = "new-label"
```




#Z 参考情報
[【 xfs_admin 】コマンド――XFSファイルシステムのパラメータを変更する](https://www.atmarkit.co.jp/ait/articles/1803/30/news029.html)
[How to use “xfs_admin” command to change parameters of an XFS filesystem](https://www.thegeekdiary.com/how-to-use-xfs_admin-command-to-change-parameters-of-an-xfs-filesystem/)
[xfs_admin command examples](http://fibrevillage.com/storage/698-xfs-admin-command-examples)
[RHEL: XFS basic operations](https://sites.google.com/site/syscookbook/rhel/rhel-xfs-basics)
[Linux教科書 LPICレベル2 Version 4.5対応](https://books.google.co.jp/books?id=cJ4kDwAAQBAJ&pg=PA162&lpg=PA162&dq=LPIC+xfs_admin&source=bl&ots=_4amhrW5c0&sig=ACfU3U0Wl2OWYbFUY4pHebJlq9oFNOcT8Q&hl=ja&sa=X&ved=2ahUKEwj57del65riAhUCXLwKHaD7BGoQ6AEwAXoECAkQAQ#v=onepage&q=LPIC%20xfs_admin&f=false)