ext4lazyinitについて質問しましたここ。私が読んで理解したところによれば、ファイルシステム用のすべてのinodeを作成せずにハードドライブの使用を開始できます。
知っているか測定できる唯一の方法はext4lazyinit
監視することですiotop
。進行状況をパーセントで確認する方法はありますか?
ベストアンサー1
ext4lazyinitの進行状況を大まかに把握する方法を見つけたようです。
簡単に言うと:参照スクリプト次のような。
この方法は、パーティションが最初にマウントされてからディスクが切断されたことがなく(システムが再起動されない)、パーティションが使用するのとまったく同じ量のデータをパーティションに書き込むと仮定します。ファイルを修正してください)
ステップ1:fdiskのパーティションサイズ(kiBに変換)をdfに表示されている1Kブロック数と比較します。 (パーティションサイズ(kiB))から(1Kブロック数)を引いて(inodeテーブルのおおよそのサイズ)を取得します。
編集:はい、fdisk:
Sector size (logical/physical): 512 bytes / 4096 bytes
(...omitted...)
Device Start End Sectors Size Type
/dev/sdd1 2048 11720978398 11720976351 5.5T Linux filesystem
df:
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/workbackup 5813233164 1217095176 4596121604 21% /mnt/backup_work
11720976351セクタ* 512バイト/セクタ/1024 = 5860488175.5kiB(fdiskによると5.5TiBに近い) 5813233164からdfを減算すると、47255011.5kiB(約45GiB)になり、これはinodeテーブルのおおよそのサイズです。
ステップ2:get(パーティションに記録された合計kiB):
awk '{ print $3"\t"$10 }' /proc/diskstats
パーティションに合った行を選択し、それをkiBに変換します。
編集:はい:
sdb 260040
sdb1 260040
sdd 2530109116
sdd1 2530108940
私の場合、sdd1を使用して作成された合計kiB = 2530108940セクタ* 512バイト/セクタ/ 1024 = 1265054470kiB(ほぼ1.2TiB)です。
ステップ3:ファイルシステムにデータを書き込んだ場合にのみ必要です。 (パーティションに書き込まれた合計kiB)から(dfに示されている使用されている1Kブロックの数)を引いて(inodeテーブルに書き込まれたおおよそのkiB)を取得します。
編集:例:inodeテーブルに書き込まれたおおよそのkiB = 1265054470(ステップ2) - 1217095176(ステップ1のdf出力を参照)= 47959294kiB(45.7GiB)
ステップ4:(inodeテーブルに作成されたおおよそのkiB)を(inodeテーブルのおおよそのサイズ(kiB))で除算し、100を掛けて進行をパーセンテージとして取得します。
編集: 例: おおよその進行状況 = 47959294 / 47255011.5 * 100% = 101.5%
スクリプト
または部分スクリプトで作成します(セキュリティ上の理由からfdisk呼び出しスクリプトを拒否します)。
let sectorsize=$(cat /sys/block/sda/queue/hw_sector_size)
let partsize=$2*$sectorsize/1024
let fssize=$(df -- "$3" | tail -n -1 | awk '{print $2}')
let approxinodetablesize=$partsize-$fssize
let tkw=$(awk "/$1/"' {print $10}' /proc/diskstats | head -n 1)*$sectorsize/1024
let used=$(df -- "$3" | tail -n -1 | awk '{print $3}')
let tkw_inodetable=$tkw-$used
echo "Approximate progress: $(bc -l <<< "$tkw_inodetable*100.0/$approxinodetablesize") %"
呼び出し $1 = "パーティション名" (例: sdd1)、 $2 = "fdisk によるパーティションセクタ"、 $3 = "後にスラッシュがないマウントポイント"
試験結果
私の方法は一度だけテストされました。設定:
6TBパーティション
cryptsetup を使用した暗号化
-m 0以外のデフォルトパラメータを使用して生成されたファイルシステム
ext4lazyinit が完了する前に、279 GiB ファイルがパーティションに書き込まれました。
結果:完成後99.7%読み取り:-)
編集:同じディスクにほぼ別のTiBのデータを書き込んだ後、予想収率は101.5%です。役に立つほど正確だと思います。