LSI MegaRAID SASのRAIDステータスをLinuxで取る


前はMegaCliだったものが、いまは違うらしい。

中古で手に入れたサーバにMegaRAID SAS 8708EM2が入ってたので必要になったので確認してみた。

(2017/03/02追記:firmwareアップデート手順として「storcliを使ってMegaSASのfirmwareをアップデートする手順」を公開しています)

Avagoの「Support Documents and Downloads」から「Product Family:Legacy RAID Controllers」の「Product:MegaRAID SAS 8708EM2」を選択し、検索。
Broadcomの「SUPPORT DOCUMENTS AND DOWNLOADS」からProduct Familyの下の方にあるLegacy Product群から「Product Family:Legacy RAID Controllers」を選択肢、検索。

「Management Software and Tools」にあるが、なぜか「Current」には出てこないので「Archive」を選択。
「Binary」の「Currect」もしくは「Archive」に管理ソフトがある。
もしくは「storcliの検索結果」から「Management Software and Tools」からダウンロードする。

「MegaRAID Storage Manager (MSM)」はJavaで動くGUIツール。
「StorCLI」もしくは「MegaRAID StorCLI」は、コマンドのみ

「MegaRAID Storage Manager (MSM)」の最新版はMR6.9なのに、StorCLIはMR6.8が最新なのはなぜなのか・・・

rpmからインストールすると、/opt/MegaRAID以下にインストールされる。
実行ファイルは、/opt/MegaRAID/storcli/storcli64 か /opt/MegaRAID/storcli/storcli。

まずは、コントローラのリストを「storcli64 show」で取得

# /opt/MegaRAID/storcli/storcli64 show
Status Code = 0
Status = Success
Description = None

Number of Controllers = 1
Host Name = example.osakana.net
Operating System  = Linux3.10.0-327.28.2.el7.x86_64

System Overview :
===============

------------------------------------------------------------------------------
Ctl Model              Ports PDs DGs DNOpt VDs VNOpt BBU sPR DS EHS ASOs Hlth
------------------------------------------------------------------------------
  0 MegaRAIDSAS8708EM2     8   3   1     0   1     0 Opt On  2  N      0 Opt
------------------------------------------------------------------------------

Ctl=Controller Index|DGs=Drive groups|VDs=Virtual drives|Fld=Failed
PDs=Physical drives|DNOpt=DG NotOptimal|VNOpt=VD NotOptimal|Opt=Optimal
Msng=Missing|Dgd=Degraded|NdAtn=Need Attention|Unkwn=Unknown
sPR=Scheduled Patrol Read|DS=DimmerSwitch|EHS=Emergency Hot Spare
Y=Yes|N=No|ASOs=Advanced Software Options|BBU=Battery backup unit
Hlth=Health|Safe=Safe-mode boot
#

コントローラの番号が判明したので「storcli64 /c0 show」と、コントローラを指定して、詳細を確認。

# /opt/MegaRAID/storcli/storcli64 /c0 show
Generating detailed summary of the adapter, it may take a while to complete.

Controller = 0
Status = Success
Description = None

Product Name = MegaRAID SAS 8708EM2
Serial Number = P322610710
SAS Address =  500605b001eedcb0
PCI Address = 00:01:00:00
System Time = 08/10/2016 17:24:17
Mfg. Date = 02/24/10
Controller Time = 08/10/2016 08:24:13
FW Package Build = 11.0.1-0008
FW Version = 1.40.32-0580
BIOS Version = 2.06.00
Driver Name = megaraid_sas
Driver Version = 06.807.10.00-rh1
Vendor Id = 0x1000
Device Id = 0x60
SubVendor Id = 0x1000
SubDevice Id = 0x1013
Host Interface = PCI-E
Device Interface = SAS-3G
Bus Number = 1
Device Number = 0
Function Number = 0
Drive Groups = 1

TOPOLOGY :
========

--------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT       Size PDC  PI SED DS3  FSpace
--------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  135.937 GB dsbl N  N   dflt N
 0 0   -   -        -   RAID1 Optl  N  135.937 GB dsbl N  N   dflt N
 0 0   0   252:0    0   DRIVE Onln  N  135.937 GB dsbl N  N   dflt -
 0 0   1   252:1    1   DRIVE Onln  N  135.937 GB dsbl N  N   dflt -
--------------------------------------------------------------------------

