サーバのルートドライブを新しい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
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になりました