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로 마운트를 해제한다.