BackupExec / NetBackupでWinPEを使った起動ディスクで仮想マシンをリカバリするとNIC設定が消える場合がある

BackupExec 20.1を使ってHyper-V上のWindows Serverのバックアップを行った。
最初、Hyper-V経由で仮想マシンとしてのバックアップにしようと考えていたのだが、BackupExecでは特定のドライブのバックアップを取らないという設定が出来ず、必ず全ドライブをバックアップする必要があることが分かった。
このため、対象サーバにBackupExec Agentをインストールして、エージェント経由でのバックアップを取ることにした。

で、Windows ADKを使用したSDR起動ディスクを作って、フルリストアのテストを行ったところ問題発生。
NICが2つついている場合、片側につけたIPアドレス設定がリカバリされない。

いろいろ条件をかえて試してみたけど、必ず発生している。

どうやら仕様らしい。

Veritasのサイト上だとNetBackup / vSphere環境での話として、「After restore a Windows Virtual Machine to original or alternate location, Virtual NIC settings may be changed or lost.」というのが掲載されている。

回避方法はなく、手動で再設定しろ、だそうな

UEFIブートのサーバでWindows Server 2016のインストール用USBメモリが起動しない

hpeのProLiantサーバにWindows Server 2016をインストールする場合、通常はIntelligent Provisioning を使う。

しかし、Administratorパスワードが不明な場合、Windows Server 2016の標準ISOイメージのレスキューモードで起動することになるのだが、Smart Array B140i用のドライバが含まれていないため、内蔵ディスクが見えない。

対処するためにはISOイメージ内のsources\boot.wim にDSIMコマンドを使ってAdd-driverすることになる。

手順は「Windows インストールメディアにドライバーを追加する」にあるものをほぼそのまま使い、下記の様に実施した。

カスタマイズしたWindows Server 2016ISOイメージの作り方

1. 作業用Windows10を用意
2. Windows ADK 1709の「Deployment Tools」と「Windows Preinstallation Environment (Windows PE)」をインストール
3. メニューの登録されている「展開およびイメージング ツール環境」を選択してコマンドプロンプトを起動
4. 「copype amd64 c:\work\pe_x64」(今回、C:\work を作業用ディレクトリとした)でWindows PE環境を展開
5. C:\work\iso にWindows Server 2016 ISOの中身をコピー
6. マウント用ディレクトリ c:\work\offline を作成
7. 「dism /get-imageInfo /imagefile:”C:\work\iso\sources\boot.wim”」でインデックス番号を確認
 インデックス1とインデックス2があることを確認
 レスキューの際にどちらを使うかわからないので、とりあえず両方使う

8. まずインデックス1をc:\work\offlineにマウント
「dism /mount-image /imagefile:”C:\work\iso\sources\boot.wim” /index:1 /mountdir:”C:\work\offline”」

9. smart array b140i用のドライバをc:\work\hpedriver に展開

10. ドライバを追加。複数ある場合も考慮して、/recurseオプション付きで実行
「dism /add-driver /image:”c:\work\offline” /driver:”c:\work\hpedriver” /recurse」

11. ドライバが追加されたことを確認
「dism /get-drivers /image:”c:\work\offline”」

12. アンマウントする
「dism /unmount-image /mountdir:”c:\work\offline” /commit」

13. 今度はインデックス2に対して実行
「dism /mount-image /imagefile:”C:\work\iso\sources\boot.wim” /index:2 /mountdir:”C:\work\offline”」

14. ドライバを追加。複数ある場合も考慮して、/recurseオプション付きで実行
「dism /add-driver /image:”c:\work\offline” /driver:”c:\work\hpedriver” /recurse」

15. ドライバが追加されたことを確認
「dism /get-drivers /image:”c:\work\offline”」

16. アンマウントする
「dism /unmount-image /mountdir:”c:\work\offline” /commit」

17. oscdimgコマンドを実行してISOイメージの作成
「oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\work\PE_x64\fwfiles\etfsboot.com#pEF,e,bc:\work\PE_x64\fwfiles\efisys.bin c:\work\iso c:\work\win2016-new.iso」

