So-net無料ブログ作成

ClamAVのclamscanからclamdscanへの移行 [Linux]

# - OS: Debian 9、CentOS 7、CentOS 6
# - clamdscan の実行者: root および 一般ユーザー
# - ログの syslog への出力は行わない

1. 背景


受信メールのウイルスチェックに ClamAV を使用している。
ただし、契約している ISP でチェック済のものについては、対象外としている。
今回、ISP のメールサーバーの高負荷時に誤認識が多発することが分かり、ISP でのウイルスチェックを無効化した。
これにより、常に ClamAV でのチェックが実施されるようになった。

ここで問題となったのが、clamscan の処理が非常に遅いことである。
起動時のウイルス定義ファイルの情報解析に多大な時間を要するためである。
このため、単独のコマンドの clamscan から、サーバー・クライアント形式の clamdscan への移行を行った。


2. パッケージのインストール


(1) Debian 9 の場合

# apt-get install clamav-daemon


(補足)
依存関係により、clamdscan パッケージがインストールされる。


(2) CentOS 7 の場合

# yum --enablerepo=epel install clamd


(3) CentOS 6 の場合

# yum --enablerepo=epel install clamd

3. 基本的な設定


概要は、下記の通りである。
なお、インターネット上に情報が豊富なため、詳細な説明は割愛する。


3-1. Debian 9 の場合


(1) clamd の設定


/etc/clamav/clamd.conf を編集する。

# diff clamd.conf clamd.conf.org
6,7c6,7
< #LocalSocketGroup clamav
< #LocalSocketMode 666
---
> LocalSocketGroup clamav
> LocalSocketMode 666
10c10
< #User clamav
---
> User clamav
84,85c84
< #LogFileMaxSize 0
< LogFileMaxSize 100K
---
> LogFileMaxSize 0
89,97d87
< 
< # Don't scan files and directories matching regex
< ExcludePath ^/proc/
< ExcludePath ^/sys/
< ExcludePath ^/dev/
< ExcludePath ^/mnt/
< ExcludePath ^/misc/
< ExcludePath ^/net/
< ExcludePath ^/media/

3-2. CentOS 7 の場合


(1) /run/clamd.scan/ のパーミション変更


下記の内容で、/etc/tmpfiles.d/clamd.scan.conf を作成する。

# cat /etc/tmpfiles.d/clamd.scan.conf
d /run/clamd.scan 0755 clamscan virusgroup -


(2) clamd の設定


/etc/clamd.d/scan.conf を編集する。

# diff scan.conf scan.conf.org
8c8
< #Example
---
> Example
14c14
< LogFile /var/log/clamd.scan
---
> #LogFile /var/log/clamd.scan
32d31
< LogFileMaxSize 100K
36c35
< LogTime yes
---
> #LogTime yes
45c44
< #LogSyslog yes
---
> LogSyslog yes
58c57
< LogRotate yes
---
> #LogRotate yes
94c93
< LocalSocket /var/run/clamd.scan/clamd.sock
---
> #LocalSocket /var/run/clamd.scan/clamd.sock
106c105
< FixStaleSocket yes
---
> #FixStaleSocket yes
178,184c177,178
< ExcludePath ^/proc/
< ExcludePath ^/sys/
< ExcludePath ^/dev/
< ExcludePath ^/mnt/
< ExcludePath ^/misc/
< ExcludePath ^/net/
< ExcludePath ^/media/
---
> #ExcludePath ^/proc/
> #ExcludePath ^/sys/
205d198
< SelfCheck 3600
214c207
< #User clamscan
---
> User clamscan


(3) clamd@scan の自動起動

# systemctl enable clamd@scan

3-3. CentOS 6 の場合


(1) clamd の設定


/etc/clamd.conf を編集する。

