2015年09月03日(木) [長年日記]
■ [unix][hard][howto] CentOS 7でディスク増設
昨日の続き。VirtualBox上のCentOS 7にディスクを追加したのでメモ。
ディスクの接続
VirtualBox上でのディスク追加はGUIから簡単にできる。SATAコントローラに対しデフォルトのVDI形式でドライブイメージを追加した。
/devを確認
SATAで繋がったディスクは /dev/sd* というファイルとして見えるらしいので確認。
% ls -l /dev/sd* brw-rw----. 1 root disk 8, 0 9月 2 14:41 /dev/sda brw-rw----. 1 root disk 8, 1 9月 2 14:41 /dev/sda1 brw-rw----. 1 root disk 8, 2 9月 2 14:41 /dev/sda2 brw-rw----. 1 root disk 8, 16 9月 2 14:41 /dev/sdb
sdaが元からあったディスクでsdbが今回増設したディスクだ。sda1はsdaの1つ目のパーティション、sda2は2つ目のパーティションを表しているみたい。sdbにはパーティションが無い。
増設したディスクを物理ボリュームとして登録
最終的には増設したディスクを既存の論理ボリューム /dev/centos/root に追加したい。そのためにまず物理ボリュームを登録する。
物理ボリュームの登録にはpvcreateコマンドを使う。lvmコマンドのプロンプト内でも実行できる。
lvm> pvcreate /dev/sdb Physical volume "/dev/sdb" successfully created lvm> pvscan PV /dev/sda2 VG centos lvm2 [31.51 GiB / 0 free] PV /dev/sdb lvm2 [40.82 GiB] Total: 2 [72.33 GiB] / in use: 1 [31.51 GiB] / in no VG: 1 [40.82 GiB]
登録できたようだ。
物理ボリュームをボリュームグループに追加
次は登録した物理ボリューム /dev/sdb を既存のボリュームグループcentosに追加する。使うコマンドはvgextend。
lvm> vgextend centos /dev/sdb Volume group "centos" successfully extended lvm> vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 72.32g 40.82g
昨日のvgsの出力結果と比べるとPVとVSizeとVFreeが増えている。
論理ボリュームの拡張
ボリュームグループが大きくなったので、その増えた分を既存の論理ボリューム /dev/centos/root に追加する。使うコマンドはlvextend。
lvm> lvextend -l +100%FREE /dev/centos/root Size of logical volume centos/root changed from 28.31 GiB (7247 extents) to 69.12 GiB (17696 extents). Logical volume root successfully resized lvm> lvs LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert root centos -wi-ao---- 69.12g swap centos -wi-ao---- 3.20g lvm> vgs VG #PV #LV #SN Attr VSize VFree centos 2 2 0 wz--n- 72.32g 0
lvextendで/dev/centos/rootが属するボリュームグループの空き領域全てを同論理ボリュームに追加している。論理ボリュームのサイズが増え、ボリュームグループの空き領域が無くなったことが確認できた。
ファイルシステムサイズの拡張
目的としていた論理ボリュームへのディスク追加はできた。が、これだけだと追加した領域をファイルシステムから使えない。ファイルシステムのサイズを拡張する必要があるみたい。
論理ボリューム /dev/centos/root 上のファイルシステムはXFSなので、XFSのサイズ拡張コマンドxfs_growfsを実行する。
% sudo xfs_growfs /dev/mapper/centos-root meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1855232 blks = sectsz=512 attr=2, projid32bit=1 = crc=0 finobt=0 data = bsize=4096 blocks=7420928, imaxpct=25 = sunit=0 swidth=0 blks naming =version 2 bsize=4096 ascii-ci=0 ftype=0 log =internal bsize=4096 blocks=3623, version=2 = sectsz=512 sunit=0 blks, lazy-count=1 realtime =none extsz=4096 blocks=0, rtextents=0 data blocks changed from 7420928 to 18120704 % df -T ファイルシス タイプ 1K-ブロック 使用 使用可 使用% マウント位置 /dev/mapper/centos-root xfs 72468324 19137568 53330756 27% / devtmpfs devtmpfs 1663152 0 1663152 0% /dev tmpfs tmpfs 1672348 0 1672348 0% /dev/shm tmpfs tmpfs 1672348 8488 1663860 1% /run tmpfs tmpfs 1672348 0 1672348 0% /sys/fs/cgroup /dev/sda1 xfs 508588 278360 230228 55% /boot
うまくいったようだ。
■ [howto][web][soft] Apache 2.4でsuexecを無効にする
CGIを動かしたくて久しぶりにApache 2.4をインストールしてみた。案の定なかなかCGIスクリプトが動くようにならなかった。
まずはSELinuxのチェックに引っかかっていたので、意識を低くSELinuxを無効にした。しかしまだ動かない。Apacheのerror_logファイルには「End of script output before headers」というエラーが出るだけ。
結構悩んだ後、/var/log/secure にsuexecが「command not in docroot」というエラーを出力していることに気付いた。suexecってなんだっけ、Apacheに付属しているプログラムなのか。
suexecを調べると、コンパイルし直さないと設定変更ができないらしい。それはひどい。suexecはApacheのパッケージからインストールされているのでコンパイルし直しはできない。仕方ないのでこれもオフにしようとしたが、マニュアルには「suEXEC を無効にする場合は、suexec ファイルを削除してから Apache を kill して再起動します。」という説明しかなかった。これもひどい。
が、設定項目の一覧を見たらちゃんとSuexec Directiveという項目があった。httpd.confに
Suexec Off
という行を追加してhttpdを再起動したらsuexecがオフになり、CGIスクリプトが動くようになった。