サーバのルートドライブを新しいSSDに変更した話

今回はメンテナンスです。
我が家で稼働中のサーバのrootドライブを新しいSSD(BX500 240GB)に交換しました!
って言うのも…

ことの始まりは唐突だった…

いつもどおりのルーティン的に新しいサーバのスペックや価格などをいじっているときに…

SSDの残り容量を確認すると45% …

wataru@gitlab:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv   55G   25G   27G  48% /

おいっ!

しかも、Intel SSD 510 120GBってどんな骨董品やねん!

wataru@gitlab:~$ sudo lshw -short | grep disk
/0/7/0.0.0       /dev/sda     disk           120GB INTEL SSDSC2MH12

公式にリリースは 「Q1’11」とか書いていますねw

https://www.intel.co.jp/content/www/jp/ja/products/sku/56576/intel-ssd-510-series-120gb-2-5in-sata-6gbs-34nm-mlc/specifications.html

SSDの寿命を考えると… 交換じゃ!

となりました。

SSDの選定基準は秘密です…

BX500 240GBにしました!

現在の状態をメモります…

パーティション

wataru@gitlab:~$ sudo fdisk -l | grep sd
Disk /dev/sda: 111.81 GiB, 120034123776 bytes, 234441648 sectors
/dev/sda1     2048      4095      2048     1M BIOS boot
/dev/sda2     4096   2101247   2097152     1G Linux filesystem
/dev/sda3  2101248 234438655 232337408 110.8G Linux filesystem

物理ボリューム(PV)

wataru@gitlab:~$ sudo pvs
  WARNING: Not using device /dev/sdb3 for PV ****-***-***.
  WARNING: PV ***-***-*** prefers device /dev/sda3 because device is used by LV.
  PV         VG        Fmt  Attr PSize    PFree 
  /dev/sda3  ubuntu-vg lvm2 a--  <110.79g 55.39g

論理ボリューム(LV)

wataru@gitlab:~$ sudo lvdisplay 
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                ***-***-***
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2021-10-27 10:16:25 +0900
  LV Status              available
  # open                 1
  LV Size                55.39 GiB
  Current LE             14181
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

ってか55.39GBってなんだよw
120GBなのに55.39GBしか論理パーティション切っていないやんw
45%の原因はこれでした。昔のSSDから持ってくるのに領域確保していなかったのだな;;

次に実際の交換作業に入ります。

SSDのクローンを作る!

現在SSDから新しいSSDにクローンを作成します

物理的に接続変更

まずは、物理的に接続を変更します。

電源断後に現在利用中のSSDのSATA・電源ケーブルを新しいSSDに差し替えます (port : SATA0)
SATA0以降番号のポートに古いSSDを接続します(今回はSATA1)

クローンするOSは…
転がっていたubuntu 20.10 server のインストールCDを使いました。
できれば、SSHとかではなく物理CDなどで動かすほうが良いです。
ddコマンドを使ってクローンを作るのでタイムアウトとかするとめんどくさいです。
インストールCDでは、キーボード選択とかしたあとに、[F2]([F3]?)とかでターミナルになります
それでSSDをコピーします。

SSDのコピー実施

クローンするドライブの向きを間違えると…
悲惨なのでクローンコマンド前に必ず接続情報を確認します

$ sudo lshw -short | grep disk
/0/7/0.0.0       /dev/sda     disk           240GB CT240BX500SSD1
/0/7/0.0.0       /dev/sdb     disk           120GB INTEL SSDSC2MH12

↑これは例です。実際のスナップは取れませんでした

物理的な番号の順にアルファベットだったはずなので、sdbを元にsdaを作成します。
/dev/sdb → /dev/sda

$sudo dd if=/dev/sdb of=/dev/sda bs=1024k

バッファサイズは超適当です

コマンド実行後… 無応答で時間がかかります。
終わったらプロンプトが戻ります

コピーが終われば終了です。そのまま電源断します。

物理接続を変更する

クローンを作ったので古いSSDは不要になります。
抜いて大切に押入れに入れておきますw

BootでCD起動されると困るのでディスクも抜いておきます

再起動!

無事に起動します…

容量を最大に使う!

