/tmp에 zram 장치를 마운트할 수 없음(부팅 문제)

/tmp에 zram 장치를 마운트할 수 없음(부팅 문제)

zram 장치를 생성하고 이를 ext4로 포맷한 후 마지막으로 zram을 /tmp에 마운트하는 간단한 스크립트가 있습니다.

#!/bin/bash

# create zram with size 1.5G
# $zram_dev is created device path (eg. /dev/zram1)
zram_dev=$(/usr/sbin/zramctl -f -s 1536M)

# format it to ext4
yes | /usr/sbin/mkfs.ext4 $zram_dev 

# mount it on /tmp
/usr/bin/mount $zram_dev /tmp

수동으로 실행하면 작동됩니다. 하지만 분명히 로그인할 때마다 실행하고 싶지는 않습니다.

스크립트를 루트 crontab에 넣고 시스템을 재부팅했는데 그래픽 인터페이스를 얻을 수 없었고 crontab에서 제거했는데 모든 것이 잘 작동했습니다.

마지막으로 마운트 디렉터리를 /zram과 같은 다른 디렉터리로 변경하고 시스템을 재부팅했는데 놀랍게도 시스템이 나타났습니다. (zram 장치는 /zram에 생성 및 설치됩니다.)

systemd 서비스를 사용하여 자동화를 시도했지만 동일한 결과를 얻었음을 언급해야 합니다. 왜 /tmp에 zram 장치를 마운트할 수 없는지 궁금합니다.

운영 체제: Linux fedora 5.17.5-300.fc36.x86_64 #1 SMP PREEMPT x86_64 x86_64 x86_64 GNU/Linux

답변1

또한 /mout/ "open" zram-swap(기본적으로 /var에 있는 것으로 보임)에 수동으로 액세스하는 방법을 스스로에게 묻고 있습니다. btw와 같은 이유이지만 이에 대한 정보를 찾지 못했습니다. 아직 그러나.

하지만 제가 말할 수 있는 것은: afaik, zramfs-thing이 압축되어 있고 어쨌든 전체 바이너리로 (거의?) 표시될 수 없다고 상상해보세요... 그래서 당신이 그것에 접근할 수 있을지 의심스럽습니다. 이것은 일반적인 ext4 파티션입니다. 이것은 왜 "포맷"할 수 있고 시스템이 "이 이상한 것"을 설치하는 방법을 모르는 이유를 설명합니다. (/boot를 제거하고 부수거나 "apt purge" 패키지를 su(do)할 수도 있습니다. 그렇지 않으면 시스템이 실패합니다. 부팅하거나 아무것도 하지 마세요... 어쨌든 루트가 할 수 있는 모든 것을 삭제할 수 있습니다("#rm -r"-ing /etc/, /bin, /sbin, 이러한 매우 중요한 파일은 .그러나 하나만(단 하나 질문)로그인되지 않은 경우및/또는 시스템이 실행 중입니다. 그런 다음 -> "시작 문제" 이전에 문제가 없었다면 닫습니다. 더 중요할수록 메모리/RAM에 더 일찍 로드되는 것이 좋다고 생각합니다. 이 경우에 내가 뭔가를 "연주"하여 모든 것 또는 거의 모든 것을 엉망으로 만들었다고 생각하지 못할 것입니다(주제에서 약간 벗어남: 다른 드라이브 및/또는 일부 네트워크 공간/클라우드에 백업, 후자가 가장 중요함). 실제로 zip/tar/rar 및 rsync/cp(버전이 지정된 이름 또는 확인 없이 덮어쓰기/교체) 외에도 KDE에는 systemsettings5데비안 11 이후 예약 및 정기 백업을 위한 것이 있습니다. GUI에 따르면 간단한 것을 의미합니다. 그래픽 사용자 인터페이스, 아무도 멋진 백업 도구가 필요하지 않습니다. # crontab -e단 한 줄의 프로그램이라도 시작되면 데이터를 저장할 수 있습니다. 그렇지 않으면 끔찍하게 실패할 것입니다(항상 (!!) crontab -e"-e" 실행을 사용하지 않으면 cronta가 재설정됩니다!). 루트로도 포맷/변경이 가능합니다...

어쨌든 /etc/fstab 및 마운트(/tmp 이상)를 위해 직접 작성하거나 수정한 기타 스크립트(모두는 아니더라도 관련 행)를 게시하여 사람들이 예 답변을 찾을 수 있으면 찾을 수 있도록 하는 것이 좋습니다. , 그러면 나보다 경험이 많은 사람이 당신을 도울 수 있을 것입니다.

또한 보기 $ man zramctl및 실행 $ df -h( $ mount후자의 두 출력은 솔루션에 유용할 수 있음). 이제 다음 메시지가 나타납니다.

    # sudo swapon --all
    # sudo zramctl
    NAME       ALGORITHM DISKSIZE  DATA COMPR TOTAL STREAMS MOUNTPOINT
    /dev/zram0 lz4             2G 14.7M  1.7M  2.1M      12 [SWAP]
    
    # sudo swapon --show
    NAME       TYPE      SIZE USED PRIO
    /dev/dm-2  partition 980M   0B   -2
    /dev/zram0 partition   2G  48M   90

글쎄, mountpoint "[SWAP]"..."전통적인" 디스크 스왑을 사용하면 수동으로 액세스할 수 있다는 사실을 기억하지 마십시오. 프로그램이 시스템의 (zram-)swap(-partition)에서 I/O를 수행하거나 심지어 커널이 무엇을 쓰고 읽는지, 그리고 스왑 장치 내 위치를 관리하는 것 같습니다. 찾을 수 없지만 내 zram0이 기본 크기가 몇 달 전의 /var(subdir...?) 내부 파일이라고 확신합니다. dm-2는 디스크 스왑이며 닫혀 있으므로 비어 있습니다. 매뉴얼 페이지에서 알 수 있듯이 zram#-s는 어쨌든 블록 장치이자 디스크 스왑 장치이기도 합니다. 적어도 이름(dm-2, 디스크 매퍼 #2를 나타냄)에서 알 수 있습니다.

글쎄요, 저는 우리가 추구하는 해결책을 찾을 수 있을지 의심스럽습니다. 하지만 가능하다면 나도 관심이 있어요. 제가 여러분에게 어떤 생각, 아이디어, 영감을 줄 수 있기를 바랍니다…

관련 정보