0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ddコマンドを使ってLinuxのOSディスクを丸ごと別ディスクへ移行

0
Posted at

はじめに

Arch LinuxのOSが入っているSSDをM.2 SSDへクローンしました。このSSDとM.2 SSDは容量が異なり、M.2 SSDの方が多いです。クローンした後容量拡張し、ストレージの全領域が使えるようにします。

  • 移行元: SSD 480GB
  • 移行先: M.2 SSD 4TB

手順

Bootable USB Flashを作成&接続

適当なPCで、Bootable USB Flashを作成します。とりあえず手元にArch LinuxのISOファイルArch Linux - Downloads をBootableとしたUSB Flashがあったためそのまま使いました。このUSB Flashを移行元・先のSSDを接続しているPCに接続し、Bootable USB FlashからArch Linuxを起動します。起動後、以下のコマンドで、各ストレージと含まれるパーティションを出力します。

lsblk
# 以下のように出力された
# NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
# loop0         7:0    0 971.9M  1 loop /run/archiso/airootfs
# sda           8:0    0 447.1G  0 disk
# ├─sda1        8:1    0   512M  0 part
# ├─sda2        8:2    0     4G  0 part
# └─sda3        8:3    0 442.6G  0 part
# sdb           8:16   1  28.9G  0 disk
# ├─sdb1        8:17   1   1.2G  0 part
# └─sdb2        8:18   1   251M  0 part
# nvme0n1     259:0    0   3.7T  0 disk
# ├─nvme0n1p1 259:1    0   100M  0 part
# ├─nvme0n1p2 259:2    0    16M  0 part
# ├─nvme0n1p3 259:3    0   3.7T  0 part
# └─nvme0n1p4 259:4    0   773M  0 part

「SIZE」の列より、以下の接続状況だとわかります。

  • sda: SSD 480GB
  • sdb: Bootable USB Flash
  • nvme0n1: M.2 SSD 4TB

クローンの実行

Arch LinuxのOSが入っているSSDをM.2 SSDへクローンします。

# 時間がかかるので、経過時間が分かるよう現在時刻を出力しておきます
date

dd if=/dev/sda of=/dev/nvme0n1 bs=64K conv=noerror,sync status=progress
# 479977340928 bytes (480 GB, 447 GiB) copied, 1674 s, 287 MB/s
# 7325805+1 records in
# 7325806+0 records out
# 480104022016 bytes (480 GB, 447 GiB) copied, 1697.85 s, 283 MB/s
# dd if=/dev/sda of=/dev/nvme0n1 bs=64K conv=noerror,sync status=progress  7.70s user 157.76s system 9% cpu 28:17.87 total

クローン完了後、パーティション等を確認します。以下のように出力されました。

lsblk -f
# NAME        FSTYPE   FSVER            LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
# loop0       squashfs 4.0                                                                     0   100% /run/archiso/airootfs
# sda
# ├─sda1      vfat     FAT32                        D8E6-C659
# ├─sda2      swap     1                            59a086d6-1223-46c8-8fa7-611f679ce776
# └─sda3      ext4     1.0                          fd325ed5-93f7-41cf-baf4-a582a6f41b0d
# sdb         iso9660  Joliet Extension ARCH_202601 2026-01-01-11-33-55-00
# ├─sdb1      iso9660  Joliet Extension ARCH_202601 2026-01-01-11-33-55-00
# └─sdb2      vfat     FAT32            ARCHISO_EFI 6956-5BA3
# nvme0n1
# ├─nvme0n1p1 vfat     FAT32                        08A9-726A
# ├─nvme0n1p4 ntfs                                  0AA0B164A0B156C3
# └─nvme0n1p3 ext4     1.0                          fd325ed5-93f7-41cf-baf4-a582a6f41b0d

クローンしたにもかかわらず、sdaとnvme0n1の内容が異なっているように見えますが、UUIDの重複のあるストレージが存在する状態なので、おかしいのかもしれません。いったんシャットダウンし、旧SSDを取り外します。再度Bootable USB FlashからArch Linuxを起動し、動揺にパーティション等を確認します。確認すると、nvme0n1の内容が正常に表示されました。

lsblk -f
# NAME        FSTYPE   FSVER            LABEL       UUID                                 FSAVAIL FSUSE% MOUNTPOINTS
# loop0       squashfs 4.0                                                                     0   100% /run/archiso/airootfs
# sda         iso9660  Joliet Extension ARCH_202601 2026-01-01-11-33-55-00
# ├─sda1      iso9660  Joliet Extension ARCH_202601 2026-01-01-11-33-55-00
# └─sda2      vfat     FAT32            ARCHISO_EFI 6956-5BA3
# nvme0n1
# ├─nvme0n1p1 vfat     FAT32                        D8E6-C659
# ├─nvme0n1p2 swap     1                            59a086d6-1223-46c8-8fa7-611f679ce776
# └─nvme0n1p3 ext4     1.0                          fd325ed5-93f7-41cf-baf4-a582a6f41b0d

