합법적인 블록 장치로 전달된 원시(파일 시스템 없음) 루프백 장치를 생성하는 방법은 무엇입니까?

합법적인 블록 장치로 전달된 원시(파일 시스템 없음) 루프백 장치를 생성하는 방법은 무엇입니까?

질문

가짜 블록 장치(대용량 파일/디스크 이미지 사용)를 포맷되지 않은 합법적인 디스크로 생성하고 마운트하는 방법은 무엇입니까?

배경 이야기

설정하려고 하는데자동차그리고세팔로스포린(분산 스토리지 시스템) 내 취미 kubernetes 클러스터에 있습니다.Ceph에는 포맷되지 않은 블록 장치가 필요합니다.필요에 따라 분할되어 저장용으로 사용됩니다.

사용 가능한 여유 디스크가 없어서 다음과 같이 생각했습니다. 루프백 장치를 만들어서 사용하면 어떨까요?

내 호스트 OS 디스크에는 충분한 여유 공간이 있으므로 그 안에 큰 파일을 만들고 루프백 장치로 마운트할 수 있어야 합니다.

여기에는 두 가지 문제가 있습니다(제가 이해한 바에 따르면).

  1. 루프백 장치를 마운트하려면 일종의 파일 시스템으로 포맷해야 합니다. Ceph에서는 사용할 수 없습니다.포맷되지 않은 블록 장치가 필요합니다.
  2. 루프백 장치는 블록 장치로 간주되지 않는 것 같습니다.세프 문서lsblk -f장치가 Ceph에 적합한지 테스트하는 데 사용됩니다 . 장치가 출력에 나타나야 합니다.그리고파일 시스템이 포맷되지 않았습니다.

답변1

losetup당신을 위해 그것을 할 것입니다. 사용하지 않는 루프 장치 /dev/loop0이 있는 경우:

# Make the file
head -c 10240 /dev/zero > /tmp/zeroes
# Use it as a block device
sudo losetup /dev/loop0 /tmp/zeroes
# Remove the device
sudo losetup -d /dev/loop0

답변2

루프백 장치를 마운트하려면 먼저 일종의 파일 시스템으로 포맷해야 합니다.

각 블록 장치를 마운트하려면 포맷해야 합니다. 실제로 블록 장치 자체가 아닌 파일 시스템을 마운트하므로 이는 실제로 의미가 없습니다. 파일이 필요하고 이를 사용하여 losetup -f disk.img루프 장치를 생성하면 됩니다. 루프 장치는 블록 장치이며 출력에 표시되므로 lsblkCeph에서 사용할 수 있어야 합니다.

$ dd if=/dev/zero of=disk.img bs=1M count=100
$ sudo losetup -f disk.img
$ lsblk -f
NAME                   FSTYPE  FSVER  LABEL UUID                                   FSAVAIL FSUSE% MOUNTPOINT
loop0                                                                                             
...

재활용 장비를 사용할 수 없는 경우 다음을 사용할 수 있습니다.대상 명령줄일반 SCSI 드라이브처럼 보이는 블록 장치를 지원하여 더욱 설득력 있는 파일을 만듭니다.

# targetcli /backstores/fileio/ create test disk.img
# targetcli /loopback create
Created target naa.50014050efbb30e0.
# targetcli /loopback/naa.50014050efbb30e0/luns create /backstores/fileio/test

위의 루프 장치에 대해 생성한 것과 동일한 파일을 기반으로 새(가짜) 디스크를 생성합니다.

# lsblk
NAME                                          MAJ:MIN RM   SIZE RO TYPE  MOUNTPOINT
loop0                                           7:0    0   100M  0 loop  
...
sdb                                             8:16   0   100M  0 disk 
...

관련 정보