2010年7月23日金曜日

Samba 3.0からSamba3.2へのアップデート

Samba 3.0で構築したドメインコントローラーを、Windows 7やWindows Server 2008 R2対応などのために、Samba 3.2以降にアップデートする際の注意点。

Samba 3.0のドメインメンバーサーバーがある場合は、アップデートした、Samba 3.2サーバーのsmb.confの[global]セクションに"lanman auth = Yes"を追加する。
この設定を追加しない場合、Samba3.0のドメインメンバーサーバーの共有フォルダにアクセスすると、「現在、ログオン要求を処理できるログオンサーバーはありません」のエラーが表示されることになる。

Samba 3.2から、"lanman auth = No"にデフォルト値が変更されたため。





2010年7月9日金曜日

[Samba] Solaris10でsetgroups()

先日のSambaで所属グループ数の上限を超えて、setgroups()をするとpanicする問題について、対策用のパラメーターを追加したパッチを作成してみた。
パッチはこのあたりをベースに作成してみた。
http://groups.google.com/group/mailing.unix.samba-technical/browse_thread/thread/6accbc4250ccbab5?pli=1

setgroups()に失敗したときのセカンダリグループの権限がどうなるかだけど、指定したグループ数が上限を超えていると、setgroups()が「Invalid argument」のエラーになる。
このときは、setgroups()呼ぶ前と一緒の権限の状態になっているので、グループ数の上限を超えたときは、セカンダリグループの権限はまったく付与されないことを確認した。


2010年7月5日月曜日

CentOS 5.5でiscsiターゲットの簡単構築

iSCSIを利用すると、複数ノードから同時に利用できる共有ディスクとして利用することが可能です。 このときに、ディスク側のデバイスとしては、iSCSI対応のストレージを利用することもできますが、お手軽に試験などに利用したいときは、LinuxのiSCSIターゲット機能を利用することができます。 そこで、CentOS5.5で、iSCSIターゲットをお手軽構築する手順を説明します。

1. OSのインストール
CentOSインストール時に、後でiSCSIターゲットとして公開するためのディスク領域を空き領域のパーティションとして、あらかじめ確保しておきます。

2. iSCSI用ディスク領域の準備
fdiskなどで、iSCSIディスクとして利用するためのブロックデバイスを作成します。今回は、「/dev/sda3」としてブロックデバイスを用意しました。

3. scsi-target-utilsパッケージのインストール
yumコマンドでscsi-target-utilsパッケージをインストールします。依存関係パッケージも一緒にインストールする必要があります。

# yum install scsi-target-utils 

4. tgtdの起動
iSCSIターゲットの処理を行うtgtdを起動します。
# /sbin/service tgtd start 

5. iSCSIターゲット用ディスクの設定
iSCSIターゲットのディスクは、tgtadmコマンドで設定しますが、より簡単に作成するためのコマンドとして、tgt-setup-lunコマンドが用意されています。 tgt-setup-lunコマンドの詳細はmanで確認することができます。

# man tgt-setup-lun

今回は、/dev/sda3をディスクとして使用し、iSCSIイニシエーターとして、10.0.102.41と10.0.102.42から接続するため、次のコマンドを実行しました。 
# tgt-setup-lun -d /dev/sda3 -n iscsi-vol1 10.0.102.41 10.0.102.42
Using transport: iscsi
Creating new target (name=iqn.2001-04.com.iscsifs-iscsi-vol1, tid=1)
Adding a logical unit (/dev/sda3) to target, tid=1
Accepting connections only from 10.0.102.41 10.0.102.42

6. 動作確認
tgt-adminコマンドの-sオプションで、ディスクがiSCSIターゲットとして認識されていることを確認します。

# tgt-admin -s 

Target 1: iqn.2001-04.com.iscsifs-iscsi-vol1
    System information:
        Driver: iscsi
        State: ready
    I_T nexus information:
    LUN information:
        LUN: 0
            Type: controller
            SCSI ID: IET     00010000
            SCSI SN: beaf10
            Size: 0 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: None
        LUN: 1
            Type: disk
            SCSI ID: IET     00010001
            SCSI SN: beaf11
            Size: 153097 MB
            Online: Yes
            Removable media: No
            Backing store type: rdwr
            Backing store path: /dev/sda3
    Account information:
    ACL information:
        10.0.102.41
        10.0.102.42

8. /etc/tgt/targets.confの設定
再起動時に、自動的に上記の設定が有効になるように、/etc/tgt/targets.confに以下の設定を追加します。

<target iqn.2001-04.com.iscsifs-iscsi-vol1>
 backing-store /dev/sda3
 initiator-address 10.0.102.41
 initiator-address 10.0.102.42
</target>


7. tgtdの自動起動の設定
設定内容に問題が無ければ、マシン起動時にtgtdが自動起動するように設定しておきます。
# /sbin/chkconfig tgtd on


以上でCentOS5上でのiSCSIターゲットの構築は完了です。

2010年7月2日金曜日

[samba] 所属グループ数の制限を超えるとpanic

最近のSambaでは、setgroups()が失敗するとpanicとなるように実装が変更されていた。

smbd/sec_ctx.c
        if (sys_setgroups(gid, ngroups, groups) != 0 && !non_root_mode()) {
                smb_panic("sys_setgroups failed");
        }

この理由について、こちらで述べられている。
http://old.nabble.com/sys_setgroups-:-migration-issues-from-3.0-series-to-3.2-3.3-series-td23103672.html

要約すると、「setgroups()に失敗したままだと、実際にはグループの権限を持っていないためアクセスできるはずのファイルやディレクトリにアクセスできなくなるのに、それが分からずに問い合わせが多発するから。」ということ。

これが問題になりやすいのは、Solaris10の環境だと思う。
デフォルトだと、最大16グループなので、ファイルサーバー的な利用においては、あっという間に16グループに達する。
とりあえず、OSの/etc/systemに「set ngroups_max=32」を書けば32まで増やせるが、これでも足りない環境だと対策のしようがない。

Solaris10 + ZFS + Sambaを薦めたいときの、一番の弱点。