메뉴 닫기

umount가 되지 않는경우 강제 해제하는 방법

Feb 10 10:10:05 localhost kernel: [32859882.942430] EXT4-fs error: 129970 callbacks suppressed
Feb 10 10:10:05 localhost kernel: [32859882.942437] EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: [32859882.956110] EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: EXT4-fs error: 129970 callbacks suppressed
Feb 10 10:10:05 localhost kernel: EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: [32859882.969969] EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: [32859882.983575] EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found
Feb 10 10:10:05 localhost kernel: EXT4-fs error (device dm-0): __ext4_read_dirblock:884: inode #1583141: block 10: comm find: Directory hole found 

사용하던 서버를 확인하던 도중 메세지로그에서 device dm-0에서 파일시스템 에러가 발생하는 부분을 확인하였습니다.
평소 sda, sdb등의 드라이브명은 종종 보았으나 dm-0이라는 드라이브는 자주 보는것이 아니다보니 어느 부분에서 
문제가 생겼는지 확인하기가 조금 어려웠습니다.

[root@localhost ~]# fdisk -l
Disk /dev/sda: 29.8 GiB, 32017047552 bytes, 62533296 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x000db28e

Device    Boot     Start       End   Blocks  Id System
/dev/sda1 *         2048  53946367 26972160  83 Linux
/dev/sda2       53946368  62533295  4293464  82 Linux swap / Solaris

Disk /dev/sdb: 1.8 TiB, 1997998653440 bytes, 3902341120 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 990B90B2-DA2A-4DE5-81D5-E5CFAFF55A61

Device    Start          End   Size Type
/dev/sdb1    34   3902339167   1.8T Microsoft basic data

Disk /dev/mapper/loop0p1: 100 GiB, 107372085248 bytes, 209711104 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

[root@localhost ~]# df -Th

Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs   16G     0   16G   0% /dev
tmpfs               tmpfs      16G     0   16G   0% /dev/shm
tmpfs               tmpfs      16G  1.2M   16G   1% /run
tmpfs               tmpfs      16G     0   16G   0% /sys/fs/cgroup
/dev/sda1           ext4       26G  6.2G   18G  26% /
tmpfs               tmpfs      16G   32K   16G   1% /tmp
/dev/sdb1           ext4      1.8T  993G  746G  58% /backup
/dev/mapper/loop0p1 ext4       99G   21G   73G  23% /backup/vnc/install.mnt

먼저 dm-0 드라이브가 어느부분인지 확인하기위해 마운트가 된 부분을 확인하였습니다.
disk와 df 명령어로 확인하던 도중 평소에는 보지못한 /dev/mapper/loop0p가 마운트 된 부분을
확인 할수 있었습니다. 이게 dm-0이라고 바로 단정지을수는 없지만 확인을 진행해보기로 했습니다.

[root@localhost ~]# umount /dev/mapper/loop0p1 
umount: /backup/vnc/install.mnt: target is busy
(In some cases useful info about processes that use the device is found by lsof(8) or fuser(1).)

loop0p1을 마운트 해제하려하니 target is busy가 발생한 부분을 확인할수있었습니다.

[root@localhost ~]# fuser -cu /dev/mapper/loop0p1
/dev/dm-0:           18339(root)

이대로는 안되겠다 싶어 /dev/mapper/loop0를 누가 사용하는지 확인 하기 위해 

fuser -cu 명령어를 이용하여 사용자를 확인하였습니다. 자세히보면 /dev/mapper/loop0p1은

위에 나오는 파일시스템 에러 메세지에 나온 dm-0가 loop0p1인것을 확인할수 있었습니다.

[root@localhost ~]# fuser -ck /backup/vnc/install.mnt
/backup/vnc/install.mnt: 28503

[root@localhost ~]# umount /backup/vnc/install.mnt
[root@localhost ~]# df -Th
Filesystem          Type      Size  Used Avail Use% Mounted on
devtmpfs            devtmpfs   16G     0   16G   0% /dev
tmpfs               tmpfs      16G     0   16G   0% /dev/shm
tmpfs               tmpfs      16G  1.2M   16G   1% /run
tmpfs               tmpfs      16G     0   16G   0% /sys/fs/cgroup
/dev/sda1           ext4       26G  6.2G   18G  26% /
tmpfs               tmpfs      16G   32K   16G   1% /tmp
/dev/sdb1           ext4      1.8T  993G  746G  58% /backup

fuser -ck 명령어를 이용하여 디렉토리를 지정한뒤 사용자를 강제 다운되게 한후 
umount를 시도하였더니 아까와는 달리 에러 메세지는 나오지 않았습니다.

위의 내용은 저런 내용이 있구나라며 참고하시면 될것같으며
만약 마운트가 정상적으로 해제가 안된다면 아래와 같이 진행하시면 될것같습니다.

1. fuser -cu 로 사용자를 확인한다.
2. fuser -ck 로 연결되어있는 프로세스를 강제종료시킨다.
3. umount로 마운트를 해제한다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 항목은 *(으)로 표시합니다