シェルスクリプト上でパーティションを区切る場面があったので、メモついでに
スクリプトでは対話でのパーティション作成は使えないので、非対話ができるものを調べた結果parted
コマンドを使用しました。
parted
はあまり詳しく理解できてないため、やり方のみを記述します。
スクリプトでパーティション作成を急いでる方や、その場しのぎでパーティション作成をしたい方などは見ていった方がいいかもしれません。
参考にさせてもらったサイト
・https://qiita.com/ngyuki/items/93da394fd0847ed5155e
・https://www.xmisao.com/2013/09/27/parted-warning-the-resulting-partition-is-not-properly-aligned-for-best-performance.html
パーティション構成
とりあえずLinuxが起動するような構成にしてあります。
HDDは500GB 、メモリは8GBを想定しています。
マウントポイント | ファイルシステム | サイズ (byte) | デバイス名 |
---|---|---|---|
/boot | ext4 | 500 M | /dev/sda1 |
/ | ext4 | 490 G | /dev/Vol00/LogVol00 |
swap | swap | 8 G | /dev/Vol00/LogVol01 |
パーティションを区切る
---/boot
のパーティション作成---
# parted -s -a optimal /dev/sda -- mklabel msdos mkpart primary ext4 2048s 501M set 1 boot on
2048セクタから始めないと警告が出ます。詳しくは参考サイトの2つ目を参照してください。
---/
とswap
をLVMで作成---
# parted -s -a optimal /dev/sda -- mkpart primary 501M -1 set 2 lvm on
# pvcreate /dev/sda2
# vgcreate Vol00 /dev/sda2
# lvcreate -L 490000m -n LogVol00 Vol00
# lvcreate -L 8000m -n LogVol01 Vol00
ファイルシステムを作成
# mkfs.ext4 -j /dev/sda1
# mkfs.ext4 -j /dev/Vol00/LogVol00
# mkswap /dev/Vol00/LogVol01
これらをシェルスクリプトにまとめたら、僕と同じパーティション構成ができると思います。
ひとりごと
最初の/boot
パーティションを区切る段階でext4
を指定してるのでファイルシステムをわざわざ作らなくてもいいかな〜♪ って思っていたら、MondoRescue
でマシンをリストアする際に/dev/sda1
でエラー吐かれました。
/dev/sda1
に結局ファイルシステムを作ることにしたけど、それだったらparted
の段階でext4
の指定をしなくてもいいのでは、と思いながらも検証しませんでした。ごめんなさい