GEOM_LABEL をちょっと理解してみる
Seichan です.こんばんわ.
「GEOM 再学習」で宣言したとおり,GEOM の何かについて書いていきます.
今回は基本となる.というか,管理上便利なので是非使っていきたい「ラベル」についてです.
1. ラベル名での管理の利点
ラベルは,デバイス名やパーティション名に名前を付け,マウント時にラベル名を指定したマウントが出来るようになり,デバイス名を意識しなくてもよくなります.自分や自分の環境がそうなのですが,ディスクが何個もあり,RAID を構成するために同じ型番のディスクを何個も接続していたりします.さらに,ディスクを増やしたり減らしたり.なんて事があります.こうなると増減のタイミング等でデバイス名が変わる事になりますので,デバイス名での管理だと難しくなってしまいます.
こういったシチュエーションであらかじめラベルとしてディスクに名前を付けてあげれば,以降はラベル名での管理になるのでディスクにラベル名を印刷したテプラを貼っておくことで何かあった際のデバイス特定も容易になります.
こういった,デバイス名(番号)の管理から名前での管理に切り替えて少し運用負荷の軽減を狙ってみてもよいのではないでしょうか.
2. ラベルの種類
GEOM LABEL クラスではいくつかのラベルの種類があります.正確にはファイルシステム毎にラベル機構が用意されています.また,これらのファイルシステムに依存せずにラベルを管理する方法もあります.
ファイルシステムで用意されているもので FreeBSD でよくつかわれそうなものとして以下が挙げられます.各ファイルシステム毎のディレクトリ以下にラベル名のデバイスファイルが生成されます.
- UFS1/UFS2 のボリューム名 (/dev/ufs)
- UFS1/UFS2 のファイルシステムID (/dev/ufsid)
- FAT12/16/32 等の MSDOSFS (/dev/msdosfs)
- CD-ROM 等の ISO9660 (/dev/iso9660)
- NTFS (/dev/ntfs)
また,GPT パーティションではパーティション単位でもラベルを付与出来ます.
- GPT ラベル (/dev/gpt)
- GPT UUID (/dev/gptid)
3. ラベルを付ける (glabel)
glabel はファイルシステムに依存せずにラベルを管理する事が出来ます.ファイルシステムでラベルが用意されていない場合や複数のファイルシステムを扱うため,統一的に管理したい.なんていう場合に有用だと思います.
ラベルを付けるには,下のように glabel label [ラベル名] [デバイス名] という引数で実行します.
サブコマンドが label ではなく create の場合,ディスクにラベル名が書かれませんので再起動時にクリアされてしまいます.試験等の一時的なラベル付与等の場合は create を使いますが,恒久的にラベルを使いたい場合は label サブコマンドを指定してください.
# glabel label DISK01 /dev/da1
ラベルが設定されれば,以下のように status で確認することが出来ます.この例では今回設定したものだけ表示させていますが,FreeBSD 9.x を GPT で導入している場合は gptid から始まる行も表示されます.
# glabel status Name Status Components label/DISK01 N/A da1
また,glabel の場合は /dev/label 以下にデバイスファイルが生成されていますので,こちらでも確認が可能です.
# ls -l /dev/label total 0 crw-r----- 1 root operator 0x68 Dec 21 13:30 DISK01
4. ラベル名を指定してファイルシステムを作る
UFS であれば newfs を実行する際,デバイス名ではなくラベル名を指定してファイルシステムを作成することが出来ます.
# newfs /dev/label/DISK01 /dev/label/DISK01: 20480.0MB (41943032 sectors) block size 32768, fragment size 4096 using 33 cylinder groups of 626.09MB, 20035 blks, 80256 inodes. super-block backups (for fsck_ffs -b #) at: 192, 1282432, 2564672, 3846912, 5129152, 6411392, 7693632, 8975872, 10258112, 38467392, 39749632, 41031872
newfs 完了後はそのままマウントする事が可能です.
5. ラベル名を削除する
間違ってラベルを設定してしまった時などは,当然ですがラベル名を削除する事が可能です.
削除は glabel clear [デバイス名] になります.ラベル名では無く,デバイス名を指定する必要があるので注意してください.
また,サブコマンドで stop や destroy がありますがディスクに書かれたラベルの削除は行いませんので注意してください.
# glabel clear da1
ラベルを削除しても,作成,利用していたファイルシステムの中身は当たり前ですがデバイス名を指定したマウントを行うことでそのまま利用することが出来ます.
6. GPT パーティションでラベル名を設定する
GPT パーティション側でラベル名を設定する事が出来ます.実はこれが一番無難な方法かと思っています… 先日書いた「AFT(4k block) HDD を ZFS で使う場合の良い方法」でも GPT パーティションにラベルを付与していますが,これは glabel でラベル設定後,ZFS(zpool) をラベル名指定で作成しても,作成した時点で label が削除されてしまう.という事象になったからです.GPT パーティションでラベル付与した場合はそんなことはありませんでした.メタデータをどこに書くのか? という問題だと思っていますが,FreeBSD ではインストールから GPT が基本となっていますので,こっちで設定してあげるのが一番楽かなぁと思います.
順序としては,通常どおり GPT ディスクを作成した後にパーティションを作成します.パーティションを作成する際にラベル名を合わせて指定します.
以下の例では,作成するパーティション de1p1 に対して,ラベル名として DISK01 を指定しています.
# gpart create -s gpt /dev/da1 da1 created # gpart add -t freebsd-ufs -l DISK01 /dev/da1 da1p1 added
パーティションが作成された後,結果を確認するには gpart で確認するのが一番良い方法です.gpart show に -l オプションを付ける事でラベル名を表示することが出来ます.
# gpart show -l da1 => 34 41942973 da1 GPT (20G) 34 41942973 1 DISK01 (20G)
その他の方法として,glabel コマンドで確認することも当然出来ますし,ディレクトリ /dev/gpt 以下を確認してもよいでしょう.
# glabel status Name Status Components gpt/DISK01 N/A da1p1 # ls /dev/gpt DISK01
CDメディア等のラベル
CD メディアはたとえば CD-R を作成する際のボリューム名がそのままラベル名として認識します.CD を認識するとボリューム名が読み取られそのままラベル名でアクセスできるようになります.
# glabel status Name Status Components iso9660/FREEBSD_INSTALL N/A cd0 # ls /dev/iso9660 FREEBSD_INSTALL
ですが,CD の場合ラベル名を使用して明示的にマウントする事は稀だと思いますので利用頻度は低いのでは… と思います.Seichan 的な利用価値は,今ドライブに挿入している物がマウントしなくてもある程度理解出来そうだ.という所ですね.
ということで GEOM LABEL をちょっと理解してみる でした.


