/ dev / sda1: Inodes ที่เป็นส่วนหนึ่งของรายการที่เชื่อมโยงเด็กกำพร้าเสียหาย


16

ฉันใช้แล็ปท็อป Ubuntu 2015.04 ของฉัน (กับผู้ใช้ที่บ้านเข้ารหัส ecryptfs) โดยปกติเมื่อจู่ ๆ ฮาร์ดไดรฟ์ก็กลายเป็นแบบอ่านอย่างเดียว

ฉันรีบูตเครื่องและตอนนี้มันติดอยู่ที่นี่:

[    0.703206] ACPI PCC probe failed.
starting version 219
error: /dev/sdb: No medium found
error: /dev/sdb: No medium found
Welcome to emergency mode! After logging in, type "journalctl -xb" to view
system logs, "systemctl reboot" to reboot, "systemctl default or ^D to
try again to boot into default mode.
root@nico:~#

ส่วนที่น่าสนใจของบันทึกของระบบ:

-- Unit systemd-fsckd.service has begun starting up.
system-fsck[475]: /dev/sda1 contains a file system with errors, check forced.
kernel: ACPI warning: \_SB_.PCIO.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20141107/nsarguments-95)
kernel: ACPI warning: \_SB_.PCIO.PEG_.VID_._DSM: Argument #4 type mismatch - Found [Buffer], ACPI requires [Package] (20141107/nsarguments-95)
kernel: thinkpad_acpi: EC reports that Thermal Table has changed
system-fsck[475]: /dev/sda1: Inodes that were part of a corrupted orphan linked list found.
system-fsck[475]: /dev/sda1: UNEXPECTED INCONSISTENCY; RUN fsck MANUALLY.
system-fsck[475]: (i.e., without -a or -p options)
system-fsck[475]: fsck failed with error code 4.
system-fsck[475]: Running request emergency.target/start/replace
systemd[1]: system-fsck-root.service: main process exited, code=exited, status=1/FAILURE
systemd[1]: Failed to start File System Check on Root Device
-- Subject: Unit system-fsck-root.service has failed

ฉันไม่แน่ใจว่าเป็นปัญหา ACPI หรือดิสก์ ฉันพยายามอัปเดตเป็น BIOS ล่าสุดของฉัน Lenovo Thinkpad T520 แต่ไม่สามารถบูตได้ดีกว่า

วิธีแก้ไขปัญหานี้หรือถ้าดิสก์กำลังจะตายอย่างน้อยวิธีการส่งออกข้อมูลจากบ้านที่เข้ารหัสของฉันไปยังไดรฟ์ภายนอก?


8
พบข้อผิดพลาดกับระบบไฟล์รูท ทำตามที่ระบุไว้เรียกใช้fsck /dev/sda1และโต้ตอบให้มันแสดงข้อผิดพลาดที่พบและเลือกที่จะแก้ไข ทำตามหนึ่งครั้งเพื่อบอกว่าไม่มีข้อผิดพลาดตลอดเวลา หากดูเหมือนว่าไฟล์เหล่านั้นไม่มีความสำคัญเช่นล็อกไฟล์ให้ดำเนินการอีกครั้งโดยบอกว่าใช่ ซึ่งอาจส่งผลให้ไฟล์สูญหายดังนั้นหากคุณสามารถคัดลอกพาร์ติชั่นก่อนจะพูดกับอุปกรณ์ usb ให้ทำก่อน
meuh

คำตอบ:


20
  1. ที่พรอมต์ให้พิมพ์fsck /dev/sda<number>และกด Enter (มองหา<number>จากบันทึกของคุณตามไดเรกทอรีที่มีข้อผิดพลาดของระบบไฟล์)
  2. ป้อนyข้อผิดพลาดทั้งหมดเพื่อแก้ไข
  3. exit

วิธีค้นหา <number>
Kapil Yadav

Tyvm มันได้ผล
Viraths

1
@KapilYadav: คุณสามารถค้นหาหมายเลขในบันทึกข้อผิดพลาดที่ถูกส่งออกไป ตัวอย่างเช่นในคำถามของ OP บันทึกบอกว่าsystem-fsck[475]: /dev/sda1 contains a file system with errors, check forced.ดังนั้นตัวเลขคือ1
Rocky Inde

