2 つの論理ボリュームがあります。 1 つは / としてマウントされ、もう 1 つは /home としてマウントされます。
/
ボリュームにスペースが足りなくなってマージしたいです。 (はい、何がそのスペースをすべて占めているかを知っています。いいえ、削除できません。)
これを行うには、1日または2日間機械を分解することになります。
オペレーティングシステム:Linux xxxxx 2.6.32-279.22.1.el6.x86_64 #1 SMP Wed Feb 6 03:10:46 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
(CentOS)
答え1
完了し、再パーティションが成功しました。しかし、どちらのガイドも見逃した部分があるので、私がしたことをまとめてみましょう。私のユーザー名をにzzzz
、コンピュータ名をに変更しましたxxxxxxx
。また、特に明記しない限り、すべてのコマンドはrootとして実行する必要があります。
まず、以下をバックアップしました。
tar -zcvf /media/e14be279-8c11-450a-b52c-1493cff3c632/xxxxxxx-home.tar.gz --exclude=/home/zzzz/Downloads /home
これにより、/homeディレクトリの圧縮バックアップが作成され、外部ドライブに保存されます。 (外付けドライブのパスは異なります。)
これで、シングルユーザーモードで再起動する必要があります。
reboot
コンピュータの電源を入れ直すと、次の画面が表示されることを確認してください。
Booting Centos 2.6.32-279.22.1.el6.x86_64 in 3 seconds...
操作を中断するには、任意のキーを押します。次の画面が表示されます。
を押しaてからスペースバーを押して、を入力しますsingle
。 Enter キーを押します。
次のプロンプトが表示されます。
[root@xxxxxxx /] #
次のコマンドを入力します。
df -h
Size
、Used
と が表示されますAvail
。私たちはあなたの家のボリュームがどのくらいのスペースを使用しているかを記録したいとUsed
思います。
後で必要です。
umount /home
e2fsck -f /dev/mapper/vg_xxxxxxx-lv_home
家のボリュームがどのくらいのスペースを使用したか覚えていますか?それを倍増し、この命令を下げなさい。たとえば、私のホームディレクトリは15GBを使用するため、サイズを30GBに調整します。
resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G
警告する:次の手順でデータが失われる可能性があります。作る確かに入力したサイズが前のコマンドのサイズより大きいです。確実にするには、5GBを追加してください。
lvresize -L 35G vg_xxxxxxx/lv_home
先ほど取得したすべてのスペースを使用するようにルートパーティションに指示します。
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root
ルートパーティションにデータをコピーする
mount -t ext4 /dev/mapper/vg_xxxxxxx-lv_home /mnt/home
ls /mnt/home
cp -a /mnt/home/. /home/
(しかしこれは重要です-a
。そうでなければ、すべてがルートによって所有され、あなたはそれを望んでいないからです。)
データが正しくコピーされたことをすばやく確認してください。
ls -lR /home
これで、デフォルトのパーティションを削除し、ルートに新しいスペースを再利用するように指示します。
umount /mnt/home
lvremove /dev/mapper/vg_xxxxxxx-lv_home
lvresize -l +100%FREE vg_xxxxxxx/lv_root
resize2fs /dev/mapper/vg_xxxxxxx-lv_root
この時点で、私はあなたが学ぶことができる大きな間違いを犯しました。再起動してシステムが再起動したときに/homeパーティションをマウントできないため、ルートパーティションを読み書きでマウントすることを拒否しました。再起動する前に、次のように入力します。
nano /etc/fstab
行の1つは、システムに/ homeパーティションをマウントするように指示します。#
前に1つ追加してください。 Ctrl-O、Enter、Ctrl-X を押します。今再起動できます。
(あなたが私のようにfstabを編集するのを忘れた場合は、ルートパーティションをマウントするコマンドは次のようになりますmount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /
)
答え2
警告:作業を実行する前に、重要なデータをすべてバックアップしてください。
/homeパーティション内のすべてのデータを、他のパーティション、ローカルパーティション、外部ドライブ、または十分なスペースがある別の場所に移動する必要があります。
/home lvを削除してから/(root)lvを展開します。
データを/ homeディレクトリにコピーします。
編集1
上記の答えは、ルートパーティションにプライマリパーティションにデータを配置するのに十分なスペースがないと想定しています。
それ以外の場合は、プライマリパーティションを別の場所にマウントしてデータをコピーします。例:
umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/
次に、プライマリパーティションを削除し、ルートパーティションを展開します。
答え3
外部ストレージなしで実行できますが、/
削除する必要があります/home
。
注意しても特別な危険なプロセスではありませんが、それでも標準的なアドバイスが適用されます。まず、バックアップしてからテストしてください。
foo
ボリュームグループ名として、root
およびhome
論理ボリューム名として使用します。これにより、論理ボリュームパスfoo/root
とfoo/home
デバイスパスが作成されます/dev/mapper/foo-root
。/dev/mapper/foo-home
私はそれらが同じボリュームグループにあると仮定します。それ以外の場合、これはより複雑になり、両方のボリュームグループの物理ボリュームレイアウトに依存します。
まず、削除して/home
実行しますe2fsck -f /dev/mapper/foo-home
。次に、まずファイルシステムを縮小し、それに応じて論理ボリュームを縮小します。ここで、resize2fs /dev/mapper/foo-home NNNN
NNNNはボリューム内に保持したいブロックの数です(サフィックスまたはサフィックスと共にkB、MB、またはGBを代わりに使用できK
ますM
)G
。ファイルシステムを縮小して論理ボリュームを縮小します。lvresize -L MMMM foo/home
ここで MMMM はメガバイト数です (基本単位はとは異なりますが、resize2fs
同じサフィックス、、K
使用可能)。ファイルシステムを超えて論理ボリュームを縮小しないように注意してください。これはプロセスの危険なステップです。M
G
これで、ボリュームグループに未使用領域があります。lvresize -l +100%FREE foo/root
ルートボリュームがボリュームグループで利用可能なすべてのスペースを占有するように実行します。次に、resize2fs /dev/mapper/foo-root
(sizeパラメーターなしで)実行して、論理ボリューム全体にわたってファイルシステムを拡張します。ボリュームのマウント中に拡張を実行できます。
これで、いくつかのファイルをコピーするスペースがありました。すべてを入れるのに十分なスペースがない場合は、できるだけ移動してプロセスを繰り返します。
すべてのファイルがコピーされたら/home
破棄できます。/home
空であること(ファイルを移動した場合)、または/home
その中のすべてのファイルがコピーされていること/root
(ファイルをコピーした場合)を確認してください。不要になった論理ボリュームを削除するには、を実行しますlvremove foo/home
。最後に、ルートボリュームlvresize -l 0%FREE foo/root
とそのファイルシステム拡張を使用しますresize2fs /dev/mapper/foo-home
。
答え4
まあ、私も同じ立場にいます。 CentOSはデフォルトで小さなルートボリュームを作成します/home
。スペースが制約される前にこの問題が発見され、シングルユーザーモードに切り替える必要がない方法もわかりました。次のように:
システムにアクセスするには、sshが実行されます(rootユーザーではないと仮定)。
cd /
だからあなたはホームディレクトリにいませんsudo -s
私たちはすべてのことの原因になります。lsof /home
ホームボリュームを使用している人がいないことを確認してください。mv
、tar
または他の場所にある同様のホームコンテンツlvremove centos/home
- その行を編集し、
/etc/fstab
コメントを付けるか削除します。/home
- 以前にバックアップしたホームディレクトリの内容をもう一度移動してください
/home
。今は安全な場所にあるので、ここで再起動しても問題ありません。 lvresize -l +100%FREE centos/root
xfs_growfs /dev/centos/root
CentOS 7では、他の人が利用できます。resize2fs
df -h
成功しましたか?
これが誰かに簡単になることを願っています。最近、ファイルシステムでリアルタイムでできることは本当に驚くべきことです。