RHEL6でSAN Boot multipath構成時、initramfsを再作成するとmultipath関連が組み込まれないことがある

RedHat Enterprise Linux/Cent OS6.5環境で、SAN Boot multipath構成を作成した。

構築後、バックアップを取得し、別のLUNにリストアし、そのディスクからブートをさせた。

ディスク自身が持つ、WWIDが変更になったため、multipath構成が外れた状態で起動してくる、というのは想定通りだったのだが、設定を修正し、initramfsを再作成して、再起動しても、multipath構成にならず、悩んだ。

原因は「How do I rebuild the initramfs with multipath.」であった。

普通にdracutでinitramfsを再作成すると、multipath関連モジュールが組み込まれていないものができあがっていた。
これをmultipathモジュールを組み込むことを強制させるようにして、解決した。

手順

1. とりあえず起動
2. 現在のディスクのwwidを確認
現在のディスクの「/dev/sd?」を確認し、そのディスク名に対して「scsi_id –whitelist /dev/sd?」を実行して確認する。

# df -h
/dev/sdb3 ~ /
tmpfs ~ /dev/shm
/dev/sdb1 ~/boot
# scsi_id --whitelist /dev/sdb
<wwid>
#

3. /etc/multipath.conf内のwwid変更
multipath.conf内に「wwid 値」という記述があるので、現在の値に変更する。

4. /etc/multipath/bindings内のwwid変更
bindings内に「mpatha 値」といった記述があるので、現在の値に変更する。
(注: mpathaをsdbとかに変更しないこと)

5. 古いinitramfsをバックアップ

6. intiramfsを作成

# dracut -v -f -a multipath --include /etc/multipath /etc/multipath
#

もしくは、/etc/dracut.confに以下の記述を行ってから、dracutを実行する。

# Dracut modules to add to the default
add_dracutmodules+="multipath"

7. 再起動

Windows Vistaで4KセクタディスクにシステムコピーしたらWindows Updateなどがエラーになる

Windows VistaのThinkCentreのHDDに不良セクタが発生し始めた。

仕方がないので新しいディスクを買い、CloneZillaを使い、不良セクタがあっても無視して次へ進む、というオプションを選んでデータ移行を行った。
(ちなみに、320GB HDD→1TB HDD)

移行後、新しいディスクから起動はしたものの、Windowsのアプリケーションログに以下のエラーが・・・

エラー 2014/11/23 10:45:12 ESENT 412 Logging/Recovery
wuaueng.dll (1416) SUS20ClientDataStore: ログ ファイル C:\Windows\SoftwareDistribution\DataStore\Logs\edb.log のヘッダーを読み取れません。エラー -546 が発生しました。

エラー 2014/11/23 10:43:16 ESENT 412 Logging/Recovery
InputPersonalization (3844) InkStore: ログ ファイル C:\Users\liliy\AppData\Local\Microsoft\InputPersonalization\edb.log のヘッダーを読み取れません。エラー -546 が発生しました。

また、Windows Updateを実行しても、Windows Updateサービスが起動していない、と修正プログラムが適用できない。

いろいろ調べてみると、どうやら、「Applications that are built on ESENT and that run on a Windows Vista-based or Windows Server 2008-based computer may not work correctly after the reported physical sector size of the storage device changes 」らしい。

旧来の512バイトセクタのディスクではなく、4Kバイトセクタのディスクに変えたことによる問題らしく、Windows VistaとWindows Server 2008では発生する事象らしい。
修正は、上記のページで配布されている修正プログラムを適用すること。

問題は、現象が発生してからでは修正プログラムが適用できない、ということ。(Windows Updateサービスが正常に起動しないため、適用できない)

なので、ディスクコピーを行う前に、修正プログラムを適用する必要がありました。

適用後、再度ディスクコピーを行うことで、エラーは解消されました。

RHEL6でインストール時からSAN Boot multipath構成したら/bootがマウントされない

RHEL6で、SAN Boot multipath構成を組んでみた。
起動時からmultipath設定でうまくいくのかなぁ?と思ったら、案の定、いくつか問題が・・・

ディスクは/dev/mapper/mpathaで認識しており、
/dev/mapper/mpathap1 /boot 500MB
/dev/mapper/mpathap2 swap 適量
/dev/mapper/mpathap3 / 残り全部
いうパーテーション設定。

この状況で起動したところ、/etc/fstabが以下となっていた。

UUID=~ /                       ext4    defaults,_rnetdev 1 1
UUID=~ /boot                   ext4    defaults,_netdev 1 2
/dev/mapper/mpathap2    swap                    swap    defaults,_netdev 0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

この状態だと、起動時、/bootがマウントされていなかった。
「mount -a」を実行するとマウントはされた。

UUID指定ではなく、mpatha指定なら行くだろうと、変更してみても/bootがマウントされない。

いろいろ試した結果、マウントオプションが「defaults,_netdev」となっていることが原因だった。

最終的に、以下の様な/etc/fstabとした。

