メモの日々


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スクリプトが動くようになった。