2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Linux の /var/ を別の HDD にマウントする

Last updated at Posted at 2021-10-23

はじめに

今回は、/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 を組む手順は省略します)

手順

  1. rsync コマンドで /var/ をマウントさせたい HDD にコピー

rsync /var/ /dev/md0

```
  1. 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. の手順は省略してください)
  1. 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 バイト
    
  2. 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 バイト
    
  3. 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
    
  4. マウント
    ここまで来てやっとマウントできます。特に 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 を記入してください。

参考文献

2
0
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
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?