SSブログ

/proc/mdstatのデバイス名でのソート [Linux]

MD device のステータスの確認のために、/proc/mdstat を参照している。
しかし、/proc/mdstat はデバイス名でソートされておらず、少々見づらい。
このため、/proc/mdstat をデバイス名でソートするスクリプトを作成した。
詳細は、以下の通りである。

1. スクリプト (mdstat)
#!/bin/sh
#
# Get status of MD devices sorted by device name.
# usage: mdstat
#
# - MD is an abbreviation for "multiple device".
# - The most common use case is commonly known as "Software RAID".
#

export LC_ALL=C

# sort status of MD devices by device path
sort_md_status() {
    local info=$1
    local first_line last_line md_dev
    local i

    # get first line, last line, list of MD device
    first_line=`echo "$info" | sed -n 1p`
    last_line=`echo "$info" | sed -n \\$p`
    md_dev=`echo "$info" | grep '^md[0-9]\+ :' | sed 's/ :.*//' | sort -n`

    # sort data by device path
    echo "$first_line"
    for i in $md_dev; do
        echo "$info" | grep -A2 $i
    done
    echo "$last_line"
}

sort_md_status "`cat /proc/mdstat`"
exit $?

2. 使用方法
% mdstat

3. 実行例
% mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] \
[raid10] 
md0 : active raid1 sda5[0] sdb5[1]
      20971456 blocks [2/2] [UU]
      
md1 : active raid1 sda6[0] sdb6[1]
      20971456 blocks [2/2] [UU]
      
md2 : active raid1 sda7[0] sdb7[1]
      204736 blocks [2/2] [UU]
      
md3 : active raid1 sda8[0] sdb8[1]
      204736 blocks [2/2] [UU]
      
md4 : active raid1 sda9[0] sdb9[1]
      41942976 blocks [2/2] [UU]
      
md5 : active raid1 sda10[0] sdb10[1]
      204736 blocks [2/2] [UU]
      
md6 : active raid1 sda11[0] sdb11[1]
      204736 blocks [2/2] [UU]
      
md7 : active raid1 sda3[0] sdb1[1]
      83886016 blocks [2/2] [UU]
      
unused devices: 
% cat /proc/mdstat
Personalities : [raid1] [linear] [multipath] [raid0] [raid6] [raid5] [raid4] \
[raid10] 
md2 : active raid1 sda7[0] sdb7[1]
      204736 blocks [2/2] [UU]
      
md5 : active raid1 sda10[0] sdb10[1]
      204736 blocks [2/2] [UU]
      
md1 : active raid1 sda6[0] sdb6[1]
      20971456 blocks [2/2] [UU]
      
md3 : active raid1 sda8[0] sdb8[1]
      204736 blocks [2/2] [UU]
      
md7 : active raid1 sda3[0] sdb1[1]
      83886016 blocks [2/2] [UU]
      
md6 : active raid1 sda11[0] sdb11[1]
      204736 blocks [2/2] [UU]
      
md4 : active raid1 sda9[0] sdb9[1]
      41942976 blocks [2/2] [UU]
      
md0 : active raid1 sda5[0] sdb5[1]
      20971456 blocks [2/2] [UU]
      
unused devices: 


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Windows 7 Home EditionのWindows 10への無償アップグレード [Windows]

0. 背景


下記の理由から、サポート終了後も Windows 7 を使用している。

・Windows 環境は MS Office 文書の編集くらいにしか使用していない。
・MS のサポートを使用することはない。
 ネット検索や自身での調査により、ほとんどの問題を解決できる。
 また、解決できない問題が残る場合は、その部分を使用しないだけである。


しかし、Windows 10 の下記の情報を見て、アップグレードを検討するようになった。

・MS の方針変更があり、以降は OS の新規購入の必要がない。
 Windows 10 内でのバージョンアップとなる。
・Windows 7 から Windows 10 への無償アップグレードが 2021-01 でも実施できる。
 無償アップグレードの期限終了後もアップグレードができている。
・現在の PC 環境が Windows 10 のハードウェア要件を満たしている。


以下は、下記の項目についてまとめたものである。
・Windows 10 への無償アップグレードを実現するまでの経過
・現状と今後の予定


1. Windows 7 の Windows 10 への無償アップグレードの実現までの経過
1-1. 通常の無償アップグレード手順の実施 (2021-03 上旬に実施) → 異常終了


下記のエラーが発生し、Windows 10 をインストールできない。

[エラーメッセージ]
この PC で Windows 10 を実行できるかを判断できません。
セットアップをやめてやり直してください。


(1) 実施方法

・MediaCreationTool20H2.exe を使用。
・Windows 7 の Product Code を入力せずに実施。
 (インストール終了後にライセンス認証を行うため。)
・データの引き継ぎ/クリーンインストールのいずれでも実施。
 [この PC を今すぐアップグレードする] を選択の場合
 ・Windows 7 のデータが引き継がれる。
 [別の PC のインストール メディアを作成する] を選択の場合
 ・Windows 10 がクリーンインストールされる。


(補足)
上記の曖昧なエラーメッセージからは、下記のいずれなのかが判断できない。
・Windows 10 への無償アップグレードに該当する環境ではない。
・Windows 10 に対応した環境ではない。


1-2. Windows 10 評価版のインストール (2021-04 上旬に実施) → 正常終了


Windows 10 Enterprise Edition の評価版が存在することを知り、インストールを実施。
(その後、Windows 10 評価版をバックアップし、パーティションの初期化を実施。)

(1) 目的


