질문
가짜 블록 장치(대용량 파일/디스크 이미지 사용)를 포맷되지 않은 합법적인 디스크로 생성하고 마운트하는 방법은 무엇입니까?
배경 이야기
설정하려고 하는데자동차그리고세팔로스포린(분산 스토리지 시스템) 내 취미 kubernetes 클러스터에 있습니다.Ceph에는 포맷되지 않은 블록 장치가 필요합니다.필요에 따라 분할되어 저장용으로 사용됩니다.
사용 가능한 여유 디스크가 없어서 다음과 같이 생각했습니다. 루프백 장치를 만들어서 사용하면 어떨까요?
내 호스트 OS 디스크에는 충분한 여유 공간이 있으므로 그 안에 큰 파일을 만들고 루프백 장치로 마운트할 수 있어야 합니다.
여기에는 두 가지 문제가 있습니다(제가 이해한 바에 따르면).
- 루프백 장치를 마운트하려면 일종의 파일 시스템으로 포맷해야 합니다. Ceph에서는 사용할 수 없습니다.포맷되지 않은 블록 장치가 필요합니다.
- 루프백 장치는 블록 장치로 간주되지 않는 것 같습니다.세프 문서
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
루프 장치를 생성하면 됩니다. 루프 장치는 블록 장치이며 출력에 표시되므로 lsblk
Ceph에서 사용할 수 있어야 합니다.
$ 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
...