GNU/Linux >> Linux の 問題 >  >> Linux

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

解決策 1:

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

/ブート (ext4) - 512M/ (ext4) - 730Gswap - 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

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

grub
savedefault --default=1 --once

最後に:

reboot

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

これがお役に立てば幸いです。

解決策 2:

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

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

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

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

幸運を!うまくいったかどうかお知らせください!

解決策 3:

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

  • 10G の VMware にハードディスクを追加します。
  • システムを再起動せずにディスクを認識する
ls /sys/class/scsi_host/| while read x ; do echo "- - -" > /sys/class/scsi_host/${x}/scan ; done
  • 新しいディスクにパーティションを作成します。新しいディスクが /dev/sdb であるとします
  • 協力:
fdisk /dev/sdb
  • 「fdisk」インターフェイスでは、キー「n」で +9G の容量を割り当てるパーティションを作成し、キー「t」でタイプ パーティションを変更して「8e」(lvm パーティション)を割り当て、最後にキー「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 がマウントされたら、システムのすべてのファイルのコピーに進むことができます。
find / -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」という名前のファイルを作成しましょう。
touch ./autorelabel
  • /mnt/new-root の chroot 環境から離れましょう
exit
  • シナリオに基づいて変更が行われた場合は、最後の変更の 1 つを実行します。つまり、grub ファイル "/boot/grub/grub.conf" を変更し、新しいメニューを追加します (現在のブート オプションを変更しないでください)。追加された新しいものが正しく動作するまで)。
# 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 rd_NO_DM rhgb quiet
        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 rd_NO_DM 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
        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

# the line added was 
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
  • grub ファイルの変更が完了したら、新しい initrd iso ファイルの再生成を完了しましょう:
cd /boot
cp -av initramfs-$(uname -r).img initramfs-$(uname -r).img.old
dracut -f
  • 最後に再起動:
init 6
# or
reboot
  • 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
default=1

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

前もって感謝します、

マヌエル・ラゾ


Linux
  1. LinuxシステムのIDを変更する方法

  2. CentOS / RHEL :LVM ルート ファイル システムを縮小する方法

  3. CentOS / RHEL :LVM のボリューム グループ (VG) に物理ボリューム (PV) を追加する方法

  1. Linuxでシステムホスト名を設定または変更する方法

  2. mysql ルート パスワードを変更する方法

  3. EFI システム パーティションを作成する方法は?

  1. Linuxでホスト名を変更する方法

  2. ルートパスワードを変更するにはどうすればよいですか?

  3. 物理的なボリュームを縮小する方法は?