Linux에서 RAM 디스크를 마운트하지 않고 생성하고 연결하는 방법은 무엇입니까? 또한 /dev/sdb
RAM 디스크에 할당된 장치 이름을 어떻게 찾을 수 있나요? 마지막으로 RAM 디스크를 분리(마운트 해제)하는 방법은 무엇입니까?
RAM 디스크를 생성하고 연결하고 싶지만 마운트하고 싶지 않습니다. 나는 그것을 제거하고 싶다.
Mac OS X에서 다음 명령은 100MiB RAM 디스크를 마운트하지 않고 생성하고 연결합니다.
hdiutil attach -nomount ram://204800
# In terms of the number of 512-byte sectors,
# 100 MiB is equivalent to 204800 sectors.
성공적으로 완료되면 위 명령은 /dev/disk1
RamDisk에 할당된 것과 같은 장치 이름을 반환합니다. 그러나 나중에 장치 이름을 잊어버린 경우 다음 OSX 명령(및 GUI 응용 프로그램 디스크 유틸리티)을 사용하여 장치 이름을 찾을 수 있습니다.
# Displays the list of attached disks.
diskutil list
# Displays the details of a specific disk.
diskutil info /dev/disk1
마지막으로 Mac OS X에서 RAM 디스크를 분리하려면 마운트 여부에 관계없이 다음 명령(GUI 응용 프로그램 디스크 유틸리티 포함)이 작동합니다. 설치된 경우 이 명령은 먼저 자동으로 제거합니다.
hdiutil detach /dev/disk1
Linux에서 위의 세 가지 작업을 어떻게 구현합니까? (내가 요청하는 작업이 배포판에 종속적일 수 있다면 Debian 9에 특히 관심이 있습니다.)
RAM 디스크를 마운트하고 싶지 않은 이유 중 하나는 dd
파일 시스템을 우회하여 디스크(또는 장치)에 직접 읽고 쓰는 명령을 실험해보고 싶기 때문입니다. 실제로 연속 기입 모드에서는 dd
장치의 볼륨을 마운트 해제해야 하지만 장치는 연결된 상태로 유지되고 꺼내지지 않습니다.
Linux에서 다음 mount
명령은 100MiB RAM 디스크를 생성, 연결 및 마운트합니다.
mkdir /mnt/ramdisk
mount -t tmpfs -o size=100m tmpfs /mnt/ramdisk
그런데 "설치" 부분을 비활성화하는 방법을 모르겠습니다.
그건 그렇고, Mac OS X에서 RAM 디스크를 생성하고 연결하는 것 외에 마운트하는 방법을 궁금해하는 사람들을 위해 여기에 명령이 있습니다.
diskutil erasevolume HFS+ "RamD" $(hdiutil attach -nomount ram://204800)
# 204800 is the number of 512-byte sectors,
# resulting in 100 MiB.
#
# "RamD" is a volume name or label.
#
# "erasevolume" means to format the volume,
# but it does not necessarily write zeros.
답변1
귀하의 경우 문제는 tmpfs용으로 마운트할 수 있는 RAM 기반 블록 장치가 없다는 것입니다. 일반적으로 Linux가 파일 시스템에서 읽을 때 파일은 블록 장치(보통 하드 디스크 파티션)에 있습니다. 디스크(백업 저장소)에서 파일을 읽으면 데이터가 RAM에 캐시됩니다.
Tmpfs는 백업 저장소를 차단합니다. 즉, 캐시에 쓰고 캐시에서 작성된 데이터를 다시 읽습니다. 이는 액세스 가능한 dd
블록 장치가 없음을 의미합니다 .
필요에 따라 파일에 저장된 디스크 이미지를 파일 시스템으로 마운트할 수 있는 루프 장치를 사용하는 것이 좋습니다. 예를 들어:
losetup /dev/loop0 filesys.image
그 중에는 filesys.image
파일 시스템 이미지가 포함된 파일이 있습니다. 이렇게 하면 파일을 백업 저장소로 사용하는 블록 장치 /dev/loop0
처럼 보입니다 . filesys.image
바라보다 man losetup
.