BLOGTIMES
» ArchiveList (Tag for "linux / windows" )
«Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
2023/03/25

OmniOS/ZFS サーバに wbadmin でイメージバックアップが取れない時に確認すべきこと

omnios  windows 

以前、SMB 2.0 以降を使う Samba サーバの共有フォルダを対象にして Windows のイメージバックアップを取ろうとすると Sparse File の関係でバックアップが取れたり取れなかったりするという問題がありました。

同じような問題が OmniOS(illumos) でも発生していたので困っていました。
OmniOS は Open Solaris の系譜なので、ファイル共有は Samba ではなく Kernel 内蔵の smb です。
というわけで、Linux のSamba と同じテクニックは使えず、原因も Sparse File ではありません。

まず、結論から

いつも通り、解決するための結論から書いて置きます。

以下のようなコマンドで zfs 共有の nbmand(Non Blocking mandatory locks)*1*2 プロパティを on にしてやります。

zfs set nbmand=on tank/share

どうもこの nbmand というプロパティが off だとクライアントがファイルをうまくロックすることができず、これが原因になっていたようです。

nbmand のデフォルトは off ですし、おそらくパフォーマンス等に対するペナルティもあると思われるので、今回はバックアップに使う共有でだけ on にしています。Open Solaris の時から nbmandcross-protocol locking (例えば NFS と SMB を同時に使う)が必要な時だけ on にする必要がある*3という認識だったのですが、どうやらちょっと僕の認識が間違っていたようです。これまで off でもファイルサーバとしては特に問題になる挙動に当たったことがなかったのですが、このあたり近日中に詳しく調べてみたいと思います。

実際に発生するエラー

実際にバックアップを取ろうとすると発生するエラーは以下のような感じです。

Microsoft Windows [Version 10.0.22621.1413] (c) Microsoft Corporation. All rights reserved. C:\Windows\System32>wbadmin start backup -backuptarget:\\192.168.0.1\path\to\dir -include:c: -allCritical -quiet wbadmin 1.0 - バックアップ コマンドライン ツール (C) Copyright Microsoft Corporation. All rights reserved. 注意: この保存先では、バックアップ データを安全に保護することはできません。 リモート共有フォルダーに保存されたバックアップは、ネットワーク上の他の ユーザーによってアクセスされる可能性があります。バックアップは、信頼できる ユーザーがアクセスする場所か、セキュリティ対策が実施されているネットワーク にのみ保存してください。 ボリューム情報を取得しています... これにより (EFI システム パーティション),(C:),(\\?\Volume{00000000-0000-0000-0000-000000000000}\) が \\192.168.0.1\path\to\dir にバックアップされます。 \\192.168.0.1\path\to\dir へのバックアップ操作を開始しています。 バックアップに指定されたボリュームのシャドウ コピーを作成しています... バックアップに指定されたボリュームのシャドウ コピーを作成しています... ボリューム (EFI システム パーティション) (100.00 MB) のバックアップを完了できませんでした。エラー: プロセスはファイルにアクセ スできません。別のプロセスがファイルの一部をロックしています。 バックアップ操作の概要: ----------------------- バックアップ操作が完了する前に停止しました。 バックアップ操作が完了する前に停止しました。 エラーの詳細: プロセスはファイルにアクセスできません。別のプロセスがファイルの一部をロックしています。 正常にバックアップされたファイルのログ: C:\WINDOWS\Logs\WindowsBackup\Backup-25-03-2023_15-08-17.log バックアップに失敗したファイルのログ: C:\WINDOWS\Logs\WindowsBackup\Backup_Error-25-03-2023_15-08-17.log バックアップ セットのいずれかのボリュームのバックアップ イメージを準備しているときにエラーが発生しました。 プロセスはファイルにアクセスできません。別のプロセスがファイルの一部をロックしています。

at 19:59 |
2022/12/05

File Locksmith でファイルをロックしているプロセスを探す

windows  windows11 
File Locksmith - File Locksmith でファイルをロックしているプロセスを探す

以前、Windows でファイルをロックしているプロセスを調べることができる LockHunterというアプリについてのエントリを書きましたが、これと同じことをすることができる MS 謹製の File Locksmith というユーティリティをみつけました。PowerToys というユーティリティ群のひとつとして搭載されています。

導入する場合、以下の GitHub のリリースから PowerToys としてダウンロードすることになります。

使い方はファイルを右クリックして「このファイルは何で利用していますか?」という項目を選択するだけです。PowerToys は File Locksmith に限らず便利なツールがいろいろ揃っているので、導入しておくと良いと思います。

PowerToysWindows 用の File Locksmith ユーティリティ | Microsoft Learn

