Linux パーティションのサイズを変更する: 第 2 回 高度なサイズ変更

LVM、トラブルシューティング、そして代わりとなる手段

Linux® システムは、それぞれにサイズが決められた複数のパーティションにインストールされることがよくあります。その一方で、ニーズが変化すると、その変化に応じてパーティションのサイズを変更する必要に迫られることは珍しくありません。Linux にはパーティションのサイズを変更するためのツールがいくつかありますが、パーティションのサイズ変更というタスクを、最初に思ったよりも困難なものにする落とし穴や制約はさまざまにあります。この記事では、パーティション・サイズの高度な変更方法を取り上げ、LVM (Logical Volume Management) 機能の使用方法、トラブルシューティング、そしてパーティションのサイズ変更に代わる手段について説明します。基本的なパーティションのサイズ変更については、この連載の第 1 回で説明しています。

Roderick W. Smith, Consultant and author

Roderick Smith author photoRoderick W. Smith はコンサルタントであり、『The Definitive Guide to Samba 3』、『Linux in a Windows World』、『Linux Professional Institute Certification Study Guide』など、UNIX や Linux に関する数々の著作もあります。彼は現在、ロードアイランドのウーンソケットに住んでいます。



2010年 9月 01日

この連載の第 1 回で説明したようなパーティション・サイズの単純な変更操作は、たいていの場合は正常に完了するものです。けれども場合によっては、単純なサイズ変更では必要を満たせないことや、問題のトラブルシューティングが必要になってくることもあります。この記事では、そのような場合について取り上げます。最初のトピックは LVM による構成です。LVM がパーティション・サイズの変更をどのように行うのかを説明した後、次のトピックとしてトラブルシューティングの手法を説明します。パーティションのサイズを変更する際に起こり得るすべての問題を網羅するとなると 1 冊の本になってしまいますが、いくつかの基本原則をおさえておくことで、一般的な多くの問題に対処することができます。そして最後に、パーティション・サイズの変更だけでは太刀打ちできない問題に突き当たった場合に、それに代わる手段をいくつか説明して記事を締めくくります。

LVM によるサイズ変更

LVM は、従来のパーションを補う、あるいはそれに置き換わるディスク割り当て手法です。LVM による構成では、1 つまたは複数のパーティション、あるいは場合によってはディスク全体をボリューム・グループ内の物理ボリュームとして割り当てた上で、論理ボリュームに分割します。これらの論理ボリュームに作成されるファイルシステムは、従来の構成でのパーティションとほとんど同じように扱われます。このディスク割り当て手法には複雑さが伴いますが、柔軟性がもたらされるというメリットがあります。LVM による構成では、複数の小さなディスクのディスク・スペースを組み合わせて 1 つの大きな論理ボリュームにすることが可能だからです。パーティション・サイズの変更という点でさらに重要なことに、論理ボリュームはファイルシステム上のファイルと同じように作成、削除、サイズ変更することができます。つまり、パーティションの開始ポイントを考慮する必要はありません。考慮する必要があるのはパーティションの絶対サイズだけです。

注: この記事では LVM のセットアップ方法については説明しません。LVM 構成をまだ使用していない場合、LVM による構成を使用するようにシステムを変換することは可能ですが、その方法については Linux LVM HOWTO (「参考文献」を参照) などの資料で調べてください。

物理ボリュームのサイズ変更

LVM を使用せずに作成したパーティションのサイズを連載第 1 回で説明した方法で変更した後、LVM による構成にスペースを追加するとしたら、以下の 2 つの選択肢があります。

  • 空のスペースに新しいパーティションを作成し、そのパーティションを LVM に追加します。
  • 既存の LVM パーティションのサイズを変更します (そのパーティションが新しいスペースと連続している場合)。

連載第 1 回で説明した GParted (別名、Gnome Partition Editor) ツールは、残念ながら LVM パーティションのサイズ変更をサポートしていません。したがって、空きスペースに新しいパーティションを作成し、それを新しい物理ボリュームとして既存のボリューム・グループに追加するのが、スペースをボリューム・グループに追加する最も簡単な方法となります。

GParted で直接 LVM パーティションを作成することはできませんが、以下のツールのいずれかを使用すれば LVM パーティションを作成できるようになります。

  • parted (テキスト・モードの GNU Parted)
  • fdisk (MBR (Master Boot Record) ディスクの場合)
  • gdisk (GPT (GUID (Globally Unique Identifier) Partition Table) ディスクの場合)