DG=Disk Group Index|Arr=Array Index|Row=Row Index|EID=Enclosure Device ID
DID=Device ID|Type=Drive Type|Onln=Online|Rbld=Rebuild|Dgrd=Degraded
Pdgd=Partially degraded|Offln=Offline|BT=Background Task Active
PDC=PD Cache|PI=Protection Info|SED=Self Encrypting Drive|Frgn=Foreign
DS3=Dimmer Switch 3|dflt=Default|Msng=Missing|FSpace=Free Space Present

Virtual Drives = 1

VD LIST :
=======

-----------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC       Size Name
-----------------------------------------------------------
0/0   RAID1 Optl  RW     No      NRWBD -   135.937 GB
-----------------------------------------------------------

Cac=CacheCade|Rec=Recovery|OfLn=OffLine|Pdgd=Partially Degraded|dgrd=Degraded
Optl=Optimal|RO=Read Only|RW=Read Write|HD=Hidden|B=Blocked|Consist=Consistent|
R=Read Ahead Always|NR=No Read Ahead|WB=WriteBack|
AWB=Always WriteBack|WT=WriteThrough|C=Cached IO|D=Direct IO|sCC=Scheduled
Check Consistency

Physical Drives = 3

PD LIST :
=======

-------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model            Sp
-------------------------------------------------------------------------
252:0     0 Onln   0 135.937 GB SAS  HDD N   N  512B MBD2147RC        U
252:1     1 Onln   0 135.937 GB SAS  HDD N   N  512B MBD2147RC        U
252:2     2 GHS    - 135.937 GB SAS  HDD N   N  512B HUC103014CSS600  U
-------------------------------------------------------------------------

EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded|Cpybck-CopyBack|CBShld-Copyback Shielded


BBU_Info :
========

------------------------------------------------------------
Model State   RetentionTime Temp Mode MfgDate    Next Learn
------------------------------------------------------------
iBBU  Optimal N/A           37C  -    2010/05/14 None
------------------------------------------------------------

#

146GB SAS HDDが3本認識されていて
RAID1で2本、スペアで1本使われている。

バッテリーバックアップユニット(BBU)が入ってるので、ステータスを「storcli64 /c0 /bbu show all」で確認する。

# /opt/MegaRAID/storcli/storcli64 /c0 /bbu show all
Controller = 0
Status = Success
Description = None


BBU_Info :
========

----------------------
Property      Value
----------------------
Type          iBBU
Voltage       4069 mV
Current       0 mA
Temperature   37 C
Battery State Optimal
----------------------


BBU_Firmware_Status :
===================

-------------------------------------------------
Property                                   Value
-------------------------------------------------
Charging Status                            None
Voltage                                    OK
Temperature                                OK
Learn Cycle Requested                      No
Learn Cycle Active                         No
Learn Cycle Status                         OK
Learn Cycle Timeout                        No
I2C Errors Detected                        No
Battery Pack Missing                       No
Replacement required                       No
Remaining Capacity Low                     No
Periodic Learn Required                    No
Transparent Learn                          No
No space to cache offload                  No
Pack is about to fail & should be replaced No
Cache Offload premium feature required     No
Module microcode update required           No
-------------------------------------------------


GasGaugeStatus :
==============

---------------------------------
Property                   Value
---------------------------------
Fully Discharged           No
Fully Charged              Yes
Discharging                Yes
Initialized                Yes
Remaining Time Alarm       No
Remaining Capacity Alarm   No
Terminate Discharge Alarm  No
Over Temperature           No
Charging Terminated        No
Over Charged               No
Relative State of Charge   100%
Charger System State       49168
Charger System Ctrl        0
Charging current           0 mA
Absolute state of charge   98%
Max Error                  2%
Battery backup charge time N/A
---------------------------------


BBU_Capacity_Info :
=================

------------------------------------------------------
Property                 Value
------------------------------------------------------
Relative State of Charge 100%
Absolute State of charge 98%
Remaining Capacity       663 mAh
Full Charge Capacity     665 mAh
Run time to empty        Battery is not being charged
Average time to empty    Battery is not being charged
Average Time to full     Battery is not being charged
Cycle Count              96
Max Error                2%
Remaining Capacity Alarm 70 mAh
Remining Time Alarm      10 minutes(s)
------------------------------------------------------


BBU_Design_Info :
===============

-----------------------------------
Property                Value
-----------------------------------
Date of Manufacture     14/05/2010
Design Capacity         675 mAh
Design Voltage          3700 mV
Specification Info      33
Serial Number           4643
Pack Stat Configuration 6490
Manufacture Name        LS1113001A
Device Name             2970701
Device Chemistry        LION
Battery FRU             N/A
Transparent Learn       0
App Data                0
-----------------------------------