(2025/2/5追記 Windows Sevrer 2022向けでADK 10.1.26100.2454 実施したところfwfilesからbootbinsに変更されていました「oscdimg -m -o -u2 -udfver102 -bootdata:2#p0,e,bc:\work\PE_x64\bootbins\etfsboot.com#pEF,e,bc:\work\PE_x64\bootbins\efisys.bin c:\work\iso c:\work\win2022-new.iso」

これで、作成したISOイメージをFAT32でフォーマットしたUSBメモリにコピーしようとしたところ、install.wimのコピーで失敗した。

原因はinstall.wimのサイズがFAT32制限である4GB以上の約6GBであるためです。

NTFSもしくはexFATでフォーマットしなおしたところ、コピーはできたものの、サーバ側で起動ディスクとして認識せず、起動できなかった。

確認したところ、 UEFIの場合、ファイルシステムがFAT32であること、という前提があった。 この制限については、マイクロソフトの「起動可能な USB フラッシュ ドライブを作成します。」に記載がされている。

サーバー プラットフォームが Unified Extensible Firmware Interface (UEFI) をサポートする場合は、NTFS ではなく FAT32 として、USB フラッシュ ドライブをフォーマットする必要があります。 フォーマットするパーティションを FAT32 として、次のように入力します。 format fs=fat32 quick、し、[入力] をクリックします。

ブート可能な USB フラッシュ ドライブの作成

この記事を書くきっかけとなった件ではiLO Advancedライセンスがあったため、isoイメージをiLOからマウントすることで、DVDを作成する必要はなく対応することができた。

しかし、USBメモリを使ってWindows Server 2016のインストールを行う手法があるかどうか
つまりは4GBを超えてしまったinstall.wimをダイエットすることができるのか、分割することはできるのか、という点は不明なままであった・・・


2018/03/13追記

Microsoftの公式記述を発見した。

手法1「WinPE: Store or split images to deploy Windows using a single USB drive
 USBメモリにパーテーションを2つ作り、FAT32のメイン領域と、NTFSのinstall.wimのみをおく領域を作る、というもの

手法2「Split a Windows image file (.wim) to span across multiple DVDs
Dism /Split-Imageコマンドを使ってinstall.wimをinstall.swmに分割するというもの

Dism /Split-Image /ImageFile:C:\work\iso\sources\install.wim /SWMFile:C:\work\iso\sources\install.swm /FileSize:4000

(上記ページだと4700となっているけど、4GB超えてて大丈夫なの?と心配なので余裕をもって)

2020/12/21 追記

これを再度hpe dl360 gen10環境で実施する必要があったので確認した。

(1) FAT32フォーマットのUSBドライブ(Eドライブにマウント)にISOの中身(Dドライブにマウント)を全部コピーするも install.wim のみエラー
(2) コマンドプロンプト開いて「 dism /split-image /imagefile:d:\sources\install.wim /swmfile:e:\sources\install.swm /filesize:4000」を実行
(3) e:\sources\ にinstall.swm とinstall2.swm ができていることを確認
(4) できたUSBメモリで起動

Samba 4.7.xでActive Directoryを1から立てる

2019/06/14追記

Samba 4.10.xでActive Directoryを1から立てる」という記事を更新版の記事を作成しています。違いは必要となるパッケージが増えたことについてです。


CentOS7とSamba 4.7.5で環境を作成しなおしたので、記事更新

過去の記事はこちら
2014年2月版「Samba 4.xでActive Directoryを1から立てる
2016年7月版「Samba 4.4.xでActive Directoryを1から立てる


Linux上でSambaを使ってActive Directoryサーバを立てるメリット
Windows Serverを買わなくてもActive Directoryを作れる
 ライセンス費用の低減
Active Directoryユーザの作成などのユーザ管理をWindowsマシンからWindows標準ツールで行える
 ユーザ作成/変更、コンピュータアカウントの作成、DNS管理など、Active Directoryの管理を行う際に
 良く使う動作については、Linuxのコマンドではなく、WindowsのActive Directory管理ツールで行える
 具体的にはADに参加しているWindowsマシンにWindows機能のActive Directory管理ツールを追加インストールしたあと、
 ADの管理者ユーザでログオンすることでAD管理を行うことができる
設定が難しくない
 いまのsambaは、DNSサーバとLDAPサーバ機能が統合されており、AD名とAD上の役割と
 管理者パスワードを決めてしまえば、あとは良きに計らってくれるので
 設定の難易度が非常に低い

もちろん、デメリット、もあります
ActiveDirectoryの全機能が搭載されていない
 ドメイン/フォレストの機能レベルが「Windows Server 2008 R2」までとなっている。
 なお、フェールオーバクラスタについては作成できるようになっていました。
 →「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました

それでは、実際の手順について・・・
元ネタは公式ページの「Setting up Samba as an Active Directory Domain Controller」となります。

0. CentOS7の最小インストールを実施

1. /etc/hostsの修正
自ホスト名を/etc/hostsに追加
追加の際は、ショートのホスト名と、ドメイン付きのFQDNの両方を列挙すること。

[root@adserver ~]# cat /etc/hosts<br><br>
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4<br><br>
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6<br><br>
172.17.44.40    adserver adserver.adosakana.local<br><br>
[root@adserver ~]#

2. 好みに応じて使うツールをインストール
セッションが途中で切れても良い様に「screen」と、ファイルダウンロードするためにwget(curlでもいいのですが)をインストールします。

[root@adserver ~]# yum install wget screen<br><br>
<略><br><br>
[root@adserver ~]#

3. 必要なパッケージをインストール
Samba公式の「Operating system requirements/Dependencies – Libraries and programs」に記載されているパッケージをインストール

[root@adserver ~]# yum install attr bind-utils docbook-style-xsl gcc gdb krb5-workstation \<br><br>
       libsemanage-python libxslt perl perl-ExtUtils-MakeMaker \<br><br>
       perl-Parse-Yapp perl-Test-Base pkgconfig policycoreutils-python \<br><br>
       python-crypto gnutls-devel libattr-devel keyutils-libs-devel \<br><br>
       libacl-devel libaio-devel libblkid-devel libxml2-devel openldap-devel \<br><br>
       pam-devel popt-devel python-devel readline-devel zlib-devel systemd-devel<br><br>
<略><br><br>
[root@adserver ~]#

4. sambaのtar.gzをダウンロード

[root@adserver ~]# wget https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz<br><br>
--2016-xx-xx xx:xx:xx--  https://download.samba.org/pub/samba/stable/samba-4.7.5.tar.gz<br><br>
download.samba.org をDNSに問いあわせています... 144.76.82.156<br><br>
download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。<br><br>
HTTP による接続要求を送信しました、応答を待っています... 200 OK<br><br>
長さ: 20715838 (20M) [application/gzip]<br><br>
`samba-4.7.5.tar.gz' に保存中</p><br>
<p>100%[======================================>] 16,862,398  3.71MB/s 時間 5.5s</p><br>
<p>2018-03-xx xx:xx:xx (2.93 MB/s) - `samba-4.7.5.tar.gz' へ保存完了 [16862398/16862398]</p><br>
<p>[root@adserver ~]#

5. configure実施

[root@adserver ~]# tar xfz samba-4.7.5.tar.gz<br><br>
[root@adserver ~]# cd samba-4.7.5<br><br>
[root@adserver samba-4.7.5]# ./configure<br><br>
Checking for program gcc or cc           : /usr/bin/gcc<br><br>
Checking for program cpp                 : /usr/bin/cpp<br><br>
<略><br><br>
Checking if toolchain accepts -fstack-protector                                                 : yes<br><br>
'configure' finished successfully (2m43.587s)<br><br>
[root@adserver samba-4.7.5]#

6. make & make install

[root@adserver samba-4.7.5]# make<br><br>
WAF_MAKE=1 python ./buildtools/bin/waf build<br><br>
Waf: Entering directory `/root/samba-4.7.5/bin'<br><br>
<略><br><br>
Note: Writing nmblookup4.1<br><br>
Waf: Leaving directory `/root/samba-4.7.5/bin'<br><br>
'build' finished successfully (22m56.876s)<br><br>
[root@adserver samba-4.7.5]# make install<br><br>
WAF_MAKE=1 python ./buildtools/bin/waf install<br><br>
Waf: Entering directory `/root/samba-4.7.5/bin'<br><br>
<略><br><br>
* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm<br><br>
Waf: Leaving directory `/root/samba-4.7.5/bin'<br><br>
'install' finished successfully (6m48.094s)<br><br>
[root@adserver samba-4.7.5]#

7. インストール完了確認

sambaのバージョン確認

[root@adserver ~]# /usr/local/samba/sbin/samba -V<br><br>
Version 4.7.5<br><br>
[root@adserver ~]#

8. Active Directoryのセットアップ
ドメイン「adosakana.local」を作成します。
また、sambaの機能を使ってAD DNSを構築するので「SAMBA_INTERNAL」を選択します。

なお、「–use-rfc2307」はADにNIS連携機能を追加するオプションです。AD上にUnix用のUID/GID/shell情報なども格納できるようにします。Samba環境では有効にしておくべきものです。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain provision --use-rfc2307 --interactive<br><br>
Realm [ADOSAKANA.LOCAL]:<br><br>
 Domain [ADOSAKANA]:<br><br>
 Server Role (dc, member, standalone) [dc]:<br><br>
 DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]:<br><br>
 DNS forwarder IP address (write 'none' to disable forwarding) [172.30.50.100]:<br><br>
