電源投入し、新しく装着したディスクが認識できているか確認します。
コマンドにて、新しく取り付けたディスクが認識できているか確認します。
$ dmesg|grep sd
[ 1.645723] sd 2:0:0:0: [sda] 41943040 512-byte logical blocks: (21.4 GB/20.0 GiB)
...
[ 1.647064] sd 3:0:0:0: [sdb] 83886080 512-byte logical blocks: (42.8 GB/40.0 GiB)
...
$ fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x00017ffe
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2050047 1024000 83 Linux
/dev/sda2 2050048 41943039 19946496 8e Linux LVM
Disk /dev/mapper/centos00-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos00-root: 18.3 GB, 18253611008 bytes, 35651584 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
|
上記の出力例では、/dev/sdb が新しく追加されたディスクとなります。
新しく交換するディスクが、まっさらのハードディスクであれば、/dev/sdb には、上記のようにパーティションがないはずです。
ここまでで、ディスクの追加は終わりです。
あとは、追加したディスクの 40GB を利用できるようにします。
追加ディスクを利用可能にする
先の手順にて、40GBの新HDDへ追加しました。
ただ、このままでは、20GBの旧ディスクだけが利用可能な状態で、新HDDは、使えない状態のままです。
ここでは、LVMを使ってルートディレクトリに追加ディスクを丸ごと追加してみます。
レスキューモード(リカバリモード)で起動する
ディスクの入れ替え等々ストレージのメンテナンスは、通常のシステム状態で行うことはありません。
一般的に、シングル(ユーザ)モードやレスキューモード(リカバリモード)などで作業を行うことが求められます。
ここでは、万全を期すためにも
レスキューモード ( Debian or Ubuntu では、リカバリーモード ) で作業を行うこととします。
CentOS ScientificLinux
CD/DVDドライブに インストールディスクを挿入し、システム再起動します。
CentOS 7 では、以下のような画面が表示されます。
Trouble Shooting を選択します。
Rescue a CentOS System を選択し、レスキューモードへ切り替えます。
上記のように環境設定を行うか確認メッセージが表示されます。
今回は、ディスクの変更だけですので、特別な環境設定は必要ありませんので、ここではSkipで良いでしょう。
上記のように レスキューモード のプロンプトが表示されますので、あとは、コマンドにてパーティションの変更を行います。
Debian Ubuntu
電源投入と同時に(GRUB2の場合)Shiftキーを押下します。
Ubuntu 14(LinuxMint) では、以下のような画面が表示されます。
BIOSによっては、Shiftキーに特別な意味があったり、起動のタイミングが短すぎる場合など、うまく GRUBのメニューが表示されないことがあります。
その場合は、GRUB 起動時のタイミングを少し伸ばしてやるとうまくいくでしょう。
$ vi /etc/default/grub
...
GRUB_HIDDEN_TIMEOUT=10
...
GRUB_TIMEOUT=10
...
|
変更したら、grub の設定を更新します。
$ update-grub
...
|
これで再起動した際に、BIOSの起動画面からOS起動までに10秒のタイムラグがありますから、(ほとんどは真っ暗な画面)そこで Shiftキーを押下すれば、GRUBのメニューが表示されるでしょう。
ディストリビューション名 — recoverry mode を選択します。
起動の後、上記のようにリカバリーメニューが表示されます。
root Drop to root shell prompt を選択し、リカバリーモードのシェルを起動します。
上記のように Give root password …(…): とパスワードを聞かれるので、root(管理者)のパスワードを入力します。
上記のように リカバリーモード のプロンプトが表示されますので、あとは、コマンドにて各作業を行います。
Debian or
Ubuntu のリカバリモードで作業を行う場合、
リカバリモードのデフォルトでは、
ファイルが読み取り専用となっていることに注意してください。
そのため、ファイルシステムの拡張などの実行時にエラーが発生する場合があります。
それらの作業を行う前に、
読み書き可で再マウントしておきましょう。
$ mount -o remount,rw /
|
(参考)レスキューモード(リカバリモード)とともによく利用されるのが、シングルユーザモードです。
シングルユーザモードへの切り替えは、以下のコマンドで実行することができます。
遠隔操作では不可で、端末から直接、テキストモードでログインし、以下のように入力すればシングルユーザモードに切り替わります。(参考まで)
$ init 1; exit
: (rootパスワードを入力)
|
パーティションを作成する
まずは、fdisk コマンドで 追加ディスクに、ここでは1つのパーティションを作成します。
(複数作っても良いですが、わかりやすいように1つにしておきます。)
fdisk コマンドで、追加するデバイスを指定します。
$ fdisk /dev/sdb
...
Command (m for help):
|
パーティションを作成する
Command (m for help): p
...
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 sectors
...
Device Boot Start End Blocks Id System
コマンド (m でヘルプ): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
パーティション番号 (1-4, default 1): 1
最初 sector (2048-83886079, 初期値 2048):
初期値 2048 を使います
Last sector, +sectors or +size{K,M,G} (2048-83886079, 初期値 83886079):
初期値 83886079 を使います
Partition 1 of type Linux and of size 40 GiB is set
|
ファイルシステムを LVMへ変更します。
# 先に作成したパーティションを確認しておきます。
Command (m for help)$: p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 83886079 41942016 83 Linux
# 作成したパーティションがLVMではないので、ファイルシステムの変更を行います。
Command (m for help)$: t
Partition number (1-1)$: 1
Hex code (type L to list all codes)$: 8e
Changed type of partition 'Linux' to 'Linux LVM'
# パーティションを再確認しておきます。
Command (m for help)$: p
Device Boot Start End Blocks Id System
/dev/sdb1 2048 83886079 41942016 83 Linux LVM
# 最後に変更したパーティション情報を書き込み、終了します。
Command (m for help)$: w
|
最後に、変更したパーティションを反映するために システム再起動を実施します。
(次回もレスキューモード(リカバリーモード)で起動します。)
$ reboot
|
PV を作成する
LVMを使っていますので、続けて PV, LV の拡張を行います。
レスキューモード(リカバリーモード)で、PVのサイズを変更します。
LVMでは、
PV(Physical Volume) 物理ボリューム と LV (Logical Volume) 論理ボリューム という2つのボリュームを持ちます。
LVMは、物理的に複数のボリュームを1つの論理ボリュームとして扱うことができます。
つまり、ここでいう 複数のPV を 1つのLV に割り当てることができるということです。
さらに、PVをグルーピングするVG (Volume Group) ボリュームグループを持ちます。
まずは、物理的にパーティションの容量が変更されたのですから、物理的なボリューム PV を変更します。
$ pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos00
PV Size 19.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4994
Free PE 0
Allocated PE 4994
PV UUID xe2XmG-0B9i-fGjg-8hq1-qm1S-4Z2w-7eaAp4
$ pvcreate /dev/sdb1
Physical volume "/dev/sdb1" successfully created
$ pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos00
PV Size 19.51 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4994
Free PE 0
Allocated PE 4994
PV UUID xe2XmG-0B9i-fGjg-8hq1-qm1S-4Z2w-7eaAp4
"/dev/sdb1" is a new physical volume of "40.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sdb1
VG Name
PV Size 40.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID Le6ewR-H5UE-8NTw-ZXxK-UCut-JdXs-6eOY8c
|
VG を拡張する
LV を拡張する
ファイルシステム を拡張する
レスキューモード(リカバリーモード)で、ファイルシステムのサイズを変更します。
ファイルシステムのチェックを行います。
$ e2fsck -f /dev/centos00/root
e2fsck 1.42.9 (28-Dec-2013)
...
|
もし、チェックで異常などが検出された場合は、以下のように出力されるかもしれません。
$ e2fsck -f /dev/centos00/root
e2fsck 1.42.9 (28-Dec-2013)
...
Free blocks count wrong (4000963, counted=4000911)
Fix<y>? yes
Free blocks count wrong (1063899, counted=1063896)
Fix<y>? yes
/dev/centos00/root: ***** FILE SYSTEM WAS MIDIFIED *****
/dev/centos00/root: 25640/1089536 files (0.2% non-contiguous), 351089/4352000 blocks
|
上記の例では、”修復しますか?” と聞かれますので、
yesと入力し、ファイルシステムのチェックを完了してください。
異常の内容によってメッセージも異なりますで、確認の上、指示に従って作業を行ってください。
xfsの場合は、xfs_repair コマンドで、ファイルシステムのチェックおよび修復を行います。
ファイルシステム を 拡張します。
$ resize2fs /dev/centos00/root
...
|
xfsの場合は、xfs_growfs コマンドで、ファイルシステムの拡張を行います。
最後に、システム再起動します。
(CD/DVDドライブの インストールディスクなどを装着している場合は、それらを取り出した上で再起動します。)
$ reboot
|
最後に容量を確認
システム再起動後、正しくディスクの交換および容量変更ができたか確認してみましょう。
$ df -H
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos00-root 62G 835M 61G 2% /
devtmpfs 516M 0 516M 0% /dev
tmpfs 522M 0 522M 0% /dev/shm
tmpfs 522M 6.9M 515M 2% /run
tmpfs 522M 0 522M 0% /sys/fs/cgroup
/dev/sda1 1.1G 76M 871M 8% /boot
$ free
total used free shared buffers cached
Mem: 1018256 184348 833908 6672 7564 67120
-/+ buffers/cache: 109664 908592
Swap: 2097148 0 2097148
|
ルートディレクトリ( /dev/mapper/centos00-root ) の容量がアップし、
スワップ領域( Swap total )が LVのスワップ領域のサイズと同じであればOKです。
(おまけ)ディスクを削除(縮小)にする
最後に、おまけで 上記で追加したディスクを取り外してみます。
そのためには、上記の手順の逆を追って行えば良いです。
ただし、ファイルシステムが xfs の場合、サイズを縮小することはできません。
そのため、ここでの手順は、ファイルシステムが ext3 or ext4 の場合に限ります。
まずは、レスキューモード(リカバリモード)へ切り替える
ファイルシステムを縮小する際は、必ず、対象ファイルシステムをアンマウントする必要があります。
ここで削除しようとしているファイルシステムは、ルートディレクトリになっていますから、普通にやっても使用中のためアンマウントできません。
そのため、
ここは、レスキューモード(リカバリモード)で実施します。
具体的な レスキューモード(リカバリモード)の起動方法は、 先の “レスキューモード(リカバリモード)で起動する” を参照してください。
ファイルシステムのサイズを変更(縮小)する
ファイルシステムを縮小する際は、必ず、ファイルシステムをチェックを行っておく必要があります。
先でレスキューモード(リカバリーモード)になった時点で、アンマウント状態となっていますから、
ファイルシステムをチェックし、サイズを変更します。
ファイルシステムのチェックを行います。
$ e2fsck -f /dev/centos00/root
e2fsck 1.42.9 (28-Dec-2013)
...
|
もし、チェックで異常などが検出された場合は、以下のように出力されるかもしれません。
$ e2fsck -f /dev/centos00/root
e2fsck 1.42.9 (28-Dec-2013)
...
Free blocks count wrong (4000963, counted=4000911)
Fix<y>? yes
Free blocks count wrong (1063899, counted=1063896)
Fix<y>? yes
/dev/centos00/root: ***** FILE SYSTEM WAS MIDIFIED *****
/dev/centos00/root: 25640/1089536 files (0.2% non-contiguous), 351089/4352000 blocks
|
上記の例では、”修復しますか?” と聞かれますので、
yesと入力し、ファイルシステムのチェックを完了してください。
異常の内容によってメッセージも異なりますで、確認の上、指示に従って作業を行ってください。
ファイルシステム を 変更(縮小)します。
$ resize2fs /dev/centos00/root 17G
...
|
ここで指定する容量は、小数点は使えませんので、とりあえず、40GBのディスクを完全に取り外せるだけの容量までに縮小するよう指定しています。
LVのサイズを変更(縮小)する
続けて、LV(論理ボリューム)のサイズを変更(縮小)します。
$ lvreduce -L 17G /dev/centos00/root
WARNING: Reducing active logical volume to 17.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce root? [y/n]: y
Reducing logical volume root to 17.00 GB
Logical volume root successfully resized
|
“データが消えるかもしれませんよ、それでもサイズを変更しますか?” と尋ねられますから、
ここでは、y を入力し、Enter でサイズ変更を実行します。
LVの割り当てを確認し、swapを移動させる
続けて、LV(論理ボリューム)の割り当てが、削除する後に何か存在する場合は、移動する必要があります。
$ lvscan
ACTIVE '/dev/centos00/root' [17.07 GiB] inherit
ACTIVE '/dev/centos00/swap' [1.95 GiB] inherit
|
上記のような場合、40G 減らしたLV(/dev/centos00/root) の後に swap があるようです。
この場合は、swapエリアを再割り当てすることで、40G 減らして空いた論理ボリュームの位置を詰めます。
# スワップ領域のLVを削除します。
$ lvremove /dev/centos00/swap
Do you really want to remove active logical volume swap? [y/n]: y
Logical volume "swap" successfully removed
# スワップ領域のLVを新規に作成します。
$ lvcreate -L 2G -n swap centos00
Logical volume "swap" created
# スワップ領域を作成します。
$ mkswap /dev/centos00/swap
Setting up swapspace version 1, size = 2097148 KiB
no label, UUID=xxxxxxxx-xxxxx-xxxx-xxx-xxxxxxxxxxx
|
VGから 40G のパーティションを削除する
続けて、VG(ボリュームグループ)から、取り外すディスクのパーティションを削除します。
$ vgreduce centos00 /dev/sdb1
Removed "/dev/sdb1" from volume group "centos00"
|
PVから 40G のパーティションを削除する
最後に、PV(物理ボリューム)から、取り外すディスクのパーティションを削除します。
$ pvremove /dev/sdb1
Labels on physical volume "/dev/sdb1" successfully wiped
|
ここでは、ディスク(パーティション)丸ごと削除するので、pvremove を使いました。
単純にサイズを変更する場合は、以下のように pvresize を使います。
$ pvresize --setphysicalvolumesize 10G /dev/sdb1
...
|
電源断し、ディスクを取り外す
ここまでで、設定は、全て終了です。
まず、システムを終了(電源断)させます。
$ poweroff
...
|
電源断を確認し、対象のディスクを取り外します。
取外し終えたら、電源を投入し、各容量を確認してみましょう。
$ pvdisplay
--- Physical volume ---
PV Name /dev/sda2
VG Name centos00
PV Size 19.02 GiB / not usable 3.00 MiB
Allocatable yes
PE Size 4.00 MiB
Total PE 4869
Free PE 5
Allocated PE 4864
PV UUID WL8AZf-hozo-1VFl-2bwK-sVA4-NrxG-P5D8mq
$ lvdisplay
--- Logical volume ---
LV Path /dev/centos00/root
LV Name root
VG Name centos00
LV UUID oiOMh3-EsnD-7225-8HS4-7Jh1-Qf6r-FM0oUK
LV Write Access read/write
LV Creation host, time localhost, 2015-01-21 04:12:11 +0900
LV Status available
LV Size 17.00 GiB
Current LE 4352
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:1
--- Logical volume ---
LV Path /dev/centos00/swap
LV Name swap
VG Name centos00
LV UUID GvPxDP-iXHi-8GOq-5qc6-2gs8-97kb-tk3u1e
LV Write Access read/write
LV Creation host, time localhost, 2015-01-21 04:53:51 +0900
LV Status available
LV Size 2.00 GiB
Current LE 512
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 253:0
$ vgdisplay
--- Volume group ---
VG Name centos00
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 9
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 2
Open LV 2
Max PV 0
Cur PV 1
Act PV 1
VG Size 19.02 GiB
PE Size 4.00 MiB
Total PE 4869
Alloc PE / Size 4864 / 19.00 GiB
Free PE / Size 5 / 20.00 MiB
VG UUID Lc3mgy-TEcD-3a8d-kBq4-s8xS-Ez2T-nm6NyL
$ fdisk -l
Disk /dev/sda: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk label type: dos
ディスク識別子: 0x00017ffe
デバイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 2048 2050047 1024000 83 Linux
/dev/sda2 2050048 41943039 19946496 8e Linux LVM
Disk /dev/mapper/centos00-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
Disk /dev/mapper/centos00-root: 18.3 GB, 18253611008 bytes, 35651584 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト
$ df -H
ファイルシス サイズ 使用 残り 使用% マウント位置
/dev/mapper/centos00-root 18G 850M 17G 5% /
devtmpfs 516M 0 516M 0% /dev
tmpfs 522M 0 522M 0% /dev/shm
tmpfs 522M 6.9M 515M 2% /run
tmpfs 522M 0 522M 0% /sys/fs/cgroup
/dev/sda1 1.1G 76M 871M 8% /boot
$ free
total used free shared buffers cached
Mem: 1018256 184348 833908 6672 7564 67120
-/+ buffers/cache: 109664 908592
Swap: 2097148 0 2097148
|
ルートディレクトリ( /dev/mapper/centos00-root ) の容量がダウンし、
スワップ領域( Swap total )が LVのスワップ領域のサイズと同じであればOKです。
どうだったでしょうか?
LVMの特徴でもあります異なるディスクをあたかも1つのディスクのように扱える機能を使った、ディスクの増設作業手順です。
実際のハード的なディスクの装着時以外は、電源を落とす必要もなく、オンライン状態でディスクの増設作業が行えるのは、
サーバーの管理者には、うれしいところではないでしょうか。
コメントを投稿 :