😵
Sambaでext4からBtrfsにコピーしようとしたときにSegfaultが起きる問題を解決する
症状
ネットワークドライブとしてマウントしたZ:
(ext4)からY:
(btrfs)にコピーやマウントをしようとするとエラーが起きる。
エラー全文
予期しないエラーのため、ファイルをコピーできません。このエラーが再発する場合は、エラーコードを使用して、この問題についてのヘルプを検索してください。
エラー 0x8007003B: 予期しないネットワーク エラーが発生しました。
再試行を押しても同じエラーが出るばかりで、スキップまたはキャンセルを押すしかない。
元のファイルと同じサイズのファイルは作成されるが、中身は空っぽ(!)なのでファイルサイズだけでコピーできたと判断すると危険。
環境
- samba: 2:4.17.12+dfsg-0+deb12u1 (on Debian)
- (OpenMediaVault: 7.6.0-1)
smb.conf
は長いので折りたたんでおく。
smb.confの中身 (OpenMediaVaultが生成したものを一部編集。btrfsの共有フォルダのセクションのみ。)
[storagename]
comment =
path = /srv/dev-disk-by-uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/main/
guest ok = no
guest only = no
read only = no
browseable = yes
inherit acls = no
inherit permissions = no
ea support = yes
store dos attributes = no
fruit:encoding = private
fruit:locking = none
fruit:metadata = stream
fruit:resource = file
fruit:veto_appledouble = no
fruit:wipe_intentionally_left_blank_rfork = yes
fruit:delete_empty_adfiles = yes
fruit:time machine = yes
recycle:repository = .recycle/%U
recycle:keeptree = yes
recycle:versions = yes
recycle:touch = yes
recycle:touch_mtime = no
recycle:directory_mode = 0777
recycle:subdir_mode = 0700
recycle:exclude =
recycle:exclude_dir =
recycle:maxsize = 0
shadow:mountpoint = /srv/dev-disk-by-uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/
shadow:snapdir = /srv/dev-disk-by-uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/.snapshots/
shadow:basedir = /srv/dev-disk-by-uuid-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/main/
shadow:sort = desc
shadow:format = _%Y%m%dT%H%M%S
shadow:delimiter = _
shadow:snapprefix = ^es1\(@hourly\)\{0,1\}\(@daily\)\{0,1\}\(@weekly\)\{0,1\}\(@monthly\)\{0,1\}\(@yearly\)\{0,1\}$
shadow:localtime = no
dfree command = /usr/sbin/omv-btrfs-dfree
dfree cache time = 30
vfs objects = fruit streams_xattr recycle btrfs shadow_copy2
printable = no
create mask = 0664
force create mode = 0664
directory mask = 0775
force directory mode = 0775
hide special files = yes
follow symlinks = yes
wide links = no
hide dot files = yes
valid users =
invalid users =
read list =
write list =
対処方法
オプションにvfs objects =
とshadow:OPTIONS =
を追加する。
筆者のようにOpenMediaVaultを使っている場合は「サービス」→「SMB/CIFS」→「共有」→btrfsの共有フォルダを編集。
一番下に「追加オプション」があるので、次の2行を追加すれば良い。
vfs objects =
shadow:OPTIONS =
参考資料にはvfs options
を上書きするだけでもOKとのコメントがあったものの、念のためshadow:OPTIONS
の上書きも行なった。
原因としてはvfs options
のshadow_copy2
がbtrfsで有効となっているためらしい。
Discussion