Administrator password:<br><br>
Retype password:<br><br>
Looking up IPv4 addresses<br><br>
Looking up IPv6 addresses<br><br>
No IPv6 address will be assigned<br><br>
Setting up secrets.ldb<br><br>
Setting up the registry<br><br>
Setting up the privileges database<br><br>
Setting up idmap db<br><br>
Setting up SAM db<br><br>
Setting up sam.ldb partitions and settings<br><br>
Setting up sam.ldb rootDSE<br><br>
Pre-loading the Samba 4 and AD schema<br><br>
Adding DomainDN: DC=adosakana,DC=local<br><br>
Adding configuration container<br><br>
Setting up sam.ldb schema<br><br>
Setting up sam.ldb configuration data<br><br>
Setting up display specifiers<br><br>
Modifying display specifiers<br><br>
Adding users container<br><br>
Modifying users container<br><br>
Adding computers container<br><br>
Modifying computers container<br><br>
Setting up sam.ldb data<br><br>
Setting up well known security principals<br><br>
Setting up sam.ldb users and groups<br><br>
Setting up self join<br><br>
Adding DNS accounts<br><br>
Creating CN=MicrosoftDNS,CN=System,DC=adosakana,DC=local<br><br>
Creating DomainDnsZones and ForestDnsZones partitions<br><br>
Populating DomainDnsZones and ForestDnsZones partitions<br><br>
Setting up sam.ldb rootDSE marking as synchronized<br><br>
Fixing provision GUIDs<br><br>
A Kerberos configuration suitable for Samba AD has been generated at /usr/local/samba/private/krb5.conf<br><br>
Setting up fake yp server settings<br><br>
Once the above files are installed, your Samba AD server will be ready to use<br><br>
Server Role:           active directory domain controller<br><br>
Hostname:              adserver<br><br>
NetBIOS Domain:        ADOSAKANA<br><br>
DNS Domain:            adosakana.local<br><br>
DOMAIN SID:            S-1-5-21-98280047-2622333268-1688910966</p><br>
<p>[root@adserver ~]#

なお、password_hashでエラーとなるとおもいます。
現状の /etc/krb5.conf の内容が問題で発生しています。
この後の手順で正しいものに置き換えるので、この段階では単純に「mv /etc/krb5.conf /etc/krb5.conf.org」などの手段で別の名前として使わなくすれば大丈夫です。

