losstup -a에서 길이 제한을 제거하는 방법

losstup -a에서 길이 제한을 제거하는 방법

루프 장치를 보기 위해 losstup -a를 사용하고 있지만 길이 제한(62자)이 있습니다. 그래서 실제로 어떤 루프 장치를 원하는지 결정할 수 없습니다.

전임자:

[root@r7byach]# losetup -a 
/dev/loop0: [fc03]:33030504 (/storage5_vol1/6/ABCD116476-linux-ubuntu-10_04-64b-base-07150/*)
/dev/loop1: [0015]:4933 (/storage4/5/ABCD12345-linux-centos-5-64b-base-86836/hdc)

/dev/loop1을 사용하여 출력을 얻을 수 있습니다.

losetup -a|grep diskPath |cut -f1 -d:|cut -f3 -d/

하지만 이름이 완전하지 않기 때문에 Loop0에서 장치를 가져올 수 없습니다.

크기 제한에 관계없이 루프 장치를 얻는 방법은 무엇입니까?

답변1

커널 2.6.37부터 기본 파일의 이름을 검색하여 이를 수행할 수 있습니다(길이 제한 없음) /sys/block/loopX/loop/backing_file. 이 losetup명령은 util-linux 2.19부터 이 방법을 지원합니다.

답변2

최신 커널(≥ 2.6.37)은 다음을 참조하세요.피터 유젤의 답변. 이전 커널에서는 이러한 길이 제한이 내재되어 있습니다.

strace는 losetup -a이름을 얻어서 보여줍니다.LOOP_GET_STATUS호출하는 ioctlloop_get_status_old, 이는 다음에서 데이터를 가져옵니다.struct loop_info. 이 커널 데이터 구조의 이름 필드는 다음으로 제한됩니다.LO_NAME_SIZE= 64바이트. ( loop_get_status64및 도 있지만 struct loop_info64동일한 제한이 있습니다.) 따라서 제한은 내재되어 있으며 더 잘할 수 없습니다.

그럼에도 불구하고 이 데이터 구조는 기본 장치나 파일의 원래 이름을 표시하지만 이름을 바꾸거나 삭제할 수도 있으며 이는 losetup.

예를 들어 출력에는 파일의 losetup파일 시스템 식별자( ) 및 inode( )가 표시됩니다. st_dev()로 시작하는 줄을 보면 파일 시스템의 블록 장치를 찾을 수 있습니다. 그런 다음 에서 해당 블록 장치의 마운트 지점을 찾으세요. 그런 다음 파일 찾기를 실행하십시오. 예, 복잡합니다. 아니요, 더 빠른 방법은 없습니다.st_ino[fc03]:33030504/proc/partitions252 3/proc/mountsfind /mount/point -inum 33030504debugfs일부 파일 시스템 유형의 경우).

관련 정보