[NASで使っていたHDDからデータを復旧したい](https://ja.stackoverflow.com/questions/74678/nas%e3%81%a7%e4%bd%bf%e3%81%a3%e3%81%a6%e3%81%84%e3%81%9fhdd%e3%81%8b%e3%82%89%e3%83%87%e3%83%bc%e3%82%bf%e3%82%92%e5%be%a9%e6%97%a7%e3%81%97%e3%81%9f%e3%81%84)の続きです。

Yottaの外付けHDDケースに、データ待避用に6TBのHDDとNASから取り出した8TBのHDD2つを入れました。  
その後、`root@@agartha # mdadm --create /dev/md2 --level=linear --raid-devices=2
--force /dev/sdd3 /dev/sde3`とすることで強引にraidとして認識させました。  
`mdadm --detail /dev/md2`の結果は次の通りです。

```

    root@@agartha # mdadm --detail /dev/md2
    /dev/md2:
            Version : 1.2
      Creation Time : Mon Mar 22 06:05:26 2021
         Raid Level : linear
         Array Size : 15618876176 (14895.32 GiB 15993.73 GB)
       Raid Devices : 2
      Total Devices : 2
        Persistence : Superblock is persistent
    
        Update Time : Mon Mar 22 06:05:26 2021
              State : clean 
     Active Devices : 2
    Working Devices : 2
     Failed Devices : 0
      Spare Devices : 0
    
           Rounding : 0K
    
               Name : agartha:2  (local to host agartha)
               UUID : 0cda94d3:8680a2c0:d27bac03:230a29b4
             Events : 0
    
        Number   Major   Minor   RaidDevice State
           0       8       51        0      active sync   /dev/sdd3
           1       8       67        1      active sync   /dev/sde3
    
```

作成したデバイス`/dev/md2`はbtrfsとして認識していますがNASにmount出来ません。  
なんとかして、mountする方法があれば教えてください。

まずは、mountしようとしたときの出力です。

```

    root@@agartha # mount -o usebackuproot,ro -t btrfs /dev/md2 /share/recovery/
    mount: mounting /dev/md2 on /share/recovery/ failed: Invalid argument
    
    root@@agartha # dmesg | tail -n 20
    [78678.255730] BTRFS info (device md2): trying to use backup root at mount time
    [78678.255738] BTRFS info (device md2): disk space caching is enabled
    [78678.255741] BTRFS info (device md2): has skinny extents
    [78678.915376] BTRFS error (device md2): bad tree block start 0 14031240937472
    [78678.922698] BTRFS error (device md2): bad tree block start 0 14031240937472
    [78678.922710] BTRFS warning (device md2): failed to read tree root
    [78678.923097] BTRFS error (device md2): bad tree block start 0 14031240937472
    [78678.923903] BTRFS error (device md2): bad tree block start 0 14031240937472
    [78678.923914] BTRFS warning (device md2): failed to read tree root
    [78678.924230] BTRFS error (device md2): bad tree block start 13824487579079845761 14031240953856
    [78678.924532] BTRFS error (device md2): bad tree block start 13824487579079845761 14031240953856
    [78678.924548] BTRFS warning (device md2): failed to read tree root
    [78679.176363] BTRFS error (device md2): bad tree block start 7429048968299861396 14031246639104
    [78679.184713] BTRFS error (device md2): bad tree block start 7429048968299861396 14031246639104
    [78679.184738] BTRFS warning (device md2): failed to read tree root
    [78679.198012] BTRFS error (device md2): bad tree block start 18400797589989218529 14031240364032
    [78679.206372] BTRFS error (device md2): bad tree block start 18400797589989218529 14031240364032
    [78679.206390] BTRFS warning (device md2): failed to read tree root
    [78679.255045] BTRFS error (device md2): open_ctree failed
    root@@agartha #
    
```

/dev/md2をinspectしたときの出力です。

```

    root@@agartha # btrfs inspect-internal dump-super --full /dev/md2
    superblock: bytenr=65536, device=/dev/md2
    ---------------------------------------------------------
    csum            0x65426197 [match]
    bytenr          65536
    flags           0x1
                ( WRITTEN )
    magic           _BHRfS_M [match]
    fsid            cd57473e-0800-4eaf-ac5d-761a99bb7d87
    label           
    generation      514412
    root            14031240937472
    sys_array_size      129
    chunk_root_generation   513425
    root_level      1
    chunk_root      21004288
    chunk_root_level    1
    log_root        0
    log_root_transid    0
    log_root_level      0
    total_bytes     15993730498560
    bytes_used      11979407200256
    sectorsize      4096
    nodesize        16384
    leafsize        16384
    stripesize      4096
    root_dir        6
    num_devices     1
    compat_flags        0x0
    compat_ro_flags     0x0
    incompat_flags      0x163
                ( MIXED_BACKREF |
                  DEFAULT_SUBVOL |
                  BIG_METADATA |
                  EXTENDED_IREF |
                  SKINNY_METADATA )
    csum_type       0
    csum_size       4
    cache_generation    514412
    uuid_tree_generation    514412
    dev_item.uuid       0e36f3ba-e6fa-479b-aabd-ce46ef97211f
    dev_item.fsid       cd57473e-0800-4eaf-ac5d-761a99bb7d87 [match]
    dev_item.type       0
    dev_item.total_bytes    15993730498560
    dev_item.bytes_used 12284705374208
    dev_item.io_align   4096
    dev_item.io_width   4096
    dev_item.sector_size    4096
    dev_item.devid      1
    dev_item.dev_group  0
    dev_item.seek_speed 0
    dev_item.bandwidth  0
    dev_item.generation 0
    sys_chunk_array[2048]:
        item 0 key (FIRST_CHUNK_TREE CHUNK_ITEM 20971520)
            chunk length 8388608 owner 2 stripe_len 65536
            type SYSTEM|DUP num_stripes 2
                stripe 0 devid 1 offset 20971520
                dev uuid: 0e36f3ba-e6fa-479b-aabd-ce46ef97211f
                stripe 1 devid 1 offset 29360128
                dev uuid: 0e36f3ba-e6fa-479b-aabd-ce46ef97211f
    backup_roots[4]:
        backup 0:
            backup_tree_root:   14031240953856  gen: 514411 level: 1
            backup_chunk_root:  21004288    gen: 513425 level: 1
            backup_extent_root: 14031240478720  gen: 514411 level: 2
            backup_fs_root:     29753344    gen: 9  level: 0
            backup_dev_root:    664829952   gen: 513425 level: 1
            backup_csum_root:   14031240396800  gen: 514411 level: 3
            backup_total_bytes: 15993730498560
            backup_bytes_used:  11979407200256
            backup_num_devices: 1
    
        backup 1:
            backup_tree_root:   14031240937472  gen: 514412 level: 1
            backup_chunk_root:  21004288    gen: 513425 level: 1
            backup_extent_root: 14031242280960  gen: 514412 level: 2
            backup_fs_root:     29753344    gen: 9  level: 0
            backup_dev_root:    664829952   gen: 513425 level: 1
            backup_csum_root:   14031242854400  gen: 514412 level: 3
            backup_total_bytes: 15993730498560
            backup_bytes_used:  11979407200256
            backup_num_devices: 1
    
        backup 2:
            backup_tree_root:   14031240364032  gen: 514409 level: 1
            backup_chunk_root:  21004288    gen: 513425 level: 1
            backup_extent_root: 14031236874240  gen: 514409 level: 2
            backup_fs_root:     29753344    gen: 9  level: 0
            backup_dev_root:    664829952   gen: 513425 level: 1
            backup_csum_root:   14031237038080  gen: 514409 level: 3
            backup_total_bytes: 15993730498560
            backup_bytes_used:  11979407216640
            backup_num_devices: 1
    
        backup 3:
            backup_tree_root:   14031246639104  gen: 514410 level: 1
            backup_chunk_root:  21004288    gen: 513425 level: 1
            backup_extent_root: 14031244722176  gen: 514410 level: 2
            backup_fs_root:     29753344    gen: 9  level: 0
            backup_dev_root:    664829952   gen: 513425 level: 1
            backup_csum_root:   14031244787712  gen: 514410 level: 3
            backup_total_bytes: 15993730498560
            backup_bytes_used:  11979407196160
            backup_num_devices: 1
    
```

3月24日 追記:  
/dev/md2が一応btrfsとして認識できたので、` btrfs rescue chunk-recover -y -v /dev/md2 >fslog
&`としてchunk-recoverをかけました。  
結果は、

```

      Chunk: start = 14710292348928, len = 1073741824, type = 1, num_stripes = 1
          Stripes list:                                                   
          [ 0] Stripe: devid = 1, offset = 13076065681408                                                                                                   
          No block group.                                                                                                                                   
          No device extent.                                               
      Chunk: start = 14711366090752, len = 1073741824, type = 1, num_stripes = 1
          Stripes list:                                                   
          [ 0] Stripe: devid = 1, offset = 13077139423232                 
          No block group.                                                       
          No device extent.                                               
                                                                          
    Total Chunks:           11590                                         
      Recoverable:          11429                                         
      Unrecoverable:        161                                                 
                                                                          
    Orphan Block Groups:                                                  
                                                                          
    Orphan Device Extents:                                                
                                                                                
    Chunk tree recovery failed
    
```

となって失敗しました。  
その後、

```

    root@@agartha # btrfs check /dev/md2
    checksum verify failed on 14031240937472 found 17F1B7E5 wanted 00000000
    checksum verify failed on 14031240937472 found 17F1B7E5 wanted 00000000
    checksum verify failed on 14031240937472 found 17F1B7E5 wanted 00000000
    checksum verify failed on 14031240937472 found 17F1B7E5 wanted 00000000
    bytenr mismatch, want=14031240937472, have=0
    Couldn't read tree root
    Couldn't open file system
    root@@agartha # 
    
```

と、`btrfs check`をしてみましたが上記のとおりchecksumでエラーが出ています。

3月27日追記  
btrfscue <https://github.com/cblichmann/btrfscue>  
というツールを見つけました。  
これから試します。  
ただ、`dd if=/dev/md2 of=diskimage.dd`とディスクイメージを作る必要があります。NASの容量ギリギリなのが心配です
CC BY-SA 4.0
2021-03-23T02:15:39.150
74829
2021-05-14T04:53:41.400
2021-03-26T22:17:52.270
44341
44341
question
linux raid
RAIDで使っていたHDDをUSB外付けBOXで認識させたがNASからmountできない
[btrfscue](https://github.com/cblichmann/btrfscue) を使うことでマウントまで出来ました。  
必要なツールは btrfscue, ddrescue, fusermount です。

まず、fusermountを使えるようにします。

```

    root@agartha # ln -s /opt/bin/fusermount /bin/
    root@agartha # 
    
```

つぎに、ddrescueでディスクボリュームをイメージファイルにします。

```

    root@agartha # cd /share/Public/recovery
    root@agartha # /opt/sbin/ddrescue -r 1 -n --verbose /dev/md2 rescue.dd map
    GNU ddrescue 1.20
    About to copy 15993 GBytes from /dev/md2 to recovery.img.
        Starting positions: infile = 0 B,  outfile = 0 B
        Copy block size: 128 sectors       Initial skip size: 128 sectors
    Sector size: 512 Bytes
    
    Press Ctrl-C to interrupt
    Initial status (read from mapfile)
    rescued:    15384 GB,  errsize:       0 B,  errors:       0
    
    Current status
    rescued:    15384 GB,   errsize:         0 B,    current rate:       0 B/s
       ipos:    15544 GB,    errors:         0,      average rate:       0 B/s
       opos:    15544 GB,  run time:          3s,  remaining time:         n/a
    time since last successful read:          3s
    Copying non-tried blocks... Pass 1 (forwards)
    
    root@agartha # 
    
```

btrfscueを使ってイメージファイルを解析、マウントします。

```

    root@agartha # /opt/sbin/btrfscue identify rescue.dd
    93901 / 93901 [-----------------------------------------------------------------------------------------------------------------------------] 100.00% 65 p/s
    fsid                                 count entropy  block size
    cd57473e-0800-4eaf-ac5d-761a99bb7d87 226   4.000000 8192
    
    root@agartha # /opt/sbin/btrfscue recon --append --metadata meta.db --verbose --id cd57473e-0800-4eaf-ac5d-761a99bb7d87 rescue.dd
    15384765726720 / 15384765726720 [-----------------------------------------------------------------------------------------------------------------------------] 100.00% 526584  p/s
    root@agartha # /opt/sbin/btrfscue --metadata meta.db -v mount /share/recovery/
    btrfscue: no device file given, only inline file data will be visible
    mounted rescue FS on /share/recovery/
    
```

別のターミナルで、マウントしたディレクトリを確認します。

```

    root@agartha # ls -l /share/recovery/
    total 11196184
    -r--r--r--    1 root     users    11476168704 Apr 13 04:04 metadata
    drwxr-xr-x    1 root     root              38 Nov 14  2019 rescue
    root@agartha # du -h /share/recovery/*
    10.7G   /share/recovery/metadata
    0       /share/recovery/rescue
    root@agartha # 
    
```

なお、Ctrl+Cキーでmountを解除します。

```

    ^Cbtrfscue: got signal, unmounting...
    root@agartha # 
    
```

2021年5月15日 追記  
btrfscueでmountしたものは、rescue用のファイル形式でbtrfsそのものではありませんでした。  
metadata内にディスクをスキャンした結果が格納されているようなのですが、これ以上は分かりませんでした
CC BY-SA 4.0
2021-04-13T01:31:34.847
75230
2021-05-14T04:53:41.400
2021-05-14T04:53:41.400
44341
44341
74829
answer