Linux でホーム ディレクトリを新しいパーティションまたはディスクに移動する方法
どの Linux システムでも、確実にサイズが大きくなるディレクトリの 1 つは /home
ディレクトリです。これは、ルート アカウントを除き、システム アカウント (ユーザー) ディレクトリが /home に存在するためです。ユーザーはここにドキュメントやその他のファイルを継続的に保存します。
同じ動作を行うもう 1 つの重要なディレクトリは /var
です。これには、ログ ファイル、Web ファイル、印刷スプール ファイルなど、システムの実行が続くにつれてサイズが徐々に増加するログ ファイルが含まれています。
これらのディレクトリがいっぱいになると、ルート ファイル システムに重大な問題が発生し、システムの起動エラーやその他の関連問題が発生する可能性があります。ただし、システムをインストールし、ルート ファイル システム/パーティション上のすべてのディレクトリを構成した後でないと、このことに気付かない場合もあります。
このガイドでは、ホーム ディレクトリを Linux の新しいストレージ ディスク上の専用パーティションに移動する方法を説明します。
Linux での新しいハードディスクのインストールとパーティション分割
先に進む前に、既存の Linux サーバーに新しいハードディスクを追加する方法を簡単に説明します。
注: すでにパーティションを操作できる状態にある場合は、/home
ディレクトリを移動する手順を説明するセクションに進んでください。以下の独自のパーティションにあります。
新しいディスクをシステムに接続したと仮定します。ハードディスク上では、作成されるパーティションの数とパーティション テーブルは通常、ディスク ラベル タイプによって決まり、スペースの最初の数バイトがMBR (マスター ブート レコード) を定義します。 )、パーティション テーブルとブート ローダー (ブート可能ディスク用) が保存されます。
多くのラベル タイプがありますが、Linux は MSDOS MBR (サイズ 516 バイト) または GPT (GUID パーティション テーブル) の 2 つだけを受け入れます。 >MBRです。
また、このガイドの目的のために、サイズ 270 GB の新しい新しいハードディスク (/dev/sdb) が使用されていると仮定します。おそらく、サーバーにはさらに大きな容量が必要です。大規模なユーザーベース。
まず、別れる必要があります。この例ではGPTラベル名を使用しました。
# parted /dev/sdb mklabel gpt
注: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
次に、cp コマンドを使用して、/home のコンテンツを /srv/home に移動します (実質的には /dev/sdb1 に保存されます)。
# rsync -av /home/* /srv/home/ OR # cp -aR /home/* /srv/home/
その後、diff ツールを見つけます。すべて問題なければ、次のステップに進みます。
# 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 でのファイル システム管理に関するこれらのガイドをお読みください。
- Linux のホーム ディレクトリでユーザー アカウントを削除する方法
- Ext2、Ext3、Ext4 とは何か、および Linux ファイル システムを作成および変換する方法
- Linux でファイル システム タイプ (Ext2、Ext3、または Ext4) を判断する 7 つの方法
- SSH 経由で SSHFS を使用してリモート Linux ファイルシステムまたはディレクトリをマウントする方法
このガイドでは、/home ディレクトリを Linux の専用パーティションに移動する方法を説明しました。この記事に関するご意見がございましたら、以下のコメント フォームから共有してください。