# diff clamd.conf clamd.conf.org
31,32c31
< #LogFileMaxSize 0
< LogFileMaxSize 100K
---
> LogFileMaxSize 0
45c44
< #LogSyslog yes
---
> LogSyslog yes
58c57
< LogRotate yes
---
> #LogRotate yes
110c109
< #TCPSocket 3310
---
> TCPSocket 3310
118c117
< #TCPAddr 127.0.0.1
---
> TCPAddr 127.0.0.1
178,184c177,178
< ExcludePath ^/proc/
< ExcludePath ^/sys/
< ExcludePath ^/dev/
< ExcludePath ^/mnt/
< ExcludePath ^/misc/
< ExcludePath ^/net/
< ExcludePath ^/media/
---
> #ExcludePath ^/proc/
> #ExcludePath ^/sys/
205d198
< SelfCheck 3600
214c207
< #User clam
---
> User clam

4. 問題点への対応

4-1. Debian 9 の場合


(1) syslog への出力の無効化


clamd.conf の設定だけでは、syslog への出力を無効化できない。
(/var/log/syslog に出力され、LOG_LOCAL6 ファシリティでの出力ではない。)
このため、/etc/rsyslog.conf のルールの先頭に、下記の設定を追加する。

# Discard messages of clamd.
:programname, isequal, "clamd"    stop


(補足)
変更内容の反映のため、rsyslog の再起動、またはシステムの再起動を行う。


4-2. CentOS 7 の場合


(1) 起動時のタイムアウト発生への対応


下記の手順で、clamd@scan の Unit ファイルを編集する。
(/lib/systemd/system/clamd@.service の直接編集でも対応可能。)

(a) /etc/systemd/system/clamd@scan.service の作成

# cd /etc/systemd/system
# cp -p /lib/systemd/system/clamd@scan.service .


(b) /etc/systemd/system/clamd@scan.service の編集

# diff /etc/systemd/system/clamd@scan.service /lib/systemd/system
3,5d2
< [Service]
< TimeoutSec=5min    ← これがポイント
< 


(補足)
変更内容の反映のため、下記のコマンドを実行する。

# systemctl disable clamd@scan
# systemctl enable clamd@scan

4-3. CentOS 6 の場合


(1) clamd の起動方法の変更


clamd の起動が完了するまでには、3 分程度を要する。
また、起動スクリプトの終了までブート処理が待ち状態となる。

このため、clamd の起動スクリプトをバックグラインドで実行する。

(a) 自動起動の無効化


自動起動が有効化されている場合には、無効化する。

# chkconfig --list | grep clamd
# chkconfig clamd off


(b) /etc/rc.d/rc.local の編集


ファイルの最後に、下記の設定を追加する。

# start clamd
if [ -x /etc/init.d/clamd ]; then
    (/etc/init.d/clamd start &) >/dev/null 2>&1
fi

5. 備考


(1) clamd の起動が完了する前の clamdscan の実行


clamd の起動が完了するまでは、clamdscan はエラーとなる。


(2) ウイルス情報を更新した後の clamd への反映


下記のいずれかの方法で対応できる。

(a) clamdscan コマンドの実行

# clamdscan --reload


(補足)
・ウイルス情報の再読み込みには、210 秒程度を要する。
・スクリプト内で実行する場合には、下記のように実行する。
 (clamdscan --reload &) >/dev/null 2>&1


(b) freshclam コマンドの clamd との連携


freshclam の設定で、NotifyClamd を有効にする。


(c) clamd でのセルフチェック


一定の時間間隔でウイルス情報を確認し、必要なら再読み込みを行う。
設定項目は SelfCheck、初期値は 600(s) である。


(3) clamdscan のオプション指定


ほとんどのオプションは、clamd の設定ファイルで指定する。
コマンドラインで指定できるのは、一部のオプションのみである。
(ログファイルのパス、等)


(4) clamd の監視


clamdtop コマンドを使用する。



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

CentOS 7上のxawtvでノイズが発生することへの対応 [Linux]

[ソフトウェアのバージョン]
・xawtv-3.105-2.el7.x86_64
・alsa-lib-1.1.6-2.el7.x86_64
・alsa-plugins-pulseaudio-1.1.6-1.el7.x86_64
・alsa-utils-1.1.6-1.el7.x86_64
・pulseaudio-10.0-5.el7.x86_64
・kernel-3.10.0-957.10.1.el7.x86_64
 (saa7134 モジュール、saa7134_alsa モジュールを使用)

