間違いだらけの備忘録

このページの内容は無保証でありこのページの内容によって直接、または間接に損害を受けられたとしても私は責任を取りません。

LVM領域の縮小

/bootとLVMで構成済のHDDに空きパーティション(マルチブート用を作成)
環境はubuntu9.04

  1. 初期状態
# fdisk -l /dev/sda

ディスク /dev/sda: 60.0 GB, 60011642880 バイト
ヘッド 255, セクタ 63, シリンダ 7296, 合計 117210240 セクタ
Units = セクタ数 of 1 * 512 = 512 バイト

デバイス ブート     始点        終点    ブロック   Id システム
/dev/sda1   *          63      208844      104391   83  Linux
/dev/sda2          208845   117210239    58500697+  8e  Linux LVM

また、下記作業を行うためにlvm2をインストール

# aptitude install lvm2
# losetup /dev/loop1 /dev/sda2

# vgscan 
  Reading all physical volumes.  This may take a while...
/dev/sda2 not /dev/loop1
  Found volume group "VolGroup00" using metadata type lvm2

# lvscan
  using /dev/sda2 not /dev/loop1
  ACTIVE            '/dev/VolGroup00/LogVol00' [53.81 GB] inherit
  ACTIVE            '/dev/VolGroup00/LogVol01' [1.94 GB] inherit

# pvscan 
/dev/sda2 not /dev/loop1
  PV /dev/sda2   VG VolGroup00   lvm2 [55.78 GB / 32.00 MB free]
  Total: 1 [55.78 GB] / in use: 1 [55.78 GB] / in no VG: 0 [0   ]
  1. ファイルシステムチェック
# e2fsck -f /dev/VolGroup00/LogVol00
/dev/mapper/VolGroup00-LogVol00 primary superblock features different from backup, check forced.
Pass 1: Checking iノードs, blocks, and sizes
Pass 2: Checking ディレクトリ structure
Pass 3: Checking ディレクトリ connectivity
Pass 4: Checking reference counts
Pass 5: Checking グループ summary information

/dev/mapper/VolGroup00-LogVol00: ***** FILE SYSTEM WAS MODIFIED *****
/dev/mapper/VolGroup00-LogVol00: 312602/7061504 files (0.8% non-contiguous), 1910851/14106624 blocks
  1. ファイルシステム縮小
# resize2fs /dev/mapper/VolGroup00-LogVol00 10240M
resize2fs 1.41.4 (27-Jan-2009)
Resizing the filesystem on /dev/mapper/VolGroup00-LogVol00 to 2621440 (4k) blocks.
The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 2621440 blocks long.
  1. LV縮小
# lvreduce -L -20G /dev/VolGroup00/LogVol00
using /dev/sda2 not /dev/loop1
  WARNING: Reducing active logical volume to 33.81 GB
  THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol00? [y/n]: y
  Reducing logical volume LogVol00 to 33.81 GB
  Logical volume LogVol00 successfully resized
  1. LV状態
# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                33.81 GB
  Current LE             1082
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:0
   
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol01
  VG Name                VolGroup00
  LV Write Access        read/write
  LV Status              available
  # open                 0
  LV Size                1.94 GB
  Current LE             62
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
  - currently set to     256
  Block device           252:1
  1. PV中のLVの割当てマップをsystem-config-lvmで確認

http://packages.ubuntu.com/ja/jaunty/system-config-lvm
ubuntu9.04の場合、system-config-lvmはuniverseリポジトリなので、
synapticでリポジトリを追加後、(aptitudeで)追加インストール
なお、ubuntu8.10のsystem-config-lvmは起動時にクラッシュして使えず。
確認したところ、PV中は/のLVの後にLVM上の空き領域その後末尾にswapという構成だった。

  1. PV縮小を試みる
# pvresize --setphysicalvolumesize 36G /dev/sda2
  /dev/sda2: cannot resize to 1151 extents as later ones are allocated.
  0 physical volume(s) resized / 1 physical volume(s) not resized

PV縮小失敗

  1. LVM領域の末尾にあるswap領域のLVを削除