BBU_Properties :
==============

-------------------------------------------
Property             Value
-------------------------------------------
Auto Learn Period    30d (2592000 seconds)
Next Learn time      None
Learn Delay Interval 0 hour(s)
Auto-Learn Mode      Disabled
-------------------------------------------
#

どうやら、まだ生きている模様。

・・・最初は死んでたんだけど「storcli64 /c0 /bbu start learn」とBBUの状態調査を行わせてしばらく放置したら生き返った感じで・・・


2023/05/18 追記

久々にコマンドたたいてみたらディスクが1本死んでいた

-bash-4.2$ sudo /opt/MegaRAID/storcli/storcli64 /call show
Generating detailed summary of the adapter, it may take a while to complete.

Controller = 0
Status = Success
Description = None

Product Name = MegaRAID SAS 8708EM2
Serial Number = P322610710
SAS Address =  500605b001eedcb0
PCI Address = 00:01:00:00
System Time = 05/18/2023 18:19:42
Mfg. Date = 02/24/10
Controller Time = 05/18/2023 09:04:58
FW Package Build = 11.0.1-0048
FW Version = 1.40.342-1650
BIOS Version = 2.07.00
Driver Name = megaraid_sas
Driver Version = 07.714.04.00-rh1
Vendor Id = 0x1000
Device Id = 0x60
SubVendor Id = 0x1000
SubDevice Id = 0x1013
Host Interface = PCI-E
Device Interface = SAS-3G
Bus Number = 1
Device Number = 0
Function Number = 0
Drive Groups = 1

TOPOLOGY :
========

--------------------------------------------------------------------------
DG Arr Row EID:Slot DID Type  State BT       Size PDC  PI SED DS3  FSpace
--------------------------------------------------------------------------
 0 -   -   -        -   RAID1 Optl  N  135.937 GB dsbl N  N   dflt N
 0 0   -   -        -   RAID1 Optl  N  135.937 GB dsbl N  N   dflt N
 0 0   0   252:0    0   DRIVE Onln  N  135.937 GB dsbl N  N   dflt -
 0 0   1   252:2    2   DRIVE Onln  N  135.937 GB dsbl N  N   dflt -
--------------------------------------------------------------------------

DG=Disk Group Index|Arr=Array Index|Row=Row Index|EID=Enclosure Device ID
DID=Device ID|Type=Drive Type|Onln=Online|Rbld=Rebuild|Dgrd=Degraded
Pdgd=Partially degraded|Offln=Offline|BT=Background Task Active
PDC=PD Cache|PI=Protection Info|SED=Self Encrypting Drive|Frgn=Foreign
DS3=Dimmer Switch 3|dflt=Default|Msng=Missing|FSpace=Free Space Present

Virtual Drives = 1

VD LIST :
=======

-----------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC       Size Name
-----------------------------------------------------------
0/0   RAID1 Optl  RW     Yes     NRWBD -   135.937 GB
-----------------------------------------------------------

Cac=CacheCade|Rec=Recovery|OfLn=OffLine|Pdgd=Partially Degraded|dgrd=Degraded
Optl=Optimal|RO=Read Only|RW=Read Write|HD=Hidden|B=Blocked|Consist=Consistent|
R=Read Ahead Always|NR=No Read Ahead|WB=WriteBack|
AWB=Always WriteBack|WT=WriteThrough|C=Cached IO|D=Direct IO|sCC=Scheduled
Check Consistency

Physical Drives = 3

PD LIST :
=======

-------------------------------------------------------------------------
EID:Slt DID State DG       Size Intf Med SED PI SeSz Model            Sp
-------------------------------------------------------------------------
252:0     0 Onln   0 135.937 GB SAS  HDD N   N  512B MBD2147RC        U
252:1     1 UBad   F 135.937 GB SAS  HDD N   N  512B MBD2147RC        U
252:2     2 Onln   0 135.937 GB SAS  HDD N   N  512B HUC103014CSS600  U
-------------------------------------------------------------------------

EID-Enclosure Device ID|Slt-Slot No.|DID-Device ID|DG-DriveGroup
DHS-Dedicated Hot Spare|UGood-Unconfigured Good|GHS-Global Hotspare
UBad-Unconfigured Bad|Onln-Online|Offln-Offline|Intf-Interface
Med-Media Type|SED-Self Encryptive Drive|PI-Protection Info
SeSz-Sector Size|Sp-Spun|U-Up|D-Down|T-Transition|F-Foreign
UGUnsp-Unsupported|UGShld-UnConfigured shielded|HSPShld-Hotspare shielded
CFShld-Configured shielded|Cpybck-CopyBack|CBShld-Copyback Shielded