parted を使用する場合、set コマンドを使って lvm フラグを立てることができます。例えば、パーティション 1 に LVM パーティションのフラグを立てるには、set 1 lvm on とします。fdisk を使用する場合には、t コマンドを使用してパーティションのタイプ・コードを 8e に設定してください。gdisk でも同様ですが、ただしこのツールを使用する場合は LVM パーティションに対応するタイプ・コードとして 8e00 を設定します。

いずれの場合にしても、まず pvcreate コマンドで基本 LVM データ構造をパーティションにセットアップする必要があります。その上で vgextend コマンドを使用して、基本 LVM データ構造がセットアップされたパーティションをボリューム・グループに追加します。例えば /dev/sda1 を既存の MyGroup ボリューム・グループに追加するには、以下のコマンドを入力します。

pvcreate /dev/sda1
vgextend MyGroup /dev/sda1

以上の変更が完了すれば、ボリューム・グループ内の論理ボリュームのサイズを大きくできるようになります。次は、その方法について説明します。

論理ボリュームのサイズ変更

ファイルシステムの場合、論理ボリュームのサイズは、パーティションのサイズを変更するときよりも簡単に変更することができます。それは LVM では、番号が連続する一連のセクターをパーティションという形で確保しておく必要がないからです。論理ボリューム自体のサイズを変更するには、lvresize コマンドを使用します。このコマンドが取るオプションはさまざまにありますが (詳細は man ページを参照)、そのうち最も重要なオプションは -L です。このオプションに、新しいサイズまたは変更するサイズの値を先頭にプラス (+) またはマイナス (-) 記号を付けて指定します。また、論理ボリュームのパスも指定する必要があります。例えば、MyGroup グループに含まれる usr 論理ボリュームのサイズを 5 ギビバイト (GiB) 分増やすとしたら、以下のように指定します。

lvresize -L +5G /dev/mapper/MyGroup-usr

このコマンドは指定された論理ボリュームのサイズを調整しますが、注意する点として、このコマンドによる変更はパーティション単独の変更とほとんど変わりません。つまり、論理ボリュームに含まれるファイルシステムのサイズは変更されないということです。ファイルシステムのサイズを調整するには、ファイルシステムに固有のツール (resize2fsresizereiserfsxfs_growfs など) を使用するか、JFS (Journaled File System) をマウントする際に resize マウント・オプションを使用しなければなりません。サイズ・オプションを指定しないでこれらのツールを使用すると、ファイルシステムのサイズは新しい論理ボリュームのサイズに合わせて変更されます。この方法は、論理ボリュームを大きくする際には便利です。

一方、論理ボリュームのサイズを小さくする作業は、もう少し複雑なものになります。この場合、まずファイルシステムのサイズを変更し (resize2fs や同様のツールを使用)、それから論理ボリュームを新しいサイズまで縮小しなければなりません。論理ボリュームのサイズを誤って小さすぎる値に設定すると致命的なエラーが発生する可能性があるため、最初にファイルシステムを目的のサイズよりも大幅に小さなサイズに縮小してから、論理ボリュームを新しいサイズに変更し、それからファイルシステムを目的のサイズになるように拡大する (その際、自動サイズ変更機能を使用して、ファイルシステムのサイズが新しい論理ボリュームのサイズと同じになるようにする) という方法をお勧めします。

もう 1 つ注意する点として、Linux 固有のファイルシステムのほとんどは縮小することができますが、XFS や JFS を縮小することはできません。このようなファイルシステムが含まれる論理ボリュームを縮小しなければならないとしたら、目的とする小さなサイズの論理ボリュームを新しく作成し、前者の論理ボリュームの内容を新しく作成したボリュームにコピーした上でマウント・ポイントを調整し、それから元の論理ボリュームを削除することになります。そのための空きスペースが十分にない場合には、バックアップを中間ステップとして使用せざるを得ません。

GUI LVM ツールの使用

前述のテキスト・モードのツールはその役目を果たすものの、操作するには手ごわい相手になるかもしれません。それよりもグラフィカル・ユーザー・インターフェース (GUI) ツールで操作したいという場合には、少なくとも以下の 2 つのツールを使用して LVM を操作することができます。

  • kvpm — これは KDE (K Desktop Environment) を統合したツールで、論理ボリュームのサイズ変更オプションを含め、一般的な LVM 操作にアクセスすることができます。
  • system-config-lvm — Red Hat によって開発されたプログラムですが、他にもこのプログラムを使用できるディストリビューションがあります。サイズ変更操作をはじめとする LVM 管理に、ポイント・アンド・クリック方式でアクセスできるという点で kvpm と似ています。

