メモの日々


2015年09月02日(水) [長年日記]

[unix] LVMについて調べた

CentOS 7にディスクを増設したい。そのためにはLVM (logical volume manager)を理解しておいた方がよさそうなので調べる。

ざっくり言うと、LVMは複数の物理ディスクを束ねて1つの大きな論理的なディスクとして扱うための仕組みと考えてよさそう。

マニュアル

RHEL 6のマニュアルが日本語化されていた。

論理ボリューム、ボリュームグループ、物理ボリューム

LVMは

  • 論理ボリューム (LV)
  • ボリュームグループ (VG)
  • 物理ボリューム (PV)

の3つを押さえておけば大丈夫そう。次のようになっているみたい。

 ファイルシステム   ファイルシステム   ファイルシステム
        |                   |                  |
+-------+--------+ +--------+-------+ +--------+-------+
| 論理ボリューム | | 論理ボリューム | | 論理ボリューム |
+--------------+-+ +-+--------------+ +--------+-------+
               |     |                         |
    +----------+-----+---+    +----------------+---+
    | ボリュームグループ |    | ボリュームグループ |
    +----+---------------+    +---+-----+----------+
         |                        |     |
+--------+-------+ +--------------+-+ +-+--------------+
| 物理ボリューム | | 物理ボリューム | | 物理ボリューム |
+--------+-------+ +--------+-------+ +--------+-------+
         |                  |                  |
    物理ディスク    パーティション      パーティション
  • 物理ボリュームは1つの物理ディスク或いは物理ディスク上の1つのパーティション。
  • ボリュームグループは複数の物理ボリュームを束ねたもの。
  • 論理ボリュームはボリュームグループを分割したもの。論理ボリューム上にファイルシステムを作ることができる。

管理コマンド

LVMを扱うためのコマンドは色々あって難しい。ひとまずはlvmコマンドを実行するとプロンプトが出るので、その上で操作するのが分かりやすそう。

% sudo lvm
lvm> help
  Available lvm commands:
  Use 'lvm help <command>' for more information

  devtypes        Display recognised built-in block device types
  dumpconfig      Dump configuration
...

CentOS 7上にあるボリューム

自分のマシン上にどのようなボリュームがあるのか見てみる。

物理ボリューム
lvm> pvs
  PV         VG     Fmt  Attr PSize  PFree
  /dev/sda2  centos lvm2 a--  31.51g     0

/dev/sda2 という物理ボリュームがあって、それがcentosというボリュームグループに属している。/dev/sda2というのは1番目の物理ディスクの2番目のパーティションを表すデバイスファイルのパスであり、それがそのまま物理ボリュームの名前になるみたい。

ボリュームグループ
lvm> vgs
  VG     #PV #LV #SN Attr   VSize  VFree
  centos   1   2   0 wz--n- 31.51g    0

centosという名前のボリュームグループがある。物理ボリューム1つから成り、論理ボリュームが2つありそう。

論理ボリューム
lvm> lvs
  LV   VG     Attr       LSize  Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root centos -wi-ao---- 28.31g
  swap centos -wi-ao----  3.20g
lvm> lvscan
  ACTIVE            '/dev/centos/swap' [3.20 GiB] inherit
  ACTIVE            '/dev/centos/root' [28.31 GiB] inherit

rootとswapという2つの論理ボリュームがありそれぞれが /dev/centos/ 配下にマッピングされている。

ファイルシステムとの関係
% df -T
ファイルシス            タイプ   1K-ブロック     使用   使用可 使用% マウント位置
/dev/mapper/centos-root xfs         29669220 19136296 10532924   65% /
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

dfコマンドで論理ボリューム(/dev/centos/root)が見えるかと思いきや見えない。が、

% ls -l /dev/centos /dev/mapper
/dev/centos:
合計 0
lrwxrwxrwx. 1 root root 7  9月  2 14:41 root -> ../dm-1
lrwxrwxrwx. 1 root root 7  9月  2 14:41 swap -> ../dm-0

/dev/mapper:
合計 0
lrwxrwxrwx. 1 root root       7  9月  2 14:41 centos-root -> ../dm-1
lrwxrwxrwx. 1 root root       7  9月  2 14:41 centos-swap -> ../dm-0
crw-------. 1 root root 10, 236  9月  2 14:41 control

/dev/centos/root と /dev/mapper/centos-root はちゃんと同じものを指しており同一視してよさそう。何故こうしているのかは謎。

/dev/centos/swapの方は/proc/swapsを見ると確認できる。

% cat /proc/swaps
Filename                                Type            Size    Used    Priority
/dev/dm-0                               partition       3354620 0       -1

/dev/centos/swapは/dev/dm-0を指しているから同じもの。


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


2015年09月11日(金) [長年日記]

