[Linux] 루프백 장치(Loopback Device)의 I/O error 조치 방법
오늘 syslog를 점검하고 있는데, Oracle DB서버에서 아래와 같은 오류가 발생했습니다. Gemini에게 물어보니 “루프백 저장 장치(/dev/loop0)에서 데이터를 읽거나 쓰는 요청(I/O Request)을 처리하는 도중 오류가 발생”했음을 의미한다고 합니다. 그래서 오늘은 루프백 장치(Loopback Device)에 대해서 알아보고, 오류 조치 방법에 대해서도 함께 알아보겠습니다.
kernel: <3>kern(0).err(3) print_req_error: I/O error, dev loop0, sector 1872"
- 루프백 장치의 개념
- 루프백 장치의 I/O error 조치 절차
1. 루프백(Loopback) 장치의 개념
루프백 장치는 파일을 디스크 드라이브처럼 사용할 수 있도록 해주는 가상의 장치로, loop 커널 모듈이 메모리에 로드되어야 사용할 수 있습니다(lsmod | grep loop). 실제 하드웨어가 아니라 소프트웨어적으로 생성된 장치로, 특정 파일 시스템 이미지 파일을 마치 실제 디스크 블록 장치(dev/sda1 같은)인 것처럼 시스템에 마운트하여 사용할 수 있게 해줍니다. 아래와 같은 절차로 사용됩니다.
- 사용자가 .iso 파일이나 .img 파일을 가지고 있습니다.
mount -o loop /path/to/image.iso /mnt/iso명령을 실행합니다.- 커널은 이 .iso 파일을 디스크처럼 인식하는 가상 장치 /dev/loop0을 생성합니다.
- 사용자는 /mnt/iso 디렉토리에 접근하여 디스크 드라이브처럼 .iso 파일의 내용을 읽을 수 있습니다.
cat /etc/mtab | grep loop0명령을 실행하면 아래와 같이 마운팅 정보를 확인할 수 있습니다.
/dev/loop0 /mnt/iso iso9660 ro,relatime,nojoliet,check=s,map=n,blocksize=2048 0 0
가상 장치는 /dev/loop0..n의 순서대로 생성되며 losetup -a 명령을 사용하여 가상 장치가 어떤 파일을 마운트하고 있는지 확인할 수 있습니다.
$ losetup -a /dev/loop0: [0000]:123456 (/path/to/image.iso)
2. 루프백 장치의 I/O error 조치 절차
losetup -a명령을 사용하여 /dev/loop0 장치가 어떤 파일(/path/to/image.iso)을 마운트하고 있는지 확인합니다.ls -l /path/to/image.iso명령을 사용하여 해당 iso 파일이 존재하는지 확인합니다.cat /etc/mtab | grep loop0명령을 사용하여 마운팅 포인트(/mnt/iso)를 확인합니다.umount /mnt/iso명령을 사용하여 루프백 장치를 언마운트합니다.losetup -d /dev/loop0명령을 실행하여 루프백 장치와 iso 파일을 분리합니다.(선택적)
대부분의 경우 umount가 성공하면 커널이 losetup -d 역할까지 자동으로 처리하므로, 거의 실행할 필요가 없습니다.$ losetup -d /dev/loop0 losetup: /dev/loop0: detach failed: No such device or address
- iso 파일의 무결성을 검사한 후 다시 마운트하여 오류가 재현되는지 확인합니다.