上記のうち、system-config-lvm のほうが多少単純で使いやすいユーザー・インターフェースとなりますが、どちらもその役割を果たすことには変わりありません。図 1 に system-config-lvm の実行中の画面を示します。論理ボリュームのサイズを変更するには、左側ペインでそのボリュームの名前をクリックしてから、中央のパネルに表示された「Edit Properties (プロパティーの編集)」ボタンをクリックします。すると、スライダーを使ってボリュームのサイズを調整できるようになります。

図 1. 論理ボリュームのサイズを比較的簡単に変更できるようにする GUI ツール
論理ボリュームのサイズを比較的簡単に変更できるようにする GUI ツール

問題のトラブルシューティング

あいにく、パーティション・サイズの変更操作が期待通りに機能しない場合もあります。サイズ変更ソフトウェアが不可解なメッセージを伴ったエラーをレポートすることは珍しくありません。そのような問題には数えきれないほどの原因が考えられますが、その大部分は、いくつかの簡単な次善策を施すことで解決することができます。そうした次善策としては、ファイルシステムの問題を解決すること、そして複雑なサイズ変更操作を複数の操作に分けて行うことなどがあります。

ファイルシステムの問題の解決

パーティション・サイズの変更に失敗する原因としてよくあるのは、ファイルシステムが壊れていることです。すべての実動ファイルシステムには、このような問題を解決するためのファイルシステム・リカバリー・ツールが組み込まれています。サイズを変更する前に、これらのツールをファイルシステムで実行することで、サイズ変更操作が順調に進む結果となることはよくあります。

Linux のファイルシステム・チェック・ツールは fsck です。このツールを呼び出すには、チェック対象のファイルシステムに関連付けられたデバイスのファイル名を渡します。つまり、/dev/sda1 をチェックする場合には fsck /dev/sda1 のようにします。ただし、fsck は主としてファイルシステム固有のツール (ext2fs、ext3fs、および ext4fs といったファイルシステムには e2fsck など) のフロントエンドとして利用されるユーティリティーです。たいていは、ファイルシステム固有のツールを直接呼び出したほうが、より詳細なオプションを利用することができます。例えば e2fsck-f オプションを指定すると、ファイルシステムがクリーンであるように見えたとしても、デバイスのチェックが強行されます。このオプションは、とおり一遍の検査では明らかにならないような破損を見つけるために必要になるかもしれません。ファイルシステムに固有の fsck ヘルパー・プログラムのドキュメントを参照し、それぞれのツールで使用できるオプションを調べてください。

ほとんどの場合、fsck やそのヘルパー・プログラムは、アンマウントされたファイルシステムで実行しなければなりません。そのため、連載第 1 回で説明したように緊急用ブート・システムからチェックを行わなければならないこともあります。

Linux 以外のファイルシステムで問題が発生した場合、fsck を使用してそのファイルシステムをチェックすることもできますが、適切なチェックを行うためには、当該ファイルシステムのネイティブ・オペレーティング・システムをブートする必要が出てきます。具体的に言うと、Linux には Microsoft® Windows® NTFS (New Technology File System) 用の保守ツールとして初歩的なものしか用意されていないため、NTFS を適切にチェックするには、Windows の CHKDSK ユーティリティーを使用する必要があります。

CHKDSK ユーティリティーを使用する場合、ディスクの問題をすべてレポートさせるには、何回かユーティリティーを実行しなければならないかもしれません。一方で、Linux の ntfsfix ユーティリティーを使用すると、Linux で実行可能な限られたチェックが実行され、次回 Windows がブートしたときに自動チェックが行われるよう、対象とするファイルシステムにフラグが立てられます。

ファイルシステムの整合性とは関係ありませんが、ディスクの断片化も注意を向けなければならない問題です。ファイルシステムのサイズ変更操作を行う前に、ディスクのデフラグを実行することで問題を解消できる場合があります。デフラグは、Linux のネイティブ・ファイルシステムで必要になることはほとんどありませんが (また、たいていは実行不可能です)、FAT (File Allocation Table) または NTFS パーティションには有効な可能性があります。

操作の分割

