Jailを試してみよう準備編に続いての基本編です。基本編と言ってもFreeBSDの基本なので、Jailを試してみようというタイトルはおかしい!とフォントを大にして自分で言っておきます。
PortsとPackagesどう違うの
前回にも少し触れましたが、FreeBSDでアプリケーションをインストールする時にPorts CollectionというPorts Committerという世界各地にいらっしゃる方が管理しているものを使います。
Portsはソースからビルドしてインストールする形式で最新のものが利用可能です。なおかつmake時にオプションやら機能を設定できます。
Packagesはビルドされたものがパッケージ化されているものです。万が一、古いバージョンしかなかった場合にバグの影響を受ける可能性もあるというもののようです。
Ports Collectionの更新は、Portsnapでおこないます。
Portsでのインストール方法は、ディレクトリへ移動してmakeします。スクリプトで使っているのはこんな感じです。
たとえばVimの場合。
cd `whereis vim | awk '{ print $2 }'` make BATCH=yes NO_GUI=yes install clean rehash
では、インストール済みのアプリケーションのアップグレードは?というと、Portupgradeを使います。名前からするとPorts Collectionのアップグレードっぽい感じがしますが、インストール済みアプリのアップグレードにあたります。
Portupgradeをググっていると、設定ファイルやデータの整合性がとれなくなったりする事もあるようです。Yumみたいに使っていると宜しくないという事ですかね。
例えるならYumはPackagesですしね。
Yumは便利ですけど、CentOSの場合ものによっては結構古いバージョンだったりもしますから、一長一短な感じですね。当ブログでもrpmを探してきて導入することは多いです。
しかもLinuxの場合、最新のものをソースからビルドしたものは自分で管理しないといけないですし(rpmの管理をするアプリはあった気がしますが)、Ports Collectionの場合はPorts Committerたちによって更新されているようなので、信頼度は高いということでしょう。
Portupgrade -a でインストール済みのPortsをアップグレード。-R で依存関係にあるすべてのPortsもアップグレードしてくれるようです。
こうして簡単にまとめてみるとLinuxの方が初心者向けな感じがしますし、FreeBSDの方は玄人向けで、スキルがあれば新しいものが使えてカスタマイズや管理がやりやすい感じがします。
FreeBSDのアップグレード
FreeBSD自身のアップグレードですが、FreeBSD開発の最前線のcurrentと、currentで試験済みでもそのままリリースされる訳ではなくて、そのリリースのための開発をしているstableという2個の開発ブランチが存在するようで、セキュアであるという事を重視しているのがその辺からも伺えます。
エンドユーザーが使っているのはリリース版です。
アップグレードの方法は簡単で
# freebsd-update fetch
# freebsd-update install
バックアップのこと
スナップショットをやろうと思います。まずデフォルトでインストールしてますのでUFSになってますので、UFSのスナップショットをやりますか。
過去にはLVMのスナップショットを検証したことがありました。
ではでは、ファイルシステムを確認から。
# mount /dev/ada0p2 on / (ufs, local, journaled soft-updates) devfs on /dev (devfs, local, multilabel) /dev/ada0p3 on /usr (ufs, local, journaled soft-updates) /dev/ada0p4 on /var (ufs, local, journaled soft-updates)
こんな感じでufs、Local、journaled soft-updates と表示されています。
スナップショットを取ろうとしてもエラーが出て取得できません。
なんでやねーん。
root@bsd:/root # snapshot make /usr:usrsnap mount: /usr/.snap/usrsnap.0: /usr: Snapshots are not yet supported when running with journaled soft updates: Operation not supported snapshot:ERROR: making UFS snapshot failed
ぶっちゃけ半日くらい嵌ってた (*´ω`)
勝手な解釈をして色々やってたのがいけなかった。結局、まぁ、エラーメッセージそのまんまだったようで、 journaled soft-updates が一緒に走っていると無理らしい。
ググっても出てこないし、書籍にも書いてないし、玄人向けだからおバカの相手はしてくれないのだろうか。とマイナス気味になっていたけれど、エラーメッセージのまんまだからなぁ、何も言えねえ・・・
journaled soft-updates の無効化の方法は、シングルユーザで起動して
# tunefs -n disable /
でOKです。シングルユーザでの起動は至極簡単で、メニュー画面で6を押すとsingleがonとなるのでそのままエンターしてブートします。
root@bsd:/root # mount /dev/ada0p2 on / (ufs, local) devfs on /dev (devfs, local, multilabel) /dev/ada0p3 on /usr (ufs, local) /dev/ada0p4 on /var (ufs, local)
journaled soft-updates の表示は消えました。
ではスナップショットを取ってみよう。
root@bsd:/root # snapshot make /usr:usrsnap root@bsd:/root # mount -u -o snapshot /usr/snap-`date +%Y%d%m` /usr root@bsd:/root # snapshot list Filesystem User User% Snap Snap% Snapshot /usr 2GB 1.3% 112MB 0.1% usrsnap.0 /usr 2GB 1.3% 112MB 0.1% snap-20141810
結果はご覧の通り、mountコマンドでもsnapshotのツールでも普通にスナップショットを取得できました。SSDでもないと相当時間がかかるので、CronでI/O負荷の少ない時に回しておくのが定石だろう。
ふむふむ、まぁまぁ基本はこの辺にしてJailへ進もうかなと思います。その前にこんな機能もあるのね~と何個か適当にピックアップ。
CPUの温度を測る
[root@bsd ~]# cat /boot/loader.conf coretemp_load="YES" or [root@bsd ~]# kldload coretemp [root@bsd ~]# sysctl -a | grep temper dev.cpu.0.temperature: 34.0C dev.cpu.1.temperature: 34.0C dev.cpu.2.temperature: 36.0C dev.cpu.3.temperature: 36.0C
2コアの仮想4コアなので、こんな風になっていますね。
ディスクの寿命を確認
WindowsでもCrystalDiskInfoとかを入れると確認することができますが、あれもSMARTです。
# smartctl -A /dev/ada0 smartctl 6.3 2014-07-26 r3976 [FreeBSD 9.1-RELEASE-p19 amd64] (local build) Copyright (C) 2002-14, Bruce Allen, Christian Franke, www.smartmontools.org === START OF READ SMART DATA SECTION === SMART Attributes Data Structure revision number: 16 Vendor Specific SMART Attributes with Thresholds: ID# ATTRIBUTE_NAME FLAG VALUE WORST THRESH TYPE UPDATED WHEN_FAILED RAW_VALUE 1 Raw_Read_Error_Rate 0x002f 200 200 051 Pre-fail Always - 0 3 Spin_Up_Time 0x0027 139 136 021 Pre-fail Always - 4008 4 Start_Stop_Count 0x0032 099 099 000 Old_age Always - 1099 5 Reallocated_Sector_Ct 0x0033 200 200 140 Pre-fail Always - 0 7 Seek_Error_Rate 0x002e 200 200 000 Old_age Always - 0 9 Power_On_Hours 0x0032 087 087 000 Old_age Always - 9831 10 Spin_Retry_Count 0x0032 100 100 000 Old_age Always - 0 11 Calibration_Retry_Count 0x0032 100 100 000 Old_age Always - 0 12 Power_Cycle_Count 0x0032 099 099 000 Old_age Always - 1094 192 Power-Off_Retract_Count 0x0032 200 200 000 Old_age Always - 40 193 Load_Cycle_Count 0x0032 200 200 000 Old_age Always - 1058 194 Temperature_Celsius 0x0022 107 096 000 Old_age Always - 36 196 Reallocated_Event_Count 0x0032 200 200 000 Old_age Always - 0 197 Current_Pending_Sector 0x0032 200 200 000 Old_age Always - 0 198 Offline_Uncorrectable 0x0030 200 200 000 Old_age Offline - 0 199 UDMA_CRC_Error_Count 0x0032 200 200 000 Old_age Always - 0 200 Multi_Zone_Error_Rate 0x0008 200 200 000 Old_age Offline - 0
一応、HDDはまだまだいけそうです。
journaled soft-updates
嵌ったことだし、こいつを調べておかないといけないだろうさ。
前段階にあったSoft updatesについては、突然PCがぶっ飛んでも、ファイルシステムの一貫性を保つための技術らしい。だが、データの喪失が起きないようにする技術ではないらしい。
何か頭に??な感じだが、ともかく書き込みの順序を制限して、書き込みの一貫性だけは保障されるという事のようだ。データが無くてもわしゃ知らぬ!という事だろう。
ぼんやりとしか分かった気がしないけれど、強制終了してもFSCKなしでmountができるとか。
それでも色々は問題はあって、バックグラウンドでFSCKをやっていたらしいが、ディスクの大容量化でそれが大変だ!!という事で生み出されたのが Journaled Soft Updates のようでした。
途中から随分と端折ったが、そんな感じだ。
FreeBSD9から導入されたようで、デフォルトだと有効だから気を付けてね。慣れた人はエラーメッセージですぐに分かるのだろうけれど(ググっても出てこないことがそれを物語っている)。
では次回はJailで~。
参考書籍
実践FreeBSDサーバ構築・運用ガイド 技術評論社
佐々木 宣文 (著), 後藤 大地 (著), 佐藤 広生 (監修)