lxc运行时如何找到rootfs磁盘文件

lxc运行时如何找到rootfs磁盘文件

这是一个可怕的错误,我删除了 lxc 的磁盘文件。

我知道当文件被其他进程打开时,linux rm 不会删除它。所以我登录了那个 lxc 的 ssh,它正在运行,并且该磁盘中的文件仍然存在。这意味着磁盘文件仍然在某个地方。

我发现这个问题。它告诉我找到正在打开文件的进程的 fd。

所以我检查了 lxc 的配置

arch: amd64
cores: 2
features: mount=nfs
hostname: frp
memory: 1024
mp0: /opt/nfs,mp=/opt
net0: name=eth0,bridge=vmbr0,gw=192.168.0.1,hwaddr=2A:CA:4F:D5:86:12,ip=192.168.0.205/24,type=veth
onboot: 1
ostype: debian
rootfs: local:205/vm-205-disk-0.raw,size=4G
swap: 0

我尝试找到该 lxc 的进程:

# ps aux | grep lxc-start
root       27462  0.0  0.0   5024  2560 ?        Ss   Sep27   3:18 /usr/bin/lxc-start -F -n 205

和 lsof

# lsof -p 27462
COMMAND     PID USER   FD      TYPE             DEVICE SIZE/OFF       NODE NAME
lxc-start 27462 root  cwd       DIR                8,4     4096          2 /
lxc-start 27462 root  rtd       DIR                8,4     4096          2 /
lxc-start 27462 root  txt       REG                8,4  1121592    1611382 /usr/bin/lxc-start
lxc-start 27462 root  mem       REG                8,4  1922136    1572889 /usr/lib/x86_64-linux-gnu/libc.so.6
lxc-start 27462 root  mem       REG                8,4   125312    1572875 /usr/lib/x86_64-linux-gnu/libgcc_s.so.1
lxc-start 27462 root  mem       REG                8,4    47288    1573323 /usr/lib/x86_64-linux-gnu/libcap.so.2.66
lxc-start 27462 root  mem       REG                8,4    80600    1577578 /usr/lib/x86_64-linux-gnu/libapparmor.so.1.8.4
lxc-start 27462 root  mem       REG                8,4   129312    1575206 /usr/lib/x86_64-linux-gnu/libseccomp.so.2.5.4
lxc-start 27462 root  mem       REG                8,4  1116504    1611390 /usr/lib/x86_64-linux-gnu/liblxc.so.1.7.0
lxc-start 27462 root  mem       REG                8,4   210968    1572885 /usr/lib/x86_64-linux-gnu/ld-linux-x86-64.so.2
lxc-start 27462 root    0r      CHR                1,3      0t0          5 /dev/null
lxc-start 27462 root    1w      CHR                1,3      0t0          5 /dev/null
lxc-start 27462 root    2w      REG               0,23        0       1972 /run/pve/ct-205.stderr
lxc-start 27462 root    3u     unix 0x0000000084bdb3e3      0t0     149082 @/var/lib/lxc/205/command type=STREAM (LISTEN)
lxc-start 27462 root    4u      DIR               0,26        0      10771 /sys/fs/cgroup/lxc/205
lxc-start 27462 root    5u  a_inode               0,14        0       1060 [signalfd]
lxc-start 27462 root    6u      DIR               0,51        0          1 /dev/pts
lxc-start 27462 root    7u      DIR               0,26        0          1 /sys/fs/cgroup
lxc-start 27462 root    8u  a_inode               0,14        0       1060 bpf-prog
lxc-start 27462 root    9u      CHR                5,2      0t0          2 /dev/pts/ptmx
lxc-start 27462 root   10r      REG                7,0        0       1633 /var/lib/lxc/205/rootfs/.lxc_keep (deleted)
lxc-start 27462 root   11u  a_inode               0,14        0       1060 [eventpoll:3,5,13,26]
lxc-start 27462 root   12u  a_inode               0,14        0       1060 [eventpoll]
lxc-start 27462 root   13u     unix 0x0000000067bfd7d3      0t0     150861 @/var/lib/lxc/205/command type=STREAM (CONNECTED)
lxc-start 27462 root   14u      DIR               0,26        0      10838 /sys/fs/cgroup/lxc/205/ns
lxc-start 27462 root   15u      DIR               0,26        0      10771 /sys/fs/cgroup/lxc/205
lxc-start 27462 root   16u  a_inode               0,14        0       1060 [pidfd:27485]
lxc-start 27462 root   17r      REG                0,4        0 4026532464 mnt
lxc-start 27462 root   18r      REG                0,4        0 4026532467 pid
lxc-start 27462 root   19r      REG                0,4        0 4026532465 uts
lxc-start 27462 root   20r      REG                0,4        0 4026532466 ipc
lxc-start 27462 root   21r      REG                0,4        0 4026532469 net
lxc-start 27462 root   22r      REG                0,4        0 4026532468 cgroup
lxc-start 27462 root   23u      CHR              136,1      0t0          4 /dev/pts/1
lxc-start 27462 root   24u      CHR                5,2      0t0          2 /dev/pts/ptmx
lxc-start 27462 root   25u      CHR              136,2      0t0          5 /dev/pts/2
lxc-start 27462 root   26u      CHR                5,2      0t0          2 /dev/pts/ptmx
lxc-start 27462 root   27u      CHR              136,0      0t0          3 /dev/pts/0