GParted にいくつものサイズ変更操作と移動操作を入力して、その操作が失敗した場合には、一度に 1 つの操作だけを入力して「Apply (適用)」ボタンをクリックしてみてください。これによって問題が解消されることはないとは思いますが、少なくとも、問題の原因となっている操作に依存していない他の操作を実行することはできます。操作の内容次第では、全体的な目標の一部を実現することができたり、あるいは問題に対処する別の方法が見つかったりすることもあります。

場合によっては、サイズ変更操作を複数のユーティリティーに分けて行うという手段を採ることもできます。例えば、FAT、NTFS、または HFS+ (Hierarchical File System Plus) パーティションのサイズを変更するには、Windows または Mac OS X のユーティリティーを使用できる可能性があります。Linux でパーティションのサイズを変更するには GParted が最もユーザー・フレンドリーな方法となりますが、1 つの操作だけが問題の原因となっているとしたら、テキスト・モードのユーティリティー (resize2fs など) を使用することで、より詳細な診断出力を得ることができます。さらには、GParted では失敗した操作に成功する可能性さえあります。ただし念頭に置いておくべき点として、ほとんどのテキスト・モードのツールはパーティションまたはファイルシステムのどちらか一方のサイズを変更しますが、両方のサイズを変更することはありません。したがって、パーティションとそのファイルシステム両方のサイズを変更するには、GUI ツールとテキスト・モードのツールを組み合わせて使用する必要があります。ただし、GNU Parted ユーティリティーはこの規則には当てはまりません。その GUI バージョンである GParted と同じく、このユーティリティーではパーティションとそこに含まれるファイルシステムのサイズを同時に変更します。


プラン B への変更

ときには、パーティションのサイズを変更しようとすること自体が有効でない場合もあります。例えば、ファイルシステムに簡単には解決できないエラーがある場合や、縮小できないファイルシステム (XFS、JFS など) を縮小する必要に迫られている場合です。そのような場合には手段を変えて、既存のパーティション構造のディレクトリーを再配置したり、バックアップ、再パーティショニング、リストア操作を実行したり、あるいはディスク・スペースを増やしたりするなど、パーティションのサイズ変更以外の対応が必要になってきます。

パーティションを変更せずにディレクトリーを再配置する場合

場合によっては、実際にディスクを再パーティショニングすることなく、ディレクトリーを再配置できることがあります。その要領は、パーティションの境界とは無関係に、ある場所から別の場所を指すシンボリック・リンクを使用することです。例えば、/usr/portage および /var/tmp/portage ディレクトリーのディスク・スペースを大量に使用する可能性のある Gentoo システムを使用していて、システムをセットアップする際にこれらのディレクトリーに必要なディスク・スペースを考慮に入れていなかったため、スペースを使い果たしてしまったとします。その一方、別の /home パーティションには使用可能なスペースがあります。このスペースを Portage に使用するには、/home に 1 つ以上のディレクトリーを作成し、この新しいディレクトリーに /usr/portage または /var/tmp/portage の中身をコピーした後、元のディレクトリーを削除して、その場所に /home の新規サブディレクトリーを指すシンボリック・リンクを作成するという方法を使えます。

この方法が効果的な場合もあり、小規模な範囲では重宝しますが、ある意味、非標準システムを作り出すことになるため、個別のパーティションを使用するメリットの多くが失われてしまいます。したがって、この方法を使用するのは控え、使用するとしても短期間に限ることをお勧めします。例えば、新しいハード・ディスクを入手するまでの間、あるいは 1 ヶ月や 2 ヶ月のうちに使用を廃止する予定のシステムでの応急処置として使用してください。

バックアップしてからパーティションを変更した上でバックアップをリストアする場合

ファイルシステムのサイズ変更ツールが開発される前は、ディスクを再パーティショニングするのに唯一実用的だった方法は、ディスクの中身をバックアップしてディスクを再パーティショニングし、その後バックアップを再パーティショニングしたディスクにリストアするというものでした。この方法は今でも有効ですが、GParted を使用して非破壊的に再パーティショニングを行う方法に比べると当然、便宜性に欠けます。その一方、安全性を考えれば、パーティションのサイズを変更する前にバックアップを作成するのが最善です。したがってどちらにしても、慎重を期するためにはこの方法を途中まで行う必要があります。