BBU_Info :
========

--------------------------------------------------------------------------
Model State                 RetentionTime Temp Mode MfgDate    Next Learn
--------------------------------------------------------------------------
iBBU  Dgd (Needs Attention) N/A           39C  -    2010/05/14 None
--------------------------------------------------------------------------


-bash-4.2$ sudo /opt/MegaRAID/storcli/storcli64 /call /pall show
Controller = 0
Status = Success
Description = None


PhyInfo :
=======

----------------------------------------------------------------------------
PhyNo SAS_Addr           Phy_Identifier Link_Speed Device_Type  Description
----------------------------------------------------------------------------
    0 0x500000E114F453F2              0 No limit   End Device   -
    1 0x500000E119865C22              0 No limit   End Device   -
    2 0x5000CCA00A335A55              0 No limit   End Device   -
    3 0x0000000000000000              0 No limit   -            -
    4 0x0000000000000000              0 No limit   -            -
    5 0x0000000000000000              0 No limit   -            -
    6 0x0000000000000000              0 No limit   -            -
    7 0x0000000000000000              0 No limit   -            -
----------------------------------------------------------------------------


-bash-4.2$ sudo /opt/MegaRAID/storcli/storcli64 /call /vall show
Controller = 0
Status = Success
Description = None


Virtual Drives :
==============

-----------------------------------------------------------
DG/VD TYPE  State Access Consist Cache sCC       Size Name
-----------------------------------------------------------
0/0   RAID1 Optl  RW     Yes     NRWBD -   135.937 GB
-----------------------------------------------------------

Cac=CacheCade|Rec=Recovery|OfLn=OffLine|Pdgd=Partially Degraded|dgrd=Degraded
Optl=Optimal|RO=Read Only|RW=Read Write|HD=Hidden|B=Blocked|Consist=Consistent|
R=Read Ahead Always|NR=No Read Ahead|WB=WriteBack|
AWB=Always WriteBack|WT=WriteThrough|C=Cached IO|D=Direct IO|sCC=Scheduled
Check Consistency


-bash-4.2$

ネットワーク上にあるhpサーバのiLO IPアドレスとライセンスを収集するスクリプト


2019/01/09 追記

オリジナルのNachoTech Blogがアクセスできなくなっていたので、「https://github.com/osakanataro/findilos」にオリジナルと後述の改変版をアップロードした。


hpサーバをリモートから制御するために使用するiLO。
稼働させたあとにIPアドレスを確認するのがめんどくさい。
そういう場合に、総当たりでiLOのIPアドレスを確認するスクリプトがあった。

NachoTech Blogの「How to find all the iLO’s on your network」にあるfindilosである。

早速ダウンロードして実行してみる。

[root@adserver ~]# ./findilos 172.17.17.0/24
Scanning...
--------------- ------ -------- ------------ -------------------------
iLO IP Address  iLO HW iLO FW   Server S/N   Server Model
--------------- ------ -------- ------------ -------------------------
172.17.17.xxx   N/A    1.26     CN71xxxMxx   ProLiant DL360 G7
1 iLOs found on network target 172.17.17.0/24
[root@adserver ~]#

iLO HWのモデル名は拾ってくれない。

blogのコメントを確認していくと、元のスクリプトはiLO-2までしか対応しておらず、その後のバージョンについてはコメント欄にある修正を実施すれば良いようだ。

また、iLO Advanceを買っている場合に、そのライセンスコードを表示するための案も提示されていた。

ただ、スクリプト例は汚い実装となっていて、せっかくの元スクリプトを活かしていない形だったので、元スクリプトの実装に従ってライセンスを表示するバージョンを作成した。

その実行例がこちら

[root@adserver ~]# ./findilos 172.17.17.0/24
Scanning...
--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------
iLO IP Address  iLO HW iLO FW   Server S/N   Server Model              iLO Edition          iLO Licence Key
--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------
172.17.17.xxx   iLO-3  1.26     CN71xxxMxx   ProLiant DL360 G7         iLO 3 Advanced       xxxxx-xxxxx-xxxxx-xxxxxx-xxxxx
1 iLOs found on network target 172.17.17.0/24
[root@adserver ~]#

スクリプトの修正例は以下

