Jailを試してみよう 試す前にFreeBSDのアレコレ

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のスナップショットを検証したことがありました。

お名前.comVPSのスナップショットを試してみた

ではでは、ファイルシステムを確認から。

# 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サーバ構築・運用ガイド  技術評論社
佐々木 宣文 (著), 後藤 大地 (著), 佐藤 広生 (監修)

 

Similar Posts:


Leave a Reply

Your email address will not be published. Required fields are marked *