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

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

まあ、できるだけ詳しく説明しようと思います。だから私は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を再構築してください。

おすすめ記事