1. 発生事象


xawtv の音声にノイズが発生する。

・起動直後にはノイズは発生しない。
・しばらく使用しているとノイズが発生する。
 (30〜60 分程度の連続使用で、音がこもる/割れる。)
・xawtv を再起動すると改善される。
・xawtv の機能により、ミュート/ミュート解除を行うと改善される。
・改善された後も、しばらく使用していると再発する。
・ノイズが発生する場合には、下記のようなメッセージが出力される。
 ALSA lib pcm.c:8424:(snd_pcm_recover) overrun occurred
 (ただし、当該メッセージが出力されてもノイズが発生するとは限らない。)

(補足)
・/dev/mixer の存在しない状態で使用している。
・xawtv の画像に関しては、問題は発生していない。
・下記のような関係にあると思われる。
 xawtv -> saa7134_alsa モジュール -> alsa-lib


2. 対処方法


現時点では、根本的な解決方法は不明である。
また、取り敢えず、下記の手順により対応可能である。

(1) ~/bin/xawtv-patch の作成


下記の処理を行うスクリプトを作成する。

(a) xawtv の機能により、mute の状態を取得する。

% v4lctl show mute


(補足)
xawtv-remote に同じ引数(同じコマンド)を指定しても何も出力されない。


(b) xawtv の機能により、mute の状態を再設定する。

[mute されている場合]
% xawtv-remote volume mute off; xawtv-remote volume mute on

[mute されていない場合]
% xawtv-remote volume mute on; xawtv-remote volume mute off


(補足)
v4lctl に同じ引数(同じコマンド)を指定しても求める効果が得られない。


(2) cron への ~/bin/xawtv-patch を実行する設定の追加


(例)
20 分毎に ~/bin/xawtv-patch を実行する。


[備考]


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

Firefoxの中間CA証明書の期限切れへの対応 [Linux]

2019-05-04 に Firefox のアドオンが使用できなくなる不具合が発生した。アドオンの署名に使用する中間 CA 証明書の有効期限切れのためである。

現時点でサポートされているバージョンについては、修正プログラムや更新バージョンのインストールで対応可能である。しかし、サポートの終了したバージョンについては、別途対応が必要である。
以下は、備忘録として、サポートの終了したバージョンへの対応方法をまとめたものである。

1. 発生事象


書名の必要なアドオンが使用できない状態となる。

(例)
Firefox ESR 52.9.0/Firefox ESR 45.9.0 で下記のアドオンが使用できない状態となる。
・Classic Theme Restorer 1.7.7.2
・Tab Mix Plus 0.5.5.0


2. 対処方法


(1) 証明書のダウンロード


http://yahoogeocities.g1.xrea.com/signingca1addonsmozillaorg.crt


(2) 証明書の Firefox へのインストール


(a) メニューから [編集] -> [設定] を選択

(b) 左側の一覧から [詳細] -> [証明書] を選択

(c) 下側の [証明書を表示] を選択

(d) 証明書マネージャー画面で証明書をインストール


・[認証局証明書] タブを選択
・[インポート] を選択
・ダウンロードした証明書を選択
・[証明書のインストール] 画面では、[OK] のみを選択
・[OK] を選択し、証明書マネージャーを終了


(3) アドオンの状態を強制的に再チェック


(a) F12 を押下し、開発者ツールを起動

(b) 右上のギアのアイコンを選択

(c) [ブラウザーとアドオンのデバッガーを有効化] をチェックする。

(d) CTRL+Shift+J でブラウザーコンソールを起動

(e) 下記の 2 行をコピー・ペーストし、Enter を押下


# 1 行目
var { XPIProvider } = Components.utils.import("resource://gre/modules/addons/XPIProvider.jsm", {});
# 2 行目
XPIProvider.verifySignatures();

