物理パーティションシステムをLVMに変更する方法


10

すべてのディスクをカバーする3つの物理パーティションを持つ、Debianを搭載したサーバーがあります。ブート、ルート、スワップです。次に、そのパーティションをLVMパーティションに置き換えます。最初はLVMでDebianをインストールする方法を知っていますが、この場合、プロバイダーがリモートアクセスを備えたサーバーとこの方法でインストールされたシステムを取得するため、最初にシステムをインストールできません。

ssh接続のみを使用してパーティションを変更し、一時データを配置する他のリモートサーバーを変更するにはどうすればよいですか?


2
投票者への注意:ここにはひねりがあるので、これは参照されている質問の真似ではありません。完全にリモートです。
sysadmin1138

回答:


-1

実行中のサーバーで、/、/ boot、および<swap>パーティションのみでそれらを置き換えることはできません。これを行う唯一の方法は、/パーティションをアンマウントして圧縮し、最後に新しいLVMパーティションを作成することですが、リモートのsshアクセスしかないため、マウントされたライブパーティションをデータの破損なしに圧縮することはできません。


3
マウントされているext3ファイルシステムのサイズを変更することができます:linux.die.net/man/8/ext2online
200_success

6
決して言わないでください...
the-wabbit

21

私の側からの迅速な更新。コンテキスト:今日、LVMの代わりに物理パーティション構成でインストールされた専用サーバーをオンラインにしました。3つのパーティションがありました。

/ boot(ext4)-512M /(ext4)-730Gスワップ-8G

コンソールにアクセスできないという性質上、最終的な目標は、既存のルートパーティションをLVMに変換することでした。

ext4が縮小可能ではないことを考えると、一時ルートとしてスワップパーティションを再利用するしか方法がありませんでした。また、LVMを使用して一時的なルートを設定し、プロセスが正しく機能することを確認することにしました。

最初にスワップが判明しました:

swapoff -a

次に、partedを介してパーティションのサイズを変更しました(最初は742から750に開始されていました)。

parted
resize 3 742 744

LVMのパーティションを作成しました:

mkpart primary ext2 744 750
set 4 lvm on

一時ルートのPV / VG / LV /ファイルシステムの作成:

pvcreate /dev/sda4
vgcreate VolGroup00 /dev/sda4
lvcreate -L 5.73G -n tmproot VolGroup00
mkfs.ext4 /dev/VolGroup00/tmproot

次のステップは、ルートを一時的な場所にコピーすることでした:

mount /dev/VolGroup00/tmproot /media
rsync -ravzxq / /media/

すべてが揃ったら、/ media / etc / fstabのルートファイルシステムのエントリも変更する必要がありました。

/dev/VolGroup00/tmproot /                       ext4    defaults        1 1

ほとんどそこにある、コンソールにアクセスできない最後の、そして最も望ましくない部分は/boot/grub/grub.confを変更することでした:

元のエントリ:

title CentOS (2.6.32-279.22.1.el6.x86_64)
root (hd0,0)
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro root=UUID=e769af21-d9e1-455f-a6a7-7a9c84d8cbea rd_NO_LUKS LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu rd_NO_MD SYSFONT=latarcyrheb-sun16 crashkernel=auto rd_NO_LVM rd_NO_DM rhgb quiet
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

変更されたエントリ:

title CentOS (2.6.32-279.22.1.el6.x86_64) LVM
insmod lvm
kernel /vmlinuz-2.6.32-279.22.1.el6.x86_64 ro LANG=en_US.UTF-8  KEYBOARDTYPE=pc KEYTABLE=hu SYSFONT=latarcyrheb-sun16 crashkernel=auto dolvm root=/dev/mapper/VolGroup00-tmproot panic=10 
#rd_NO_DM rd_NO_MD rd_NO_LUKS
initrd /initramfs-2.6.32-279.22.1.el6.x86_64.img

安全のために、カーネルのdolvmパラメータとともにinsmod lvmが追加され、ルートパスもroot = / dev / mapper / VolGroup00-tmprootに変更されました。現時点では/ dev / mapper /パスを使用することが重要です。安全なデポジットとして、panic = 10パラメータも追加しましたが、ヘッダーのデフォルトのブートエントリは変更しませんでした。代わりに、grubに新しい設定で1回だけ起動するように指示してみましたが、失敗した場合は元のエントリが機能しました。

