Linuxでホームディレクトリを新しいパーティションまたはディスクに移動する方法


どのLinuxシステムでも、確実にサイズが大きくなるディレクトリの1つは、/home ディレクトリである必要があります。これは、システムアカウント(ユーザー)ディレクトリがrootアカウントを除いて/ homeに存在するためです。ここでは、ユーザーはドキュメントやその他のファイルを継続的に保存します。

同じ動作をするもう1つの重要なディレクトリは、/var です。このディレクトリには、ログファイル、Webファイル、印刷スプールファイルなど、システムの実行が続くにつれてサイズが徐々に大きくなるログファイルが含まれています。

これらのディレクトリがいっぱいになると、ルートファイルシステムに重大な問題が発生し、システムの起動に失敗したり、その他の関連する問題が発生したりする可能性があります。ただし、システムをインストールし、ルートファイルシステム/パーティション上のすべてのディレクトリを構成した後にのみ、これに気付く場合があります。

このガイドでは、ホームディレクトリをLinuxの新しいストレージディスク上の専用パーティションに移動する方法を示します。

Linuxでの新しいハードディスクのインストールとパーティション分割

先に進む前に、既存のLinuxサーバーに新しいハードディスクを追加する方法について簡単に説明します。

注:既に操作の準備ができているパーティションがある場合は、以下の独自のパーティションにある/home ディレクトリを移動する手順を説明しているセクションに移動してください。

新しいディスクがシステムに接続されていることを前提としています。ハードディスクでは、作成されるパーティションの数とパーティションテーブルは通常、ディスクラベルの種類によって決定され、スペースの最初の数バイトは、パーティションテーブルとパーティションテーブルを格納するMBR(マスターブートレコード)を定義します。ブートローダー(ブータブルディスク用)。

多くのラベルタイプがありますが、LinuxはMSDOS MBR(サイズが516バイト)またはGPT(GUIDパーティションテーブル)MBRの2つしか受け入れません。

また、新しい新しいハードディスク(このガイドの目的で使用されるサイズ270GBの/ dev/sdb、大規模なユーザーベースのサーバーではより大きな容量が必要になる可能性があります)を想定します。

まず、fdiskまたはpartedを使用してディスクラベルタイプを設定する必要があります。この例では、GPTラベル名を使用しました。

# parted /dev/sdb mklabel gpt

注:fdiskは現時点ではMSDOS MBRのみをサポートし、partedは両方のラベルをサポートします。

次に、サイズ106GBの最初のパーティション(/ dev/sdb1)を作成します。 MBR用に1024MBのスペースを予約しました。

# parted -a cylinder /dev/sdb mkpart primary 1074MB 107GB

上記のコマンドの説明:

  • a – option to specify the partition alignment.
  • mkpart – sub command to create the partition.
  • primary – sets partition type as primary on the hard disk (other values are logical or extended).
  • 1074MB – beginning of partition.
  • 107GB – end of partition.

次に、ディスクの空き容量を次のように確認します。

# parted /dev/sdb print free

サイズ154GBの別のパーティション(/ dev/sdb2)を作成します。

# parted -a cylinder /dev/sdb mkpart primary 115GB 268GB

次に、各パーティションにファイルシステムタイプを設定しましょう。

# mkfs.ext4 /dev/sdb1
# mkfs.xfs /dev/sdb2

システムに接続されているすべてのストレージデバイスを表示するには、と入力します。

# parted -l

これで、新しいディスクが追加され、必要なパーティションが作成されました。次に、ホームフォルダをパーティションの1つに移動します。ファイルシステムを使用するには、マウントポイント(/ homeなどのターゲットディレクトリ)でルートファイルシステムにマウントする必要があります。

最初に、システムでdfコマンドを使用してファイルシステムの使用法をリストします。

# df -l

とりあえず/ dev/sdb1をマウントできる新しいディレクトリ/ srv/homeを作成することから始めます。

# mkdir -p /srv/home
# mount /dev/sdb1 /srv/home 

次に、rsyncコマンドまたはcpコマンドを使用して、/ homeのコンテンツを/ srv/homeに移動します(実際には/ dev/sdb1に格納されます)。

# rsync -av /home/* /srv/home/
OR
# cp -aR /home/* /srv/home/

その後、diffツールを使用して2つのディレクトリの違いを見つけます。問題がなければ、次の手順に進みます。

# diff -r /home /srv/home

その後、次のように/ home内の古いコンテンツをすべて削除します。

# rm -rf /home/*

次に、/ srv/homeをアンマウントします。

# umount /srv/home

最後に、ファイルシステム/ dev/sdb1を/ homeにしばらくの間マウントする必要があります。

# mount /dev/sdb1 /home
# ls -l /home

上記の変更は現在のブートでのみ持続します。以下の行を/ etc/fstabに追加して、変更を永続的にします。

次のコマンドを使用して、パーティションUUIDを取得します。

# blkid /dev/sdb1

/dev/sdb1: UUID="e087e709-20f9-42a4-a4dc-d74544c490a6" TYPE="ext4" PARTLABEL="primary" PARTUUID="52d77e5c-0b20-4a68-ada4-881851b2ca99"

パーティションのUUIDがわかったら、/ etc/fstabファイルを開いて次の行を追加します。

UUID=e087e709-20f9-42a4-a4dc-d74544c490a6   /home   ext4   defaults   0   2

上記の行のフィールドの説明:

  • UUID – specifies the block device, you can alternatively use the device file /dev/sdb1.
  • /home – this is the mount point.
  • etx4 – describes the filesystem type on the device/partition.
  • defaults – mount options, (here this value means rw, suid, dev, exec, auto, nouser, and async).
  • 0 – used by dump tool, 0 meaning don’t dump if filesystem is not present.
  • 2 – used by fsck tool for discovering filesystem check order, this value means check this device after root filesystem.

ファイルを保存し、システムを再起動します。

次のコマンドを実行して、/ homeディレクトリが専用パーティションに正常に移動されたことを確認できます。

# df -hl

今のところ以上です! Linuxファイルシステムの詳細については、Linuxでのファイルシステム管理に関連するこれらのガイドをお読みください。

  1. How to Delete User Accounts with Home Directory in Linux
  2. What is Ext2, Ext3 & Ext4 and How to Create and Convert Linux File Systems
  3. 7 Ways to Determine the File System Type in Linux (Ext2, Ext3 or Ext4)
  4. How to Mount Remote Linux Filesystem or Directory Using SSHFS Over SSH

このガイドでは、Linuxで/ homeディレクトリを専用パーティションに移動する方法について説明しました。以下のコメントフォームから、この記事に関するご意見をお聞かせください。