これで、クローンが完成して動きますが… 120GBを240GBにしたのでその増加分を使えるようにします

まずは現状確認…

wataru@gitlab:~$ sudo lshw -short | grep disk
/0/7/0.0.0       /dev/sda     disk           240GB CT240BX500SSD1
wataru@gitlab:~$ sudo fdisk -l | grep sd
Disk /dev/sda: 223.58 GiB, 240057409536 bytes, 468862128 sectors
/dev/sda1     2048      4095      2048     1M BIOS boot
/dev/sda2     4096   2101247   2097152     1G Linux filesystem
/dev/sda3  2101248 234438655 232337408 110.8G Linux filesystem

ちゃんと110.8Gしかfdisk確保していませんね

パーティションの確保

ディスクのパーティションのサイズを調整して最大利用できるようにします。
現状確認… と思ったら、partedで入ると現在のパーティションを表示してくれます
fixとかは突撃です

wataru@gitlab:~$ sudo parted
GNU Parted 3.3
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) p                                                                
Warning: Not all of the space available to /dev/sda appears to be used, you can fix the GPT to use all of the space (an extra 234420480 blocks) or
continue with the current setting? 
Fix/Ignore? fix                                                           
Model: ATA CT240BX500SSD1 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1076MB  1074MB  ext4
 3      1076MB  120GB   119GB

119GBまで領域を確保しているようです。
今回は最大の240GBまで領域を再定義します

(parted) resizepart 3 240GB                                               

240GBにしました。ちゃんと変わっているのかを確認…

(parted) print                                                            
Model: ATA CT240BX500SSD1 (scsi)
Disk /dev/sda: 240GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name  Flags
 1      1049kB  2097kB  1049kB                     bios_grub
 2      2097kB  1076MB  1074MB  ext4
 3      1076MB  240GB   239GB

はい、変更されました。

ボリュームの確保

物理ボリューム(PV)を最大に再確保するならコマンド一発です

wataru@gitlab:~$ sudo pvresize  /dev/sda3

これで、物理ボリューム(PV)が最大になりました

wataru@gitlab:~$ sudo pvdisplay /dev/sda3
  --- Physical volume ---
  PV Name               /dev/sda3
  VG Name               ubuntu-vg
  PV Size               222.51 GiB / not usable <2.84 MiB
  Allocatable           yes 
  PE Size               4.00 MiB
  Total PE              56963
  Free PE               42782
  Allocated PE          14181
  PV UUID               ***-***-***

222.51GBと最大に入りました!

論理ボリューム(LV)を全て(100%)使うなら一発です

wataru@gitlab:~$ sudo lvextend -l +100%FREE /dev/ubuntu-vg/ubuntu-lv
  Size of logical volume ubuntu-vg/ubuntu-lv changed from 55.39 GiB (14181 extents) to 222.51 GiB (56963 extents).
  Logical volume ubuntu-vg/ubuntu-lv successfully resized.

55.39GB → 222.51GBにサイズが変更されました

wataru@gitlab:~$ sudo lvdisplay 
  --- Logical volume ---
  LV Path                /dev/ubuntu-vg/ubuntu-lv
  LV Name                ubuntu-lv
  VG Name                ubuntu-vg
  LV UUID                ***-***-***
  LV Write Access        read/write
  LV Creation host, time ubuntu-server, 2021-10-27 10:16:25 +0900
  LV Status              available
  # open                 1
  LV Size                222.51 GiB
  Current LE             56963
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           253:0

ちゃんと変更されているのを確認しました。

ファイルシステムを再定義する

次にファイルシステムを論理ボリュームにリサイズします。

wataru@gitlab:~$ sudo resize2fs /dev/mapper/ubuntu--vg-ubuntu--lv
resize2fs 1.45.5 (07-Jan-2020)
Filesystem at /dev/mapper/ubuntu--vg-ubuntu--lv is mounted on /; on-line resizing required
old_desc_blocks = 7, new_desc_blocks = 28
The filesystem on /dev/mapper/ubuntu--vg-ubuntu--lv is now 58330112 (4k) blocks long.

これで、ディスク情報を確認すると…

wataru@gitlab:~$ df -h
Filesystem                         Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv  219G   25G  185G  12% /

これでOKになりました