grub
savedefault --default=1 --once

そして最後に:

reboot

最初は大丈夫だったので、元のルートパーティションの上に新しいボリュームグループを作成する手順全体を繰り返し、最後にLVMを使用して適切な場所にルートを取得しました。

お役に立てれば。


1
これは、2台のRAID 1セットアップをRAID 1のLVMに完全にリモートで変換するのに非常にうまくいきました(予備のディスクがあらかじめインストールされていました)。grub2では、メニューエントリを1度だけ再起動する新しい方法は、まず/ etc / default / grubファイルを編集してGRUB_DEFAULT = savedを確認することです。その後update-grub。次に、実行grub-reboot #して、次の再起動のみに使用するメニュー項目を設定します。その後、再起動できます。
ケーシー2013

Ubuntu(およびdebian)には、GRUB構成を変更するための独自のシステムがあります。ルートパーティションの更新は、ここで指定された方法でクリーンに行うことができます:unix.stackexchange.com/a/5318/192211
EFraim

3

Linuxで不可能なことは何もありませんが、あなたが説明することを試みるには、決断力があり、夢中になる必要があります。SSHアクセスしか持っていない場合は、間違えるとサーバーにアクセスできなくなる可能性が高いことに注意してください。リモートの「シリアル」コンソールと仮想電源スイッチがある場合は、少し役立つかもしれません。とはいえ、失うデータのない新しいインストールがある場合は、それを試してみませんか?LinuxシステムをリモートでRAID1に変換するチュートリアルを見つけました。LVMで試行する手順は類似しています。

まず、一時保管スペースの必要性について考えてみましょう。サーバーに2つ目のディスクがない場合は、を使用して既存のパーティションを縮小partedできます。もちろん、これには、ブートパーティションとルートパーティションがディスクの半分未満を使用する必要があり、縮小可能なファイルシステムを使用する必要があります。(たとえば、XFSとJFSは縮小できません。)

既存のパーティションを圧縮した後、解放されたスペースにLVM物理ボリューム、ボリュームグループ、およびその中の論理ボリュームを作成できます。ファイルシステムを複製します。(ルートファイルシステムを複製するときは、を除くすべてをsshd強制終了し、理想的にはシングルユーザーモードにする必要があります。マウントされたファイルシステムを複製するのではrsyncなく、おそらく使用するdd必要があります。)

次に、Warren Togamiのチュートリアルで説明されているように、LVMをサポートするinitrdを準備し、GRUBに新しいシステムで起動するように指示します。これを実行したらparted、LVMボリュームを使用して拡張している古いファイルシステムを削除するのは簡単です。

幸運を!うまくいったかどうか教えてください!


3

以前に、centos 6で10Gのディスクパーティション「/ dev / sda2」をポイントしていたルートパーティション「/」をLVパーティションに移行しました。実行された手順は次のとおりです。

  • 10GのVMwareにハードディスクを追加。
  • システムを再起動せずにディスクを認識します。
ls / sys / class / scsi_host / | xを読みながら; 「---」をエコーし​​ます> / sys / class / scsi_host / $ {x} / scan; できた
  • 新しいディスクにパーティションを作成します。新しいディスクが/ dev / sdbであるとしましょう
  • 一緒に働く :
fdisk / dev / sdb
  • 「fdisk」インターフェイスであるため、+ 9Gの容量を割り当てるキー「n」でパーティションを作成し、「8e」(lvmパーティション)を割り当てるキー「t」でタイプパーティションを変更し、最後に「w」キーで変更を適用します。 、パーティションテーブルの外観を確認したい場合は、キー "p"を押します。
  • パーティションが作成されたら、次のコマンドでデバイスが作成されたことを確認できます(このコマンドは、ディスクが使用されていないときに機能します)。
partprobe / dev / sdb
  • デバイスが物理的に終了したら、次の順序でLVMオブジェクトを作成します。
pvcreate / dev / sdb1
vgcreate vg_root / dev / sdb1
lvcreate -v -n lv_root vg_root -L 9G
  • LVユニットが作成されたら、FSを割り当てて現在のシステムにマウントします。
mkfs -t ext4 / dev / vg_root / lv_root
mkdir / mnt / new_root /
mount -t ext4 / dev / vg_root / lv_root / mnt / new_root /
  • 現在のパーティションのFSが何かわからない場合は、次のようなコマンドで見つけることができます。
