アクセスできないサーバーで仮想マシンを使用しており、ファイルシステムを読み取り専用モードでマウントしました。
# dmesg
....
[2.535658] EXT4-fs (vda): Couldn't remount RDWR because of unprocessed orphan inode list. Please umount/remount instead
だから私は次を実行しようとしています。
# e2fsck -f /dev/vda
e2fsck 1.42.9 (28-Dec-2013)
/dev/vda has unsupported feature(s): metadata_csum
e2fsck: Get a newer version of e2fsck!
出力df
:
/dev/root 41022688 37964956 944196 98% /
devtmpfs 4084008 0 4084008 0% /dev
tmpfs 4085752 0 4085752 0% /dev/shm
tmpfs 4085752 397012 3688740 10% /run
tmpfs 4085752 0 4085752 0% /sys/fs/cgroup
tmpfs 817152 0 817152 0% /run/user/0
tmpfs 817152 0 817152 0% /run/user/1000
出力mount
:
/dev/vda on / type ext4 (ro,relatime,stripe=8191,data=ordered)
devtmpfs on /dev type devtmpfs (rw,relatime,size=4084008k,nr_inodes=1021002,mode=755)
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
tmpfs on /dev/shm type tmpfs (rw,nosuid,nodev)
devpts on /dev/pts type devpts (rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000)
tmpfs on /run type tmpfs (rw,nosuid,nodev,mode=755)
tmpfs on /sys/fs/cgroup type tmpfs (ro,nosuid,nodev,noexec,mode=755)
cgroup on /sys/fs/cgroup/systemd type cgroup (rw,nosuid,nodev,noexec,relatime,xattr,release_agent=/usr/lib/systemd/systemd-cgroups-agent,name=systemd)
cgroup on /sys/fs/cgroup/pids type cgroup (rw,nosuid,nodev,noexec,relatime,pids)
cgroup on /sys/fs/cgroup/cpu,cpuacct type cgroup (rw,nosuid,nodev,noexec,relatime,cpu,cpuacct)
cgroup on /sys/fs/cgroup/net_cls,net_prio type cgroup (rw,nosuid,nodev,noexec,relatime,net_cls,net_prio)
cgroup on /sys/fs/cgroup/memory type cgroup (rw,nosuid,nodev,noexec,relatime,memory)
cgroup on /sys/fs/cgroup/cpuset type cgroup (rw,nosuid,nodev,noexec,relatime,cpuset)
cgroup on /sys/fs/cgroup/devices type cgroup (rw,nosuid,nodev,noexec,relatime,devices)
cgroup on /sys/fs/cgroup/freezer type cgroup (rw,nosuid,nodev,noexec,relatime,freezer)
systemd-1 on /proc/sys/fs/binfmt_misc type autofs (rw,relatime,fd=23,pgrp=1,timeout=300,minproto=5,maxproto=5,direct)
configfs on /sys/kernel/config type configfs (rw,relatime)
fusectl on /sys/fs/fuse/connections type fusectl (rw,relatime)
nfsd on /proc/fs/nfsd type nfsd (rw,relatime)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw,relatime)
debugfs on /sys/kernel/debug type debugfs (rw,relatime)
hugetlbfs on /dev/hugepages type hugetlbfs (rw,relatime,pagesize=2M)
mqueue on /dev/mqueue type mqueue (rw,relatime)
tmpfs on /run/user/0 type tmpfs (rw,nosuid,nodev,relatime,size=817152k,mode=700)
tmpfs on /run/user/1000 type tmpfs (rw,nosuid,nodev,relatime,size=817152k,mode=700,uid=1000,gid=1000)
もちろん、読み取り専用ファイルシステムがあるため、e2fsckを更新することはできません。どうすればループから抜け出すことができますか?
答え1
/run
読み取り/書き込みがマウントされたRAMディスク(tmpfsファイルシステム)があるようです。そこから最新のものをダウンロードできますかe2fsck
?その場合は、できること
e2fsck -f /dev/vda
/run
ルートファイルシステムで実行して修復します。- 再起動。
e2fsck
再起動時にtmpfsファイルシステムが再初期化されるため、新しくダウンロードしたtmpfsファイルシステムが消去されます。ただし、ルートファイルシステムは読み書き可能である必要があります。 - ルートファイルシステムに再ダウンロードします
e2fsck
。
実際には、ルートファイルシステムを復元した後(再起動せずに)再マウントできる場合は、コピーできる場所(またはそれが属する場所)がe2fsck
可能である必要があります。/sbin
答え2
答えは、このエラーがどのように発生するかによって異なります。
これは、最新のカーネルを起動し、ext4ファイルシステムをデフォルトのカーネルが完全にサポートしていない最新バージョンにアップグレードした場合に発生する可能性があります。その場合、解決策は最新のカーネルで再起動し、ファイルシステムを完全にアンマウントするのと同じくらい簡単です。
ただし、「何もせずに」エラーが自然に表示される場合、これは任意のハードウェア破損を示す可能性があります。この場合は、まず必要なデータをすべてバックアップすることをお勧めします(実際には必ずバックアップすることをお勧めします)。すべての機密データをワークステーションで使用scp
/バックアップでき、他の利用可能なサーバーがある場合は、次のようにシステム全体のバックアップを実行できます。sftp
otherserver# nc -l -p 8080 > brokenserver-backup.tar.gz
brokenserver# tar zcf - / | nc otherserver.example.com 8080
有効なバックアップがある場合は、e2fsck
@G-Manが提案したように更新されたバックアップをインポートする必要があります。しかし、あなたが見つけたように、静的コンパイル/リンクe2fsck バージョンでないと、ダイナミック ライブラリの欠落エラーが発生します。実行方法は次のとおりです。
これを行うには、まず静的バージョンをダウンロードする必要があります。これの利点は、すべてのGNU / Linuxディストリビューションで動作することです。私は以下を好む http://packages.debian.org/e2fsck-static:
su
cd /run
wget http://ftp.de.debian.org/debian/pool/main/e/e2fsprogs/e2fsck-static_1.44.2-1~bpo9+1_amd64.deb
または、ワークステーションからsftp
クライアントをダウンロードして使用することもできます。ファイルジラ/run
破損したサーバーのディレクトリにコピーします。
その後、開梱する必要があります。の場合と を.deb
使用します。ar
tar
brokenserver:/run# ar xv e2fsck-static_1.44.2-1~bpo9+1_amd64.deb
x - debian-binary
x - control.tar.gz
x - data.tar.xz
brokenserver:/run# tar Jxvf data.tar.xz
./
./sbin/
./sbin/e2fsck.static
./usr/
./usr/share/
./usr/share/doc/
./usr/share/doc/e2fsck-static/
./usr/share/doc/e2fsck-static/changelog.Debian.gz
./usr/share/doc/e2fsck-static/copyright
./usr/share/man/
./usr/share/man/man8/
./usr/share/man/man8/e2fsck.static.8.gz
ノート:ar
開いている場合data.tar.gz広州変えるdata.tar.gzxz、解凍時に使用できますtar zxvf data.tar.gz
。または、一部のツール(ar
、、、、tar
)gzip
がないxz
場合、またはスペースが不足している場合は、他のGNU / Linuxサーバーまたはワークステーションでツールを解凍してファイルを破損したsbin/e2fsck.static
サーバーにコピーすることもできます。
その後、最終的にfsckを実行できます。
brokenserver:/run# chmod 755 /run/sbin/e2fsck.static
brokenserver:/run# ./sbin/e2fsck.static /dev/vda
メモ:得たら「許可が拒否されました」エラーが発生しました。おそらく/run
インストールしたからです。実行されない(あなたの場合ではありませんが、場合があるため、次のようにmount -oremount,exec /run
問題amd64
を解決できます。i386
アーチ(1))。トラック(1)最後に、次の追加情報が提供されます。
execve("/run/sbin/e2fsck.static", ["/run/sbin/e2fsck.static"], [/* 22 vars */]) = -1 ENOEXEC (Exec format error)
または
execve("/run/sbin/e2fsck.static", ["/run/sbin/e2fsck.static"], [/* 22 vars */]) = -1 EACCES (Permission denied)