#!/bin/bash
#
# findilos - Search a local network segment for iLOs
#            The iLO is the Integrated Lights-Out management processor
#            used on HP ProLiant and BladeSystem servers
#
scriptversion="1.0"
#
# Author: iggy@nachotech.com
#
# Website: http://blog.nachotech.com
#
# Requires: tr sed expr curl nmap
#
# Tested with: Nmap 4.20, curl 7.17.1, RHEL4
#
# Note: Discovery of an iLO is dependent upon the Virtual Media port
#       being set to the default of 17988.  If this has been changed
#       by the iLO administrator, then this script will NOT find it.
#
#       Also, if the iLO XML Reply Data Return has been Disabled by
#       the iLO administrator, this script will not be able to
#       gather any information about the server.  It will still be
#       discovered, but all you will see is its IP address.
#
# GLOBAL VARIABLES
scriptname="findilos"
iloips="/tmp/tmpilos.$$"
iloxml="/tmp/tmpiloxml.$$"
ilohwvers="/tmp/tmpilohwvers.$$"
declare -i ilosfound=0
# FUNCTIONS
function parseiloxml {
  fgrep "$1" $iloxml > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    # tag not found in xml output, return empty string
    parsedstring="N/A"
  else
    # tag was found - now we parse it from the output
    tempstring=$( cat $iloxml | tr -d -c [:print:] | sed "s/^.*<$1>//" | sed "s/<.$1.*//")
    # trim off leading and trailing whitespace
    parsedstring=`expr match "$tempstring" '[ \t]*\(.*[^ \t]\)[ \t]*$'`
  fi
}
function is_installed {
  which $1 > /dev/null 2>&1
  if [ $? -ne 0 ]
  then
    printf "\nERROR: %s not installed.\n\n" $1
    exit 255
  fi
}
# MAIN
# check for tools that we depend upon
is_installed tr
is_installed sed
is_installed expr
is_installed curl
is_installed nmap
# check syntax - should have 1 and only 1 parameter on cmdline
if [ $# -ne 1 ]; then
  printf "%s %s ( http://blog.nachotech.com/ )\n" $scriptname $scriptversion
  printf "Usage: %s {target network specification}\n" $scriptname
  printf "TARGET NETWORK SPECIFICATION:\n"
  printf "  Can pass hostnames, IP addresses, networks, etc.\n"
  printf "  Ex: server1.company.com, company.com/24, 192.168.0.1/16, 10.0.0-255.1-254\n"
  printf "EXAMPLE:\n"
  printf "  %s 16.32.64.0/22\n" $scriptname
  exit 255
fi
iprange=$1
# prepare lookup file for iLO hardware versions
cat > $ilohwvers << EOF
iLO-1 shows hw version ASIC:  2
iLO-2 shows hw version ASIC:  7
iLO-3 shows hw version ASIC: 8
iLO-3 shows hw version ASIC: 9
iLO-4 shows hw version ASIC: 12
iLO-4 shows hw version ASIC: 16
i-iLO shows hw version T0
EOF
#
# scan a range of IP addresses looking for an
# open tcp port 17988 (the iLO virtual media port)
#
printf "Scanning..."
nmap -n -P0 -sS -p 17988 -oG - $iprange | fgrep /open/ | awk '{print $2}' > $iloips
printf "\n\n"
#
# open and read the list of IP addresses one at a time
#
exec 3< $iloips
echo "--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------"
echo "iLO IP Address  iLO HW iLO FW   Server S/N   Server Model              iLO Edition          iLO Licence Key"
echo "--------------- ------ -------- ------------ ------------------------- -------------------- -----------------------------"
while read iloip <&3 ; do
  ilosfound=$ilosfound+1
  #
  # attempt to read the xmldata from iLO, no password required
  #
  curl --proxy "" --fail --silent --max-time 3 http://$iloip/xmldata?item=All > $iloxml
  #
  # parse out the Server model (server product name)
  # from the XML output
  #
  parseiloxml SPN;  servermodel=$parsedstring
  parseiloxml SBSN; sernum=$parsedstring
  parseiloxml PN;   ilotype=$parsedstring
  parseiloxml FWRI; ilofirmware=$parsedstring
  parseiloxml HWRI; ilohardware=$parsedstring
  ilohwver=$(grep "$ilohardware" $ilohwvers|awk '{print $1}')
  if [ "$ilohwver" == "" ]; then
    ilohwver="N/A"
  fi
  if [ "$sernum" == "" ]; then
    sernum="N/A"
  fi
  # add start
  curl --proxy "" --fail --silent --max-time 3 http://$iloip/xmldata?item=CpqKey > $iloxml
  parseiloxml LNAME; ilomodel=$parsedstring
  parseiloxml KEY; ilokey=$parsedstring
  # add end
  printf "%-15s %-6s %-8s %-12s %-25s %-20s %-30s\n" $iloip "$ilohwver" "$ilofirmware" "$sernum" "$servermodel" "$ilomodel" "$ilokey"
done
printf "\n%d iLOs found on network target %s.\n\n" $ilosfound $iprange
rm -f $iloips $iloxml $ilohwvers
exit 0

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


CentOS7とSamba 4.10.2で作成した記事「Samba 4.10.xでActive Directoryを1から立てる」を公開しています。


 

2014年2月、samba 4.1.xが最新だった時代に「Samba 4.xでActive Directoryを1から立てる」という記事を書いてから2年。
現状の最新はsamba 4.4.5となっている。

 

現在もこの手順で問題無いかの確認をした。
結論としては、必須パッケージが列挙されているところが改善され、抜けていたところもちゃんと含まれるようになっていた、という以外は、まったく同じ状態で実行できた。


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」までとなっている。
 さらに、Failoverクラスタを作成する際に必要な機能、とかが実装されていない。
 → 2018/02/28追記 「samba 4.7.4で作ったActive Directory環境でWindowsServer2016フェールオーバークラスターを動作させた」というわけで動作することを確認しました

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

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

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

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

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

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

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

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

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

[root@adserver ~]# wget https://download.samba.org/pub/samba/stable/samba-4.4.5.tar.gz
--2016-xx-xx xx:xx:xx--  https://download.samba.org/pub/samba/stable/samba-4.4.5.tar.gz
download.samba.org をDNSに問いあわせています... 144.76.82.156
download.samba.org|144.76.82.156|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 20715838 (20M) [application/gzip]
`samba-4.4.5.tar.gz' に保存中

100%[======================================&amp;amp;amp;amp;amp;gt;] 20,715,838   390K/s 時間 60s

2016-xx-xx xx:xx:xx (338 KB/s) - `samba-4.4.5.tar.gz' へ保存完了 [20715838/20715838]

[root@adserver ~]#

5. configure実施

[root@adserver ~]# tar xfz samba-4.4.5.tar.gz
[root@adserver ~]# cd samba-4.4.5
[root@adserver samba-4.4.5]# ./configure
<略>
[root@adserver samba-4.4.5]#

6. make & make install

[root@adserver samba-4.4.5]# make
<略>
[3956/3956] Generating man/nmblookup4.1
Note: Writing nmblookup4.1
Waf: Leaving directory `/root/samba-4.4.5/bin'
'build' finished successfully (23m25.531s)
[root@adserver samba-4.4.5]# make install
<略>
* installing bin/default/pidl/Parse::Pidl::Wireshark::NDR.3pm as /usr/local/samba/share/man/man3/Parse::Pidl::Wireshark::NDR.3pm
Waf: Leaving directory `/root/samba-4.4.5/bin'
'install' finished successfully (6m26.187s)
[root@adserver samba-4.4.5]#

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

sambaのバージョン確認

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

[root@adserver ~]#

9. sambaを起動

[root@adserver ~]# ps -ef|grep samba
root     26275  6434  0 14:20 pts/0    00:00:00 grep samba
[root@adserver ~]# /usr/local/samba/sbin/samba
[root@adserver ~]# ps -ef|grep samba
root     26277     1 66 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26278 26277  2 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26279 26277  2 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26280 26278 44 14:20 ?        00:00:00 /usr/local/samba/sbin/smbd -D --option=server role check:inhibit=yes --foreground
root     26281 26277  1 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26282 26277  0 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26283 26277 35 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26284 26277  0 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26285 26277  2 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26286 26277  2 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26287 26277  1 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26288 26277  0 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26289 26287 25 14:20 ?        00:00:00 /usr/local/samba/sbin/winbindd -D --option=server role check:inhibit=yes --foreground
root     26290 26277  0 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26291 26277  4 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26292 26277  1 14:20 ?        00:00:00 /usr/local/samba/sbin/samba
root     26294 26291  0 14:20 ?        00:00:00 python /usr/local/samba/sbin/samba_dnsupdate
root     26295 26291  0 14:20 ?        00:00:00 python /usr/local/samba/sbin/samba_spnupdate
root     26297  6434  0 14:20 pts/0    00:00:00 grep samba
[root@adserver ~]#

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

[root@adserver ~]# /usr/local/samba/bin/smbclient --version
Version 4.4.5
[root@adserver ~]# /usr/local/samba/bin/smbclient -L localhost -U%
Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5]

        Sharename       Type      Comment
        ---------       ----      -------
        netlogon        Disk
        sysvol          Disk
        IPC$            IPC       IPC Service (Samba 4.4.5)
Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5]

        Server               Comment
        ---------            -------

        Workgroup            Master
        ---------            -------
