2009-04-08 6 views
8

리눅스 파일 시스템에서 루프를 만드는 방법은 무엇입니까? Linux 파일 시스템의 DY (directed acyclic graph) 속성을 깨고 싶습니다. 이것이 가능한가? 우분투에 스크래치 박스 크로스 컴파일러를 설치했을 때이 상태를 한번 봤습니다.리눅스 파일 시스템에서 루프 만들기

지금 어떻게 재현해야할지 모르겠다./경로 /로가/장치를 마운트 할 파티션 또는 디스크 이미지의 경로 및/경로 중 하나의 경로입니다

+0

이 질문에 대한 나의 해석은 모든 사람들이 대답하는 것 같지 않다 ... 나는 OP가 무한 재귀 적 디렉토리 구조를 원한다고 생각하고있다. 이것은 하드 링크와 symlink를 사용하여 만들 수 있지만 idk로 마운트하는 방법은 가능하므로 응답하지 않을 것입니다. – rmeador

+0

"전통적인"UNIX 파일 시스템에서 디렉토리를 하드 링크 할 수 없습니다. – ephemient

+0

님이 질문을 수정했습니다. – suresh

답변

6

어떤 다른 조치가 이미 설정하는 방법 대답했다 :

에서 장치/이미지를 마운트 할 수도 있습니다 (FAT16/FAT32를 사용)과 같이 파일 시스템의 유형을 포함해야 루프백 장치를 사용하여 마운트를 늘리십시오. 그러나 특별히 bind 마운트에 대해 물었습니다. 조금 다르다. 바인드 마운트를 사용하려면 mount 명령에 --bind을 지정하기 만하면됩니다. 예를 들어 :

mount --bind /original/path /new/path 

/new/path 통해서도 접근 할 수/original/path에서 파일 시스템 위치에 액세스 할 수 있도록합니다. 이것은 이 아니며 다음 마운트 포인트임을 유의하십시오! 예를 들어, 나는 다음과 같은 마운트 지점이 있다고 가정

/something 
/something/underneath/that 

지금 나는 bind/something 마운트 할 가정 :

mount --bind /something /new_something 

내가 경로 /new_something/myfile를 통해 /something/myfile 같은 파일에 액세스 할 수 있습니다. 하지만 이 아닌/new_something/underneath/that/otherfile 경로를 통해 /something/underneath/that/otherfile과 같은 파일에 액세스 할 수 있습니다. 각 파일 시스템에 대해 별도의 bind 마운트를 설정해야합니다.

mount --rbind /something /new_something 

한 가지주의에 대한 rbind 마운트 : 당신은 비교적 새로운 커널이있는 경우 또는, 당신은 후속의 마운트 지점을 rbind 마운트를 사용할 수있는 rbind이 후 그들은 파일 시스템이 장착 된 경우를 처리하지 않습니다 설정.

/something 

은 그럼 위와 같이 내 rbind을 설정하고 나는 /something/underneath/that 마운트 : 즉, 나는이 같은 마운트 있다고 가정하는 rbind이 마술처럼 새가 rbind 위치를 볼 수 마운트하지 않습니다. 또한 커널의 버그로 인해 rbind 마운트를 마운트 해제 할 수 없음을 알고 있어야합니다.

또한, 단지 경우에 당신은 "나는 마운트 (2) 시스템 호출을 사용하여 바인드 마운트을 설정하는 방법은 무엇입니까?"의미 : 당신이 정기적 bind 마운트에 대한 mount(2)를 호출 할 때 (mount.h에서 정의 됨) MS_BIND 플래그를 지정해야합니다 . rbind 마운트의 경우 MS_BIND 및 문서 번호 MS_REC 플래그 (linux/fs.h에 정의 됨)를 지정해야합니다.모든 해답은 지금까지 bind mounts를 사용하여 루프를 만드는 루프백 장치에 장착하고,하지에 대한처럼 도움이

희망,

에릭 Melski

-1
mount /path/to/device /path/to/mount/location -o loop 

/에// 위치 폴더 당신의 경로 마운트

mount /path/to/device /path/to/mount/location -o loop -t vfat 
1

는 것 같습니다.

당신은 아마 발견 한 것처럼

,

$ mkdir -p test/test 
$ mount --bind test test/test 

은 당신이 더 test/test/test에 액세스하지 않으며, 할 수 있습니다. 심지어

$ mount --rbind test test/test 

작품, 재귀 바인드 마운트 효과적으로 소스에 기존의 마운트를 발견하고 대상에서 그들을 결합 통과하기 때문이다.

바인드 마운트가 마운트 지점을 넘지 않기 때문에 요청한 사항을 수행 할 수 없습니다. 파일 시스템 루프를 실제로 시뮬레이트하고 싶다면 localfs과 같은 가상 바인딩 마운트를 사용해보십시오. 나는 나 자신을 시험해 보지 않았다. 스스로 제공된 파일 시스템을 읽을 때 잠길 수있다. 지금 막 NFS 트리를 crossmnt으로 내보내고 마운트하려고했지만 비슷한 이유로 실패합니다.

-1

또한 처음부터 만들 수 있습니다 :

먼저 이미지 파일을 생성하고이

dd if=/dev/zero of=/tmp/loop.img bs=1024k count=$IMG_SIZE 

다음으로, 당신의 선택의 FS 유형을 사용하여 유효한 파티션 만들기 초기화를

mkfs.ext3 -F /tmp/loop.img 

마운트 새로운 이미지

mkdir -p /mnt/image 
mount /tmp/loop.img /mnt/image -o loop 
,536,

이제 새 이미지에 파일 및 디렉토리를 만들거나 복사 할 수 있습니다.

즐겁게 보내십시오,

Jeach!

+0

이 질문에 답할 수 없습니다 ... – hintss

관련 문제