Carpe Diem

備忘録。https://github.com/jun06t

HDDの増設&LVMでパーティションの統一

HDDの容量が厳しくなっていきたので増設することにしました。 しかし単にHDDを増やすだけだと、マウントしなくちゃいけませんし、ファイルが別ドライブにまたがるのは管理が面倒です。 なのでLVMという方法を使って、増設したHDDもまとめて一つのファイルシステムにします。 ※今回のやり方は、元々のファイルシステムでLVMを利用している場合です。 Ubuntu Server版の場合、最初の設定でこの論理ボリュームの設定があります。 流れは ①HDDを増設 ②中身をまっさらに(Gpartedで。買ったばかりなら元々まっさらかも) ③partedでLVMパーティション作成 ④作成したパーティションに物理ボリュームを作成 ⑤物理ボリューム(PV)を既存のボリュームグループ(VG。LVM設定をしているとVGがあります)に追加 ⑥論理ボリューム(LV)の拡張 ⑦ファイルシステムの拡張 となります。結構長いです。⑦は⑥を土台にしているし、⑥は⑤をしないと利用できないと言ったように、上位層は下位層の土台となっているので、必ず順に実行する必要があります。 Wikiの説明では LVM構成上の管理階層構造を説明する。物理ディスク (PV:Phisical Volumeと呼ぶ)とその複数の物理ディスクを管理するボリュームグループ (VG:Volume Group)があり、物理ディスクを繋ぎ合わせて大きな論理ドライブとして管理出来る。そのVG上に論理的に設定される仮想パーティションが論理ボリューム(LV:Logical Volume) と呼ばれる。 とあります。 では実際に利用していきます。 UbuntuServer版ではすでに入ってると思いますが、以下をインストールしておいてください。 # aptitude install lvm2 まずはGpartedを起動して、増設したHDDの中身を削除します。GUIなので使いやすいと思います。 root@Server:~# gparted 終わったらfdiskで確認してみます。 root@Server:~# fdisk -l 警告: GPT (GUID パーティションテーブル) が '/dev/sda' に検出されました! この fdisk ユーティリティは GPT をサポートしません。GNU Parted を使ってください。 ディスク /dev/sda: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 512 バイト I/O サイズ (最小 / 推奨): 512 バイト / 512 バイト ディスク識別子: 0x00000000 デバイス ブート      始点        終点     ブロック   Id  システム /dev/sda1               1      243202  1953514583+  ee  GPT ディスク /dev/sdb: 2000.4 GB, 2000398934016 バイト ヘッド 255, セクタ 63, シリンダ 243201 Units = シリンダ数 of 16065 * 512 = 8225280 バイト セクタサイズ (論理 / 物理): 512 バイト / 4096 バイト I/O サイズ (最小 / 推奨): 4096 バイト / 4096 バイト ディスク識別子: 0xb2dd1d76 ③partedでLVMパーティション作成 fdiskは2.2T以上のHDDで必要なGPTを利用できません。なのでpartedを使用します。これは対話式です。 途中のmkpartは開始を1、終了部分を-0と書けばいいです。開始を1にしてるのはwindows7では云々。Ubuntuなら0でも問題ないです。多分。 また終了部分で悩みましたが、負数で指定することによって終端からのオフセットで入力できるらしいのでこの入力でいけます。 root@Server:~# parted /dev/sdb (parted) mklabel gpt (parted) mkpart primary 1 -0 (parted) set 1 lvm on ④作成したパーティションに物理ボリュームを作成 root@Server:~# pvcreate /dev/sdb1 ※過去にLVMパーティションを作っていて設定が残っている場合、「uidが前と違うよ」と怒られます。その場合は強制的に再作成します。 root@Server:~# pvcreate -ff /dev/sdb1 ⑤物理ボリューム(PV)を既存のボリュームグループ(VG。LVM設定をしているとVGがあります)に追加 既存のVGの名前を確認します。 root@Server:~# vgdisplay -v   Finding all volume groups   Finding volume group "Server"  --- Volume group ---  VG Name               Server  System ID  Format                lvm2  Metadata Areas        1  Metadata Sequence No  3  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               1.82 TiB  PE Size               4.00 MiB  Total PE              476870  Alloc PE / Size       476837 / 1.82 TiB  Free  PE / Size       33 / 132.00 MiB  VG UUID               X2uair-tQzb-u8cg-YbY0-t9JJ-tiKN-WgyZ1Y 確認できたのでVGに物理ボリュームを追加します。 root@Server:~# vgextend Server /dev/sdb1 ⑥論理ボリューム(LV)の拡張 既存のVGにあった論理ボリュームを、今回増設した分拡張します。 拡張量はFree PEを参考にします。私の場合であれば root@Server:~# vgdisplay  --- Volume group ---  VG Name               Server  System ID  Format                lvm2  Metadata Areas        2  Metadata Sequence No  4  VG Access             read/write  VG Status             resizable  MAX LV                0  Cur LV                2  Open LV               2  Max PV                0  Cur PV                2  Act PV                2  VG Size               3.64 TiB  PE Size               4.00 MiB  Total PE              953801  Alloc PE / Size       476837 / 1.82 TiB  Free  PE / Size       476964 / 1.82 TiB  VG UUID               X2uair-tQzb-u8cg-YbY0-t9JJ-tiKN-WgyZ1Y となり「476964」を使います。また論理ボリュームの指定は #vgdisplay -v したときに  --- Logical volume ---  LV Name                /dev/Server/root みたいなのが出ますので、それを使います。 root@Server:~# lvextend -l +476964 /dev/Server/root  Extending logical volume root to 3.63 TiB  Logical volume root successfully resized ファイルシステムの拡張 最後にファイルシステムを拡張します。ここまですることでようやく使用しているシステムの容量を増やせます。 先ほどの論理ボリュームに対してresizeを実行します。これはファイルシステムの種類のよって異なるみたいです。 私の環境はext4なので以下のコマンドを使用しました。普通はこのコマンドでいいと思います。 root@Server:~# resize2fs /dev/Server/root resize2fs 1.41.14 (22-Dec-2010) Filesystem at /dev/Server/root is mounted on /; on-line resizing required old desc_blocks = 117, new_desc_blocks = 233 Performing an on-line resize of /dev/Server/root to 975666176 (4k) blocks. The filesystem on /dev/Server/root is now 975666176 blocks long. ちなみに2TのHDDでこれを使用したところかなり時間がかかりました。30分ほどです。 4Tだと4時間かかった人もいるようです。一方で数Gだと一瞬で終わるとか。 容量に対して指数的に時間が増えるみたいなので注意してください。 ソース: Ubuntu 10.04で3TB-HDDを、LVMで使う LVM(ロジカルボリュームマネージャ) partedでパーティッション作成してLVMを作ってみた LVM 操作/HDD増設