将 BTRFS 子卷转换为普通目录

将 BTRFS 子卷转换为普通目录

因此,假设我在根子卷上有一个 BTRFS 子卷,我希望尽快将其转换为普通目录,同时保持硬链接和引用链接完好无损。是否有捷径可寻?我找不到任何有关如何在几秒钟内轻松完成此操作的文档,特别是如果它是一个大的子卷。

答案1

只需简单地mv阅读内容就可以了。在这方面,子卷只不过是一个目录。我对硬链接之类的东西做了一个简单的测试,只需一个简单的移动就可以按预期工作。

$ mkdir tmp
$ cd tmp
$ btrfs subvolume create sub
Create subvolume './sub'
$ echo 1 > file
$ ln file hard
$ echo 2 >> hard
$ cat file
1
2
$ ls -1i file hard
20803239 file
20803239 hard
# create 5 Gb file with random data to see if it later moves (fast) or copies (slower)
$ dd if=/dev/urandom of=rand bs=1G count=5
$ btrfs filesystem du rand
     Total   Exclusive  Set shared  Filename
   5.00GiB     5.00GiB       0.00B  rand
$ cp --reflink=always rand rand-ref
$ echo something >> rand-ref
$ btrfs filesystem du rand
     Total   Exclusive  Set shared  Filename
   5.00GiB       0.00B     5.00GiB  rand
$ btrfs filesystem du rand-ref
     Total   Exclusive  Set shared  Filename
   5.00GiB     4.00KiB     5.00GiB  rand-ref
$ truncate -s 10G sparse
$ btrfs filesystem du sparse
     Total   Exclusive  Set shared  Filename
     0.00B       0.00B       0.00B  sparse
$ ls
file  hard  rand  rand-ref  sparse  sub

现在将任何内容移动到子卷“sub”中

$ mv file hard rand rand-ref sparse sub/

并检查结果

$ ls -1i file hard
257 file
257 hard
$ btrfs filesystem du rand rand-ref sparse
     Total   Exclusive  Set shared  Filename
   5.00GiB       0.00B     5.00GiB  rand
   5.00GiB     4.00KiB     5.00GiB  rand-ref
     0.00B       0.00B       0.00B  sparse

PS:因为你要转换子卷。我认为没有命令可以就地执行此操作。将内容移至其他位置,而不是删除空子卷并将内容移回原位。

相关内容