関連記事
-
-
Movable Type 4.23 から WordPress 3.7 に移行
Seichanです.こんばんわ. 今まで Movable Type を使っていたのですが,アップグ
-
-
CF 512MB と CF-IDE 変換
Seichan です.そういえば,CF の 512MB と,CF-IDE の変換基盤を買ったさ. 動
-
-
GEOM のモジュールを理解する
Seichan です.こんばんわ. GEOM の状態がどういう風になっているのかを確認したい.なん
-
-
FreeNAS 0.69 (Kwisatz Haderach) の日本語環境アップデート
おひさしぶりです.Seichan です.FreeNAS 0.69 が出てからちょっと立ちました.とて
-
-
FreeBSD 7.0-RELEASE が来たよー.あと,NanoBSD いい感じ
FreeBSD 7.0-RELEASE が,一応 2008/02 に間に合う形でリリースされました.
-
-
FreeBSD 4.11 と 6.1
寝ようと思っても,咳がひどくて眠れない Seichan Death. 月末に妹がこっちに来るようなの
-
-
PHPki で簡単証明書運用 (2) 【初期設定と Root CA 証明書作成】
Seichan です.こんばんわ. さて,先日の「PHPki で簡単証明書運用 (1) 【修正版】
-
-
祝(?) 180,000Km & watchdog timeout…
こんばんわ.Seichan です.最近さらにバタバタと過ごしております. まったりする時間が欲しい