스왑 파일 교환 유효하지 않은 매개변수

스왑 파일 교환 유효하지 않은 매개변수

꽤 오랫동안 작동하는 스왑 파일에서 스왑을 수행했지만 어떤 이유로 작동이 중단되었습니다.

sudo fallocate -l 4G /home/.swap/swapfile
sudo chmod 600 /home/.swap/swapfile
sudo mkswap /home/.swap/swapfile

# /etc/fstab
/home/.swap/swapfile swap swap defaults 0 0

sudo swapon -a

swapon: /home/.swap/swapfile: swapon failed: Invalid argument

최신 버전의 Fedora를 실행하고 있는데, 업데이트 이후에 뭔가 변경된 것이 있을 수 있나요? 아니면 원인이 무엇일 수 있나요?

답변1

교체해 보시기 바랍니다

fallocate -l 4G /home/.swap/swapfile

그리고

dd if=/dev/zero of=/home/.swap/swapfile bs=1M count=4096

답변2

당신이 사용하는 경우BTFS스왑 파일을 만들어야 합니다.아니요쓰기 시 복사합니다. 이것은 으로 이루어집니다 chattr +C. 파일에 무엇이든 쓰기 전에 이 속성을 설정하는 것이 중요합니다.

truncate -s 0 swapfile
chattr +C swapfile
fallocate -l 2G swapfile
chmod 0600 swapfile
mkswap swapfile
swapon swapfile

/etc/fstab이 항목을 사용하여 다음에 추가하세요.

/path/swapfile        none        swap        defaults      0 0

로그인해서 찾았어요우수한 재료.

답변3

확립된수락된 답변설명 포함: 에서 인용됨교환(8):

구멍이 있는 파일

    커널의 스왑 파일 구현은 파일 시스템의 도움 없이 파일에 직접 쓸 수 있을 것으로 예상합니다. 이는 Btrfs와 같은 파일 시스템의 취약한 파일이나 쓰기 중 복사 파일에 대한 문제입니다.

    cp(1) 또는 truncate(1)와 같은 명령은 취약한 파일을 생성합니다. 이러한 파일은 swapon에 의해 거부됩니다.

    fallocate(1)에 의해 생성된 사전 할당된 파일은 파일 시스템에 따라 취약한 파일로 해석될 수도 있습니다.  Linux 4.18부터 XFS는 사전 할당된 스왑 파일을 지원합니다.

    스왑 파일을 생성하는 가장 이식 가능한 솔루션은 dd(1) 및 /dev/zero.

이탤릭체는 모든 것을 설명하는 것 같습니다. 아쉽게도 상세한 출력이 있음에도 불구하고 swapon실패 이유(취약한 파일)에 대한 언급은 없습니다.

답변4

이것은 매우 오래된 질문이지만 방금 같은 문제에 직면했고 여기서 논의한 내용은 나에게 도움이 되지 않았지만 btrfs 파일 시스템 매뉴얼 페이지에서 이것을 발견했습니다.

mkswapfile [-s size] file
       Create a new file that's suitable and formatted as a swapfile. Default size is  2GiB,  fixed  page
       size 4KiB, minimum size is 40KiB.

       A  swapfile  must  be  created  in a specific way: NOCOW and preallocated.  Subvolume containing a
       swapfile cannot be snapshotted and blocks of an activated swapfile cannot be balanced.

       Swapfile creation can be achieved by standalone commands too. Activation needs to be done by  com‐
       mand  swapon(8). See also command btrfs inspect-internal map-swapfile and the Swapfile feature de‐
       scription.

       NOTE:
          The command is a simplified version of 'mkswap', if you want to set label, page size, or  other
          parameters please use 'mkswap' proper.

       Options

       -s|--size SIZE
              Create swapfile of a given size SIZE (accepting k/m/g/e/p suffix).

       -U|--uuid UUID
              specify  UUID  to use, or a special value: clear (all zeros), random, time (time-based ran‐
              dom)

그래서 나는 이렇게 했습니다:

sudo btrfs filesystem mkswapfile --size 12g --uuid clear /swapfile/path

그리고 효과도 아주 좋아요

분명히 귀하의 파일 시스템은 btrfs여야 합니다. 이는 제가 정확하게 기억한다면 Fedora의 기본 파일 시스템입니다.

관련 정보