lsblk
# NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
# loop0         7:0    0 971.9M  1 loop /run/archiso/airootfs
# sda           8:0    1  28.9G  0 disk
# ├─sda1        8:1    1   1.2G  0 part
# └─sda2        8:2    1   251M  0 part
# nvme0n1     259:0    0   3.7T  0 disk
# ├─nvme0n1p1 259:1    0   512M  0 part
# ├─nvme0n1p2 259:2    0     4G  0 part
# └─nvme0n1p3 259:3    0 442.6G  0 part

ディスク領域の拡張

480GBのストレージを4TBのストレージにクローンしたので、空き領域があるはずです。nvme0n1p3がデータ領域のパーティションなので、これを以下のコマンドで拡張してみます。

resize2fs /dev/nvme0n1p3
# resize2fs 1.47.3 (8-Jul-2025)
# Please run 'e2fsck -f /dev/nvme0n1p3' first.

言われた通り、e2fsck を起動してみます。途中、「extent tree」というものを最適化するかどうか聞かれましたので、すべてyesで答えました。とくにnoでも問題ないです。

e2fsck -f /dev/nvme0n1p3
# e2fsck 1.47.3 (8-Jul-2025)
# Pass 1: Checking inodes, blocks, and sizes
# Inode 1573306 extent tree (at level 1) could be narrower.  Optimize<y>? yes
# Inode 1573334 extent tree (at level 1) could be narrower.  Optimize<y>? yes
# Inode 1573371 extent tree (at level 1) could be narrower.  Optimize<y>? yes
# ...(中略)
# Pass 1E: Optimizing extent trees
# Pass 2: Checking directory structure
# Pass 3: Checking directory connectivity
# Pass 4: Checking reference counts
# Pass 5: Checking group summary information
# 
# /dev/nvme0n1p3: ***** FILE SYSTEM WAS MODIFIED *****
# /dev/nvme0n1p3: 1178839/29016064 files (0.7% non-contiguous), 96585352/116032977 blocks

完了しました。
もう一度、resize2fsでファイルシステムを拡張します。が、うまく行きません。すでに最大まで拡張されており何もすることがないと言われます。

resize2fs /dev/nvme0n1p3
# resize2fs 1.47.3 (8-Jul-2025)
# The filesystem is already 116032977 (4k) blocks long.  Nothing to do!

どうも、最初にパーティションの拡張が必要のようです。以下のコマンドでパーティションを拡張します。

parted /dev/nvme0n1
# GNU Parted 3.6
# Using /dev/nvme0n1
# Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) print # 現状のパーティション状態を確認
# Warning: Not all of the space available to /dev/nvme0n1 appears to be used, you can fix the GPT to use all of the space (an extra 7063870464 blocks) or continue with the current setting?

すべてのスペースを使っていないという警告が出力されますので、「Fix」を入力します。

Fix/Ignore? Fix # <---Fixと入力した
#
# Model: xxxxxxxxxxxxxxxxxxxxx (nvme)
# Disk /dev/nvme0n1: 4097GB
# Sector size (logical/physical): 512B/512B
# Partition Table: gpt
# Disk Flags:
# 
# Number  Start   End     Size    File system     Name  Flags
#  1      1049kB  538MB   537MB   fat32           EFI   boot, esp
#  2      538MB   4833MB  4295MB  linux-swap(v1)  swap  swap
#  3      4833MB  480GB   475GB   ext4            root

正常にパーティション一覧が表示されるので、データ領域を拡張します。上記の場合は、パート1がboot領域、2がswap、3にデータ領域となっているので、以下のように入力しました。

(parted) resizepart 3 100%
(parted) print
# Model: MS950G70PCIe4HSE-04TB (nvme)
# Disk /dev/nvme0n1: 4097GB
# Sector size (logical/physical): 512B/512B
# Partition Table: gpt
# Disk Flags:
# 
# Number  Start   End     Size    File system     Name  Flags
#  1      1049kB  538MB   537MB   fat32           EFI   boot, esp
#  2      538MB   4833MB  4295MB  linux-swap(v1)  swap  swap
#  3      4833MB  4097GB  4092GB  ext4            root
# 

パーティション3が拡張されました。完了です。

(parted) quit
# Information: You may need to update /etc/fstab.

再度resizeを実行します。

resize2fs /dev/nvme0n1p3
# resize2fs 1.47.3 (8-Jul-2025)
# Resizing the filesystem on /dev/nvme0n1p3 to 999016785 (4k) blocks.
# The filesystem on /dev/nvme0n1p3 is now 999016785 (4k) blocks long.

今度は正常に処理が完了しました。ファイルシステムの拡張が完了しました。

lsblk
# NAME        MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
# loop0         7:0    0 971.9M  1 loop /run/archiso/airootfs
# sda           8:0    1  28.9G  0 disk
# ├─sda1        8:1    1   1.2G  0 part
# └─sda2        8:2    1   251M  0 part
# nvme0n1     259:0    0   3.7T  0 disk
# ├─nvme0n1p1 259:1    0   512M  0 part
# ├─nvme0n1p2 259:2    0     4G  0 part
# └─nvme0n1p3 259:3    0   3.7T  0 part

Bootable USB FlashをPCから取り外し、クローンしたストレージから起動すれば完了です。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?