Setting up sam.ldb users and groups<br><br>
ERROR(ldb): uncaught exception - operations error at ../source4/dsdb/samdb/ldb_modules/password_hash.c:3132<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/__init__.py", line 176, in _run<br><br>
    return self.run(*args, **kwargs)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/netcmd/domain.py", line 474, in run<br><br>
    nosync=ldap_backend_nosync, ldap_dryrun_mode=ldap_dryrun_mode)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 2175, in provision<br><br>
    skip_sysvolacl=skip_sysvolacl)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1787, in provision_fill<br><br>
    next_rid=next_rid, dc_rid=dc_rid)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/__init__.py", line 1447, in fill_samdb<br><br>
    "KRBTGTPASS_B64": b64encode(krbtgtpass.encode('utf-16-le'))<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/provision/common.py", line 55, in setup_add_ldif<br><br>
    ldb.add_ldif(data, controls)<br><br>
  File "/usr/local/samba/lib64/python2.7/site-packages/samba/__init__.py", line 229, in add_ldif<br><br>
    self.add(msg, controls)

9. sambaを起動

[root@adserver ~]# ps -ef|grep samba<br><br>
root     11129 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba<br><br>
[root@adserver ~]# /usr/local/samba/sbin/samba<br><br>
[root@adserver ~]# ps -ef|grep samba<br><br>
root     11131     1 14 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11132 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11133 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11134 11132  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11135 11134 19 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11136 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11137 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11138 11131 21 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11139 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11140 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11141 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11142 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11143 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11144 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11145 11142  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11146 11131  2 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11147 11145 18 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11148 11131  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11151 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11152 11151 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_dnsupdate<br><br>
root     11153 11146  0 16:01 ?        00:00:00 /usr/local/samba/sbin/samba<br><br>
root     11154 11153 17 16:01 ?        00:00:00 python /usr/local/samba/sbin/samba_spnupdate<br><br>
root     11157 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11158 11135  0 16:01 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground<br><br>
root     11160 23028  0 16:01 pts/0    00:00:00 grep --color=auto samba<br><br>
root     11161 11147  0 16:01 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground<br><br>
[root@adserver ~]#

10.動作確認
CentOS内部からSMB接続を行うテストを実施。

