web-dev-qa-db-ja.com

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

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

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

10

私の側からの迅速な更新。コンテキスト:今日、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を使用して適切な場所にルートを取得しました。

お役に立てれば。

21
uha

以前に、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 
 cat /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 /
 mount --rbind/dev dev/
  • 今chrootを変更しましょう
 chroot /mnt/new_root/
  • 新しいルートに移動したら、ファイルを変更します。
 vi /etc/fstab
  • ファイルをほぼ次のように残します:
#UUID = 98dd25ba-feed-4ddb-80be-5e2d1ab2bdaa/ext4 defaults 1 1 
/dev/mapper/vg_root-lv_root/ext4 defaults 1 1 
  • ファイルが適切に変更されたら、SELINUXを「強制」または「許可」する場合に備えて、ルートに「./autorelabel」という名前のファイルを作成してみましょう。
 ./ autorelabel 
をタッチします
  • / mnt/new-rootのchroot環境から離れましょう
出口
  • Urシナリオに基づいて変更が行われた場合、grubファイル「/boot/grub/grub.conf」を変更するという最後の変更の1つを実行して、新しいメニューを追加します(新しいまでurの現在のブートオプションを変更しないでください)追加されたものは正しく動作します)。
#before 
 title CentOS 6(2.6.32-573.el6.x86_64)
 root(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 KEYTABLE_us。 initrd /initramfs-2.6.32-573.el6.x86_64.img

#now 
 title CentOS 6(2.6.32-573.el6.x86_64)
 root(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 KEYTABLE_us。 initrd /initramfs-2.6.32-573.el6.x86_64.img

title CentOS 6(2.6.32-573.el6.x86_64-lvroot)
 root(hd0、 0)
 insmod lvm 
 kernel /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

#追加された行は
 title CentOS 6(2.6.32-573.el6.x86_64-lvroot)
 root(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」を使用せずに正常に動作している場合は、削除してur VMまたは物理サーバーから切り離すことができます。
 dd if =/dev/zero of =/dev/sda bs = 1 
  • 最後の急勾配がデフォルトエントリとして設定され、grubメニューに追加された新しい項目「/boot/grub/grub.conf」:
#default = 0 
 default = 1 

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

前もって感謝します、

マヌエル・ラゾ

3
Manuel Lazo

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

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

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

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

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

3
200_success

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

1
rackandboneman