我看不到任何指向磁盘文件的 fd:vm-205-disk-0.raw,并且 /proc//fd 也无济于事

# ls -l /proc/27462/fd
total 0
lr-x------ 1 root root 64 Sep 27 15:08 0 -> /dev/null
l-wx------ 1 root root 64 Sep 27 15:08 1 -> /dev/null
lr-x------ 1 root root 64 Oct  7 08:55 10 -> '/var/lib/lxc/205/rootfs/.lxc_keep (deleted)'
lrwx------ 1 root root 64 Oct  7 08:55 11 -> 'anon_inode:[eventpoll]'
lrwx------ 1 root root 64 Oct  7 08:55 12 -> 'anon_inode:[eventpoll]'
lrwx------ 1 root root 64 Oct  7 08:55 13 -> 'socket:[150861]'
l--------- 1 root root 64 Oct  7 08:55 14 -> /sys/fs/cgroup/lxc/205/ns
l--------- 1 root root 64 Oct  7 08:55 15 -> /sys/fs/cgroup/lxc/205
lrwx------ 1 root root 64 Oct  7 08:55 16 -> 'anon_inode:[pidfd]'
lr-x------ 1 root root 64 Oct  7 08:55 17 -> 'mnt:[4026532464]'
lr-x------ 1 root root 64 Oct  7 08:55 18 -> 'pid:[4026532467]'
lr-x------ 1 root root 64 Oct  7 08:55 19 -> 'uts:[4026532465]'
l-wx------ 1 root root 64 Sep 27 15:08 2 -> /run/pve/ct-205.stderr
lr-x------ 1 root root 64 Oct  7 08:55 20 -> 'ipc:[4026532466]'
lr-x------ 1 root root 64 Oct  7 08:55 21 -> 'net:[4026532469]'
lr-x------ 1 root root 64 Oct  7 08:55 22 -> 'cgroup:[4026532468]'
lrwx------ 1 root root 64 Oct  7 08:55 23 -> /dev/pts/1
lrwx------ 1 root root 64 Oct  7 08:55 24 -> /dev/pts/ptmx
lrwx------ 1 root root 64 Oct  7 08:55 25 -> /dev/pts/2
lrwx------ 1 root root 64 Oct  7 08:55 26 -> /dev/pts/ptmx
lrwx------ 1 root root 64 Oct  7 08:55 27 -> /dev/pts/0
lrwx------ 1 root root 64 Sep 27 15:08 3 -> 'socket:[149082]'
l--------- 1 root root 64 Sep 27 15:08 4 -> /sys/fs/cgroup/lxc/205
lrwx------ 1 root root 64 Oct  7 08:55 5 -> 'anon_inode:[signalfd]'
l--------- 1 root root 64 Oct  7 08:55 6 -> /dev/pts
l--------- 1 root root 64 Oct  7 08:55 7 -> /sys/fs/cgroup
lrwx------ 1 root root 64 Oct  7 08:55 8 -> anon_inode:bpf-prog
lrwx------ 1 root root 64 Oct  7 08:55 9 -> /dev/pts/ptmx

我甚至检查了 pstree

# pstree -p 27462
lxc-start(27462)───systemd(27485)─┬─agetty(27654)
                                  ├─agetty(27659)
                                  ├─agetty(28399)
                                  ├─cron(27637)
                                  ├─dbus-daemon(27638)
                                  ├─frp(30957)─┬─{frp}(30962)
                                  │            ├─{frp}(30963)
                                  │            ├─{frp}(30964)
                                  │            ├─{frp}(30965)
                                  │            ├─{frp}(239046)
                                  │            └─{frp}(359586)
                                  ├─master(27820)─┬─pickup(843315)
                                  │               └─qmgr(27822)
                                  ├─rpcbind(27634)
                                  ├─rsyslogd(27640)─┬─{rsyslogd}(27650)
                                  │                 ├─{rsyslogd}(27651)
                                  │                 └─{rsyslogd}(27652)
                                  ├─sshd(27669)───sshd(870247)───sshd(870386)───bash(870387)
                                  └─systemd-journal(27580)

但是它们都没有打开vm-205-disk-0.raw。

那么我在哪里可以找到哪个进程正在打开 vm-205-disk-0.raw?任何建议都将不胜感激。

相关内容