機械があります:
[root@SERVER ~]# df -mP
Filesystem 1048576-blocks Used Available Capacity Mounted on
/dev/sda2 124685 7462 110897 7% /
tmpfs 12016 0 12016 0% /dev/shm
/dev/sda1 485 102 358 23% /boot
/dev/sdb1 32131 48 30444 1% /var/foobar1
/dev/sdb2 16009 420 14770 3% /var/foobar2
/dev/sdb3 988 6 930 1% /var/foobar3
/dev/sdb5 988 2 935 1% /var/foobar4
/dev/sdb6 988 17 919 2% /var/foobar5
/dev/mapper/datvg-FOO 125864 81801 37663 69% /var/FOOBAR6
1.2.3.4:/var/FOOBAR7 193524 128878 54816 71% /var/FOOBAR7
[root@SERVER ~]# vgs
VG #PV #LV #SN Attr VSize VFree
datvg 1 1 0 wz--n- 204.94g 79.94g
[root@SERVER ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
FOO datvg -wi-ao---- 125.00g
[root@SERVER ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sr0 11:0 1 1024M 0 rom
sda 8:0 0 128G 0 disk
├─sda1 8:1 0 500M 0 part /boot
├─sda2 8:2 0 123.7G 0 part /
└─sda3 8:3 0 3.8G 0 part [SWAP]
sdb 8:16 0 256G 0 disk
├─sdb1 8:17 0 32G 0 part /var/foobar1
├─sdb2 8:18 0 16G 0 part /var/foobar2
├─sdb3 8:19 0 1G 0 part /var/foobar3
├─sdb4 8:20 0 1K 0 part
├─sdb5 8:21 0 1G 0 part /var/foobar4
├─sdb6 8:22 0 1G 0 part /var/foobar5
└─sdb7 8:23 0 205G 0 part
└─datvg-FOO (dm-0) 253:0 0 125G 0 lvm /var/FOOBAR6
[root@SERVER ~]#
[root@SERVER ~]# grep ^Red /etc/issue
Red Hat Enterprise Linux Server release 6.8 (Santiago)
[root@SERVER ~]#
質問:/や/ varなどのFS用LVMを使用するにはどうすれば移行できますか? LVMで同じ「パーティション」を作成し、古いFSからファイルをコピーしますか?機械はどのように始まりますか? /boot は /dev/sda1 に残ることがあります。
答え1
/では約7.4 GBしか使用し、LVMには79 GBの空き容量があるため、はい/
(および他の)に対して/var
新しいLVを作成し、/および/ varのファイルをコピーできます。コピー用におすすめですrsync
。
たとえば、新しい/および/varを/targetおよび/target/varとしてインストールするには、次のようにします。
rsync --archive --sparse --one-file-system --delete-during --delete-excluded \
--force --numeric-ids --hard-links / /var /target/
次のオプションを使用することもできます。
--human-readable --human-readable --verbose --stats --progress
シングルユーザーモードで再起動してプロセスを完了するのに十分な空き時間があるまで、この操作を必要なだけ繰り返すことができます。例:
- シングルユーザーモードで再起動
- マウント
/
と/boot
RW(まだRWでない場合) - インストール
/target
して/target/var
上記のように - 上記のように、最後のrsync
for i in proc dev sys dev/pts run boot; do mount -o bind /$i /target/$i; done
chroot /target
/etc/fstab
/および/varのデバイス/uuid/ラベルの編集と変更- 走る
update-grub
- 出口
for i in proc sys dev/pts dev boot var /; do umount /target/$i ; done
- 再起動
再起動後にすべてが正常に機能したら、/dev/sda2
LVM VGに(以前のルートパーティション)を追加できますdatvg
。
必要に応じて/boot
(次にインストール/target/boot
)のLVを作成し、rsyncなどを使用してインストールすることもできます。/
(周辺ループからブートを削除することに加えて、/var
元のバインディングをインストールしたくありません)for
mount -o bind
/boot
/target/boot
その後、スワップ用のLVも作成し、LV全体を/dev/sda
LVM VGに追加できます(sdaのすべてのパーティションを削除し、その/dev/sda1
パーティションを作成および追加)。
別のオプション:Clonezillaは素晴らしいです!
しかし、もう一つの方法は、次のものを使用することです。クローン属CDまたはUSBスティックを使用してLVMパーティションを作成し、czを使用して/および/bootをLVMに複製します。この操作を最後に実行してから時間がかかっても正確には覚えていませんが、おそらくまだ/target(および/target/var、/target/boot)をマウントし、マウントをバインドし、fstabとupdate-grub
。
実際、上記のループは起動可能なイメージのカスタムスクリプトで作成されたエイリアスからコピーされ、わずかに変更されましたfor
。したがって、このループが必要になる可能性が高いです。tftp
clonezilla
ルートシェルで利用可能なエイリアスを使用して起動します。
alias prepare-chroot-target='for i in proc dev sys dev/pts ; do mount -o bind /$i /target/$i ; done'
オプションの追加読み取り(BTRFSプロモーション)
VM用のパーティションを作成する必要があるため、LVMを使用しない場合(パーティションと他のほとんどのブロックデバイスは、VM用の.qcow2またはrawファイルよりも高速です)、次のことをお勧めします。BTFS LVMの代わりに。 LVMよりも柔軟で使いやすいです。たとえば、サブボリュームの割り当てを増やしたり減らしたりするのは簡単です。
btrfs
非常に便利な機能があり、実行できます。所定の位置から変換ext3またはext4からbtrfsへ。
残念ながら、そのWikiページには次の警告が表示されます。
警告:4.0カーネル以降、この機能は一般的に使用されなくなったり完全にテストされなくなり、変換が安定して機能しないという報告がいくつかあります。自由に試してみますが、バックアップがあることを確認してください。
あなたできる内部変換を実行し、/
ディレクトリ/var/foobar*
をbtrfsに移行し、sdbの半分をbtrfs /(RAID-1ミラーとして)に追加し、残りの半分を追加のストレージ(またはbtrfs)またはLVMに使用します。残念ながら、同じサイズのディスクペアはありません。
内部変換を実行しないことを選択した場合(おそらく賢明な作業)、プロセスは/target/{,boot,var}
ユーザー用のBtrfsボリュームと/target
サブボリューム用のLVMパーティションを作成するのではなく、上記のrsyncメソッドと似ています。別々のスワップパーティションが必要です(ディスクスワップを忘れ、RAMブロックデバイスにメインラインカーネル圧縮を使用するか、スワップを必要としないようにRAMを追加するか、どちらか)。/target/boot
/target/var
zram
ただし、データファイルと構成ファイルをバックアップし、ディストリビューションインストーラCDまたはUSBを起動し、最初から再インストールしてから(パーティションレイアウトを慎重に計画した後)、選択したバックアップ部分(/home、/)を復元する方が簡単です。 usr/local, /etc の一部の構成ファイル)。
その他のオプションの追加の読み取り(ZFSプロモーション)
ドライブの不一致を考慮すると、btrfsはより良いオプションかもしれませんが、ZFSに言及しないでbtrfsに言及することは不可能です。
仮想マシンにブロックデバイスを提供する必要があり、btrfsのような柔軟性が必要であり、メインラインではなくカーネルモジュールをインストールすることを気にしない場合は、次のようにします。ZFSbtrfsの代わりに。
btrfsが実行するほとんどすべての操作を実行します(残念ながら、再調整を除いてプールにディスクを追加するだけで、ディスクを削除したりレイアウトを変更したりすることはできません)。もっとを使用すると、ZVOL(プール内のストレージを使用するブロックデバイス)とサブボリュームを作成できます。
今日では、DebianやUbuntuなどの多くのディストリビューションにZFSを簡単にインストールできます。ディストリビューションはパッケージ(カーネル用のモジュールを含み、spl-dkms
自動的にビルド)を提供します。zfs-dkms
dkmsモジュールの構築にはかなり時間がかかりますが、それ以外は他のパッケージセットをインストールするのと同じくらい簡単で簡単です。
残念ながら、ZFSに変換することは上記のプロセスほど簡単ではありません。 rootfsをZFS自体に変換するのはかなり難しいプロセスです。同様に、btrfs
ZFSをサポートするディストリビューションを使用してデータや構成ファイルなどをバックアップし、最初からマシンを再構築する方が簡単です(Ubuntuはおそらく最善の選択肢です)LinuxのZFS現在)。
悪いことに、ZFSではvdevのすべてのパーティションまたはディスクが同じサイズである必要があるため(そうでない場合は、vdevのサイズはその中の最小のデバイスと同じくらい大きくなる可能性があります)、sdaとsdbの約半分をzpoolに追加できます。 。残りのsdbはbtrfs、ext4、xfs、またはLVMです(ZFSでZVOLを作成できるため、これは意味がありません)。
私はDebianでZFSを使用しています。 (ついにZFSがディストリビューション自体に含まれており、デフォルトのDebianパッケージを使用できるようになりました。)私は数年間(少なくとも2011年から)それを使用してきました。おすすめ。それ自体で非常に便利なbtrfsの再調整機能とプールからvdevを削除したり(現在ZFSでは不可能)、RAID-1からRAIDZ-1に変換できる機能があったらと思います。
RAID-1からRAID-5、RAID-6、またはRAID-10へのオンライン変換を実行するbtrfsの機能も優れていますが、おそらく使用しません。私はZFS用RAID-Zを含むすべてのタイプのRAID-5 / RAID-6をほとんど放棄しました(私の考えでは、パフォーマンスコストとクリーンアップまたは再同期時間はそれほど価値がありません)。好むRAID-1またはRAID-10 - プールに必要なだけRAID-1 vdevを追加できます(これにより、RAID-1をRAID-10に効果的に変換したり、既存のRAIDにさらにミラーペアを追加したりできます)。 10)。
とにかく私は仮想マシンでZVOLを広く使用しているので、btrfsはオプションではありません。