最近では、外部ハード・ドライブがバックアップ・メディアとしてよく使用されています。テラバイト規模の外部ディスクでも 100 ドル足らずで購入できるので、パーティションを調整した後に重要なファイルのバックアップを取ったり、システム間で大きなファイルを転送したりするために大容量の外部ディスクを使用することができます。あるいは、記録可能な DVD や、テープ装置、ネットワーク・サーバーなどをバックアップ・システムとして使うこともできます。

バックアップ・ソフトウェアには、tar などの古くからよく使われていたツールや、それよりも新しい Clonezilla などのツールを組み込むことができます。操作の詳細はソフトウェアによっても、バックアップ・メディアによっても異なってくるので、バックアップ・ソフトウェアのドキュメントで詳細を調べてください。

Linux ブート・パーティションや、基本 root (スーパーユーザー) アクセスに必要なパーティションを変更しなければならない場合には、緊急用ブート・システムから操作を実行する必要があります。緊急用ブート・システムについては、連載第 1 回を参照してください。

ディスク・スペースを追加する場合

ディスクの追加も、再パーティショニングに代わる手段となり得ます。場合によっては、ディスク・スペースを追加するほうが望ましいこともあります。ディスク容量は絶えず大きくなり続けており、新しいディスクは数年前のディスクよりも信頼性に優れている傾向にあるからです。

既存のディスクを新しいディスクに置き換えることにした場合には、Clonezilla などのツール、あるいは fdisktar などの古いツールを使って、既存のシステムを新しいディスクに転送する方法を知っておかなければなりません。また、ブート・ローダーを再インストールする必要もありますが、この再インストールには、Super Grub Disk などのツールを使用したブートが役立つはずです。この CD ベースのブート・ローダーを使ってシステムをブートすると、grub-install や同様のツールを使用して GRUB (GRand Unified Bootloader) を新しいハード・ディスクに再インストールすることができます。

既存のディスクを置き換えるのではなく、スペースを増やすために新しいディスクを購入する場合には、どのデータを新規ディスクに移すのかを決めなければなりません。新規ディスクを fdisk や GParted などのツールを使用してパーティショニングし、ファイルを新しいパーティションに転送した後、/etc/fstab を必要に応じて編集して、既存のディレクトリー・ツリーに新規ディスクのパーティションを固定的にマウントします。新規ディスクに移したファイルは、忘れずに古いディスクから削除してください。そうでないと、新規ディスクをマウントして元のファイルのディレクトリーを引き継いだとしても、削除し忘れたファイルが古いディスク上のディスク・スペースを使い続けることになります。


まとめ

その方法は何であれ、実動システムのディスク割り当てを変更する作業には不安が伴います。その理由は、さまざまな失敗の可能性があるからです。けれどもディスク割り当てを変更する必要があるということは、変更後のシステムがより快適に使えるようになるということでもあります。ディスク・フルのエラーが発生する可能性が少なくなれば、本来意図されたタスクのためにシステムをどんどん使用することができます。パーティションのサイズを変更するプロセスは、GParted や他のディスク・ユーティリティー、そして各種のパーティションの最適なサイズを理解するという点でも効果があります。その知識はすべて、次に新しい Linux システムをインストールするときに役立つからです。

参考文献

学ぶために

製品や技術を入手するために

  • PartedMagic の Web サイトから PartedMagic をダウンロードしてください。
  • SystemRescueCd の Web サイトから SystemRescueCd をダウンロードしてください。
  • 最も柔軟な Linux パーションのサイズ変更ツール、GParted は、PartedMagic と SystemRescueCd、そしてほとんどの Linux ディストリビューションに組み込まれています。
  • GParted がベースとしている libparted は、テキスト・モードの GNU Parted パッケージに付属しています。
  • Clonezilla は、ハード・ディスクのパーティションまたはハード・ディスク全体を複製するためのツールです。
  • Super GRUB Disk は、ブート・ローダーの欠如または損傷が原因でブートしない Linux システムをブートするためのツールです。
  • ご自分に最適な方法で IBM 製品を評価してください。評価の方法としては、製品の試用版をダウンロードすることも、オンラインで製品を試してみることも、クラウド環境で製品を使用することもできます。また、SOA Sandbox では、数時間でサービス指向アーキテクチャーの実装方法を効率的に学ぶことができます。

議論するために

  • My developerWorks コミュニティーに加わってください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者が主導するブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Linux
ArticleID=548935
ArticleTitle=Linux パーティションのサイズを変更する: 第 2 回 高度なサイズ変更
publish-date=09012010