FreeBSD で新しいディスクを複製して拡張するにはどうすればよいでしょうか?

FreeBSD で新しいディスクを複製して拡張するにはどうすればよいでしょうか?

FreeBSD を実行するサーバーは、2004 年頃から運用されています。最近、停電が発生し、再起動すると「...ファイルシステムがいっぱいです」というエラー メッセージが表示されます。

当時は 40 GB のドライブでしたが、1 TB のドライブに交換しました。dd でドライブをコピーし、Gparted を試しましたが、ファイルシステムが認識されないようです。

質問 - 古いドライブのクローンを作成し、パーティションのサイズを変更して新しいドライブの全領域を使用する最も簡単な方法は何ですか?

答え1

gpartパーティションを作成するには (gparted ではなく) を使用し、 を使用して新しいパーティションにファイル システムを配置する必要がありますnewfs。次に、dump | restoreまたは を使用してrsyncデータを新しいディスクにコピーします。最後に、 を使用してgpartドライブにブート コードがあることを確認します。詳細については、これらのコマンドのマニュアル ページを参照してください。

ただし、質問から判断すると、OS は 2004 年以降更新されておらず、サポートも終了し、セキュリティ更新も行われていないと思われます。したがって、実際には、新しいディスクに新しいシステムをインストールしてから、 または を使用して、dump | restore関連rsyncするcpデータを新しいディスクに手動でコピーする方がよいでしょう。2004 年の OS を再び実稼働環境に戻すことはお勧めしません。

答え2

私はこれを実行しましたが、/ ファイルシステムがわずかに小さい同じサイズのディスクに対して実行しました。この手順は、より大きなディスクでも機能すると確信しています。

# newdisk=ada1
# echo $newdisk
ada1
# gpart create -s GPT $newdisk
# gpart add -t freebsd-boot -i 1 -a 4K -s 512K -l gptboot ${newdisk}
ada1p1 added
# gpart bootcode -p /boot/gptboot -i 1 ${newdisk}
partcode written to ada1p1
# gpart add -t freebsd-ufs -a 4K -s 70G -i 2 -l fbsdroot $newdisk
ada1p2 added
# gpart add -t freebsd-swap -a 4K -i 3 -l fbsdswap $newdisk
ada1p3 added
# gpart show
=>       34  156249933  ada0  GPT  (75G)
         34       1024     1  freebsd-boot  (512K)
       1058  148896768     2  freebsd-ufs  (71G)
  148897826    7352140     3  freebsd-swap  (3.5G)
  156249966          1        - free -  (512B)

=>       40  156301408  ada1  GPT  (75G)
         40       1024     1  freebsd-boot  (512K)
       1064  156300384     2  freebsd-ufs  (75G)

=>       40  156301408  diskid/DISK-5JVD21RN  GPT  (75G)
         40       1024                     1  freebsd-boot  (512K)
       1064  146800640                     2  freebsd-ufs  (70G)
  146801704    9499744                     3  freebsd-swap  (4.5G)
# newfs -U /dev/ada1p2
...
# mkdir /mnt/newsys
Reboot system into single-user mode; it should come up read-only
# mount /dev/ada1p2 /mnt/newsys
# cd /mnt/newsys
dump -0 -f - /dev/ada0p2 | restore -r -Dv -f -

元のシステム ディスクには回復不可能な不良ブロックがありましたが、新しいシステムはクリーンです。幸運なことに、不良ブロックは /var/db/freebsd-update/files/ 内の未使用のファイルにあり、そのディレクトリ全体は不要になりました (6 か月前のシステム アップデートからのバックアップ)。

関連情報