2つの論理ボリュームがあり、一方は/としてマウントされ、もう一方は/ homeとしてマウントされます。
/
ボリュームが常に不足しています。 (はい、そのスペースを何が使用しているかはわかっています。いいえ、それを削除することはできません。)
私はそれをするために一日か二日の間機械を降ろして喜んでです。
OS: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)
完了し、再パーティション化が機能しました。ただし、両方のガイドに不足している領域があるため、私が行ったことを要約します。ユーザー名を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
ホームボリュームが使用したスペースを覚えていますか?それを2倍にして、このコマンドに渡します。たとえば、ホームディレクトリで15ギガバイトを使用していたため、サイズを30ギガバイトに設定しました。
resize2fs /dev/mapper/vg_xxxxxxx-lv_home 30G
警告:この次のステップは、データを失う可能性があるステップです。 sureを前のコマンドよりも大きいサイズに設定します。確かに5ギガバイトを追加します。
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
は重要です。そうしないと、すべてがrootによって所有され、あなたはそれを望まないからです。
データが正しくコピーされたことを簡単に確認します。
ls -lR /home
次に、ホームパーティションを削除し、rootに新しいスペースを再度取得するように指示します。
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パーティションをマウントするように指示します。 #
その前に。 Ctrl-O、Enter、Ctrl-Xを押します。 Now再起動できます。
(仮に、私と同じようにfstabを編集するのを忘れた場合、ルートパーティションをマウントするコマンドはmount -n -o remount -t ext2 /dev/vg_xxxxxxxx/lv_root /
)
外部ストレージなしで/
から実行できますが、/home
をアンマウントする必要があります。
注意してこれを行うことは特に危険な手順ではありませんが、それでも標準的なアドバイスが適用されます。最初にバックアップを作成し、それらをテストします。
ボリュームグループ名にはfoo
を使用し、論理ボリューム名にはroot
とhome
を使用します。これにより、論理ボリュームパスがfoo/root
およびfoo/home
になり、デバイスパスが/dev/mapper/foo-root
および/dev/mapper/foo-home
になります。私はそれらが同じボリュームグループにあると想定しています。そうでない場合、これはより複雑になり、2つのボリュームグループの物理ボリュームレイアウトに依存します。
まず、/home
をアンマウントしてe2fsck -f /dev/mapper/foo-home
を実行します。次に、最初にファイルシステムを縮小し、それに応じて論理ボリュームを縮小します。 resize2fs /dev/mapper/foo-home NNNN
を実行します。NNNNは、ボリューム内に保持するブロックの数です(代わりにK
、M
またはG
)。ファイルシステムを圧縮した後、論理ボリュームをlvresize -L MMMM foo/home
で圧縮します。MMMMはメガバイト数です(デフォルトの単位はresize2fs
とは異なりますが、同じサフィックスK
を使用できます) 、M
、G
)。ファイルシステムよりも論理ボリュームを縮小しないように非常に注意してください。これは、この手順の1つの危険なステップです。
ボリュームグループに未使用の部屋があります。 lvresize -l +100%FREE foo/root
を実行して、ルートボリュームがボリュームグループ内のすべての空き領域を取得するようにします。次に、resize2fs /dev/mapper/foo-root
(サイズパラメータなし)を実行して、ファイルシステムを拡大し、論理ボリューム全体に広げます。ボリュームがマウントされているときに拡大できます。
これで、いくつかのファイルをコピーする余地ができました。すべてに十分なスペースがない場合は、できるだけ移動してから手順を繰り返します。
/home
からすべてのファイルをコピーしたら、それを破棄する準備が整います。 /home
が空であること(ファイルを移動した場合)、または/home
内のすべてのファイルが/root
にコピーされていること(ファイルをコピーした場合)を確認します。不要になった論理ボリュームを破棄するには、lvremove foo/home
を実行します。最後に、ルートボリュームをlvresize -l 0%FREE foo/root
で、ファイルシステムをresize2fs /dev/mapper/foo-home
で拡大します。
警告:何かを行う前にすべての重要なデータをバックアップしてください!
すべてのデータを/ homeパーティションから別のパーティション、ローカルパーティション、外部ドライブ、または十分なスペースがある他の場所に移動する必要があります。
/ home lvを削除してから、/(root)lvを展開します
データを/ homeディレクトリにコピーします。
編集1
上記の答えは、ルートパーティションにホームパーティションにデータを配置するための十分なスペースがないことを前提としています。
そうでない場合は、ホームパーティションを別の場所にマウントし、データをコピーします。次に例を示します。
umount /home
mount /dev/mapper/lv-home /mnt/home
cp -a /mnt/home/. /home/
次に、ホームパーティションを削除し、ルートパーティションを展開します
OK、私はまったく同じ立場にいます。 CentOSはデフォルトで小さなルートボリュームを作成し、スペースの残りを/home
で埋めているようです。私は最初にVM=でセットアップをテストしましたが、小さいディスクではCentOSはホームボリュームを作成しませんでした。スペースの制約になる前にこの問題に気付き、どのようにしないかを考えました。シングルユーザーモードに入る必要があります。
マシンへのアクセスを取得します。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
成功しましたか?これが誰かにとって簡単になることを願っています。最近、ファイルシステムでライブでできることは本当に驚くべきことです。