[root@adserver ~]#

Samba 4.1.x時代は「OS=Unix」だったものが、Samba 4.4.xでは「OS=Windows 6.1」に変わっていました。

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

[root@adserver ~]# /usr/local/samba/bin/smbclient //localhost/netlogon -UAdministrator -c 'ls'
Enter Administrator's password:
Domain=[ADOSAKANA] OS=[Windows 6.1] Server=[Samba 4.4.5]
  .                                   D        0  Tue Jul 19 14:19:16 2016
  ..                                  D        0  Tue Jul 19 14:19:26 2016

                29086704 blocks of size 1024. 25482608 blocks available
[root@adserver ~]#

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

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

[root@adserver ~]# /usr/local/samba/bin/samba-tool dns zonelist 127.0.0.1 -U Administrator
Password for [ADOSAKANA\Administrator]:
  2 zone(s) found

  pszZoneName                 : adosakana.local
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_DOMAIN_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : DomainDnsZones.adosakana.local

  pszZoneName                 : _msdcs.adosakana.local
  Flags                       : DNS_RPC_ZONE_DSINTEGRATED DNS_RPC_ZONE_UPDATE_SECURE
  ZoneType                    : DNS_ZONE_TYPE_PRIMARY
  Version                     : 50
  dwDpFlags                   : DNS_DP_AUTOCREATED DNS_DP_FOREST_DEFAULT DNS_DP_ENLISTED
  pszDpFqdn                   : ForestDnsZones.adosakana.local
