2019/11/29

grub 부트로더 문제해결

개발 97 네모 서버 재 부팅 이후 문제저 발생.

grub error invalid arch independent elf magic(유효 하지 않음)

Linux 및 SSD 파티션 정렬 조정

1. SSD (Solid State Drive)

2. SSD 설치 및 최적화.
맥북 파일 시스템: HFS + 4KB 파티션 정렬.
OS X에서 파일을 읽을 때마다 마지막으로 접근한 시간을 기록하는 타임 스탬프가 드라이브에 기록된다.
이를 비활성화면 SSD의 쓰기 양이 줄어든다.
OS X의 파일 접근 시간을 기록하지 못하게하려면 다음과 같은 특수 매개 변수를 사용하여 드라이브를 다시 마운트 해야한다.

noatime.
/Library/LaunchDaemons/noatime.plist
다시시작.

활셩화 체크
mount | grep " / "

출력 메세지.
/dev/disk0s2 on / (hfs, local, journaled, noatime)

3. RAM 이미지
OS X가 휴먼 상태 일 때(노트북이 닫혀있을 때) 베터리가 완전히 방전 된 경우 데이터가 있는지 확인하기 위해 RAM의 전체 내용이 드라이브에 기록된다.
이 기능을 비활성화하면 MacBook Pro가 잠자기 모드로 진입 할 때마다 4GB가 드라이브에 기록을 방지하기 위해서는 다음과 같이 한다.

sudo pmset -a hibernatemode 0
sudo rm /var/vm/sleepimage

베터리가 부족하여 휴식 모드이고, 완전히 방전되기 전에 재충전되지 않으면 메모리에 저장되지 않은 모든 데이터가 손실된다.

4. 리느스 파티션 정렬
SSD는 플래시 기반이며 블록 단위로 배열된다.
이러한 블록 중 하나에 쓰려면 전체 블록을 읽고 기본 플래시를 지우고 기록 할 데이터로, 수정한 데이터로 읽고 그 값을 데이터를 플래시에 다시 써야한다.
삭제 블록 크기는 이러한 블록의 크기에 해당하며 OCZ Vertex 2를 포함한 대부분의 현재 드라이브에서 512KB 크기이다.
이러한 블록이 파일 시스템과 정렬 될 때, 512KB보다 더 작은 데이터를 쓰려고 할 때 하나의 블록 만 포함되어야 한다.
그러나 잘못 정렬 된 경우 작은 데이터 쓰기 하려고 할때 데이터가 두개의 삭제 블록과 겹치므로 두 개가 포함 될 수 있다.
이러한 문제점이 SSD에 쓰기 성능에 나쁨 방법을 제공 할 수 있는 이유있다.
따라서 삭제 블록 시작시 파티션을 시작하면 SSD 성능이 크게 향상 될 수 있다.

파티셔닝
리눅스 라이브 CD를 부팅한다.
우분투 10.10을 사용하고 있다.
분할 할 드라이브가 있고 드라이브 /dev/sda의 삭제 블록 크기가 512KB라고 가정한다.
다음을 사용하여 드라이브에서 모든 파티션을 제거한다.

기존 파티션 제거.
sudo fdisk /dev/sda

제거 된후 파티션 생성시 아래 명령어를 사용하면 드라이브 자체의 삭제 블록 크키와 정확히 같은 512KB가 된다.
sudo fdisk -S 32 -H 32 /dev/sda

(100MB * 1024) / 512 = 200
부트 파티션은 블록 2에서 시작하여 200512KB 블록을 자치한다.

정렬확인
파티션 테이블 정보확인.
sudo fdisk -lu /dev/sda

Disk /dev/sda: 128.0 GB, 128035676160 bytes
32 heads, 32 sectors/track, 244208 cylinders, total 250069680 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: 0x000de7d9

   Device Boot      Start         End      Blocks   Id  System
/dev/sda1   *        1024      206847      102912   83  Linux
/dev/sda2          206848    16985087     8389120   82  Linux swap / Solaris
/dev/sda3        16985088   250068991   116541952   83  Linux

확인해 보면, 세 파티션 모두의 시작 부분은 512KB로 나눌 수 있으며 SSD의 삭제 블록 크기에 맞게 정렬된다.
Linux 설치할 때 파티션을 수정으로 지정해야 한다.

5. 접근 시간.
리눅스 설치 한 후 접근 시간을 비활성화 하려면 /etc/fstab 파일의 편집이 필요하다.
notime 매개 변수를 추가하면된다.
UUID=07eaa728-68e8-44aa-89a1-7c922513fc71 /               ext4    errors=remount-ro,noatime 0       1

변경 사항을 저장하고 재부팅한다.

적용 확인 명령.
mount | grep " / "
/dev/sda3 on / type ext4 (rw,noatime,errors=remount-ro,commit=0)

문제 경우 1)
/dev/sda1 /boot파티션을 ext2로 포맷
/dev/sda2스왑
/dev/sda3(가) /에서 ext4로 포맷.
설치 후 부팅되지 않음 grub-rescue 콘솔 모드로 진입.

error: invalid arch independent ELF magic.
grub rescue>

메인보드 설정 부분.
바이오스 모드인지 UELF(ELF) 시스템인지 확인.
- 메인보드 설정 내용
-- BIOS 설정
-- 보안 설정 OFF

메인보드 설정시 문제 계속 발생하면 소프트웨어 처리.
Live CD로 부팅하고 다음을 실행

mount /dev/sda1 /mnt
mount /dev/sda3 /mnt/tmp
mount /dev/sdb1 /mnt/home
mount /dev/sdc1 /mnt/srv
mount /dev/sdd1 /mnt/var

mount -o bind /dev /mnt/dev
mount -o bind /dev/pts /mnt/dev/pts
mount -o bind /proc /mnt/proc
mount -o bind /sys /mnt/sys
mount -o bint /run /mnt/run

chroot /mnt

grub-mkconfig -o /boot/grub/grub.cfg
update-grub

댓글 없음:

댓글 쓰기