Your SlideShare is downloading. ×
  • Like
Lvmを縮小してみた
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×

Now you can save presentations on your phone or tablet

Available for both IPhone and Android

Text the download link to your phone

Standard text messaging rates apply

Lvmを縮小してみた

  • 2,689 views
Published

 

Published in Technology
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
2,689
On SlideShare
0
From Embeds
0
Number of Embeds
0

Actions

Shares
Downloads
6
Comments
0
Likes
1

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. LVMを縮小してみた 吉田@板橋 2009/8/8
  • 2. 背景• 某rpm系ディストリビューションをデフォルトで インストールするとハードディスクがLVMで構 成される 2
  • 3. LVMの利点• http://ja.wikipedia.org/wiki/論理ボリュームマネージャ• 複数PVによるボリュームグループ上に、1つのPVを超えるような論理ボリューム (LV) を作成し、扱う事が可能となる。• ディスク管理上の上限である7パーティション を超えた数の論理ボリューム (LV) を 作成可能となる。• 論理ボリューム (LV) の動的拡張・縮小が可能となる。 – 当然のことながら、LVの上に構築されるファイルシステムが動的拡張・縮小を サポートしていない場合、ファイルシステムの拡張・縮小や再構成のために システム停止が必要となる。• 物理ボリュームの追加による論理ボリュームの拡張性の維持が可能。 – 但し、ハードウェアの構成やOSの対応によっては、物理ボリュームの追加時 にシステム停止が必要となる。• ソフトウェアミラーやソフトウェアによるストライピングが可能。 3
  • 4. LVMで構築済のシステムに 別OSを入れたい• Disk初期化して再インストール – 既存システムを消したくない→ו Gparted – 起動オプションでLVMのボリュームを与えることは 可能 – PVの縮小が出来ない→ו e2fsadm – LVM1(kernel2.4)用のツール – 現在LVM2(Kernel2.6)用には無さそう→× 4
  • 5. LVMと関連要素 • 物理ディスク • パーティション • PV(Physical Volume) • VG(Volume Group) • LV(Logical Volume) • ファイルシステム物理ディスク(/dev/sda) /dev/sda1 /dev/sda2 LV Name: LV Name: (/boot) PV Name: /dev/sda2 LogVol00 LogVol01 VG Name: VolGroup00 ファイルシステム swap ext3:/ 5
  • 6. ググってみた(1)• ディスクの拡張をしている事例は多いが、縮 小している事例は少ない• http://d.hatena.ne.jp/jbking/20061213/p1 物理LVMパーティションを縮小(Shrink)したい。 LVやPVを縮めるんじゃなくてパーティション自体を縮めたい!!! 結論:無理。 現時点ではfdiskでパーティション削除&作成方法しかないみたい。最新の GNU Parted(ver.1.8.1)も対応してない。なのでもちろんGPartedもQtPartedも 駄目。唯一、WinHEXを使ってパーティションテーブルを書き換えた人がいた が、素人にはお薦めできない。 http://www.linuxquestions.org/questions//showthread.php?p=2524620#post 2524620 6
  • 7. ググってみた(2)• http://pantora.net/pages/linux/lvm/3/ – 平さんのページ ファイルシステムのリサイズ Linuxで一般的に使われているLinux ext2、Linux ext3、ReiserFSなどの ファイルシステムは、(リサイズ機能を)すでにサポートしています。 LVのリサイズ LVのサイズは変更することができます。拡大も縮小も行なえます。 PVのリサイズ Fedora Core 5 以降、Red Hat Enterprise Linux 4 Update 4 以降から PV をオンラインでリサイズする pvresize コマンドが新しく加わりました。 もしもLUNのオンラインリサイズを行えるストレージ(/dev/sdb)をお使 いの場合、PVのリサイズを行うことが可 能です。 7
  • 8. リサイズ実施• 事前準備• ライブCDで起動 – マウントしないでディスク操作をする必要が有る – そもそも空きパーティションが無い• 今回はUbuntu9.04を使用# aptitude install lvm2• synapticでuniverseリポジトリを追加後、system-config-lvmを追加インストール – ubuntu8.10のsystem-config-lvmは起動時にクラッシュして使えず。# aptitude update# aptitude install system-config-lvm – universeリポジトリ: Debian (等)から持ってきたubuntu用パッケージ集 8
  • 9. 初期状態• 初期状態 – 60GBのディスクに某ディストリビューションがデフォルトインストール# fdisk -l /dev/sdaデバイス ブート 始点 終点 ブロック Id システム/dev/sda1 * 63 208844 104391 83 Linux/dev/sda2 208845 117210239 58500697+ 8e Linux LVM# pvscan 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 ]# vgscan/dev/sda2 Found volume group "VolGroup00" using metadata type lvm2# lvscan INACTIVE /dev/VolGroup00/LogVol00 [53.81 GB] inherit INACTIVE /dev/VolGroup00/LogVol01 [1.94 GB] inherit 9
  • 10. 初期状態(2) OS起動状態 # cat /etc/fstab /dev/VolGroup00/LogVol00 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 /dev/VolGroup00/LogVol01 swap swap defaults 0 0 # df Filesystem Type 1K-blocks Used Available Use% Mounted on /dev/mapper/VolGroup00-LogVol00 ext3 54690180 4217448 47649772 9% / # cat /proc/meminfo | grep SwapTotal SwapTotal: 2031608 kB• 1 GiB = 230 B = 1,073,741,824 B / 1 MiB = 220 B = 1,048,576 B – http://ja.wikipedia.org/wiki/ギビバイト 物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 LV Name: LogVol00 LV Name:LogVol01 /boot: VG Name: VolGroup00 53.81GiB 1.94GiB 100MiB 55.78GiB ファイルシステム swap ext3:/:52.16GiB 1.94GiB 10
  • 11. ファイルシステム(/)をリサイズ • ファイルシステムチェック # e2fsck -f /dev/VolGroup00/LogVol00 e2fsck 1.41.4 (27-Jan-2009) /dev/VolGroup00/LogVol00: ***** FILE SYSTEM WAS MODIFIED ***** /dev/VolGroup00/LogVol00: 189222/14123008 files (0.5% non- contiguous), 1497076/14114816 blocks • リサイズ実行# resize2fs /dev/mapper/VolGroup00-LogVol00 10240Mresize2fs 1.41.4 (27-Jan-2009)Resizing the filesystem on /dev/mapper/VolGroup00-LogVol00to 2621440 (4k) blocks.The filesystem on /dev/mapper/VolGroup00-LogVol00 is now 2621440 blocks long.物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 LV Name: LogVol00 LV Name:LogVol01 /boot: VG Name: VolGroup00 53.81GiB 1.94GiB 100MiB 55.78GiB ファイルシステム swap ext3:/:10GiB 1.94GiB 11
  • 12. LVをリサイズ # lvreduce -L 11G /dev/VolGroup00/LogVol00 WARNING: Reducing active logical volume to 11.00 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce LogVol00? [y/n]: y Reducing logical volume LogVol00 to 11.00 GB Logical volume LogVol00 successfully resized物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 LV Name: LogVol00 LV Name:LogVol01 /boot: VG Name: VolGroup00 11GiB 1.94GiB 100MiB 55.78GiB ファイルシステム swap ext3:/:10GiB 1.94GiB 12
  • 13. PVをリサイズ(1) # pvresize --setphysicalvolumesize 10240M /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 • 失敗物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 /dev/sda2 LV Name: LogVol00 LV Name:LogVol01 /boot: VG Name: /dev/sda2 PV Name: VolGroup00 11GiB 1.94GiB 100MiB 55.78GiB VolGroup00 ファイルシステム VG Name: 55.78GiB swap ext3:/:10GiB 1.94GiB 13
  • 14. system-config-lvmで 実際の状態を確認• 原因:末尾にSwap用の領域(LogVol01)がある 14
  • 15. おもむろにswapを消す • 本来は末尾のLVを消すのではなく、別のディスクを用意して • そこにpvmoveで移動するのが筋のようだ • http://www.itmedia.co.jp/enterprise/0308/08/epn01.html • http://michilu.com/blog/posts/40/ • が、時間がかかるので省略。 # lvremove /dev/VolGroup00/LogVol01 Do you really want to remove active logical volume "LogVol01"? [y/n]: y Logical volume "LogVol01" successfully removed物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 LV Name: LogVol00 LV Name:LogVol01 /boot: VG Name: VolGroup00 11GiB 1.94GiB 100MiB 55.78GiB ファイルシステム swap ext3:/:10GiB 1.94GiB 15
  • 16. PVをリサイズ(2) # pvresize --setphysicalvolumesize 11G /dev/sda2 /dev/sda2: cannot resize to 351 extents as 352 are allocated. 0 physical volume(s) resized / 1 physical volume(s) not resized • 失敗、領域が微妙に足りない? # pvresize --setphysicalvolumesize 11264M /dev/sda2 Physical volume "/dev/sda2" changed 1 physical volume(s) resized / 0 physical volume(s) not resized • MB単位で指定して、成功物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2 ext3: PV Name: /dev/sda2 LV Name: LogVol00 /boot: VG Name: VolGroup00 11GiB 100MiB 11GiB ファイルシステム ext3:/:10GiB 16
  • 17. パーティションの再確保(1)• fdiskで領域を切り直す# fdisk /dev/sdaコマンド (m でヘルプ): pディスク /dev/sda: 60.0 GB, 60011642880 バイトヘッド 255, セクタ 63, シリンダ 7296Units = シリンダ数 of 16065 * 512 = 8225280 バイトDisk identifier: 0x0078f6c1デバイス ブート 始点 終点 ブロック Id システム/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 7296 58500697+ 8e LinuxLVM 17
  • 18. パーティションの再確保(2)コマンド (m でヘルプ): d領域番号 (1-4): 2コマンド (m でヘルプ): nコマンドアクション e 拡張 p 基本領域 (1-4)p領域番号 (1-4): 2最初 シリンダ (14-7296, 初期値 14):初期値 14 を使いますLast シリンダ, +シリンダ数 or +size{K,M,G} (14-7296, 初期値7296): +12G物理ディスク(/dev/sda):60GB≒55.9GiB /dev/sda1 /dev/sda2:12GiB ext3: PV Name: /dev/sda2 LV Name: LogVol00 /boot: VG Name: VolGroup00 11GiB 100MiB 11GiB ファイルシステム ext3:/:10GiB 18
  • 19. パーティションの再確保(3)コマンド (m でヘルプ): pディスク /dev/sda: 60.0 GB, 60011642880 バイトヘッド 255, セクタ 63, シリンダ 7296Units = シリンダ数 of 16065 * 512 = 8225280 バイトDisk identifier: 0x0078f6c1デバイス ブート 始点 終点 ブロック Id システム/dev/sda1 * 1 13 104391 83 Linux/dev/sda2 14 1581 12594960 83 Linuxコマンド (m でヘルプ): w領域テーブルは交換されました!ioctl() を呼び出して領域テーブルを再読込みします。警告: 領域テーブルの再読込みがエラー 16 で失敗しました: Device orresource busy。カーネルはまだ古いテーブルを使っています。新しいテーブルは次回リブート時に使えるようになるでしょう。ディスクを同期させます。 19
  • 20. 空き領域に別OSのインストール • 新規パーティション(例:/dev/sda3)に/を確保 – swapも単独パーティションに確保 – grubは新規パーティション(例:/dev/sda3)先頭にインストール • インストール完了後、元インストールされていたOS上で – fstabでswap設定 – /boot/grub/menu.lstの設定 • 別OSがLinuxの場合:(例/dev/sda3)上の/boot/grub/menu.lstを参 考に追記 • またはチェインロードの設定をする物理ディスク(/dev/sda)/dev/sda1 /dev/sda2:12GiB /dev/sda3 /dev/sda5 /dev/sda6,ext3: PV : /dev/sda2 LV :LogVol00 別OSの/ swap: /dev/sda7../boot: VG : 11GiB 共通使用 さらに別OS100MiB VolGroup00 ext3:/: 11GiB 10GiB 20
  • 21. 例# cat /etc/fstab/dev/VolGroup00/LogVol00 / ext3 defaults 1 1LABEL=/boot /boot ext3 defaults 1 2#/dev/VolGroup00/LogVol01 swap swap defaults 0 0/dev/sda5 swap swap defaults 0 0/boot/grub/menu.lst追加例title HogeLinux Grub (2.6.xx) root (hd0,2) chainloader +1title HogeLinux (2.6.xx) root (hd0,2) kernel /boot/vmlinuz-2.6.xx ro root=LABEL=/ initrd /boot/initrd-2.6.xx.img 21
  • 22. 参考• 平さんのページ – http://pantora.net/pages/linux/lvm/3/• system-config-lvm – http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a090configlvm.html• 物理LVMパーティションのリサイズ – http://d.hatena.ne.jp/jbking/20061213/p1• LVM関連コマンドのman 22