[root@adserver ~]# /usr/local/samba/bin/smbclient --version<br><br>
Version 4.7.5<br><br>
[root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U%</p><br>
<p>        Sharename       Type      Comment<br><br>
        ---------       ----      -------<br><br>
        netlogon        Disk<br><br>
        sysvol          Disk<br><br>
        IPC$            IPC       IPC Service (Samba 4.7.5)<br><br>
Reconnecting with SMB1 for workgroup listing.</p><br>
<p>        Server               Comment<br><br>
        ---------            -------</p><br>
<p>        Workgroup            Master<br><br>
        ---------            -------<br><br>
[root@adserver ~]#

以前は「Domain=[ADOSAKANA.LOCAL] OS=[Unix] Server=[Samba x.y.z]」という出力もあったのですが、Samba 4.7.5では無くなったようです。

netlogon共有にAdministrator権限でアクセスできるか確認。

[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'<br><br>
Enter Administrator's password:<br><br>
  .                                   D        0  Fri Mar  2 15:53:48 2018<br><br>
  ..                                  D        0  Fri Mar  2 15:58:16 2018</p><br>
<p>                14034944 blocks of size 1024. 11789628 blocks available<br><br>
[root@adserver ~]#

11.AD DNSの動作テスト
AD DNSが想定通りに動作しているかテストします。

まず、どんなzoneが登録されているのか確認

[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator<br><br>
Password for [ADOSAKANA\Administrator]:<br><br>
  2 zone(s) found</p><br>
<p>  pszZoneName                 : adosakana.local<br><br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE<br><br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY<br><br>
  Version                     : 50<br><br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED<br><br>
  pszDpFqdn                   : DomainDnsZones.adosakana.local</p><br>
<p>  pszZoneName                 : _msdcs.adosakana.local<br><br>
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE<br><br>
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY<br><br>
  Version                     : 50<br><br>
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED<br><br>
  pszDpFqdn                   : ForestDnsZones.adosakana.local<br><br>
[root@adserver ~]#

Active Directoryで使用するDNSのSRVレコードが登録されているかをhostコマンドを使って確認。

[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>_ldap._tcp.adosakana.local has SRV record 0 100 389 adserver.adosakana.local.<br><br>
[root@adserver ~]# host -t SRV _kerberos._udp.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>_kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local.<br><br>
[root@adserver ~]#

ADサーバのホスト名が登録されているか確認

[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1<br><br>
Using domain server:<br><br>
Name: 127.0.0.1<br><br>
Address: 127.0.0.1#53<br><br>
Aliases:</p><br>
<p>adserver.adosakana.local has address 172.17.44.40<br><br>
[root@adserver ~]#

12. DNSサーバの変更
ADサーバの/etc/resolv.confを、ADサーバ自身を使う様に書き換え

13. /etc/krb5.conf の変更
/usr/local/samba/private/krb5.conf に元となるものがあるので、それを使用する。

[root@adserver ~]# cat /etc/krb5.conf<br><br>
[logging]<br><br>
 default = FILE:/var/log/krb5libs.log<br><br>
 kdc = FILE:/var/log/krb5kdc.log<br><br>
 admin_server = FILE:/var/log/kadmind.log</p><br>
<p>[libdefaults]<br><br>
 default_realm = EXAMPLE.COM<br><br>
 dns_lookup_realm = false<br><br>
 dns_lookup_kdc = false<br><br>
 ticket_lifetime = 24h<br><br>
 renew_lifetime = 7d<br><br>
 forwardable = true</p><br>
<p>[realms]<br><br>
 EXAMPLE.COM = {<br><br>
  kdc = kerberos.example.com<br><br>
  admin_server = kerberos.example.com<br><br>
 }</p><br>
<p>[domain_realm]<br><br>
 .example.com = EXAMPLE.COM<br><br>
 example.com = EXAMPLE.COM<br><br>
[root@adserver ~]# cat /usr/local/samba/private/krb5.conf<br><br>
[libdefaults]<br><br>
        default_realm = ADOSAKANA.LOCAL<br><br>
        dns_lookup_realm = false<br><br>
        dns_lookup_kdc = true<br><br>
[root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf<br><br>
cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y<br><br>
[root@adserver ~]# cat /etc/krb5.conf<br><br>
[libdefaults]<br><br>
        default_realm = ADOSAKANA.LOCAL<br><br>
        dns_lookup_realm = false<br><br>
        dns_lookup_kdc = true<br><br>
[root@adserver ~]#

14. Kerberosの動作確認

kinitコマンドを実行して確認します。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL<br><br>
Password for administrator@ADOSAKANA.LOCAL:<br><br>
Warning: Your password will expire in 41 days on 2018年04月13日 15時58分15秒<br><br>
[root@adserver ~]#

正常に設定されていれば、上記の様にAdministratorユーザのパスワード有効期限が表示されます。

ドメイン名指定の大文字/小文字を間違えると下記の様なエラーとなります。

[root@adserver ~]# kinit administrator@adosakana.local<br><br>
Password for administrator@adosakana.local:<br><br>
kinit: KDC reply did not match expectations while getting initial credentials<br><br>
[root@adserver ~]#

また、DNSサーバ指定が誤っている場合は下記の様なエラーです。

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL<br><br>
kinit: Cannot resolve servers for KDC in realm "ADOSAKANA.LOCAL" while getting initial credentials<br><br>
[root@adserver ~]#

「klist」コマンドを実行することでも確認出来ます。

[root@adserver ~]# klist<br><br>
Ticket cache: FILE:/tmp/krb5cc_0<br><br>
Default principal: administrator@ADOSAKANA.LOCAL</p><br>
<p>Valid starting       Expires              Service principal<br><br>
2018-03-02T16:06:21  2018-03-03T02:06:21  krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL<br><br>
        renew until 2018-03-03T16:06:18<br><br>
[root@adserver ~]#

15. フォレストとドメインの機能レベル確認
作成したActive Directoryのドメインの機能レベルとフォレストの機能レベルを確認します。

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show<br><br>
Domain and forest function level for domain 'DC=adosakana,DC=local'</p><br>
<p>Forest function level: (Windows) 2008 R2<br><br>
Domain function level: (Windows) 2008 R2<br><br>
Lowest function level of a DC: (Windows) 2008 R2<br><br>
[root@adserver ~]#

Samba 4.7.5では、Windows Sevrer 2008R2と設定されているようです。

16. firewalldの設定

CentOS7ではfirewalldによりポートが制限されています。
現状を「firewall-cmd –list-all」で確認。

# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client<br><br>
  ports:<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:<br><br>
# 

開けるべきポートのテンプレートがあらかじめ用意されているので「firewall-cmd –get-services」を実行して確認します。

# firewall-cmd --get-services<br><br>
RH-Satellite-6 amanda-client amanda-k5-client bacula bacula-client bitcoin bitcoin-rpc bitcoin-testnet bitcoin-testnet-rpc ceph ceph-mon cfengine condor-collector ctdb dhcp dhcpv6 dhcpv6-client dns docker-registry dropbox-lansync elasticsearch freeipa-ldap freeipa-ldaps freeipa-replication freeipa-trust ftp ganglia-client ganglia-master high-availability http https imap imaps ipp ipp-client ipsec iscsi-target kadmin kerberos kibana klogin kpasswd kshell ldap ldaps libvirt libvirt-tls managesieve mdns mosh mountd ms-wbt mssql mysql nfs nrpe ntp openvpn ovirt-imageio ovirt-storageconsole ovirt-vmconsole pmcd pmproxy pmwebapi pmwebapis pop3 pop3s postgresql privoxy proxy-dhcp ptp pulseaudio puppetmaster quassel radius rpc-bind rsh rsyncd samba samba-client sane sip sips smtp smtp-submission smtps snmp snmptrap spideroak-lansync squid ssh synergy syslog syslog-tls telnet tftp tftp-client tinc tor-socks transmission-client vdsm vnc-server wbem-https xmpp-bosh xmpp-client xmpp-local xmpp-server<br><br>
#

SambaをADとして使う場合のポートを「Samba AD DC Port Usage」で確認します。

CentOS7のfirewalldで定義されているものと待避させてみると・・・

サービス ポート プロトコル firewalld定義
DNS 53 tcp/udp dns
Kerberos 88 tcp/udp kerberos,freeipa-ldap,freeipa-ldaps
End Point Mapper (DCE/RPC Locator Service) 135 tcp freeipa-trust
NetBIOS Name Service 137 udp samba,samba-client
NetBIOS Datagram 138 udp samba,samba-client,freeipa-trust
NetBIOS Session 139 tcp samba,freeipa-trust
LDAP 389 tcp/udp freeipa-trust(ldap,freeipa-ldapはtcpのみ)
SMB over TCP 445 tcp samba,freeipa-trust(freeipa-trustはudpも含む)
Kerberos kpasswd 464 tcp/udp kpasswd,freeipa-ldap,freeipa-ldaps
LDAPS 636 tcp ldaps,freeipa-ldaps
Dynamic RPC Ports(4.7以前) 1024-1300 tcp freeipa-trust
Dynamic RPC Ports(samba 4.7以降) 49152-65535 tcp ?
Global Catalog 3268 tcp freeipa-trust
Global Catalog SSL 3269 tcp なし

・firewalldの定義「samba」「dns」「freeipa-ldaps」「freeipa-trust」を使用
・「Dynamic RPC Ports(samba 4.7以降):49152-65535」を追加するか、smb.confで「rpc server port」を定義するか。
・「Global Catalog SSL:3269」を追加

# firewall-cmd --permanent --zone=public --add-service=samba<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=dns<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-ldaps<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-service=freeipa-trust<br><br>
success<br><br>
# firewall-cmd --reload<br><br>
success<br><br>
# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust<br><br>
  ports:<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:</p><br>
<p>#

# firewall-cmd --permanent --zone=public --add-port=49152-65535/tcp<br><br>
success<br><br>
# firewall-cmd --permanent --zone=public --add-port=3269/tcp<br><br>
success<br><br>
# firewall-cmd --reload<br><br>
success<br><br>
# firewall-cmd --list-all<br><br>
public (active)<br><br>
  target: default<br><br>
  icmp-block-inversion: no<br><br>
  interfaces: ens160<br><br>
  sources:<br><br>
  services: ssh dhcpv6-client samba dns freeipa-ldaps freeipa-trust<br><br>
  ports: 49152-65535/tcp 3269/tcp<br><br>
  protocols:<br><br>
  masquerade: no<br><br>
  forward-ports:<br><br>
  source-ports:<br><br>
  icmp-blocks:<br><br>
  rich rules:<br><br>
#

17. systemdへの登録
systemdへの登録については「Managing the Samba AD DC Service Using Systemd」を参照のこと
CentOS6の場合は「Managing the Samba AD DC Service Using an Init Script

以上で設定は終了です。

samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた

以前試したときはうまくいかなかったが、どうやら、動くらしい、という話を聞いて試してみた。

Samba 4.7.4で、ドメインレベル/フォレストレベルをWindows Server 2008R2に設定した状態で実施。
(レベルの確認・変更については「samba 4.xでドメイン/フォレストの機能レベルを変更する」を参照のこと)

クラスタの検証は問題なく通過し、実際に組んで見るとネットワークへのリソース名登録周りでエラーが発生。

ログの名前:         System
ソース:           Microsoft-Windows-FailoverClustering
日付:            2018/02/28 18:41:44
イベント ID:       1194
タスクのカテゴリ:      ネットワーク名リソース
レベル:           エラー
キーワード:
ユーザー:          SYSTEM
コンピューター:       server1.adosakana.local
説明:
クラスター ネットワーク名リソース 'クラスタリソース1' は、ドメイン 'adosakana.local' の関連付けられたコンピューター オブジェクトを作成できませんでした (期間: Resource online)。

関連するエラー コードのテキストは次のとおりです: アクセスが拒否されました。

ドメイン管理者と協力して、次のことを確認してください。
- クラスター ID 'クラスタ名$' が、コンピューター オブジェクトを作成するためのアクセス許可を持っていること。既定では、すべてのコンピューター オブジェクトがクラスター ID 'クラスタ名$' と同じコンテナー内に作成されます。
- コンピューター オブジェクトのクォータに達していないこと。
- 既存のコンピューター オブジェクトがある場合は、[Active Directory ユーザーとコンピューター] のツールを使用して、クラスター ID 'クラスタ名$' にそのコンピューター オブジェクトに対するフル コントロールのアクセス許可があることを確認してください。

解決方法はMicrosoftのKB「クラスター環境においてクライアント アクセス ポイントを作成または削除した際、イベント ID 1222 と 1197 が記録される。」にあるままでした。

2026/01/09追記:上記KBが消えていたのでWeb Archive。似たようなもので「Windows Server 2012 フェールオーバー クラスターを作成するときのイベント ID 1222」というのがありますが、こちらは状況違いです。

下記の設定を行ったところ、クラスタが起動するようになりました。

1. Domain Administrator権限を持っているユーザで「Active Directory ユーザーとコンピューター」を開く
2. 「表示」-「拡張機能」を選択し、セキュリティなどの設定が表示される状態に変更
3. 「Computers」コンテナのプロパティを開く
4. 「セキュリティ」タブの「詳細設定」を開く
5. 「追加」を開く
6. まず、「プリンシパルの選択」のリンクをクリック
 「オブジェクトの種類」を開き、「コンピュータ」にチェックを入れる
 「選択するオブジェクト名を入力してください」の下の欄にエラーがでた「クラスタ名」を入力
 「名前を確認」してOK
7. 種類「許可」、適用先「このオブジェクトとすべての子オブジェクト」が選択されていることを確認
8. アクセス許可は「すべてのプロパティの読み取り」と「すべての子オブジェクトの作成」にチェック
 他の項目は標準設定のままで良い
9. この設定でセキュリティの追加を完了する

LTOテープをファイルシステムとして使うLTFSについて 2018/01/04版

LTOテープをファイルシステムとして使うLTFSについて 2020/05/11版」にて内容を更新しました。


前回LTFSの現状についてまとめた記事から2年が経過した。
(「LTOテープをファイルシステムとして使うLTFSについて 2015/11/18版」)

2年経過し、LTO-8も登場。
LTFSの規格にも変化が出ているのかな?と調査してみた。


過去のLTFS関連記事
 「LTOテープをファイルシステムとして使うLTFS(2012/11/28)
 「テープ装置メーカ純正のLTFS一覧(2013/12/20更新)
 「IBM版LTFSをRHEL5で使ってみた(2013/05/20)
 「LTOテープをファイルシステムとして使うLTFSについて 2014/06/09版
 「LTOテープをファイルシステムとして使うLTFSについて 2015/11/18版


LTFSとは?

LTO-5/LTO-6からは、メディアを2つの領域に分割して利用することが可能になった。
その機能を活かし、1本のテープメディアの中に、メディア内データの管理情報と、実データを分割して保存することを可能とした。
これにより、これまで実現出来なかった、1本のテープメディアだけで可搬性のあるファイルシステム構築、というものが可能となり、その実装として、LTFS(Linear Tape File System)というのがある。

使用用途としては、バックアップ用ではなく、長期保存のためのアーカイブ用や、大容量データの持ち運び用として使用されている。

LTFSを実現するためのソフトウェアについては、基本的には、IBMが大本のベースを作り、それを各LTOドライブメーカが、自社ドライブ向けにカスタマイズして提供しているような形となっている。

LTFSのバージョン(フォーマット)

LTFSには、バージョンがいくつかあり、現状気にしなければならないのは、以下の5つ
・LTFS 1.0
・LTFS 2.0 : ファイルインデックス関連で機能をいろいろ追加
・LTFS 2.1 : 2012/05/18リリース。LTFS2.0+シンボリックリンク
・LTFS 2.2 : 2013/12/21リリース。管理情報の改良
・LTFS 2.3 : 2016/03/08リリース。各ファイルのハッシュ情報とファイル名のエンコーディングを追加
(LTFS 2.3.1が2017/05/24にリリースされてますが、LTFS 2.3のバグ修正的なものなので、省略)

「LTFSのバージョン」と「LTFSソフトウェアのバージョン」は別物なので注意が必要。
たとえば、OracleのLTFSソフトウェアは「ver1.2.7」だが、「LTFS 2.2」に対応している。

LTFS2.2対応は重要だが、LTFS2.3対応はそれほど重要ではないので、とりあえず、現行リリースされているLTFSソフトウェアはほぼLTFS2.2以降対応なので、あまり心配しなくてもよさそう。

LTFS2.3の規格書はSNIAの「Linear Tape File System (LTFS)」の「Linear Tape File System (LTFS) Format Specification」にてpdfで公開されている。

その他、いろんな情報は、LTOの規格団体の「LTFS Overview」にある。

LTFSソフトウェアの種類

LTFSの公式認証を取得しているLTFSソフトウェアについては、「LTFS Compliance Verification」にて紹介されている。

2018/01/04時点では以下の8個が登録されている。

Company Product Version LTFS Version LTO Generation Date tested
Quantum Quantum Scalar LTFS Appliance 2.0.2 2.0.1 LTO5 & 6 9/11/13
HP HP StoreOpen Standalone 2.1.0 2.1.0 LTO5 & 6 9/11/13
IBM IBM Single Drive Version 1.3.0 2.1.0 LTO5 & 6 9/11/13
IBM IBM LTFS Library Edition V1R3 2.1.0 LTO5 & 6 10/2/13
Quantum Quantum LTFS 2.1.0 2.1.0 LTO5 & 6 11/29/13
HP HP StoreOpen Automation 1.2.0 2.0.1 LTO5 & 6 11/29/13
Spectra Logic Spectra Logic Black Pearl 1.1 2.2 LTO5 & 6 9/11/15
MT-Consulting NODEUM 1.1 2.1.0 LTO5 & 6 7/05/16

2015年にSpectra Logicが追加、2016年にMT-Consultingが追加されている以外、バージョンに動きがない。しかし、実際には各LTFSソフトウェアともにバージョンアップを行っている。
なお、LTFSソフトウェアのバージョンと、対応しているLTFSフォーマットのバージョンに直接の関連性は無いので注意が必要。


各ドライブメーカが出しているLTFSソフトウェアについて

まずは、上記のリストに載っているメーカのものから。

・IBM
公式: IBM Spectrum Archive(IBM Linear Tape File System)

IBMのLTFSは「IBM Spectrum Archive」という商品名になっている。
テープベンダのSpectra Logicとは関係がないようだ。

ソフトウェアの入手は、「Fix Central」にて「製品グループ:System Storage」-「Tape Systems」-「Tape drives and software」の下にある「IBM Spectrum Archive Single Drive Edition(SDE) (旧名:LTFS Single Drive Edition)」や「IBM Spectrum Archive Library Edition(LE)(旧名:LTFS Library Edition)」「IBM Spectrum Archive Enterprise Edition(EE)」を選択して行う。
なお、LEとEEの方はアップデータのみの配布で、元になるソフトウェアについては、IBMから別途入手する必要がある。
基本的には、Single Drive Edition(SDE)が、他の全てのLTFSソフトウェアの原型になっているもの・・・という感じである。

2018/01/04時点での最新は、
IBM Spectrum Archive Enterprise Edition: ver1.2.5.0(2017/11/02) LTO-8対応/LTFS2.2まで対応
IBM Spectrum Archive Library Edition : ver2.4.0.0(2017/10/10) LTO-8対応/LTFS2.4対応
IBM Spectrum Archive Single Drive Edition: ver2.4.0.0(2017/10/10) LTO-8対応/LTFS2.4対応

IBM的にはLTFS 2.3はエンコードのバグがあるので、それを修正したものをLTFS 2.4と称している模様。

・HP
公式: HPE StoreOpen and Linear Tape File System (LTFS) Software
日本語情報: HP LTFS (Linear Tape File System)

単体ドライブ向けのみだが「日本語の導入マニュアル」が用意されている。

分社化の影響で、LTFS関連はHP Enterpriseに移籍したが、関連リンクが更新されていないので、いろんなところでリンク切れが発生している。
以前は「http://www.hp.com/go/ltfs/」といういい感じのショートカットがあったが、StoreOpenというショートカットに変わってしまった。

ソフトウェア関連は「HP StoreOpen and Linear Tape File System (LTFS) Software」からたどる事になる。

ソフトウェアの入手は、単体ドライブ向けの「HP StoreOpen Standalone」も、チェンジャー向け「HP StoreOpen Automation」も上記のページの「Get drivers, software & firmware.」から行う。

2018/01/04時点での最新は、
HP StoreOpen Standalone : ver3.2.0(2017/02/06) LTO-7まで対応
HP StoreOpen Automation : ver3.1.0(2016/07/22)
規格としてのLTFSの対応バージョンについての明記が見当たらず。

2018/02/26追記
HP StoreOpen Standalone : ver3.3.0(2018/02/05) LTO-8まで対応
「Support for SNIA 2.4」という記載もあるのでLTFS2.4にも対応している模様

・Quantum
公式: Linear Tape File System

ソフトウェア入手は上記の公式ページの「Software」タブから行う。
ソースコードについては、LTFS Open Source Filesから。

2014/06/09時点での最新は、
Linux/Mac : ver2.2.0(2015/12) LTO-7/LTFS2.2対応
Windows Model Bドライブ向け: ver3.0(2016/04) LTO-6以降という曖昧な記述のみ
Windows Model Cドライブ向け: ver2.2.1(2014/10) LTO-7/LTFS2.2対応。おそらくLinux/Mac向けと同じベース

Linux版のReleasenoteには、Quantum LTOドライブのほか、IBM LTOドライブにも対応という記述がある。

・Quantum Scalar LTFS Appliance
公式:Scalar LTFSアプライアンス

ハードウェアがセットになったアプライアンス。
これの下にFC経由などでテープチェンジャーを繋いで使うもの。

・Spectra Logic
公式:Linear Tape File System (LTFS)

LTFSを紹介するページはあるものの、LTFSを利用するソフトウェアに関するページが見当たらない。
また、バージョンもわからず。
BlackPearlというアプライアンスで、階層型ストレージとしてディスクとテープなどのストレージを組み合わせて使用する。

・MT-C NODEUM
公式:NODEUM

リストには「MT-Consulting」とあるが「MT-C」と改称した模様。
階層型ストレージとして、ディスクとテープなどを組み合わせて使用できるようにする、ソフトウェアのみを販売している?


リストに載っていない、LTFS

・TANDBERG DATA
公式: LTFS for Archive

以前は「LTFS for Big Data」という扱いだったが、「Archive」にかえたようだ。

ソフトウェアの入手は「LTFS Downloads for LTO-5/6」か「LTFS Downloads for LTO7」から行う。

2018/01/04時点での最新は
LTO-5/6向け: ver 3.0.0
LTO-7向け: ver 2.2.2

ページは英語表記だが、ドキュメントアイコンが日の丸になってるとおり、ダウンロードできるドキュメントは日本語化されている。
一部TANBERGカスタマイズが入っているようだが、基本的にはHP StoreOpen相当品。

・Oracle
公式: Oracle’s StorageTek Linear Tape File System, Open Edition
製品としてのページ: Oracle StorageTek Linear Tape File System (LTFS), Open Edition and Library Edition

ソフトウェアの入手は「https://oss.oracle.com/projects/ltfs/files/」から行う。

2018/01/04時点での最新は2015年時点と変わらず
ltfs-1.2.7(2015/10/07)

IBM LTFS 2.2.0.2とHP LTFS 2.2.1を組み合わせ、Oracle/StorageTek用の設定を入れたもの。
Oracle LTOドライブ,IBM LTOドライブ,HP LTOドライブに対応している。

Resouceページで「LTFS For Dummies」という51ページのPDFを公開しているのが興味深い。
??? For Dummiesは、アメリカで販売されているいろんな分野の初心者向け書籍シリーズ。「ダミー人形向けの」→「バカでも分かる」というものなんだけど・・・このLFS for Dummies、解説具合が微妙過ぎるなぁ・・・


LTFS関連のツール紹介

・LTOpers
公式: https://github.com/amiaopensource/ltopers
LTFSを使いやすくするためのBASHスクリプトのフロントエンドプログラム
Quantum LTFS 2.2向けで、Homebrewでインストールし、ということなので、MacOSX向けとして作られているようだが、スクリプトを読むと.linuxbrewディレクトリがあった場合の条件分岐があるので、Linuxでも使えそう。