(補足)
・一行ずつの入力、マルチステートメントでの入力とも可能である。
・複数行を 1 度に入力することも可能である。
 (途中の行の行末では Shift+Enter、最終行の行末では Enter を入力)


(f) ブラウザーコンソールを終了

(g) 上記 (c) の変更を元に戻す。

(h) 開発者ツールを終了


(4) Firefox の再起動


3. 備考


(1) 更新された証明書


[認証局証明書] -> [Mozilla Corporation] -> [signingca1.addons.mozilla.org]


(2) 参考にした情報


http://yahoogeocities.g1.xrea.com/MozillaFirefoxAddonCorruptionHotfix.html
https://nandakke.hatenadiary.com/entry/2019/05/06/043752



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

Firefox Quantumの使用感 [Linux]

先日 Firefox Quantum を Linux にインストールし、一週間程使用してみた。
 cf. https://dan-project.blog.so-net.ne.jp/2018-09-07
現時点では、予想していた以上に、いい感じである。

なお、上記のインストール後に、下記の設定を追加した。
WebExtensions の制限への対応、Tab Mix Plus が使用できないことへの対応のためである。

1. Browser の UI へのスタイルシートの設定


<profile_dir>/chrome/userChrome.css へ設定を追加する。


2. ビルトインページ(about:addons 等) へのスタイルシートの設定


<profile_dir>/chrome/userContent.css へ設定を追加する。


3. タブバーのカスタマイズ


(1) 新しいタブを作成するボタンの削除


・ツールバー右端のメニューボタンをクリックし、[カスタマイズ] を選択
・該当するアイテムをツールバーから削除


(2) タブの一覧を表示するボタンの常時表示 - userChrome.css への設定の追加

/* always display button to display tab list */
#alltabs-button {
  visibility: visible !important;
}


(3) [タブを閉じる] ボタンの表示の制限 - userChrome.css への設定の追加

/* show close button on only selected tab */
.tabbrowser-tab:not(:hover) .tab-close-button {
  display: none !important;
}
.tabbrowser-tab:not([pinned]):hover .tab-close-button {
  display: block !important;
}


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

Firefox Quantumへの移行の準備 [Linux]

1. 背景


現在、下記のバージョンの Firefox を使用している(mozilla.org からダウンロード)。
できるなら今後も Firefox を使用したいと思っている。

・Firefox 45.9.0 ESR (on CentOS 6)
・Firefox 52.9.0 ESR (on Debian 8/9、CentOS 7、Windows 7)

また、Firefox Quantum (Firefox 57) より前のバージョンのサポートが終了した。
サポート終了後も上記バージョンを使用しようと思っているが、いずれは移行が必要となる。
よって、現状確認のため、Firefox Quantum の導入テストを行った。
なお、今回使用したバージョンは、Firefox 60.2.0 ESR (on Linux) である。


2. 導入の手順


(1) Firefox Quantum のインストール


インストールの手順は、これまでのバージョンと同様である。


(2) Firefox Quantum の設定


3. Firefox Quantum の設定

3-1. アドオンの更新 (WebExtensions に対応済のアドオン)


(1) Adblock Plus


v3.x で対応済であるが、v2.x に比べ使いづらくなっている。
・[詳細設定] の [マイ フィルターリスト] が強制的にソートされる。
 (このため、設定毎のコメントの追加ができない。)

(補足)
uBlock Origin で代替できる。
・uBlock Origin の方が動作が軽いとの情報もある。


(2) Stylish


v3.x で対応済であるが、ポリシー違反により使用不可となっている。

(補足)
Stylish からフォークされた Stylus で代替できる。
・ブラウザの UI や about:addons 等のビルトインページへのスタイル指定はできない。
 (WebExtensions の制約のため。)
・上記のスタイル指定については、user*.css への設定により対応できる。
 (<profile_dir>/chrome/{userChrome.css,userContent.css})


3-2. アドオンの更新 (WebExtensions に未対応のアドオン)


(1) Classic Theme Restorer