[android][howto] Android Studioで「Structure」ツールウィンドウが機能しなかった

Android Studioを使い始めた。バージョンは1.3.2。

次の機能の動きがおかしくて困っていた。

  • ツールウィンドウの「Structure」に何も表示されない。これは困る。
  • ツールウィンドウの「Project」の設定の「ソースに自動スクロール」「ソースから自動スクロール」が機能しない。

原因は、非公式の日本語リソース(resources_jp.jar)を使っていることだった。このファイルを削除したらどちらの機能も正しく動くようになった。

参考

[hard][android][howto] Nexus 5でUSBデバッグができなかった

「USBデバッグ」を有効にしたNexus 5をPCにUSB接続したとき、PC側で adb devices を実行してもNexus 5が認識されず困った。

Nexus 5上には「USBデバッグが接続されました」という通知が表示されているのになあ。この通知には

メディアデバイスとして接続

他のUSBオプションをタップしてください

というメッセージもくっついている。文章の意味が分からない。これをタップすると「USBでパソコンに接続」という設定画面が表示される。ここで「メディアデバイス(MTP)」がチェックされていたので、このチェックを外すと

USBデバッグを許可しますか?

というダイアログが表示された。許可することにより、adb devicesでNexus 5が表示されるようになった。

「USBでパソコンに接続」画面は設定画面から到達するのが難しいのでそれもメモ。

  • [設定] → [ストレージ] → メニューをタップ → [USBでパソコンに接続]

2015年09月16日(水) [長年日記]

[life] 入院した

MRI検査をしたときに書いたけど、椎間板ヘルニアの手術を受けることになった。そのために今日入院した。

受付で手続きをしてエレベータで入院病棟へ。おれのベッドは窓側の角だった。部屋は10人くらい入れる大部屋。基本カーテンは閉めている感じ。

担当の看護師に色々説明をしてもらい、コルセットを届けてもらい、コルセット代を支払い、リハビリ担当者にチェックされ、麻酔医の説明を聞き、執刀医の説明を聞くなどした。さっき夕食を食べたところ。

手術は明日の朝。全身麻酔による内視鏡手術で、1時間半くらいかかるみたい。恐ろしい。


2015年09月17日(木) [長年日記]

[life] 手術

手術は無事に終わった。

手術着に着替えて看護師に連れられて歩いて手術室まで行く。手術室は人が沢山。何人も同時に手術するのかな。助手の女性が皆若くてかわいい。ベッドに仰向けで寝る。酸素マスクを付けられた。わりとすぐに麻酔が入り意識を失う。

名前を呼ばれて目覚めた。手術終わったとのこと。すぐに喉に挿管されていた管を抜かれた。苦しいことは何もなかった。よかったなーと思った。

ベッドに寝たまま病室へ戻った。挿管の影響で喉が痛い。酸素マスクを付けられる。眠い。痛みはない。


2015年09月18日(金) [長年日記]

[life] 歩けるようになった

手術日の夜はほとんど眠れなかった。一人では寝返りを打てないので何度も何度もナースコールして体の向きを変えてもらった。が、どの向きになっても腰に力が入ってしまい体が休まらない。最後はベッドを起こして座らせてもらった。

昼に歩行器を使って歩く練習をした。立ち上がるのは大変だったけど、歩くのは問題なかった。

歩けるということで尿用の管を抜いてもらえた。これで一人で寝返りを打てるようになり楽になった。

腰からは血抜き用の管が出ていて、体を動かすとそこが痛い。寝返りを打つときも痛いのでゆっくり動く。老人のような動きだ。


2015年09月19日(土) [長年日記]

[life] 血抜き用の管を抜いた

昨夜はまあまあ眠れた。自分で寝返りをうてるようになったのは大きい。

午前中に腰の血抜き用の管を抜いてもらった。抜くとき痛かったけど激痛と言う程ではなくてよかった。

管が無くなったことで痛みがかなり減り、老人の動きは卒業できた。まだぎこちないけど。

暇なのでたまっているpodcastを聴いている。入院中に全部聴けるかなあ。


2015年09月24日(木) [長年日記]

[life] 退院した

血抜き用の管を抜いてから俄然体調が良くなり、月曜日くらいから退院したくて仕方なかった。が、連休中のためか担当医が不在らしく、なかなか退院させてもらえなかった。連休の明けた今日やっと担当医に診てもらえ退院できた。受付で高額な入院費をカードで支払い自由な世界に帰ってきた!

入院中は食事とリハビリだけが楽しみだった。食事は大体冷めていて美味しくはなかったけど。リハビリの担当者の方々が皆穏やかで優しかった。

嫌だったのは体を洗えないことかなあ。洗髪は一度だけやってもらえた。

podcastは聴ききれなかったけどかなり消化できてよかった。

これからしばらくコルセット生活。