/dev/mapper/mpathap3    /                       ext4    defaults,_rnetdev 1 1
/dev/mapper/mpathap1    /boot                   ext4    defaults 1 2
/dev/mapper/mpathap2    swap                    swap    defaults,_netdev 0 0
tmpfs                   /dev/shm                tmpfs   defaults        0 0
devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
sysfs                   /sys                    sysfs   defaults        0 0
proc                    /proc                   proc    defaults        0 0

ちなみに、mpath指定ではなく、UUID指定でもきちんと動作しました。

CSuploadなんて無かった!(Azureに仮想マシンイメージをアップロードする方法

Microsoft Azureに仮想マシンイメージをアップロードしようとした。
ぐぐったら、CSUploadというコマンドを使うらしく、Azure SDKをインストールすればいいらしい・・・

Azure SDKをインストールして、実行!

PS C:\> CSupload
CSupload : 用語 'CSupload' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラ
れません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確
てください。
発生場所 行:1 文字:1
+ CSupload
+ ~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (CSupload:String) [], CommandNotFoundException
    + FullyQualifiedErrorId : CommandNotFoundException

PS C:\>

そんなコマンドは無いらしい。

気を取り直して公式系情報を探す。

Create and upload a Windows Server VHD to Azure

「Add-AzureVhd」コマンドを使うようだ。

固定長で作成したWindows7 64bit評価版のインストール済みvhdファイルを指定して実行。

PS C:\> add-azurevhd

コマンド パイプライン位置 1 のコマンドレット Add-AzureVhd
次のパラメーターに値を指定してください:
(ヘルプを表示するには、「!?」と入力してください。)
Destination: http://~.blob.core.windows.net/images/win7-64.vhd
LocalFilePath: C:\Users\Public\Documents\Hyper-V\Virtual hard disks\win7-64.vhd
MD5 hash is being calculated for the file  C:\Users\Public\Documents\Hyper-V\Virtual hard disks\win7-64.vhd.
MD5 hash calculation is completed.
Elapsed time for the operation: 00:07:35
Creating new page blob of size 21474836992...
Detecting the empty data blocks in the local file.
Detecting the empty data blocks completed.
Elapsed time for upload: 00:32:17

LocalFilePath                                               DestinationUri
-------------                                               --------------
C:\Users\Public\Documents\Hyper-V\Virtual hard disks\win... http://~.blob.core.windows.net/images/win7-6...


PS C:\>

ネットワークの転送量を見ていると、「Detecting the empty data blocks in the local file.」から「Detecting the empty data blocks completed.」までが案外長い。
動いてるのかなぁ?と悩むぐらいに。(注:転送前にローカルのVHDファイル内の空きブロック検出して、送らなくてもいい部分を探しているので、時間がかかっている)

転送終了後、無事、仮想マシンの新規作成にこのイメージが使用できる、ということを確認できました。

Windows上でX-Windowアプリを表示するためのXサーバ VcXsrv

Windows上でX-Windowsアプリを表示させるために使うXサーバソフトウェアとして、「Xming」が有名である。

しかし、Xmingの最近のバージョンは寄付者向けリリースのみとなっている。
他にないものか、と探してみると「VcXsrv Windows X Server」というものがあった。

こちらは、Visual Studio 2013 Express Editionでコンパイルされており、64bit版バイナリも提供されている。
また、sourceforge githubにて、ソースコードも公開されているので改造することもできる。

とりあえず、インストールしてみて、Xmingと使い比べてみたところ、思いの外、VcXsrvは好成績だった。

比較手法としては、VcXsrvを:0で起動し、Xmingを:1で起動し、他のLinuxサーバ上から、同じアプリをそれぞれ表示させる、というものを取ってみた。

「gnome-terminal」
terminal
左:VcXsrv、右:Xming

Xmingは小さく表示されてしまっている。
また、タスクバーの表示は下記のようになる。
taskbar
左:VcXsrv、右:Xming、(真ん中:コマンドプロンプト)

VcXsrvはアプリのアイコンがきちんと表示されるが、xmingでは「X」のアイコンで代用される。

「firefox」
VcXsrvの場合
vc-firefox

Xmingの場合
xming-firefox

VcXsrvの場合、タイトルバーもきちんと表示されている。
Xmingでは表示できていない。


2024/08/22追記

githubでの公開に切り替わっていた https://github.com/marchaesen/vcxsrv

Windows10,Windows11のwingetコマンドでもインストールできるようになっているので「winget install marha.VcXsrv」でインストールすることもできる。

C:\Windows\System32>winget search vcxsrv
名前   ID           バージョン ソース
--------------------------------------
VcXsrv marha.VcXsrv 1.20.14.0  winget

C:\Windows\System32>winget install  marha.VcXsrv
見つかりました VcXsrv [marha.VcXsrv] バージョン 1.20.14.0
このアプリケーションは所有者からライセンス供与されます。
Microsoft はサードパーティのパッケージに対して責任を負わず、ライセンスも付与しません。
ダウンロード中 https://sourceforge.net/projects/vcxsrv/files/vcxsrv/1.20.14.0/vcxsrv-64.1.20.14.0.installer.exe/download
  ██████████████████████████████  40.8 MB / 40.8 MB
インストーラーハッシュが正常に検証されました
パッケージのインストールを開始しています...
インストールが完了しました

C:\Windows\System32>