WebExtensions の仕様により、ブラウザの UI を変更できない。
よって、この種のアドオンは存在しない可能性が高いと思われる。


(2) Flashblock


Flash Block (Plus) で代替できる。


(3) gtranslate


Simple Translate で代替できる。


(4) Tab Mix Plus


・Tab Mix Plus WebExtensions 対応版が開発中である。
 (Tab Mix - Links)
・当方の使用環境では、なくてもそれ程不便を感じない。


(5) User Agent Switcher


User-Agent Switcher で代替できる。


(6) Vacuum Places Improved


・代替アドオンなし。
・なくてもそれ程不便を感じない。


3-3. アドオンの追加


(1) Restart Browser


Firefox の再起動ボタンをツールバーに表示する。

(補足)
・Classic Theme Restorer で再起動ボタンを表示できなくなったため。
・アドオンを使用しなくても再起動はできる。
 ([about:profiles] -> [通常の再起動...])


3-4. その他の設定


(1) 起動時に表示するページの変更


Firefox Quantum では、about: は不正な URL となる。
よって、about: を表示していた場合には、変更が必要である。

(a) about: に近い設定にする場合


・Firefox の起動時に表示するページ: ホームページを表示
・ホームページ: about:buildconfig


(b) 空白のページを表示する場合


・Firefox の起動時に表示するページ: 空白のページを表示


(c) その他の設定例


・Firefox の起動時に表示するページ: ホームページを表示
・ホームページ: about:about


(2) ツールバーのアイコン表示のコンパクト化


<profile_dir>/user.js に下記の設定を追加する。

// change UI density in Firefox to compact mode
user_pref("browser.uidensity", 1);


(補足)
ツールバー右端のメニューボタンからも変更可能である。
・[カスタマイズ] -> [UI 密度] において、[コンパクト] を選択



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

スクリプト内でPulseAudioのミュート状況を確認する方法 [Linux]

スクリプト内で PulseAudio のミュート状況を確認する必要があり、その対応を行った。
詳細は、以下の通りである。

1. スクリプト内で PulseAudio のミュート状況を確認する方法


(1) amixer コマンドを使用する場合

% amixer -c ${ALSA_CARD:-0} -D default get Master | grep -q '\[off\]'
% echo $?


・0: muting is on, 1: muting is off


(2) pactl コマンドを使用する場合

% pactl list | sed -n '/^Sink #0$/,/^$/p' | grep -q 'Mute: yes'
% echo $?


・0: muting is on, 1: muting is off



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

Linux x86_64でのPDFビューア [Linux]

1. 背景


現在、下記の Linux を使用している。

・Debian GNU Linux 8/9 (32 bit)
・CentOS 6 (32 bit)
・CentOS 7 (64 bit)

また、32 bit 環境では、PDF ビューアに Adobe Reader 9.4.2 を使用している。
64 bit 版でも Adobe Reader を使用できればよいのだが、32 bit 版のライブラリを多数追加インストールする必要があるため、現時点では却下とした。

以下の記載は、64 bit 版 Linux での PDF ビューアを探した時の備忘録である。
なお、要求仕様は、下記の通りである。

・GNOME 等の特定のデスクトップ環境に依存しないこと。
・インストールされるファイルの容量ができるだけ小さいこと。
・日本語の文字化けが発生しないこと。


2. PDF ビューア

2-1. xpdf (xpdf-3.04-9.el7.x86_64)


(1) インストールされるファイルの容量は小さい。

(2) PDF 文書の本文での文字化けは発生しない。

(3) しおりの部分での日本語の文字化けが発生する。


2-2. Firefox のプラグイン


(1) Firefox がインストールされている環境では、別途インストールは不要である。

(2) 本文、しおりとも日本語の文字化けは発生しない。

(3) 現時点では、最も要件に合っていると思われる。



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

ntfscloneでのNTFSパーティションのバックアップ/リストア [Linux]

1. 背景