df -lhT
猫/ etc / fstab
blkid
  • 新しいLVがマウントされると、システムのすべてのファイルをコピーできます。
検索/ -xdev | cpio -pmvd / mnt / new_root /
  • ファイルをコピーしたら、「chroot」の変更に進むことができますが、その前にいくつかのパーティションをマウントします。
cd / mnt / new_root /
mount -t proc / proc proc
mount -t sysfs / sys sys /
マウント--rbind / dev dev /
  • chrootを変更しましょう
chroot / mnt / new_root /
  • 新しいルートに入ったら、ファイルを変更します。
vi / etc / fstab
  • ファイルをほぼ次のように残します:
#UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa / ext4デフォルト1 1
/ dev / mapper / vg_root-lv_root / ext4デフォルト1 1
  • ファイルが適切に変更されたら、SELINUXを「強制」または「許可」で使用する場合に備えて、「./ autorelabel」という名前のファイルをルートに作成します。
touch ./autorelabel
  • / mnt / new-rootのchroot環境から離れましょう
出口
  • urシナリオに基づいて変更が行われた場合、grubファイル「/boot/grub/grub.conf」を変更する最後の変更の1つを実行して、新しいメニューを追加します(新しいまでurの現在のブートオプションを変更しないでください)追加されたものは正しく動作します)。
# 前
タイトルCentOS 6(2.6.32-573.el6.x86_64)
        ルート(hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = en_US.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEY rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

#今
タイトルCentOS 6(2.6.32-573.el6.x86_64)
        ルート(hd0,0)
        kernel /vmlinuz-2.6.32-573.el6.x86_64 ro root = UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa rd_NO_LUKS LANG = en_US.UTF-8 rd_NO_MD SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEY rd_NO_DM rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

タイトルCentOS 6(2.6.32-573.el6.x86_64-lvroot)
        ルート(hd0,0)
        insmod lvm
        カーネル/vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = en_US.UTF-8 SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img

#追加された行は 
タイトルCentOS 6(2.6.32-573.el6.x86_64-lvroot)
        ルート(hd0,0)
        insmod lvm
        カーネル/vmlinuz-2.6.32-573.el6.x86_64 ro dolvm root = / dev / mapper / vg_root-lv_root rd.lvm.lv = vg_root / lv_root LANG = en_US.UTF-8 SYSFONT = latarcyrheb-sun16 crashkernel = auto KEYBOARDTYPE = pc KEYTABLE = us rhgb quiet
        initrd /initramfs-2.6.32-573.el6.x86_64.img
  • grubファイルの変更が完了したら、新しいinitrd isoファイルの再生成を終了します。
cd / boot
cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old
dracut -f
  • 最後に再起動:
init 6
#または
リブート
  • grubメニューが表示されたら、新しく追加された「CentOS 6(2.6.32-573.el6.x86_64-lvroot)」を選択し、正しく機能していることを確認します。
  • システムが「/ dev / sda」を使用せずに正常に動作している場合は、システムを削除して、VMまたは物理サーバーから切り離すことができます。
dd if = / dev / zero of = / dev / sda bs = 1
  • 最後の急勾配がデフォルトのエントリとして設定され、grubメニューに追加された新しい項目 "/boot/grub/grub.conf":
#default = 0
デフォルト= 1

以前に提供された情報が誰かに役立つことを願っています。

前もって感謝します、

マヌエル・ラゾ


1

彼は中間レスキューシステムを(以前は無効にされていた)スワップパーティションにセットアップし(マシンにRACがない場合は神経を破壊する作業)、そこから作業できます。また、特定のファイルシステムにはオンラインのサイズ変更ツールが存在し、その後パーティションを縮小して再起動することはKWYDの場合ですが、可能です。


ディスク上の文字通り1つのパーティションでも機能するさらに2つのクレイジーなアイデアを説明するには、a)ルートパーティションに大きな空のファイルを作成し、それが連続して割り当てられていることを確認し、ループバックドライバーを介して作業します...そのファイルの物理的な最初のブロックからパーティションを開始するパーティションテーブル。b)chroot(または、可能であれば、pivot_root)を自分でramdiskに入れ、ベースをセットアップして、そこにバックアップを作成します。
rackandboneman
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.