
データや Linux システム自体を失うことなく、HDD を SSD にクローンする方法を探しています。問題は、現在の HDD のサイズが 1 TB で、入手した SSD が 480 GB であるため、ディスク サイズが異なるため直接クローンを作成できないことです。ただし、ディスクが完全に使用されていないことはわかっているので、外部ツールまたはサーバーのコマンド ラインを使用して縮小できると思います。現在、サーバーに 1 TB の HDD が 2 台接続されていますが、これらの小型で高速な SSD に交換する方法がわかりません。どなたか助けていただければ幸いです。
#lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 931G 0 disk
├─sda1 8:1 0 953M 0 part /boot/efi
├─sda2 8:2 0 953M 0 part /boot
└─sda3 8:3 0 929.1G 0 part
├─rl-root 253:0 0 18.6G 0 lvm /
├─rl-swap 253:1 0 29.8G 0 lvm [SWAP]
├─rl-usr 253:2 0 10G 0 lvm /usr
├─rl-var_lib_docker 253:3 0 93.1G 0 lvm /var/lib/docker
├─rl-opt 253:4 0 93.1G 0 lvm /opt
├─rl-var_log_audit 253:5 0 4.7G 0 lvm /var/log/audit
├─rl-var 253:6 0 9.3G 0 lvm /var
├─rl-home 253:7 0 1.9G 0 lvm /home
├─rl-var_log 253:8 0 4.7G 0 lvm /var/log
├─rl-tmp 253:9 0 4.7G 0 lvm /tmp
└─rl-var_tmp 253:10 0 4.7G 0 lvm /var/tmp
# fdisk -l /dev/sd?
Disk /dev/sda: 931 GiB, 999653638144 bytes, 1952448512 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 4096 bytes
I/O size (minimum/optimal): 65536 bytes / 65536 bytes
Disklabel type: gpt
Disk identifier: 0219246B-336B-4D22-96A3-FD679EDA66DE
Device Start End Sectors Size Type
/dev/sda1 2048 1953791 1951744 953M EFI System
/dev/sda2 1953792 3905535 1951744 953M Linux filesystem
/dev/sda3 3905536 1952448478 1948542943 929.1G Linux LVM
# df -h | grep -v docker
Filesystem Size Used Avail Use% Mounted on
devtmpfs 7.5G 0 7.5G 0% /dev
tmpfs 7.5G 0 7.5G 0% /dev/shm
tmpfs 7.5G 95M 7.5G 2% /run
tmpfs 7.5G 0 7.5G 0% /sys/fs/cgroup
/dev/mapper/rl-root 19G 232M 19G 2% /
/dev/mapper/rl-usr 10G 4.8G 5.3G 48% /usr
/dev/mapper/rl-tmp 4.7G 99M 4.6G 3% /tmp
/dev/mapper/rl-home 1.9G 1014M 885M 54% /home
/dev/mapper/rl-var 9.4G 3.0G 6.4G 32% /var
/dev/sda2 949M 276M 674M 30% /boot
/dev/sda1 952M 5.8M 946M 1% /boot/efi
/dev/mapper/rl-var_tmp 4.7G 66M 4.6G 2% /var/tmp
/dev/mapper/rl-var_log 4.7G 1.3G 3.5G 27% /var/log
/dev/mapper/rl-opt 94G 7.6G 86G 9% /opt
/dev/mapper/rl-var_log_audit 4.7G 106M 4.6G 3% /var/log/audit
tmpfs 1.5G 0 1.5G 0% /run/user/0
# lshw
*-raid
description: RAID bus controller
product: MegaRAID SAS-3 3008 [Fury]
vendor: Broadcom / LSI
physical id: 0
bus info: pci@0000:02:00.0
logical name: scsi0
version: 02
width: 64 bits
clock: 33MHz
capabilities: raid pm pciexpress msi msix bus_master cap_list rom
configuration: driver=megaraid_sas latency=0
resources: irq:17 ioport:5000(size=256) memory:91c00000-91c0ffff memory:91b00000-91bfffff memory:91a00000-91afffff
*-disk
description: SCSI Disk
product: PRAID CP400i
vendor: FTS
physical id: 2.0.0
bus info: scsi@0:2.0.0
logical name: /dev/sda
version: 4.68
serial: 004f93e10b84d6222c40f6200004000e
size: 931GiB (999GB)
capabilities: gpt-1.00 partitioned partitioned:gpt
configuration: ansiversion=5 guid=0219246b-336b-4d22-96a3-fd679eda66de logicalsectorsize=512 sectorsize=4096
*-volume:0
description: Windows FAT volume
vendor: mkfs.fat
physical id: 1
bus info: scsi@0:2.0.0,1
logical name: /dev/sda1
logical name: /boot/efi
version: FAT32
serial: cbe6-07f6
size: 951MiB
capacity: 952MiB
capabilities: boot fat initialized
configuration: FATs=2 filesystem=fat mount.fstype=vfat mount.options=rw,relatime,fmask=0077,dmask=0077,codepage=437,iocharset=ascii,shortname=winnt,errors=remount-ro name=EFI System Partition state=mounted
*-volume:1
description: EFI partition
physical id: 2
bus info: scsi@0:2.0.0,2
logical name: /dev/sda2
logical name: /boot
serial: 7ca4eedb-7995-4a39-b1c8-676c006e7c83
capacity: 952MiB
configuration: mount.fstype=xfs mount.options=rw,seclabel,relatime,attr2,inode64,logbufs=8,logbsize=32k,sunit=128,swidth=128,noquota state=mounted
*-volume:2
description: LVM Physical Volume
vendor: Linux
physical id: 3
bus info: scsi@0:2.0.0,3
logical name: /dev/sda3
serial: gE8t7L-MEtM-wxjh-VGNz-19ch-dDXX-NQKV7n
size: 269GiB
capacity: 929GiB
capabilities: multi lvm2
# lspci | grep RAID
02:00.0 RAID bus controller: Broadcom / LSI MegaRAID SAS-3 3008 [Fury] (rev 02)
@Nikita 私はこれに物理的にアクセスしますが、Web からもアクセスできます。RAID 構成はソフトウェアだと思います。
答え1
再配置の可能性を考慮して構築されたシステムでは、他のデバイスを接続して初期化し、ボリュームを移行してブートローダーを再インストールするだけで簡単に実行でき、サービスを停止することなく実現できる可能性があります。
良いお知らせがあります。レイアウトはそれと一致しています。LVM を使用すると、ボリューム グループ内のすべてのスペースが割り当てられるわけではありません。すべての論理ボリュームを合わせると、480 GB SSD で通常使用可能なスペースよりも少ないスペースを占めるようです。つまり、ファイル システムのサイズ変更は必要ありません。サービスを停止しなくても、すべて実行できると思います。
また、この特定のケースとは関係ありませんが、必ずしもファイル システムを縮小してクローンを作成するだけでは済まないということを覚えておくとよいでしょう。多くの場合、新しいファイル システムを作成してファイルをコピーするだけで済みます。
Broadcom HW RAID(通称「LSI MegaRAID SAS」)は、最新のRAIDで、プログラムstorcli
Broadcom の Web サイトから入手するには、カード モデルが何であるかを知る必要があります。現時点では、3008 コントローラ チップを使用していることがわかっていますが、残念ながら、正規のダウンロード ページに誘導するには不十分です。
このユーティリティを使用すると、OS 内から RAID を操作および監視できます。この能力は必須である! ただし、私は の使用経験が十分ではありません。 を使っていましたがmegacli
、これは現在では時代遅れになっており、新しいカードで使用するのはおそらくあまり良い考えではありません。 代わりに、再起動してキーストロークを使用してブートタイム ユーティリティを呼び出し、そこから新しい論理ディスクを作成することもできます。
新しいメディア セットから新しい RAID アレイと新しい論理ディスクを作成した後、これをこのようにパーティション分割し、最後のパーティションのみを小さくして同様のレイアウトを作成する必要があります。
リモート接続を使用して移行を実行する場合は、すべての操作を または で実行することをお勧めします。screen
そうtmux
すれば、ネットワークの問題により接続が失われた場合でも、シェル セッションは維持され、接続できるようになります。ターミナルの前に座っている場合や、KVM の王様 (iLO、iDRAC、xClarity など) を使用している場合、これは重要ではありません。
/dev/sdb
新しい RAID 仮想ディスクがOS で呼び出されたと仮定します。必ず適切なデバイスを使用してください。そうしないと、データを回復するのが難しくなります。:
- 走る
fdisk /dev/sdb
- 押す
g
と GPT パーティション テーブルが作成されます (消去に同意します)。 - 同じサイズの新しいパーティションを作成して EFI システム パーティション (ESP) を作成します。
n
タイプ 1「ESP」を選択し、サイズを使用します953M
(M は MiB を意味し、既存の ESP の正確なサイズです) - ブート パーティションを作成します:
n
、「Linux ファイルシステム」(どの番号に対応するかは覚えていません) を選択し、サイズを953M
再度使用します。 - LVM パーティションを作成します:
n
、「Linux LVM」(間違っていなければ 31) を選択し、残りのスペースをすべて埋めるために、提案されたものを受け入れます。 - 変更を受け入れて終了します:
w
。
次に、LVM ではないファイルシステムをクローンします。そのためには、次の手順を実行します。
- ESP および /boot パーティションをアンマウントします。
umount /boot/efi /boot
- それらの内容を複製します:
dd if=/dev/sda1 of=/dev/sdb1
およびdd if=/dev/sda2 of=/dev/sdb2
。この段階でエラーが発生した場合は、解決するまで先に進まないでください。原因の 1 つは、サイズが正しくないことです。 - /boot に XFS を使用しているため、クローンの UUID を変更する必要があります。変更しないと、マウントできなくなります。新しい UUID で
xfs_admin -U generate /dev/sdb2
更新することを忘れないでください/etc/fstab
(マウントに UUID を使用する場合は、そうする必要があります)。 - 新しい /boot および ESP パーティションをマウントします:
mount /dev/sdb2 /boot
およびmount /dev/sdb1 /boot/efi
。
次に、残りの大きなパーティションから PV を作成し、それを既存のボリューム グループに追加します。
pvcreate /dev/sdb3
vgextend r1 /dev/sdb3
次に、最も時間のかかる操作である、HDD 物理ボリュームからデータを移動する準備をします。
pvmove -vi 5 /dev/sda3
最後に、ボリューム グループから HDD 論理ドライブを削除し、LVM ラベルを削除します。
vgreduce r1 /dev/sda3
pvremove /dev/sda3
完了したら、新しい RAID から起動するように再構成します。この新しいボリュームをプライマリ ブートにするには、RAID カードを設定する必要があります。これは通常、EFI ブートには必要ありませんが、害はないので実行してください。
新しい RAID から起動するようにファームウェア ブート エントリを設定します。OS リリースで提供されているツールを使用するか、を使用して手動で実行します。efibootmgr
いずれの場合も、具体的なコマンドは使用しているディストリビューションによって異なります。