Linux と Windows をマルチブートしており、Windows のシステムバックアップは、Linux 上の Partimage での NTFS パーティションのバックアップで対応してきた。
しかし、最近、特定のノードにおいて、リストア時にエラーが度々発生するようになった。

・Partimage のみの問題とも断定できない。
・当該エラー発生前に、バックアップ・データが非常に大きなサイズとなる事象が発生した。
 (これ自体エラーとも考えられる。)
・上記のデータサイズに関する事象の発生後、リストア時のエラーが発生するようになった。

こうなると Partimage が NTFS パーティションを正式にはサポートしておらず、experimental のままで開発が終了していることが気になるようになり、念のため、ntfsclone でのバックアップへの移行を行うことにした。

(補足)
・2 個目以降のファイルの 1 ブロック目を読み飛ばすことで対処できるとの情報もある。
・バックアップ前にデフラグを実施することで改善できるとの情報もある。
・データを gzip で圧縮しているが、このデータの解凍でエラーとなることもある。

(補足-2)
バックアップ時の gzip の integrity チェックでエラーが発生することがある。


2. ntfsclone のインストール


(1) CentOS の場合


ntfsprogs パッケージをインストールする。

(補足)
・ntfsprogs は、EPEL のパッケージである。
・ntfs-3g が依存パッケージとなっている。


(2) Debian の場合


ntfs-3g パッケージをインストールする。


3. 使用方法


(1) バックアップ


(a) NTFS パーティションのデフラグの実施


適度な時間間隔で NTFS パーティションのデフラグを実施する。


(b) NTFS パーティションのバックアップ

(例)
# ntfsclone -s -o - /dev/sda1 | gzip -c > c-drive.img.gz


-s: バックアップ・データの取得
-o: 出力ファイルの指定


(c) gzip の integrity チェック

(例)
# gzip -tv <data-file>


・当該ノードにおいて、稀にエラーを発生することがある。
・エラーとなる場合には、再度バックアップを実施する。
 (現時点では、2 回連続でエラーを発生することはない。)
・この部分でのエラーについては、gzip の問題の可能性もある。


(2) リストア


(a) NTFS パーティションの作成

(例)
# fdisk /dev/sda


(b) NTFS パーティションのフォーマット

(例)
# mkfs.ntfs /dev/sda1


(c) ラベルの設定

(例)
# ntfslabel /dev/sda1 win_1


(d) バックアップ・データのリストア

(例)
# gzip -dc c-drive.img.gz | ntfsclone -r -O /dev/sda1 -


-r: バックアップ・データのリストア
-O: 既存パーテョション/ファイルへの上書きの許可



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

MDデバイスのアラインメントとサイズの変更 [Linux]

1. 背景


ディスク 2 台を使用し、パーティション毎に RAID 1 を構成(mdadm を使用) している。
/boot は MD デバイス上に直接ファイルシステムを作成し、その他は MD デバイス上に LVM を作成し、LV 上にファイルシステムを作成している。

この環境において、ディスクの 1 台が壊れ、新しいディスクへの交換が必要となった。
新しいディスクは AFT 対応で、他方は AFT 未対応のディスクである。

作業の所要時間を重視するなら、下記のような手順での対応となる。
・新しいディスクのパーティション構成を交換前と全く同じにする。
 (AFT 対応のためのアラインメントの変更を行わない。)
・RAID 1 を構成するパーティション間の同期を行う。

今回は、今後の AFT 対応ディスクへの交換を見据え、パーティション構成(アラインメント、サイズ)の変更を行うことにした。
・パーティションの作成には Debian 8 の fdisk (util-linux 2.25.2) を使用する。

以下は、備忘録として、実施手順をまとめたものである。


2. 実施手順


(1) ディスクの交換


・OS のシャットダウン(電源 OFF を含む)
・ディスクの交換
・電源 ON (OS のブートを含む)

(補足)
交換するディスクが /dev/sda の場合には、ブートローダーのインストール(外部メディアから起動してのブートローダーのインストール等)が必要となる。


(2) 新しいディスクでのパーティションの作成


