이 름 : 바다아이
|
조회수 : 10142
짧은 주소 : https://www.bada-ie.com/su/?281591827645
얼마전 내 우분투 13.04 서버에 배드블럭이 10000개 이상 생겨버렸다.
하드가 완전히 망가졌나 싶어서 하드를 교체하려 하였으나 의문이 생겼다.
의문점은 다음과 같았다.
1. 보통의 하드는 물리적 배드섹터가 1,2개 생기면서 하드의 전체적인 안정성이 저하되고
서서히 하드의 물리적 배드섹터가 증가하면서 끝엔 완전히 사용이 불가하게 된다.
2. 혹시나 얼마전 IDE 모드로 설치한 하드디스크를 AHCI 모드로 변경하여 내가 모르는
어떠한 논리적 오류가 배드블럭을 생기게 하지 않았냐는 생각이 들었다.
3. 위와 같은 의문점으로 검사를 한 결과 내 하드디스크의 경우는 fstab 설정에 따라 하드디 스크 블럭이 Read-only 로 변경되면서 Write 가 불가능해 졌을뿐 배드블럭이 늘거나 줄지 않았고 전체적인 하드디스크 검사 및 제로필(Zero-fill) 작업 후 배드블럭이 완전히 사라지 고 이후 배드블럭이 늘지 않았다.
하드디스크의 배드섹터가 논리적인지 물리적인지 구분하는 방법은 현실적으로 불가능하다.
논리적 배드섹터의 경우 Zero-fill (하드디스크 모든 영역의 자기값을 0 으로 채움) 작업을
통해서 증상을 없앨 수 있다.
작업 방법은 다음과 같다.
1. 우선 리눅스 시스템의 Live CD 를 준비한다. (GUI 우분투 추천)
되도록이면 사용이 간편한 우분투를 추천하고 USB 또는 USB 하드를 사용해야 한다.
그렇지 않으면 Live CD로 부팅한 상태에서 추가적인 프로그램을 설치하여 사용하지
못하고 비교적 사용이 불편한 것을 써야하기 때문이다.
2. Live CD 를 리눅스 머신에 넣고 부팅한다.
3. Live CD 를 부팅하면 터미널을 실행한다.
4. 터미널에 다음 명령어를 입력하여 현재 리눅스 머신에 연결된 모든 저장장치를 표시한다.
sudo fdisk -l (소문자 'L' 이다)
5. fdisk 를 통해 하드디스크의 정보가 다음과 같이 출력될 것이다.
Disk /dev/sda: 200.0 GB, 200049647616 bytes 255 heads, 63 sectors/track, 24321 cylinders, total 390721968 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 Disk identifier: 0x0005b77d
Device Boot Start End Blocks Id System /dev/sda1 * 2048 369948671 184973312 83 Linux /dev/sda2 369950718 390721535 10385409 5 Extended /dev/sda5 369950720 390721535 10385408 82 Linux swap / Solaris
노란색으로 배경색이 되어 있는게 디스크 자체의 정보이고
초록색으로 배경색이 되어 있는게 해당 디스크의 파티션이 어떻게 나뉘는가를
표시해준다.
여기서 주목해야 하는 것은 첫째줄에 있는 /dev/sdx (sdb,sdc 가 될 수도 있으므로) 이다.
하드디스크가 여러개라면 /dev/sda, /dev/sdb 등으로 여러개가 출력되므로
현재 문제가 있는 하드만 골라서 치료하려면 하드디스크가 어디에 Mount 되는지
알아야 한다.
문제가 생겼다면 어떤 하드에 문제가 있는지 터미널 또는 로그로 자세히 표시되므로
따로 적지는 않겠다.
6. 배드블럭 검사, 배드블럭 검사는 시간이 매우매우!! 오래 걸리는 작업이므로 시작하고
밥먹고 볼일보고 게임해도 완료되지 않을 수도 있다. 끈기있게 기다리자.
7. 배드블럭을 검사를 기다리는 고달픈 시간이 지나면 배드블럭이 몇개나 발생했는지
터미널로 출력될 것이다.
이제 치료를 하도록 하자.
8. 내가 처음 서두에서 Live CD를 USB에다가 설치하라고 한 이유는 일부 e2fsck 와
dcfldd 를 사용하려면 apt-get 을 이용하여 설치해야 하는데 CD의 경우 한 번 구워버리면
안에 데이터를 변경할 수가 없기 때문에 두 가지 프로그램을 사용할 수 없기 때문이었다.
이제 다음 명령어를 입력하여 e2fsck 와 dcfldd 를 설치하도록 하자.
sudo apt-get install e2fsck dcfldd
Q. e2fsck 는 이미 설치되어 있다고 하고 dcfldd는 찾을 수 없다고 뜨는데??
A. e2fsck 는 대부분의 리눅스 배포판에 기본적으로 들어가 있어서 그런것이고 dcfldd는
소프트웨어 업데이트 관리자에서 universe repository 를 사용 설정해줘야지 사용할 수 있다.
9. 두 가지를 설치했다면 이제 선택을 할 시간이다.
1). 논리적 배드블럭으로 보이는 것이 노무노무 많이 생겨버렸다!
- 하드에 있는 모든 필요한 정보를 다른 하드에 저장하고 dcfldd 를 이용하여
Zero-fill 포맷을 해버리자
사용방법 : sudo dcfldd if=/dev/zero of=/dev/sdx 여기서 of=/dev/sdx 는 'sdx'를 자신이 Zero-fill 포맷을 할 하드의 마운트 경로로 맞추어주면 된다.
Copyright ⓒ 2001.12. bada-ie.com. All rights reserved.
이 사이트는 리눅스에서 firefox 기준으로 작성되었습니다. 기타 브라우저에서는 다르게 보일 수 있습니다.
[ Ubuntu + GoLang + PostgreSQL + Mariadb ]
서버위치 : 오라클 클라우드 춘천 실행시간 : 0.05737 초 to webmaster... gogo sea. gogo sea.