問題
LLMを動かしているとSSDの容量が不足してきました。新しい容量の大きいSSDにOSを入れ直すのも良いのですが、今回は現在のSSDの中身をそのまま新しいSSDに移行する方法を取ります。
解決方法
1. 新しいSSDをコンピュータにつなぎます
新しい容量の大きいSSDをコンピュータにつなぎます。M2スロットでも、USB接続でも、新しいSSDが認識すればよいです。
2. OSを起動する
OSを起動します。おすすめはUSBにLinuxを入れて、USBから起動する方法です。 今回は危険を承知で移行元の容量の小さいSSDから起動します(おすすめしません)。
3. SSDの確認
次のコマンドで接続されているストレージの確認します。
sudo lsblk
実行すると次のように表示されます。
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
sda 8:0 0 931.5G 0 disk <--古いSSD
├─sda1 8:1 0 512M 0 part /boot/efi
├─sda2 8:2 0 899.1G 0 part /
└─sda3 8:3 0 32G 0 part [SWAP]
sdb 8:16 0 1.8T 0 disk <--新しいSSD
└─sdb1 8:17 0 1.8T 0 part
古いSSDはsda、新しいSSDはsdbであることがわかります。
4. 新しいSSDに古いSSDの内容を書き込む
次のようにddコマンドを使って、新しいSSDに古いSSDの内容を書き込みます。
sudo dd if=/dev/sda of=/dev/sdb bs=64K status=progress
オプションを間違えると大変なことになるので、よく確認しましょう。
これを間違えると大事
- if= は元ディスク(古いSSD)
- of= はターゲットディスク(新しいSSD)
- bs=64K はブロックサイズ
- status=progress は進行状況表示
5. パーティションの拡張
ddで無事、新しいSSDに古いSSDの内容が書き込めました。しかし、新しいSSDの内容は古いSSDのままなので、パーティション構造も古いままです。これでは、容量の大きいSSDに移行する意味がありません。そこで、パーティションの拡張を行います。
gpartedというソフトウェアを使うことで簡単パーティションの拡張ができます。次のコマンドでgpartedをインストールします。
sudo apt install gparted
次のコマンドで起動します。
sudo -E gparted #SSH越しにGUIが起動しなかったので、-Eオプションを付けて実行
gpartはGUIソフトウェアなので、メニューに従い操作すればよいです。パーティションの変更では、次の作業をしました。
- スワップ領域の削除
- 拡張したいパーティションを拡張
- スワップの作成(ついでに増やしておく)
6. SSDの入れ替え
古いSSDを取り除き、新しいSSDをコンピュータにつけます。起動すれば成功です。
次のコマンドで増えたことを確認してみましょう。
sudo lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS
nvme0n1 259:0 0 1.8T 0 disk
├─nvme0n1p1 259:1 0 512M 0 part /boot/efi
├─nvme0n1p2 259:2 0 1.8T 0 part /
└─nvme0n1p3 259:3 0 62.5G 0 part [SWAP]
起動が遅い
新しいSSDからOSが起動することが確認できましたが、起動が遅いです。どうしてでしょうか?この場合は、/etc/fstabに記載されているUUIDと実際のUUIDが違う可能性があります。確認するとスワップのUUIDが違っていました。修正しましょう。
次のコマンドでパーティションのUUIDを確認します。
sudo blkid
/dev/nvme0n1p3: UUID="xxxx-xxxx-xxxx-xxxxx-xxxx" TYPE="swap" PARTUUID="aaaa-aaaa-aaaa-aaaa"
/dev/nvme0n1p1: UUID="yyyy-yyyy-yyyy-yyyy-yyyy" BLOCK_SIZE="512" TYPE="vfat" PARTUUID="aaaa-aaaa-aaaa-aaaa"
/dev/nvme0n1p2: UUID="zzzz-zzzz-zzzz-zzzz-zzzz" BLOCK_SIZE="4096" TYPE="ext4" PARTUUID="aaaa-aaaa-aaaa-aaaa"
次にfstabに記載されているUUIDを確認します。
less /etc/fstab
UUID=zzzz-zzzz-zzzz-zzzz-zzzz / ext4 errors=remount-ro 0 1
UUID=yyyy-yyyy-yyyy-yyyy-yyyy /boot/efi vfat umask=0077 0 1
UUID=aaaa-aaaa-aaaa-aaaa-aaaa none swap sw 0 0
確認すると、swap領域のUUIDが違っていました。
次に、スワップのIDを変更します。nanoコマンドでfstabの中身を書き換えましょう。
sudo nano /etc/fstab
この部分を
UUID=aaaa-aaaa-aaaa-aaaa-aaaa none swap sw 0 0
これに変更すします。
UUID=xxxx-xxxx-xxxx-xxxxx-xxxx none swap sw 0 0
もし、他の領域もUUIDが変わっていれば、それも修正しましょう。