ウェブサイト検索

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


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

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

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

推奨読書: Linux のディレクトリ構造と重要なファイル パスの説明

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

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

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

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

新しいディスクをシステムに接続したと仮定します。ハードディスク上では、作成されるパーティションの数とパーティション テーブルは通常、ディスク ラベル タイプによって決まり、スペースの最初の数バイトがMBR (マスター ブート レコード) を定義します。 )、パーティション テーブルとブート ローダー (ブート可能ディスク用) が保存されます。

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

また、このガイドの目的のために、サイズ 270 GB の新しい新しいハードディスク (/dev/sdb) が使用されていると仮定します。おそらく、サーバーにはさらに大きな容量が必要です。大規模なユーザーベース。

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

parted /dev/sdb mklabel gpt

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

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

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

上記のコマンドを説明すると、次のようになります。

  • a – パーティションの配置を指定するオプション。
  • mkpart – パーティションを作成するサブコマンド。
  • プライマリ – パーティション タイプをハードディスク上のプライマリとして設定します (他の値は論理または拡張です)。
  • 1074MB – パーティションの先頭。
  • 107GB – パーティションの終わり。

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

parted /dev/sdb print free

サイズ 154 GB の別のパーティション (/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コマンド。

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 – ブロック デバイスを指定します。代わりに、デバイス ファイル /dev/sdb1 を使用することもできます。
  • /home – これはマウント ポイントです。
  • etx4 – デバイス/パーティション上のファイルシステムのタイプを説明します。
  • デフォルト – マウント オプション (ここで、この値は rw、suid、dev、exec、auto、nouser、および async を意味します)。
  • 0 – ダンプ ツールによって使用されます。0 は、ファイル システムが存在しない場合はダンプしないことを意味します。
  • 2 – ファイルシステムのチェック順序を検出するために fsck ツールによって使用されます。この値は、ルート ファイルシステムの後にこのデバイスをチェックすることを意味します。

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

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

df -hl

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

  1. Linux のホーム ディレクトリでユーザー アカウントを削除する方法
  2. Ext2、Ext3、Ext4 とは何か、および Linux ファイル システムを作成および変換する方法
  3. Linux でファイル システム タイプ (Ext2、Ext3、または Ext4) を確認する 7 つの方法
  4. SSH 経由で SSHFS を使用してリモート Linux ファイルシステムまたはディレクトリをマウントする方法

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