物理アクセスなしでマシンのルートパーティションを縮小する

物理アクセスなしでマシンのルートパーティションを縮小する

まあ、できるだけ詳しく説明しようと思います。だから私はChameleon Cloudを使用してノードをベアメタル(〜リモートマシン)に保持し、SSHを介してノードにアクセスします。ノードはUbuntu 20.04を実行しており、私がアクセスできるノードには1つのSSDしかありません。これは、私が作業しているプロジェクトにSSDのみが必要なため、重要です。

ルートはSSDのsda1にあり、sda1はSSD全体を占めます。

基本的にsda1(ルートを含む)を縮小し、SSDに別のパーティションを作成してから、私のプロジェクト用の別のファイルシステムをマウントしたいと思います(このファイルシステムはbtrfs、xfsなどのプロジェクト全体で変更されます)。したがって、元のEXT4ファイルシステムはsda1に保持され、他のファイルシステムを持つ追加のパーティションが必要です。しかし、これは私が物理的にアクセスできるマシンではないのでUSBフラッシュドライブまたはCDを使用して再インストールできない、等。

私はこれが混乱する可能性があり、不正確または不完全である可能性があることを知っています。これも新しい質問ではないかもしれませんが、私の状況では満足のいく答えが見つかりませんでした。私のプロジェクトリーダーはこれが解決可能な問題だと思います。詳細(コマンドスクリーンショットなど)をリクエストし、エラーを修正し、助けてください。何でも歓迎します。

お時間をいただきありがとうございます。

答え1

LVMを使用するように変換するために、Amazon Lightsail vpsでこれを行いました。まず、起動するたびにcloud-initパッケージが自動的にパーティションを増やすことを無効にする必要があります。 IIRCの場合は、成長パーツとサイズ変更を参照する/etc/cloud/cloud.cfgの行をコメントアウトまたは削除する必要があります。その後、次の2つのスクリプトを追加できます。

#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case "${1:-}" in
  prereqs)
    prereqs
    exit 0
    ;;
esac

. /usr/share/initramfs-tools/hook-functions

# copy the binary as early as possible
copy_exec /sbin/resize2fs /sbin
copy_exec /sbin/e2fsck /sbin

/etc/initramfs-tools/hooks/resize-hookに入れてください。

#!/bin/sh

PREREQ=""

prereqs()
{
        echo "$PREREQ"
}

case $1 in
# get pre-requisites
prereqs)
        prereqs
        exit 0
        ;;
esac

e2fsck -fy /dev/sda1
resize2fs /dev/sda1 9g

9gをfsを縮小したいサイズに変更し、/etc/initramfs-tools/scripts/local-premount/resizeに入れます。これらの2つのスクリプトをchmod +xしてupdate-initramfs

再起動後、ファイルシステムが縮小(df)されていることを確認し、resizepartコマンドを使用してpartedパーティションを縮小します。パーティションをファイルシステムより小さく縮小し、後で拡張して新しいresize2fsパーティションのサイズを埋めないように、パーティションに追加のGBを残すことをお勧めします。

また、ファイルシステムが縮小されたことを確認したら、上記の2つのスクリプトを削除してinitramfsを再構築してください。

答え2

プッシュの答え正しく実行すると動作しますが、小さなミスによってシステムが応答しなくなる可能性があります。これが起こると、すでにシステムにあるすべてのものが失われると思います。したがって、このオプションを選択するとスナップショットを撮る最初!


イメージという概念を中心に構築されたカメレオンクラウドをお読みください。一定期間サーバーをプロビジョニングし、ここにイメージをデプロイし、リース終了時にサーバーのスナップショットを撮らないように注意してください。そうしないと、サーバーが失われる危険があります。カメレオンに関するいくつかのヒントがあります最大イメージは単一のパーティションに推測されます。一部おそらく。

私はサーバーをその場で編集しません。代わりに、最新のスナップショットを自分のローカルコンピュータ(アクセス可能なLinuxまたはMac)にダウンロード、編集、アップロードしてから使用します。

文書によると、この画像はQCOW2 イメージ。ダウンロード後にオリジナル画像に変換可能qemu-image convertresize2fs/modifyを使用fdiskし、qemu-imageを使用して再パッケージ化して再アップロードします。

# Unpack
qemu-img convert -p -O raw base_image.qcow2 raw_image

# Repack
qemu-img convert -p -O qcow2 raw_image new_image.qcow_2

関連情報