・セクタの開始位置が 8 の倍数になるようにする。
・サイズは、RAID 1 を構成する他方のパーティションのサイズ以上にする。
・この時点では、パーティションのタイプを指定しない(default: 83)。
・全パーテョションの作成後に、設定を反映するために OS を再起動する。


(3) 新しいディスクのパーティション・タイプの変更


RAID 1 を構成するパーティションについて、タイプを fd に変更する。


(4) MD デバイスへのデバイス(新しいディスク上のパーティション)の追加

# mdadm [--manage] <raid-device> --add <device>


・すべての MD デバイスについて実施する。
・データの同期が順次開始される。
・小さい方のデバイスのサイズ分のみが RAID 1 構成となる。

# cat /proc/mdstat


データの同期が終了するのを待つ。


(5) 既存ディスクでのパーティションの削除

# mdadm [--manage] <raid-device> --fail <device>


・MD デバイスの当該デバイス(パーティション)を切り離す(故障状態にする)。
・すべての MD デバイスについて実施する。

# mdadm [--manage] <raid-device> --remove <device>


・MD デバイスから当該デバイス(パーティション)を削除する。
・すべての MD デバイスについて実施する。

# mdadm --misc --zero-superblock <device>


・MD デバイスから削除したパーティションのスーパー・ブロックを初期化する。
・該当するすべてのパーティションについて実施する。

その後、下記の手順を実施する。
・既存ディスク上の全パーティションを削除する。
・全パーテョションの削除後に、設定を反映するために OS を再起動する。


(6) 既存ディスクでのパーティションの作成


・上記の (2) の手順と同様。
・パーティションのサイズは、RAID 1 構成の他方のパーティションと同じにする。


(7) MD デバイスへのデバイス(既存ディスク上のパーティション)の追加


上記の (3)、(4) の手順と同じ。


(8) MD デバイスのサイズ変更

# mdadm --grow <raid-device> --size=max
または
# mdadm --grow <raid-device> -z max


MD デバイスを構成するデバイス(パーティション)のサイズまで拡張される。


(9) MD デバイス上の PV のサイズ変更(LVM を作成した MD デバイスの場合)

# pvresize <raid-device>


・PV のサイズが、MD デバイスのサイズまで拡張される。
・PV のサイズが拡張されることにより、VG のサイズも拡張される。


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

ファイルパスの不要な/の削除 [Linux]

シェルスクリプトで、ファイルパスの不要な / を削除しようとして少々手間取ってしまった、
以下は、備忘録としてまとめたものである。

1. 要求仕様


ファイルパスから不要な / を取り除く。
・/ が連続する部分を / に変更
・最後の / を削除


2. 実行例


(1) sed の場合


(a) 基本正規表現を使用する場合

% echo ..//aa//bb//cc// | sed -e 's!/\{2,\}!/!g' -e 's!\([^/]\)/$!\1!'
../aa/bb/cc
% echo /// | sed -e 's!/\{2,\}!/!g' -e 's!\([^/]\)/$!\1!'
/


(b) 拡張正規表現を使用する場合

% echo ..//aa//bb//cc// | sed -r -e 's!/+!/!g' -e 's!([^/])/$!\1!'
../aa/bb/cc
% echo /// | sed -r -e 's!/+!/!g' -e 's!([^/])/$!\1!'
/


(c) 失敗例

% echo ..//aa//bb//cc// | sed -e 's!/*!/!g' -e 's!\([^/]\)/$!\1!'
/././a/a/b/b/c/c


(2) awk の場合

% echo ..//aa//bb//cc// | \
awk '{gsub(/\/+/, "/"); r=gensub(/([^/])\/$/, "\\1", 1); print r}'
../aa/bb/cc
% echo /// | \
awk '{gsub(/\/+/, "/"); r=gensub(/([^/])\/$/, "\\1", 1); print r}'
/


(補足)
・gsub() および sub() では "\\1" が機能しない。
・gensub() の戻り値は変換後の文字列である(元の文字列を変更しない)。


3. sed の正規表現


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