VirtualBox에서 실행중인 이전 서버를 디스크 오류에서 구출

출장 중에 오래된 서버가 더 이상 움직이지 않기 때문에 복구 요청이있었습니다.
아무것도 기재가 없었습니다만, 어울리는 기재로 어떻게든 꽤 있었습니다.
오랜만에 스토리지 장애를 ddrescue로 복구했기 때문에 정리.

환경


  • 호스트 OS Debian GNU/Linux 7
  • VirtualBox
  • 게스트 OS Scientific Linux 6
  • PostgreSQL

  • 장애 스토리지는 1TBytes의 SATA HDD(Seagate ST1000DM003). 단일 스토리지로 운영했습니다.

    구출용 스토리지로서 2TBytes의 HDD(TOSHIBA DT01ACA2)를 준비.

    진단



    호스트 OS는 기동하지만 게스트 OS가 VirtualBox상에서 기동하지 않는다.


    게스트 운영 체제에서/var/log/messages에 기록되었습니다.



    마찬가지로 호스트 OS에도 기록이 있었습니다.


    
    Nov 20 07:17:01 penguinoffice /USR/SBIN/CRON[23461]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 08:17:01 penguinoffice /USR/SBIN/CRON[23483]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414265] ata6.00: exception Emask 0x0 SAct 0x180000 SErr 0x0 action 0x0
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414268] ata6.00: irq_stat 0x40000008
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414271] ata6.00: failed command: READ FPDMA QUEUED
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414275] ata6.00: cmd 60/20:98:90:fd:62/00:00:01:00:00/40 tag 19 ncq 16384 in
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414275]          res 41/40:20:a0:fd:62/00:00:01:00:00/00 Emask 0x409 (media error) <F>
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414277] ata6.00: status: { DRDY ERR }
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414278] ata6.00: error: { UNC }
    Nov 20 08:51:14 penguinoffice kernel: [19251136.414979] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 08:51:14 penguinoffice kernel: [19251136.415923] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 08:51:14 penguinoffice kernel: [19251136.416098] ata6.00: configured for UDMA/133
    Nov 20 08:51:14 penguinoffice kernel: [19251136.416103] ata6: EH complete
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067322] ata6.00: exception Emask 0x0 SAct 0x400000 SErr 0x0 action 0x0
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067325] ata6.00: irq_stat 0x40000008
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067328] ata6.00: failed command: READ FPDMA QUEUED
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067332] ata6.00: cmd 60/20:b0:90:fd:62/00:00:01:00:00/40 tag 22 ncq 16384 in
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067333]          res 41/40:20:a0:fd:62/00:00:01:00:00/00 Emask 0x409 (media error) <F>
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067334] ata6.00: status: { DRDY ERR }
    Nov 20 08:51:18 penguinoffice kernel: [19251140.067335] ata6.00: error: { UNC }
    Nov 20 08:51:18 penguinoffice kernel: [19251140.068045] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 08:51:18 penguinoffice kernel: [19251140.068972] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 08:51:18 penguinoffice kernel: [19251140.069148] ata6.00: configured for UDMA/133
    Nov 20 08:51:18 penguinoffice kernel: [19251140.069153] ata6: EH complete
    Nov 20 09:10:01 penguinoffice kernel: [19252262.806139] EXT4-fs (sda2): Unaligned AIO/DIO on inode 51904712 by AioMgr0-N; performance will be poor.
    Nov 20 09:17:01 penguinoffice /USR/SBIN/CRON[23504]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 10:17:01 penguinoffice /USR/SBIN/CRON[23526]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 11:17:01 penguinoffice /USR/SBIN/CRON[23548]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 12:17:01 penguinoffice /USR/SBIN/CRON[23580]: (root) CMD (   cd / && run-parts --report /etc/cron.hourly)
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424239] ata6.00: exception Emask 0x0 SAct 0xe000 SErr 0x0 action 0x0
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424242] ata6.00: irq_stat 0x40000008
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424245] ata6.00: failed command: READ FPDMA QUEUED
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424249] ata6.00: cmd 60/08:68:78:a1:a7/00:00:01:00:00/40 tag 13 ncq 4096 in
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424250]          res 41/40:08:78:a1:a7/00:00:01:00:00/00 Emask 0x409 (media error) <F>
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424251] ata6.00: status: { DRDY ERR }
    Nov 20 13:01:07 penguinoffice kernel: [19266123.424252] ata6.00: error: { UNC }
    Nov 20 13:01:07 penguinoffice kernel: [19266123.425006] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 13:01:07 penguinoffice kernel: [19266123.425940] ata6.00: supports DRM functions and may not be fully accessible
    Nov 20 13:01:07 penguinoffice kernel: [19266123.426124] ata6.00: configured for UDMA/133
    Nov 20 13:01:07 penguinoffice kernel: [19266123.426130] ata6: EH complete
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009225] ata6.00: qc timeout (cmd 0x2f)
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009232] ata6: failed to read log page 10h (errno=-5)
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009236] ata6.00: exception Emask 0x1 SAct 0x7c0000 SErr 0x0 action 0x6 frozen
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009238] ata6.00: irq_stat 0x40000008
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009241] ata6.00: failed command: READ FPDMA QUEUED
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009245] ata6.00: cmd 60/08:90:78:a1:a7/00:00:01:00:00/40 tag 18 ncq 4096 in
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009245]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009247] ata6.00: status: { DRDY }
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009248] ata6.00: failed command: WRITE FPDMA QUEUED
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009251] ata6.00: cmd 61/08:98:78:f5:16/00:00:63:00:00/40 tag 19 ncq 4096 out
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009252]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009254] ata6.00: status: { DRDY }
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009255] ata6.00: failed command: WRITE FPDMA QUEUED
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009258] ata6.00: cmd 61/08:a0:40:45:bf/00:00:01:00:00/40 tag 20 ncq 4096 out
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009258]          res 40/00:90:78:a1:a7/00:00:01:00:00/40 Emask 0x1 (device error)
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009260] ata6.00: status: { DRDY }
    Nov 20 13:01:15 penguinoffice kernel: [19266132.009261] ata6.00: failed command: WRITE FPDMA QUEUED
    
    
    

    구출용 머신 만들기



    Ubuntu 20.04를 적당한 머신에 설치, 고장 스토리지와 구출용 스토리지를 접속했습니다.
    또한 다음을 설치합니다.
  • VirtualBox
  • ddrescue (gddrescue)

  • 이미지 복사



    ddrescue를 사용했습니다. Ubuntu 패키지에 들어있는 것은 gddrescue입니다.
    
    # export SOURCE=/dev/sdb
    # export DIST=/dev/sdc
    # ddrescue $SOURCE $DIST 20201129.map --force
    
    

    조작 미스 방지를 위해 일단 환경 변수에 넣어 조작하고 있습니다.



    읽기 오류 1628과 함께 복사할 수 있습니다.

    실은, 이것보다 먼저 같은 방법으로 복사처를 이미지 파일로 해 조작했습니다만, loopback 마운트가 잘 되지 않았기 때문에, 물리 디바이스끼리로 재개했습니다.

    필요한 파일 저장



    읽기 전용으로 마운트하고 필요한 파일 복사
    
    # mount /dev/sdc2 /mnt/sdc2 -o ro
    
    

    복사한 것
  • "VirtualBox VMs"폴더
  • SL-65-x86_64_2014-01-17-Install-DVD.iso

  • VirtualBox 작업



    먼저 복사한 SL-65-x86_64_2014-01-17-Install-DVD.iso를 사용하여 Scientifix Linux 가상 머신을 새로 만듭니다.

    여기서 어울리는 장비였으므로 BIOS를 다음과 같이 다시 설정해야했습니다.



    이것을 확인하지 않고 기동하려고 하고 다음과 같이 에러가 나오고 있을까?라고 당황했습니다.



    위를 수정하고 안전하게 설치할 수있었습니다.



    새 게스트 컴퓨터에 필요한 프로그램 설치



    VboxGuestAddition 및 필요한 프로그램 설치
    - yum install gcc kernel-devel kernel-headers dkms make bzip2
    - yum update kernel*
    - reboot
    - CD内のインストーラを起動
    
    

    이전 서버 서비스에 필요한 프로그램 설치
    
    # yum install nkf httpd
    # yum install postgresql 
    # yum install php-pgsql php php-mbstring
    # yum install postgresql-server
    

    상기 프로그램의 설정은 적절하게 둡니다.

    VirtualBox에서 가상 디스크 mount


    
    $ mount /dev/VolGroup2014/lv_root /mnt/lv_root
    
    

    필요한 파일을 구출


    
    # cd /mnt/lv_root/var
    # cp -a www/html /var/www
    # cp -a lib/pgsql /var/lib 
    
    

    postgresql 데이터 손상


    
    # /etc/init.d/postgresql start
    

    그러면 오류가 발생합니다.
    
    # su - postgres
    
    

    로서,
    
    $ postmaster -p 5432
    
    

    그러면 서비스가 시작되었습니다.
    
    $ psql
    
    

    하지만 오류가 발생하지만,
    
    
    $ psql -d [データベース名]
    
    

    하면 연결할 수 있었으므로 덤프.

    데이터베이스를 퇴피하고 있던 오리지널로 전환해, 덤프를 캡처하면 복구할 수 있었다.
    운 좋게도 데이터베이스 데이터에는 문제가 없었습니다.

    좋은 웹페이지 즐겨찾기