Windows 10 に対応した環境かどうかを確認するため。


(2) 結果


インストールできたため、Windows 10 に対応した環境であると確認できた。


1-3. Windows 10 への無償アップグレードの再実行 (2021-04 上旬に実施) → 正常終了


下記の手順により、アップグレードできる。

(1) Windows 10 のクリーン・インストール

・パーティション、ファイルシステム(NTFS)は事前に作成する。
・ダウンロードした iso ファイルを書き込んだ DVD でブートする。
・インストール時には、Windows 7 の Product Code を入力しない。


(2) インストール後のライセンス認証

・インストール後に、Windows 7 の Product Code でライセンス認証を行う。

2. 現状 (2021-05 下旬)


下記の理由により、パックアップ・データから Windows 7 をリストアし、Windows 7 を使用している。
(尚、Windows 10 は、現在のイメージをバックアップしている。)
理由は、下記の通りである。

(1) Windows 10 の Windows Update の終了に非常に時間を要することがある。


Windows 10 では、Windows Update が強制実行される。
また、エラーの発生、およびその取消のために 最大で 2時間程度、shutdown が終了しないことがあった。


(2) Windows 10 のディスク使用量が想定を遥かに越える。

・Windows 7 では、C: 20GB、D: 10GB で運用できていた。
・Windows XP では、C: 10GB、D: 10GB で運用できていた。
・Windows 10 では、C: 30GB、D: 10GB でも余裕がない。
 Windows Update が実施された後にこの傾向が堅調となる。


(3) 不要なアプリケーションが多数インストールされる。


これまでの Windows 以上にインストールされる。
また、アン・インストールの手順が面倒なアプリケーションが多数存在する。


3. 今後の予定


(1) Windows 10 の再使用


1 年の半期毎にあるバージョンアップのタイミングで、Windows 10 の更新と状況確認を確認し、再使用の有無を検討しようと思う。

ライセンス的にはグレーゾーンではあるが、Windows 7 と同時に使用しない限り問題ないように思われる。

・Windows 10 が快適に使用できるなら、移行したいと思っている。
・現在の Windows 10 は快適ではない。
 Windows Update を強制するが、更新プログラムの完成度が低く快適ではない。
・仕方なくWindows 7 に戻し、Windows 10 の改善を待っているような状況である。


(2) Windows 10 での Windows Update の無効化

・サービスやタスクの無効化では効果がない。
・Home Edition では、Windows Update を無効化するソフトウェアを使用する。
 (例) win-updates-disabler


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット

Windows XPでのAFT対応ディスクの使用 [Windows]

0. 背景


現在、Windows のサブ環境として、Windows XP を Linux とマルチ・ブートできるようにしている。Windows 環境は MS Office 文書の編集くらいにしか使用しないため使用頻度が低く、その障害時用のサブ環境となると使用頻度はさらに低い。
しかし、Windows XP は Windows にしてはディスク使用量が少なく、動作も軽いため、今もインストールしたままにしている。

先日、この Windwows XP が使用するハードディスクに障害が発生し、ハードディスクの交換を行った。AFT 未対応のハードディスクから AFT 対応のハードディスクへの変更である。

そこで、AFT の機能を使用するため、Windows XP のブートセクタを 63 から 2048 に変更したところ、ブートできない状況となってしまった。

現在サポートされている Windows では問題とならないことではあるが、問題の解決に手間取ったため、備忘録として発生事象と対応方法をまとめてみた。


1. 発生事象


ハードディスクの交換後、Windows XP のブートセクタを 63 から 2048 に変更したところ、ブートできなくなった。

[エラーメッセージ]
A disk read error occurred
Press Ctrl + Alt + Delete to restart


・パーティションのサイズ(セクタ数)はハードディスクの交換前と同じである。
・Linux の GRUB から Windows XP をブートしている。
・パーティションの作成、ファイルシステム(NTFS)の作成は Linux 上で実施。
・バックアップ・データのリストアも Linux 上で実施。


2. 原因


C: ドライブ用のパーティションの PBR(Partition Boot Record) にブートセクタの位置情報が保存されており、この値がパーティションの開始セクタと一致していないためである。


3. 対処方法


下記の手順により、PBR の情報を修正する。

(1) 当該パーティションをフォーマットする(FS type: ntfs)。

# mkfs.ntfs /dev/sda1
または
# mkfs.ntfs -f /dev/sda1


-f オプションを指定した場合には、下記のように動作する。
・ボリュームの 0 クリアをしない。
・セクタの異常の有無をチェックしない。
・このため、フォーマットに要する時間を短縮できる。


(2) 上記パーティションのフォーマット直後の PBR を保存する。

# dd if=/dev/sda1 of=/tmp/pbr.dat bs=512 count=1


(3) 上記パーティションにバックアップ・データをリストアする。


今回は、ntfsclone で取得したバックアップ・データを使用する。


(4) 上記パーティションの PBR の先頭 32 バイトを保存したデータで変更する。

# dd if=/tmp/pbr.dat of=/dev/sda1 bs=32 count=1


・PBR の先頭の 32 バイトには、下記のデータが含まれる。
 Jump instruction (3 バイト)
 OEM name (8 バイト)
 BPB: BIOS Parameter Block の一部 (25 バイト中の 21 バイト)
・実際に修正が必要な項目は、下記の通りである。
 BPB の Hidden Sectors (18-21 の 4 バイト) … ブートセクタの位置情報


[備考]


nice!(0)  コメント(0) 
共通テーマ:パソコン・インターネット