# lvremove /dev/VolGroup00/LogVol01
Do you really want to remove active logical volume "LogVol01"? [y/n]: y
  Logical volume "LogVol01" successfully removed
  1. PV縮小
# pvresize --setphysicalvolumesize 36G
  Physical volume "/dev/sda2" changed
  1 physical volume(s) resized / 0 physical volume(s) not resized
  1. 縮小後の状態
# lvdisplay 
  --- Logical volume ---
  LV Name                /dev/VolGroup00/LogVol00
  VG Name                VolGroup00
  LV Write Access        read/write
  LV Status              NOT available
  LV Size                33.81 GB
  Current LE             1082
  Segments               1
  Allocation             inherit
  Read ahead sectors     auto
   
# vgdisplay 
  --- Volume group ---
  VG Name               VolGroup00
  System ID             
  Format                lvm2
  Metadata Areas        1
  Metadata Sequence No  8
  VG Access             read/write
  VG Status             resizable
  MAX LV                0
  Cur LV                1
  Open LV               0
  Max PV                0
  Cur PV                1
  Act PV                1
  VG Size               33.97 GB
  PE Size               32.00 MB
  Total PE              1087
  Alloc PE / Size       1082 / 33.81 GB
  Free  PE / Size       5 / 160.00 MB
   
# pvdisplay 
  --- Physical volume ---
  PV Name               /dev/sda2
  VG Name               VolGroup00
  PV Size               34.00 GB / not usable 31.81 MB
  Allocatable           yes 
  PE Size (KByte)       32768
  Total PE              1087
  Free PE               5
  Allocated PE          1082
  1. パーティション縮小

fdiskを使ってのパーティションの削除と作成

# fdisk /dev/sda
コマンド (m でヘルプ): p

ディスク /dev/sda: 60.0 GB, 60011642880 バイト
ヘッド 255, セクタ 63, シリンダ 7296
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0xbf8e740a

バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 7296 58500697+ 8e Linux LVM

コマンド (m でヘルプ): d
領域番号 (1-4): 2

コマンド (m でヘルプ): p

ディスク /dev/sda: 60.0 GB, 60011642880 バイト
ヘッド 255, セクタ 63, シリンダ 7296
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0xbf8e740a

バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 13 104391 83 Linux

コマンド (m でヘルプ): n
コマンドアクション
e 拡張
p 基本領域 (1-4)
p
領域番号 (1-4): 2
最初 シリンダ (14-7296, 初期値 14):
初期値 14 を使います
Last シリンダ, +シリンダ数 or +size{K,M,G} (14-7296, 初期値 7296):+35G

コマンド (m でヘルプ): p

ディスク /dev/sda: 60.0 GB, 60011642880 バイト
ヘッド 255, セクタ 63, シリンダ 7296
Units = シリンダ数 of 16065 * 512 = 8225280 バイト
Disk identifier: 0xbf8e740a

バイス ブート 始点 終点 ブロック Id システム
/dev/sda1 * 1 13 104391 83 Linux
/dev/sda2 14 4583 36708525 83 Linux

コマンド (m でヘルプ): w
領域テーブルは交換されました!

ioctl() を呼び出して領域テーブルを再読込みします。
ディスクを同期させます。

以上

本来は末尾のLVを消すのではなく、別のディスクを用意して
そこにpvmoveで移動するのが筋
http://www.itmedia.co.jp/enterprise/0308/08/epn01.html
http://michilu.com/blog/posts/40/
が、時間がかかるので省略。

参考
http://pantora.net/pages/linux/lvm/3/
http://hellokitty68.main.jp/wiki/LVM
http://blue21.ddo.jp/man/man2html.html?lang=ja&cmd=8+pvresize
http://d.hatena.ne.jp/jbking/20061213/p1
http://d.hatena.ne.jp/tueda_wolf/20080604/p1
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a090configlvm.html

このページにはhatena以外のサービスからのコンテンツが埋め込まれています。 hatenaによりGoogle AdSense 広告が埋め込まれています。