HP Microserver N54L セットアップ日記 その4 - Linux でルートパーティションの拡張

Hard disk drive


久しぶりに家の NAS をリプレースしていますシリーズその1, 2, 3の続きです。




OSのインストール時に、うっかり swap 用のパーティションをきってしまったのですが、swap に割り当てる領域を柔軟にコントロールしたくなってきました。

現状は、ブート用の USB メモリは以下のパーティションで構成されています。

  • "/" ルートパーティション
  • swap 用パーティション

この swap パーティションをつぶして、ルートパーティションの領域を拡大してみます。
(あらかじめ swap 領域は swapoff して外しておきましょう。)

ディスクパーティションの拡張

# parted /dev/sdf
GNU Parted 3.2
/dev/sdf を使用
GNU Parted へようこそ! コマンド一覧を見るには 'help' と入力してください。
(parted) p
モデル: JetFlash Transcend 16GB (scsi)
ディスク /dev/sdf: 15.8GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  15.2GB  15.2GB  primary  xfs               boot
 2    15.2GB  15.8GB  544MB   primary  linux-swap(v1)

parted コマンドを使います。まずは "p" (print) コマンドでパーティションテーブルを確認。

(parted) help
  align-check TYPE N            パーティション N のアライメント(TYPE: min|opt)をチェックする
  help [コマンド]               ヘルプ表示。コマンド指定でそのヘルプを表示
  mklabel,mktable ラベルの種類  新しいラベル(パーティションテーブル)を作る
  mkpart パーティションの種類 [ファイルシステムの種類] 開始 終了
                    パーティションを作る
  name NUMBER 名前              パーティションに名前をつける
  print [devices|free|list,all|NUMBER]
                     パーティションテーブルや、利用可能なデバイス、空き領域、
                     見つかった全てのパーティション、あるいは特定のパーティションについて表示する
  quit                          プログラムを終了する
  rescue 開始 終了              開始、終了で指定した範囲付近にあるパーティションを復活させる
  resizepart NUMBER END         パーティション NUMBER を END にリサイズする
  rm NUMBER                     パーティションを削除する
  select デバイス               操作するデバイスを選択
  disk_set FLAG STATE           選択したデバイスの FLAG を変更
  disk_toggle [FLAG]            選択したデバイスの FLAG の状態をトグル
  set NUMBER フラグ 状態        ファイルシステムのフラグと状態を設定する
  toggle [NUMBER [FLAG]]        パーティションのフラグの状態を反転する
  unit UNIT                     デフォルトの単位を UNIT にする
  version                       GNU Parted のバージョンと著作権情報を表示

"help" でサブコマンドの確認・・・。

(parted) rm 2
(parted) p
モデル: JetFlash Transcend 16GB (scsi)
ディスク /dev/sdf: 15.8GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  15.2GB  15.2GB  primary  xfs               boot

"rm" コマンドでパーティションを削除します。(引数はパーティションナンバー)

(parted) resizepart 1 100%
警告: パーティション /dev/sdf1 は使用中です。それでも実行しますか?
はい(Y)/Yes/いいえ(N)/No? Y
終了?  [15.2GB]? 100%
(parted) p
モデル: JetFlash Transcend 16GB (scsi)
ディスク /dev/sdf: 15.8GB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:

番号  開始    終了    サイズ  タイプ   ファイルシステム  フラグ
 1    1049kB  15.8GB  15.8GB  primary  xfs               boot

"resizepart" コマンドでパーティションのリサイズを行います。
今回は、2番目のパーティションを削除し、1パーティションのみなので、 END に "100%" を入力し、終了場所として領域の最後を指定する (全ての領域を利用する) ようにします。

(parted) q                                                                
通知: 必要であれば /etc/fstab を更新するのを忘れないようにしてください。

"q" (quit) コマンドで parted を終了します。
これでパーティションの拡張作業はおしまいです。

ファイルシステム (XFS) の拡張

OSが見ているのはファイルシステムなので、ボリューム (パーティション) の拡張をするだけでは、拡張分をOSから利用することができません。
よって、ファイルシステムにそのことを教えてあげる必要があります。

# xfs_growfs /
meta-data=/dev/sda1              isize=512    agcount=4, agsize=930560 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=1, sparse=1, rmapbt=0
         =                       reflink=1
data     =                       bsize=4096   blocks=3722240, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0, ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
data blocks changed from 3722240 to 3855104

XFS ファイルシステムの拡張 (リサイズ) は、上記のような感じで、"xfs_growfs" コマンドを実行すればOKです。

もし、上記コマンドが見つからない場合は、xfsprogs パッケージに含まれていると思いますので、dnf / yum あたりでインストールしましょう。

実行後、df コマンドなどで、サイズが拡大したことを確認できるはずです。

※ ちなみに、ext2 / ext3 / ext4 ファイルシステムでは、"resize2fs" コマンドでファイルシステムのリサイズができるはず。

おまけ

ここまでで、タイトルに書いたルートパーティションの拡張はできたわけですが、swap のパーティションがなくなって、swap 領域はどうなったのか、、、という話ですが、ルートパーティションの任意の場所に swap 用のファイルを作って、swapon しておけばOKです。

細かいやり方は、以下のエントリに書いてあります。


今日はこの辺で。
それでは! =͟͟͞͞(๑•̀=͟͟͞͞(๑•̀д•́=͟͟͞͞(๑•̀д•́๑)=͟͟͞͞(๑•̀д•́