LVMで単一の物理ボリュームにある2つの論理ボリュームを結合する方法は?

LVMで単一の物理ボリュームにある2つの論理ボリュームを結合する方法は?

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...

操作を中断するには、任意のキーを押します。次の画面が表示されます。

grubがcentosを起動します を押しaてからスペースバーを押して、を入力しますsingle。 Enter キーを押します。

次のプロンプトが表示されます。

 [root@xxxxxxx /] # 

次のコマンドを入力します。

df -h

SizeUsedと が表示されます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/rootfoo/homeデバイスパスが作成されます/dev/mapper/foo-root/dev/mapper/foo-home私はそれらが同じボリュームグループにあると仮定します。それ以外の場合、これはより複雑になり、両方のボリュームグループの物理ボリュームレイアウトに依存します。

まず、削除して/home実行しますe2fsck -f /dev/mapper/foo-home。次に、まずファイルシステムを縮小し、それに応じて論理ボリュームを縮小します。ここで、resize2fs /dev/mapper/foo-home NNNNNNNNはボリューム内に保持したいブロックの数です(サフィックスまたはサフィックスと共にkB、MB、またはGBを代わりに使用できKますMG。ファイルシステムを縮小して論理ボリュームを縮小します。lvresize -L MMMM foo/homeここで MMMM はメガバイト数です (基本単位はとは異なりますが、resize2fs同じサフィックス、、K使用可能)。ファイルシステムを超えて論理ボリュームを縮小しないように注意してください。これはプロセスの危険なステップです。MG

これで、ボリュームグループに未使用領域があります。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ユーザーではないと仮定)。

  1. cd /だからあなたはホームディレクトリにいません
  2. sudo -s私たちはすべてのことの原因になります。
  3. lsof /homeホームボリュームを使用している人がいないことを確認してください。
  4. mvtarまたは他の場所にある同様のホームコンテンツ
  5. lvremove centos/home
  6. その行を編集し、/etc/fstabコメントを付けるか削除します。/home
  7. 以前にバックアップしたホームディレクトリの内容をもう一度移動してください/home。今は安全な場所にあるので、ここで再起動しても問題ありません。
  8. lvresize -l +100%FREE centos/root
  9. xfs_growfs /dev/centos/rootCentOS 7では、他の人が利用できます。resize2fs
  10. df -h成功しましたか?

これが誰かに簡単になることを願っています。最近、ファイルシステムでリアルタイムでできることは本当に驚くべきことです。

関連情報