0

ในอาคารผู้โดยสาร

sudo -i (ถ้าไม่ใช่ผู้ใช้รูทมิฉะนั้นข้ามสิ่งนี้)

fdisk -l

มองหาไดรฟ์รากของคุณ

ฉันใช้ Kali Linux ในราสเบอร์รี่ pi ดังนั้นของฉันจะมีลักษณะคล้ายกับ... mmcblk0p2แทนที่จะsdb1มองหาของคุณ

`umount /dev/mmcblk0p2`

fsck -y /dev/mmcblk0p2

poweroff


-1

ฉันมีปัญหาเดียวกัน ฉันสร้างไฟล์รูปภาพจาก Raspbian SDCard ที่ทำงานโดยใช้ Win32DiskImager เมื่อฉันใช้ pishrink เครื่องมือให้ข้อผิดพลาด "รายการ inode รายการ inode" ดังนั้นฉันจึงทำตามคำแนะนำจาก Rocky Inde และดำเนินการ fsck พบและแก้ไขข้อผิดพลาดดังนั้นฉันจึงวิ่ง pishrink อีกครั้งและใช้งานได้! ขอบคุณ Rock Inde

หากคุณมาไกลขนาดนี้และยังสับสนอยู่ว่าจะทำอย่างไรฉันได้สร้างสคริปต์ขึ้นมาโดยใช้ pishrink เพื่อแก้ไข "orphaned inodes" เหล่านี้ คุณสามารถตรวจสอบแหล่งสคริปต์ได้ที่

https://github.com/gmenezesg/fix_orphaned_inode_list

การใช้งาน:

wget https://raw.githubusercontent.com/gmenezesg/fix_orphaned_inode_list/master/fix_orphaned_inode_list.sh

sudo chmod +x fix_orphaned_inode_list.sh

sudo ./fix_orphaned_inode_list.sh [imagefile.img]

สคริปต์:

#!/bin/bash

function cleanup() {
  if losetup $loopback &>/dev/null; then
        if [ "$verbose_mode" = true ]; then
        echo "### Running cleanup ###"
        fi
        losetup -d "$loopback"
  fi
}

verbose_mode=false

while getopts ":v" opt; do
  case "${opt}" in
    v) verbose_mode=true ;;
    *) usage ;;
  esac
done
shift $((OPTIND-1))

usage() { echo "Usage: $0 [-v] imagefile.img"; exit -1; }

if [ "$verbose_mode" = true ]; then
echo "### Mapping arguments ###"
fi

img="$1"

if [ "$verbose_mode" = true ]; then
echo "### Usage checks ###"
fi

if [[ -z "$img" ]]; then
  usage
fi
if [[ ! -f "$img" ]]; then
  echo "ERROR: $img is not a file..."
  exit -2
fi
if (( EUID != 0 )); then
  echo "ERROR: You need to be running as root."
  exit -3
fi

echo "#Check that what we need is installed"
for command in parted losetup tune2fs md5sum e2fsck resize2fs; do
  which $command 2>&1 >/dev/null
  if (( $? != 0 )); then
    echo "ERROR: $command is not installed."
    exit -4
  fi
done

if [ "$verbose_mode" = true ]; then
echo "### Setting cleanup at script exit ###"
fi
trap cleanup ERR EXIT

beforesize=$(ls -lh "$img" | cut -d ' ' -f 5)
parted_output=$(parted -ms "$img" unit B print | tail -n 1)
partnum=$(echo "$parted_output" | cut -d ':' -f 1)
partstart=$(echo "$parted_output" | cut -d ':' -f 2 | tr -d 'B')
loopback=$(losetup -f --show -o $partstart "$img")
tune2fs_output=$(tune2fs -l "$loopback")
currentsize=$(echo "$tune2fs_output" | grep '^Block count:' | tr -d ' ' | cut -d ':' -f 2)
blocksize=$(echo "$tune2fs_output" | grep '^Block size:' | tr -d ' ' | cut -d ':' -f 2)

fsck -y "$loopback"
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.