はじめに
今回は、/var/ に溜まっていくログデータを大量に保管すべく別途用意した HDD に入れるために、/var/ を HDD にマウントすることをします。
Linux の概念としては、HDD のパーティションを /var/ にマウントするという感じらしいです。
環境
- バージョン
# cat /etc/redhat-release
Rocky Linux release 8.4 (Green Obsidian)
- HDD: /dev/md0 という、RAID5 で組んだHDD 10TB x 4 (今回は RAID を組む手順は省略します)
手順
-
rsync
コマンドで /var/ をマウントさせたい HDD にコピー
rsync /var/ /dev/md0
```
-
fdisk -l
コマンドで現在の HDD の状態を確認
fdisk -l
ディスク /dev/nvme0n1: 477 GiB, 512110190592 バイト, 1000215216 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: CE5ADA77-77F5-4EF3-924B-62BB489EBD68
デバイス 開始位置 終了位置 セクタ サイズ タイプ
/dev/nvme0n1p1 2048 1230847 1228800 600M EFI システム
/dev/nvme0n1p2 1230848 3327999 2097152 1G Linux ファイルシステム
/dev/nvme0n1p3 3328000 1000214527 996886528 475.4G Linux LVM
ディスク /dev/sdb: 10.9 TiB, 12000138625024 バイト, 23437770752 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 0F081832-B9E0-499B-84BE-8341616DD6E9
デバイス 開始位置 終了位置 セクタ サイズ タイプ
/dev/sdb1 2048 23437770718 23437768671 10.9T Linux RAID
ディスク /dev/sda: 10.9 TiB, 12000138625024 バイト, 23437770752 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 0371E0CB-F98B-4839-806F-76AD153F4A89
デバイス 開始位置 終了位置 セクタ サイズ タイプ
/dev/sda1 2048 23437770718 23437768671 10.9T Linux RAID
ディスク /dev/sdc: 10.9 TiB, 12000138625024 バイト, 23437770752 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 94BB586A-90F8-4966-8AF2-9ED3448AB777
デバイス 開始位置 終了位置 セクタ サイズ タイプ
/dev/sdc1 2048 23437770718 23437768671 10.9T Linux RAID
ディスク /dev/mapper/rl-root: 70 GiB, 75161927680 バイト, 146800640 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/mapper/rl-swap: 31.5 GiB, 33797701632 バイト, 66011136 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
ディスク /dev/md0: 32.8 TiB, 36000005357568 バイト, 70312510464 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト
I/O サイズ (最小 / 推奨): 524288 バイト / 1572864 バイト
ディスクラベルのタイプ: gpt
ディスク識別子: 808C25E6-7243-4A14-9057-59E04C2EE959
ディスク /dev/mapper/rl-home: 373.9 GiB, 401445224448 バイト, 784072704 セクタ
単位: セクタ (1 * 512 = 512 バイト)
セクタサイズ (論理 / 物理): 512 バイト / 512 バイト
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
````
今回は /dev/md0 ディスクを /var にマウントさせます。また、今回は `ディスクラベルのタイプ: gpt`となっていまして、このままだとエラーが出てマウントできないので、この GPT フォーマットを削除するところから始めます(ディスクラベルのタイプがなければ、2. の手順は省略してください)
-
HDD の GPT フォーマットのパーティションの削除
GPT で HDD をフォーマットしてしまっていたので、これを取り除きます。普通にやろうとするとこうなってしまいます。そこで、fdisk
コマンドでパーティションを取り除きます。# mkfs -t xfs /dev/md0 mkfs.xfs: /dev/md0 appears to contain a partition table (gpt). mkfs.xfs: Use the -f option to force overwrite.
原因は HDD 内に GPT フォーマットのパーティションがあることでした。まず、
# fdisk /dev/md0 fdisk (util-linux 2.32.1) へようこそ。 ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。 書き込みコマンドを使用する際は、注意して実行してください。 コマンド (m でヘルプ): m ヘルプ: GPT M 保護/ハイブリッド MBR に入ります 一般 d パーティションを削除します F パーティションのない領域を一覧表示します l 既知のパーティションタイプを一覧表示します n 新しいパーティションを追加します p パーティション情報を表示します t パーティションタイプを変更します v パーティション情報を検証します i パーティションの情報を表示します その他 m このメニューを表示します x 特殊機能に移動します (熟練者向け機能) スクリプト I ディスクのレイアウトを sfdisk 互換のスクリプトから読み込みます O ディスクのレイアウトを sfdisk 互換のスクリプトに書き出します 保存と終了 w パーティション情報をディスクに書き込んで終了します q 変更点を保存せずに終了します 新しいラベルを作成します g 新しい (何もない) GPT パーティションテーブルを作成します G 新しい (何もない) SGI (IRIX) パーティションテーブルを作成します o 新しい (何もない) DOS パーティションテーブルを作成します s 新しい (何もない) Sun パーティションテーブルを作成します コマンド (m でヘルプ): d パーティション番号 (1,2, 既定値 2): 2 パーティション 2 を削除しました。 コマンド (m でヘルプ): w パーティション情報が変更されました。 ioctl() を呼び出してパーティション情報を再読み込みします。 ディスクを同期しています。 # fdisk -l ディスク /dev/nvme0n1: 477 GiB, 512110190592 バイト, 1000215216 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: CE5ADA77-77F5-4EF3-924B-62BB489EBD68 デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/nvme0n1p1 2048 1230847 1228800 600M EFI システム /dev/nvme0n1p2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/nvme0n1p3 3328000 1000214527 996886528 475.4G Linux LVM (中略) ディスク /dev/md0: 32.8 TiB, 36000005357568 バイト, 70312510464 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 524288 バイト / 1572864 バイト ディスクラベルのタイプ: gpt ディスク識別子: 808C25E6-7243-4A14-9057-59E04C2EE959 デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/md0p1 3072 70312507391 70312504320 32.8T Linux LVM ディスク /dev/mapper/rl-home: 373.9 GiB, 401445224448 バイト, 784072704 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト # fdisk /dev/md0 fdisk (util-linux 2.32.1) へようこそ。 ここで設定した内容は、書き込みコマンドを実行するまでメモリのみに保持されます。 書き込みコマンドを使用する際は、注意して実行してください。 コマンド (m でヘルプ): m ヘルプ: GPT M 保護/ハイブリッド MBR に入ります 一般 d パーティションを削除します F パーティションのない領域を一覧表示します l 既知のパーティションタイプを一覧表示します n 新しいパーティションを追加します p パーティション情報を表示します t パーティションタイプを変更します v パーティション情報を検証します i パーティションの情報を表示します その他 m このメニューを表示します x 特殊機能に移動します (熟練者向け機能) スクリプト I ディスクのレイアウトを sfdisk 互換のスクリプトから読み込みます O ディスクのレイアウトを sfdisk 互換のスクリプトに書き出します 保存と終了 w パーティション情報をディスクに書き込んで終了します q 変更点を保存せずに終了します 新しいラベルを作成します g 新しい (何もない) GPT パーティションテーブルを作成します G 新しい (何もない) SGI (IRIX) パーティションテーブルを作成します o 新しい (何もない) DOS パーティションテーブルを作成します s 新しい (何もない) Sun パーティションテーブルを作成します コマンド (m でヘルプ): d パーティション 1 を選択 パーティション 1 を削除しました。 コマンド (m でヘルプ): w パーティション情報が変更されました。 ioctl() を呼び出してパーティション情報を再読み込みします。 ディスクを同期しています。
これで HDD 内のパーティションはなくなりました。
# fdisk -l ディスク /dev/nvme0n1: 477 GiB, 512110190592 バイト, 1000215216 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: CE5ADA77-77F5-4EF3-924B-62BB489EBD68 デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/nvme0n1p1 2048 1230847 1228800 600M EFI システム /dev/nvme0n1p2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/nvme0n1p3 3328000 1000214527 996886528 475.4G Linux LVM (中略) ディスク /dev/md0: 32.8 TiB, 36000005357568 バイト, 70312510464 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 524288 バイト / 1572864 バイト ディスクラベルのタイプ: gpt ディスク識別子: 808C25E6-7243-4A14-9057-59E04C2EE959 ディスク /dev/mapper/rl-home: 373.9 GiB, 401445224448 バイト, 784072704 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
-
HDD の GPT フォーマットを削除
HDD を 2. の後ですぐにマウントしようとしてもマウントできません。# mkfs -t xfs /dev/md0 mkfs.xfs: /dev/md0 appears to contain a partition table (gpt). mkfs.xfs: Use the -f option to force overwrite.
そこで、
wipef
コマンドを用いて完全に GPT フォーマットを削除します。# wipefs /dev/md0 DEVICE OFFSET TYPE UUID LABEL md0 0x200 gpt md0 0x20bde787fe00 gpt md0 0x1fe PMBR # wipefs -a /dev/md0 /dev/md0: オフセット 0x00000200 にある 8 バイト (gpt) を消去しました: 45 46 49 20 50 41 52 54 /dev/md0: オフセット 0x20bde787fe00 にある 8 バイト (gpt) を消去しました: 45 46 49 20 50 41 52 54 /dev/md0: オフセット 0x000001fe にある 2 バイト (PMBR) を消去しました: 55 aa /dev/md0: ioctl() を呼び出してパーティション情報を再読み込みします: 成功です
これで
fdisk
コマンドで確認するときちんと GPT フォーマットが削除できていました。# fdisk -l ディスク /dev/nvme0n1: 477 GiB, 512110190592 バイト, 1000215216 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスクラベルのタイプ: gpt ディスク識別子: CE5ADA77-77F5-4EF3-924B-62BB489EBD68 デバイス 開始位置 終了位置 セクタ サイズ タイプ /dev/nvme0n1p1 2048 1230847 1228800 600M EFI システム /dev/nvme0n1p2 1230848 3327999 2097152 1G Linux ファイルシステム /dev/nvme0n1p3 3328000 1000214527 996886528 475.4G Linux LVM (中略) ディスク /dev/md0: 32.8 TiB, 36000005357568 バイト, 70312510464 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 524288 バイト / 1572864 バイト ディスク /dev/mapper/rl-home: 373.9 GiB, 401445224448 バイト, 784072704 セクタ 単位: セクタ (1 * 512 = 512 バイト) セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
-
xfs フォーマットの作成
このままマウントしようとしてもまだ怒られます。# mount /dev/md0 /var mount: /var: wrong fs type, bad option, bad superblock on /dev/md0, missing codepage or helper program, or other error.
原因は極めて単純で、フォーマットができていないからです。ext4 などの他にもフォーマット形式はありますが、今回は xfs を選択。
# mkfs -t xfs /dev/md0 meta-data=/dev/md0 isize=512 agcount=33, agsize=268435328 blks = sectsz=4096 attr=2, projid32bit=1 = crc=1 finobt=1, sparse=1, rmapbt=0 = reflink=1 data = bsize=4096 blocks=8789063808, imaxpct=5 = sunit=128 swidth=384 blks naming =version 2 bsize=4096 ascii-ci=0, ftype=1 log =internal log bsize=4096 blocks=521728, version=2 = sectsz=4096 sunit=1 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0
-
マウント
ここまで来てやっとマウントできます。特に done などの反応はありません。# mount /dev/md0 /var
これでマウント完了です。
# df -h ファイルシス サイズ 使用 残り 使用% マウント位置 devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 18M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/rl-root 70G 9.1G 61G 13% / /dev/nvme0n1p2 1014M 224M 791M 23% /boot /dev/mapper/rl-home 374G 2.9G 371G 1% /home /dev/nvme0n1p1 599M 5.8M 594M 1% /boot/efi tmpfs 6.3G 5.7M 6.3G 1% /run/user/1000 /dev/md0 33T 234G 33T 1% /var
再起動しても固定されない場合は、/etc/fstab を記入してください。