エクスプローラー内の 1 つ以上のファイルまたはディレクトリを選択します。 ディレクトリが選択されている場合、そのすべてのサブファイルとサブディレクトリもスキャンされます。 がアクティブ化されると File Locksmith 、アクセスできる実行中のすべてのプロセスがスキャンされ、使用しているファイルが確認されます。


    at 21:11 |
    2022/11/16

    Ubuntu が contains a file system with errors で起動しなくなった場合の対処法

    ubuntu  linux 
    Ubunt の fs error - Ubuntu が contains a file system with errors で起動しなくなった場合の対処法

    使っている Ubuntu の VM が以下のようなファイルシステムエラーを吐いて通常起動しなくなってしまったので、対処方法をメモ。

    /dev/sda1: recovering journal /dev/sda1 contains a file system with errors. check forced. /dev/sda1: Inodes that were part of a corrupted orphan linked list found. /dev/sda1 : UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY. (i.e.,without -a or -p options) fsck exited with status code 4 The root filesystem on /dev/sda1 requires a manual fsck BusyBox v1.27.2 (Ubuntu 1:1.27.2-2ubuntu3.3) built-in shell (ash) Enter 'help' for a list of built-in commands. (initramfs)

    勝手にシングルユーザーモードになっているようなので、以下のように fsck による /dev/sda1 の修復をかけて無事に修復することができました。

    fsck /dev/sda1 -y sync reboot

      at 18:51 |
      2022/10/29

      実際にサーバのトラブルーシューティングができる練習環境 SadServers

      systemmanagemant  networking  linux 

      SadServers という実際に Linux サーバのトラブルーシューティングを体験できる演習環境を見つけたのでメモ。
      実際にサーバ運用をしたことがあれば、Easy や Medium あたりは楽しんで挑戦できると思いますが、Hard はかなり難しいです。

      SadServers - Troubleshooting Linux Servers

      Troubleshoot and make a sad server happy!
      "Like LeetCode for Linux"
      Capture The Flag challenges. Train and prove your debugging skills.
      Practice for your next SRE/DevOps interview.
      Get a full remote Linux server with a problem and fix it.

      この演習環境のアーキテクチャについては GitHub - fduran/sadservers: SadServers.com Public で解説されていますが、1 回ごとに EC2 でインスタンスが立ち上がるようになっているようです。


        at 23:55 |
        2022/04/18

        Core Utilities 9.1 がリリースに

        linux  cli 

        Linux などの mv や cp などの基本的なコマンドの実装である GNU Coreutils のバージョン 9.1 がリリースされていたのでメモ。
        こんなツール、まだバージョンアップする余地があるの?という感じもしますが、現在でもアップデートされ続けているんですよね。

        基本コマンドをカバーするGNU Core Utilitiesがバージョンアップ | TECH+

        ddがFreeBSDと同じ動作するエイリアスのサポートや、dircolorsが環境変数LS_COLORSのカラーコードに従って表示するオプション、環境変数COLORTERMを参照するようになった。改良点はcpやmv、installを使用してディレクトリをコピーする際は、競合状態を回避するためにopenat()システムコールを使用。printfによるマルチバイト文字の数値表示をサポートした点が目立つ。


          at 23:41 |
          2022/03/02

          AI Suite III の代わりに使える「Fan Control」

          windows  asus 
          Fan Control - AI Suite III の代わりに使える「Fan Control」

          ASUS の AI Suite 3 の代わりに使えるファンコントロールユーティリティを見つけたのでメモ。

          AI Suite 3 は一旦インストールしてしまうと微妙なので・・・

          ASUS のマザーボードには専用のユーティリティとして AI Suite 3 というものがあるのですが、これがちょっと曲者で、アンインストールしてもファイルやサービスが残ってしまったり、一旦構成が壊れると再インストールしても動かなかったりでどうしようもありません。

          もちろんファンスピードは UEFI から調整できるのですが、いちいち UEFI を起動するのも面倒なので Windows 上からファンコントロールできるサードパーティ製のアプリがないかと思って探してみたら、なんとか見つけることができました。今後は AI Suite 3 ではなく、こっちだけを使っていこうと思います。


            at 22:42 |
            2022/02/20

            Windows 上で .pfx/.p12 の中身を確認するには

            ssl  windows 

            Windows 上で .pfx の中身をチェックするためには certutil -dump (cert.pfx) のようにコマンドを使えば確認できますが、面倒なのでドラッグアンドドロップで確認できるスクリプトを書いてみました。

            show_pfx.bat

            @echo off cd /d %~dp0 for %%f in (%*) do ( echo "%%~nxf" certutil -dump "%%~dpf%%~nxf" ) pause

            実行例

            以下のような感じで証明書の中身が表示できます。
            ちなみに PFX のパスワード入力はエコーバック(画面表示)されないので注意しましょう。

            "www.example.com.pfx" PFX パスワードの入力: ================ 証明書 0 ================ ================ 開始入れ子のレベル 1 ================ 要素 0: シリアル番号: 00 発行者: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP この日以降: 2009/05/29 14:00 この日以前: 2029/05/29 14:00 サブジェクト: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP 署名は公開キーと一致します ルート証明書: サブジェクトと発行者は一致します Cert ハッシュ(sha1): 5f3b8cf2f810b37d78b4ceec1919c37334b9c774 ---------------- 終了入れ子のレベル 1 ---------------- キー プロバイダー情報がありません 暗号化の解除のための証明書と秘密キーが見つかりません。 ================ 証明書 1 ================ ================ 開始入れ子のレベル 1 ================ 要素 1: シリアル番号: 22b9b154f33c5e5e00 発行者: OU=Security Communication RootCA2, O=SECOM Trust Systems CO.,LTD., C=JP この日以降: 2018/08/22 16:41 この日以前: 2028/08/22 16:41 サブジェクト: CN=FujiSSL Public Validation Authority - G3, O=SECOM Trust Systems CO.,LTD., C=JP 非ルート証明書 Cert ハッシュ(sha1): e659885ddd3fd3e36b3a29ff6f94585e0b40de40 ---------------- 終了入れ子のレベル 1 ---------------- キー プロバイダー情報がありません 暗号化の解除のための証明書と秘密キーが見つかりません。 ================ 証明書 2 ================ ================ 開始入れ子のレベル 1 ================ 要素 2: シリアル番号: 99999999999999999999999999999999 発行者: CN=FujiSSL Public Validation Authority - G3, O=SECOM Trust Systems CO.,LTD., C=JP この日以降: 2099/99/99 99:99 この日以前: 2099/99/99 99:99 サブジェクト: CN=www.example.com.pfx 非ルート証明書 Cert ハッシュ(sha1): 9999999999999999999999999999999999999999 ---------------- 終了入れ子のレベル 1 ---------------- プロバイダー = Microsoft Enhanced Cryptographic Provider v1.0 暗号化のテストに合格しました CertUtil: -dump コマンドは正常に完了しました。 続行するには何かキーを押してください . . .

              at 19:11 |
              2021/12/19

              全角スペースが入りのファイルを bat にドラッグアンドドロップする

              bat  windows 

              昔、作ったドラッグアンドドロップでファイル名に日付を追加する .bat ファイルですが、全角スペースが含まれたファイルが上手く扱えないので、使えるように改良してみました。

              bat ファイルでの全角スペースの扱いは、半角スペースの扱いと違うのでみんな苦労しているようです。
              今回は一度違う文字(___)に置換してから、ループ内で逆に置換するようにしました。
              作成時の注意点は文字コードを Shift-JIS にして保存する必要があるということだけです。

              @echo off cd /d %~dp0 set args=%* set args_escaped=%args: =___% echo args: %* echo args_escaped: %args_escaped% setlocal enabledelayedexpansion for %%f in (%args_escaped:"=%) do ( set fname=%%~dpnf set fname_org=!fname:___= ! echo fname_org!fname_org! echo -------- ) endlocal pause

              こんな感じで、全角スペース入りの複数のファイルをドラッグアンドドロップしても大丈夫になりました。

              args: D:\hoge\い う.txt D:\hoge\あ あ.txt args_escaped: D:\hoge\い___う.txt D:\hoge\あ___あ.txt fname_orgD:\hoge\い う.txt -------- fname_orgD:\hoge\あ あ.txt -------- 続行するには何かキーを押してください . . .

                at 22:21 |
                2021/05/08

                bat でコマンドを途中で改行するには

                bat  windows 

                Linux でシェルスクリプトを書くときに長いコマンドを途中改行するためには改行の直前に \ を書きますが、Windows の bat ファイルでは同様のやり方を知らなかったので調べてみました。

                これはどこにドキュメンテーションされているのか

                ネットを検索すると ^ を使えば良いというのはすぐに見つかりました。
                書いて見ると実際に問題なく動きましたが、公式のドキュメントで仕様を確認しておきたかったのでどこに記載があるのかちょっと調べてみました。

                エスケープに関する記述は set コマンドの解説の以下でしょうか。明確に escape character が ^ である と書いてありますが、これが bat 全体で使えるという記述は見つけることができませんでした。この仕様はおそらく DOS の時から変わっていないと思われるのですが、DOS に関するドキュメントは今や MS のサイトにはないですからしょうがないですね。

                set | Microsoft Docs

                The characters <, >, |, &, and ^ are special command shell characters, and they must be preceded by the escape character (^) or enclosed in quotation marks when used in (for example, "StringContaining&Symbol").


                  at 18:45 |
                  2021/05/02

                  ドラッグアンドドロップでフォルダ毎に zip アーカイブを作る bat

                  bat  windows 

                  フォルダをドラッグ&ドロップすると、zip にアーカイブしてくれるという bat ファイルを書いてみました。

                  複数のフォルダを一度にドラッグ&ドロップすると、フォルダ毎にアーカイブされるようになっています。
                  圧縮に 7-zip を使っているので、予めインストールしておいてください。

                  完成してみれば非常に簡単な bat ですが、パスにスペースが入っている場合を考慮するのが大変でした。

                  zip.bat

                  @echo off cd /d %~dp0 for %%f in (%*) do ( "C:\Program Files\7-Zip\7z.exe" a -tzip "%%~dpf%%~nxf.zip" "%%~dpf%%~nxf" ) pause

                  参考


                    at 18:16 |
                    «Prev || 1 · 2 · 3 · 4 · 5 ·... | | Next»
                    » ArchiveList (Tag for "linux / windows" )