|
|
(28 intermediate revisions by 3 users not shown) |
Line 1: |
Line 1: |
| =Missing BLOBs in ZCS 8.8=
| | #REDIRECT [[Zimbra_NG_Modules/DR/Broken_or_corrupted_Volume_(Missing_BLOBs)]] |
| {{ZCS 8.8}}
| |
| {{WIP}}
| |
| | |
| To check for missing blobs on an account, you can do the following<br>
| |
| | |
| Get the user's mailboxID<br>
| |
| | |
| <code><pre>
| |
| zmprov gmi user001@example.com
| |
| </pre></code>
| |
| | |
| You will see output something like this<br>
| |
| <code><pre>
| |
| mailboxId: 5
| |
| quotaUsed: 64498843
| |
| </pre></code>
| |
| | |
| Now we will check if there are missing blobs for the account<br>
| |
| | |
| <code><pre>
| |
| zxsuite hsm docheckblobs start mailbox_ids 5
| |
| </pre></code>
| |
| | |
| You will see output something like this<br>
| |
| <code><pre>
| |
| operationId bdbd8112-8c2f-4f8f-bc7b-a82ef5388378
| |
| server mailstore3.example.com
| |
| log path /opt/zimbra/log/op_CheckBlobs_bdbd8112-8c2f-4f8f-bc7b-a82ef5388378.log
| |
| </pre></code>
| |
| | |
| Now search for the word WARN in the CheckBlobs log<br>
| |
| <code><pre>
| |
| grep WARN /opt/zimbra/log/op_CheckBlobs_bdbd8112-8c2f-4f8f-bc7b-a82ef5388378.log
| |
| </pre></code>
| |
| | |
| if there was a missing BLOB, you would see similar output like this<br>
| |
| <code><pre>
| |
| 2017-08-22 15:16:53,877 WARN Missing Blob file: Mailbox id: 5 - Item id: 4610 - Revision: 8720 - Blob path: /opt/zimbra/store/0/5/msg/1/4610-8720.msg - Size: 1859 - Digest: dYV2+dXtH9AUAHH4au1jWquWgCeBCz7XpsYtHza0ofw=
| |
| </pre></code>
| |
| | |
| Now, lets restore the missing blob, but first we need the ID of the message volume
| |
| <code><pre>
| |
| zxsuite hsm getAllVolumes
| |
| </pre></code>
| |
| | |
| Typically, you should see<br>
| |
| <code><pre>
| |
| primaries
| |
| id 1
| |
| name message1
| |
| path /opt/zimbra/store
| |
| compressed false
| |
| threshold 4096
| |
| storeType LOCAL
| |
| isCurrent true
| |
| volumeType primary
| |
| secondaries
| |
| indexes
| |
| | |
| id 2
| |
| name index1
| |
| path /opt/zimbra/index
| |
| compressed false
| |
| threshold 4096
| |
| storeType LOCAL
| |
| isCurrent true
| |
| volumeType index
| |
| </pre></code>
| |
| | |
| The output for /opt/zimbra/store is 1<br>
| |
| | |
| Now lets see what will restored. <strong>Keep in mind this is a dry run, nothing is restored yet!</strong><br>
| |
| <code><pre>
| |
| zxsuite --progress backup dorestoreblobs 1
| |
| </pre></code>
| |
| | |
| You will see a lot of verbose output, and at the bottom, you will see results similar to this<br>
| |
| <code><pre>
| |
| Total blobs volume fixed: 0
| |
| Total blobs checked: 8156
| |
| Total broken blobs: 1
| |
| Total restorable blobs: 1
| |
| Total unrestorable blobs: 0
| |
| Total failed blob restores: 0
| |
| Total restored blob: 0
| |
| </pre></code>
| |
| | |
| When you are ready to restore the blob, run the same dorestoreblobs command again, but this time add the <strong>dryrun false</strong> option<br>
| |
| <code><pre>
| |
| zxsuite --progress backup dorestoreblobs 1 dryrun false
| |
| </pre></code>
| |
| | |
| You will see a lot of verbose output, and now you will see the number of restored blobs<br>
| |
| <code><pre>
| |
| Total blobs volume fixed: 0
| |
| Total blobs checked: 8156
| |
| Total broken blobs: 1
| |
| Total restorable blobs: 1
| |
| Total unrestorable blobs: 0
| |
| Total failed blob restores: 0
| |
| Total restored blob: 1
| |
| </pre></code>
| |