[root@adserver ~]#

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

[root@adserver ~]# host -t SRV _ldap._tcp.adosakana.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

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

_kerberos._udp.adosakana.local has SRV record 0 100 88 adserver.adosakana.local.
[root@adserver ~]#

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

[root@adserver ~]# host -t A adserver.adosakana.local 127.0.0.1
Using domain server:
Name: 127.0.0.1
Address: 127.0.0.1#53
Aliases:

adserver.adosakana.local has address 172.17.44.40
[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
[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log

[libdefaults]
 default_realm = EXAMPLE.COM
 dns_lookup_realm = false
 dns_lookup_kdc = false
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true

[realms]
 EXAMPLE.COM = {
  kdc = kerberos.example.com
  admin_server = kerberos.example.com
 }

[domain_realm]
 .example.com = EXAMPLE.COM
 example.com = EXAMPLE.COM
[root@adserver ~]# cat /usr/local/samba/private/krb5.conf
[libdefaults]
        default_realm = ADOSAKANA.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true
[root@adserver ~]# cp /usr/local/samba/private/krb5.conf /etc/krb5.conf
cp: `/etc/krb5.conf' を上書きしてもよろしいですか(yes/no)? y
[root@adserver ~]# cat /etc/krb5.conf
[libdefaults]
        default_realm = ADOSAKANA.LOCAL
        dns_lookup_realm = false
        dns_lookup_kdc = true
[root@adserver ~]#

14. Kerberosの動作確認

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

[root@adserver ~]# kinit administrator@ADOSAKANA.LOCAL
Password for administrator@ADOSAKANA.LOCAL:
Warning: Your password will expire in 41 days on Tue Aug 30 14:19:24 2016
[root@adserver ~]#


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

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

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

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

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

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

[root@adserver ~]# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@ADOSAKANA.LOCAL

Valid starting     Expires            Service principal
07/19/16 14:28:32  07/20/16 00:28:32  krbtgt/ADOSAKANA.LOCAL@ADOSAKANA.LOCAL
        renew until 07/20/16 14:28:28
[root@adserver ~]#

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

[root@adserver ~]# /usr/local/samba/bin/samba-tool domain level show
Domain and forest function level for domain 'DC=adosakana,DC=local'

Forest function level: (Windows) 2008 R2
Domain function level: (Windows) 2008 R2
Lowest function level of a DC: (Windows) 2008 R2
[root@adserver ~]#

Samba 4.4.5では、Windows Sevrer 2008R2と設定されているようです。
(Samba 4.1.x時代はWindows Server 2003でした)

以上で設定は終了です。

AndroidベースのRemix OS3.0搭載ノートパソコンAZPEN HYBRX A1160が$69(送料別)~



Android OSをベースに作成されているRemix OS。
これをつんだミニPCとタブレットは今までに発売されています。

そのうち、Jide Remix Miniについては、テックウインド社により日本で正式に発売もされています。

そのようなRemix OS搭載マシンですが、この度、ノートパソコン形態のものがKickstarter案件で登場しました。

Kickstarter:「Ultra Slim Laptop with Android 5.1 running Remix OS 3.0
d1fab8a6978ded4668fafe22d30ed9c3_original

メーカページ「AZPEN HYBRX A1160

SoC: Allwinner A64(Cortex A53 4コア 1.3GHz)
RAM: 1GB or 2GB
ストレージ: 16GB or 32GB
ディスプレイ 11.6インチ(1366×768)
バッテリー 3.7V 6000mAh

バッテリーが3.7Vというので、5V給電でmicroUSB充電だったりするのかな?と期待したのですが、丸形のコネクタのようです。
まぁ、microUSB端子とケーブルの信頼性が低く、充電に不安があるから仕方ないですね・・・
d8f714617d143f2f75753bf61ba3c182_original

で・・・価格。

RAM 1GB/ストレージ 16GBモデルが$69
RAM 2GB/ストレージ 32GBモデルが$89
日本までの送料は$24

なかなか面白い値段ですね
Kickstarter:「Ultra Slim Laptop with Android 5.1 running Remix OS 3.0

現時点での発送予定は9月。

実現性という面についてですが、

実は、olimexという会社で去年の11月に「A64 OLinuXino OSHW Linux Laptop idea becomes more real 🙂」と「A64-OLinuXino OSHW 64-bit ARM DIY Laptop idea update」という記事がありました。
この2つの記事にあるノートパソコンによく似てるんですよね

というか、コレの商品化なんじゃないかと思ってます。
なので、実現する確率は非常に高いとふんでいます
ちなみに、olimixはgithubにていろいろ公開していて、Allwinner A64搭載のボード回路図も公開していたりします。

個人的には、このノートPCの中を開けると、ロジックボード部分がラズパイみたいな形で別基板になってたりしたら、面白いなぁ、とは思うのですが
さすがにそんなことはないでしょうね

MobaXtermというX-Windowアプリを表示するためのXサーバ機能を含んだSSH/moshクライアントソフト



最近、Windows上でX-Windowアプリを表示させる場合、VcXsrvというXサーバソフトを使用している。(紹介記事:Windows上でX-Windowアプリを表示するためのXサーバ VcXsrv)

それ以外に、「MobaXterm」というソフトもあるというので確認してみた。

無償で利用できるHome Editionと、1ユーザ69ドルのProfessional Editionがあるという。

で・・・
このソフトは、Windowsから、Linux/UNIX系サーバにアクセスするための統合ソフトウェア、という位置づけと言えます。

現状、下記のプロトコルに対応しています。
・SSH
 SSHトンネル/SSHポートフォワーディングも対応
・telnet
・RSH
・XDMCP(X-Window)
 OpenGLも対応
・RDP(Windowsリモートデスクトップ)
・VNC
・FTP
・SFTP
Mosh(mobile shellというSSH代替プロトコル)

また、MobaXtermをインストールしたWindows上にCygwin相当の環境をセットアップし、cygwinのコマンドを利用することができます。
cygwinを使いやすく仕立て直した感じ、といえばいいでしょうか?

ざっと使ってみた感想

・Portable versionのバイナリを実行するとインストールしないでそのまま使える
  11.5MBのMobaXterm_Personal_8.6.exeを実行するだけでXサーバも動く!
  日本語表示も可能!
・puttyのsessions設定をそのまま利用できる
・ssh接続時、UTF-8の日本語表示は普通に出来る
・ssh接続時、scpによるファイルブラウザ機能も同時にオープンされる
・ssh接続時、標準設定でSSH圧縮とX11フォワーディングとDISPLAY設定がされている
・Xアプリ表示時、タイトルバーの日本語表示が出来る
・Xアプリ表示時、起動してくるアプリが最前面に表示されないので気がつきにくい

Xmingより良い感じで使えます。

お気軽に使ってみたい、moshを使いたい、とか、操作用ターミナルソフト含めて乗り換えてもいいのなら「MobaXterm」
普段使ってるTeraTerm, puttyなどはそのままにXサーバだけを追加したいのであれば「VcXsrv」という感じですね。