폴더를 BTRFS 하위 볼륨으로 이동

폴더를 BTRFS 하위 볼륨으로 이동

최근에 /homeBTRFS를 사용하여 파티션을 포맷했지만 이 FS를 처음 사용하기 때문에 하위 볼륨에 대해 모릅니다.

어제 저는 Linux Mint를 다시 설치하고 기존 홈 파티션 을 /home.@home

현재 상황은 다음과 같은 디스크 레이아웃입니다. 250 GiB SSD -- 64 GiB / (BTRFS) -- 8 GiB 스왑 -- ~170 GiB /home (BTRFS)

내가 시도할 때이동하다홈 폴더를 @home하위 볼륨에 넣은 후 이 파티션에 약 50GiB가 남아 있고 파일을 복사하는 대신 이동하려고 하는데도 남은 공간이 충분하지 않다는 오류가 발생합니다(?!). 현재 기호 링크를 보존해야 하는 NTFS가 아닌 형식으로 다시 포맷할 수 있는 다른 디스크가 없습니다.

이제 질문이 있습니다. 파일을 폴더에서 하위 볼륨으로 올바르게 이동하는 방법은 무엇입니까? 파일 이동이 작동하지 않는 이유는 무엇입니까?

답변1

cp -a --reflink=always /home/<whatever> /home/@home/Linux VFS(가상 파일 시스템)에 관한 한 이것은 실제 복사본이지만 BTRFS에서는 파일이 동일한 블록/확장자를 공유하므로 파일이 수정될 때까지 추가 공간이 필요하지 않습니다 .

복사가 성공하면 /etc/fstab전체 파일 시스템 대신 하위 볼륨을 마운트하도록 수정합니다.

/dev/sdXn    /home    btrfs    subvol=@home

그런 다음 재부팅하십시오. 문제가 없으면 원본 파일을 삭제할 수 있습니다.

mount /dev/sdXn /mnt
pushd /mnt
rm -fR <whatever>
popd
umount /mnt

물론 시도하기 전에 백업을 해야 합니다.

다음

일단 모든 게 좋아지면제발읽다BTRFS 위키, 특히 아래의 모든 기사지침 및 사용 정보. BTRFS는 매우 깔끔하지만 기존 Linux 파일 시스템(extN, ReiserFS 등)처럼 작동하지 않습니다. 사람들이 그냥 뛰어들어가면서 알아낼 수 있는 그런 것들이 아닙니다. BTRFS를 잘 사용하려면 자신이 무엇을 하고 있는지 알아야 합니다. 이를 수행하는 가장 좋은 방법은 문서를 읽는 것입니다.

나는 우연히 BTRFS를 좋아하고 당신도 그것을 좋아하길 바랍니다.

답변2

다른 사람들도 다음을 mv사용하여 하위 볼륨 간에 데이터를 이동하려고 시도하는 경우https://unix.stackexchange.com/a/152639/81744작동/빠를 것 같습니다(reflink는 mvcoreutils 8.24 이후 기본 모드여야 함). linux-4.14.15-arch에서 coreutils-8.29를 사용한 실제 테스트에 따르면 파일 시스템 내부 링크 대신 복사본이 생성되는 것으로 나타났습니다 df( 파일 시스템 크기가 증가합니다. mv특히 링크를 참조할 때 이상해 보입니다.

그러므로https://unix.stackexchange.com/a/377734/81744최신 버전의 coreutils를 사용해도 여전히 정답이며 기본값은 mv.

(이 정보를 추가하려면 현재 상위 답변에 댓글을 달고 싶지만 아직 평판이 50이 필요하지 않습니다.)

답변3

저도 같은 문제로 고민중입니다. 더 쉬운 스냅샷 관리를 위해 /home여러 부분 으로 나누는 일은 일주일 동안의 악몽으로 바뀌었습니다. cp --reflink=always어떤 이유에서든 작동하지 않습니다(너무 많은 오류가 나에게 발생하여 나는 그 속에서 길을 잃었습니다).

마침내 내가 찾은 답은 너무 단순하고 뻔해서 이전에 생각해보지 못한 것이 부끄럽습니다.

  1. 원본 하위 볼륨의 스냅샷을 생성합니다.
  2. 스냅샷에서 필요하지 않은 항목을 모두 삭제한 다음이동하다스냅샷의 루트 디렉터리에 대한 데이터가 필요합니다. 대부분의 경우 이는 디렉토리입니다. 빠르고 저렴합니다.
  3. 스냅샷 루트의 ACL이 예상한 것과 맞는지 확인하세요.
  4. 원하는 위치에 새 하위 볼륨을 마운트합니다.

이전에 볼륨 간 이동을 시도했지만 훌륭한 시스템 관리자로서 "만일의 경우" 전에 스냅샷을 찍은 경우 잘못된 하위 볼륨을 정리하는 간단한 스크립트가 있습니다.

# cd /your/erroneous/subvolume
# find . -type f -exec cmp --silent '{}' '/your/good/snapshot/{}' \; -delete

이렇게 하면 보관된 스냅샷에 있는 것과 동일한 잘못된 하위 볼륨의 모든 파일이 제거됩니다."나머지"를 스냅샷에 다시 동기화하려고 하지 마세요.부분적으로 복사된 파일이 있을 수 있으며 데이터가 손실될 수 있습니다. 잔여물이 있는지 수동으로 확인하고 실제로 필요한 것만 복사하세요.


다음은 cp --reflink=always"잘못된 교차 장치 링크" 오류에 대한 답변입니다. 이는 FS에 문제가 있다는 의미가 아니라 범위에서 파일 이름으로의 커널 매핑이 작동하는 방식일 뿐입니다(지정한 경우).설치됨하위 볼륨을 대상으로 합니다. 당신의 설치루트FS,해당 디렉토리로 이동하여 거기에서 상대 경로를 사용하여 작업하십시오. 모든 것이 좋아질 것입니다.

관련 정보