`/ etc / fstab`은 드라이브를 다시 마운트하는데 사용됩니까?


9

ext4 파일 시스템이있는 단일 하드 드라이브가있는 Ubuntu 14.04.5와 함께 설치된 장치가 있습니다.

Ext4 파일 시스템 문서를 읽음으로써 기본 데이터 모드가 ordered메타 데이터 만 보호 한다는 것을 알게되었습니다 . 내 프로젝트에서는 journal데이터 안전성이 더 높기 때문에 파일 데이터도 보호 하도록 변경하려고 합니다.

내가 시도한 첫 번째 것은 /etc/fstab파일 을 수정하는 것이 었습니다 . 나는 변화를 시도했다

UUID=<UUID> / ext4 errors=remount-ro 0 1

UUID=<UUID> / ext4 errors=remount-ro,data=journal 0 1

data=journal옵션 필드 에 추가 하여.

그러나 장치를 재부팅하면 오류 메시지가 나타납니다 cannot change data mode on remount. 데이터를 확인 dmesg하고 드라이브를 마운트하는 방법에 대한 이전 메시지를 확인했습니다 ordered.

당황스럽게도 오랜 시간 동안 /etc/fstab기본 장착 옵션을 재정 의하여 드라이브를 한 번만 장착하는 데 사용 되었다고 생각 했습니다. 그러나 이제는 잘못된 것으로 보입니다 : 드라이브는 기본 마운트 옵션을 사용하여 마운트 된 다음 /etc/fstab다시 마운트하기 위해 선택됩니다.

내 질문은 :

  • 이 "마운트 리마인드"프로세스가 시스템 설계입니까? 나는 Fstabwiki 페이지를 읽었 지만 "mount-remount"에 대해서는 언급하지 않았다.
  • /etc/fstab실제로 다시 마운트하는 데 사용되는 경우 , 부팅 프로세스의 어느 단계에서 처음으로 드라이브가 마운트됩니까? 에 구현되어 /etc/init.d있습니까? /etc/init.d이라는 umountfs및 에서 일부 스크립트를 umountroot보았지만 내용을 감추면 관련성이 없어 보입니다.

2
여기에 언급 된 "닭고기와 계란"문제라고 생각합니다 ( /etc/fstab루트 파일 시스템에 있지만 파일 시스템이 마운트 된 후에야 읽을 수 없습니다) : initramfs는 / etc / fstab을 사용합니까?
steeldriver

답변:


8

보낸 사람 man ext4:

data = {저널 | 순서 | 쓰기 백}
              파일 데이터의 저널링 모드를 지정합니다. 메타 데이터는 항상
              저널링. 루트 파일 시스템에서 주문한 것 이외의 모드를 사용하려면
              tem, 부트 파라미터로 커널에 모드를 전달하십시오.
              flags = data = 저널.

data=orderedfstab 행에서 제거 하고 /etc/default/grub대신 편집하십시오 . 에 /etc/default/grub변화를 줄

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash root‐flags=data=journal"

실행 sudo update-grub하고 재부팅하십시오.


5

/ etc / fstab을 사용하는 경우

실행 sudo strace -e open,openat mount -o remount,rw /하면 명령이 실제로 열린 것을 볼 수 있습니다 /etc/fstab. 이것은 가장 일반적인 명령으로, 복구 쉘 작업에 관한 기사에서 종종 참조됩니다.

sourcejedi의 답변을 인용하려면 ( mount(8)수동으로 제공됨 ) :

mount -o remount, rw / dir

이 호출 후 mount는 fstab을 읽고 이러한 옵션을 명령 줄 (-o)의 옵션과 병합합니다 . fstab에 마운트 지점이 없으면 지정되지 않은 소스를 사용하여 다시 마운트 할 수 있습니다.

그러나 이것이 /etc/fstab항상 사용되는 것은 아닙니다. 특히, 장치 파일도 지정할 때; mount(8)매뉴얼 참조 :

다시 마운트 기능은 fstab의 옵션에서 mount 명령이 작동하는 표준 방식을 따릅니다. 즉, mount 명령은 장치와 dir이 완전히 지정된 경우에만 fstab (또는 mtab)을 읽지 않습니다.

mount -o remount, rw / dev / foo / dir

이 호출 후에 는 mount 명령으로 내부적으로 생성되고 유지 관리되는 loop = 옵션을 제외하고 모든 이전 마운트 옵션이 대체 되고 fstab의 임의 항목이 무시 됩니다.

때문에 이것은 의미가 /dir임의의 수 - 다른 마운트 지점에 장치를 다시 마운트.

/etc/fstab설치시도 참조되지 /부팅시 커널에서 파일 시스템 것은 아무것도 알지 못한다 /etc/fstab. psusi의 답변 을 인용하려면 :

결국 부트 로더가 나 왔으며 명령 행을 커널에 전달할 수있었습니다. root = 인수가 전달되면 커널에 루트 fs가 기본 제공 값 대신 사용 된 위치를 알려줍니다. 커널에 내장되어 있어야하는 액세스에 필요한 드라이버

...

마지막으로 오늘 우리는 initramfs를 가지고 있습니다. 이것은 initrd와 비슷하지만 램 디스크에로드되는 압축 파일 시스템 이미지 대신 압축 된 cpio 아카이브입니다. tmpfs가 루트로 마운트되고 아카이브가 여기에서 추출됩니다. 더러운 해킹으로 간주되는 pivot_root를 사용하는 대신 initramfs 부트 스크립트는 / root에 실제 루트를 마운트하고 tmpfs 루트의 모든 파일을 삭제 한 다음 chroot를 / root에 exec / sbin / init

fstab이 필요없는 파일 시스템

또한 리눅스 커널에는 메모리에 상주하는 다른 파일 시스템 이 있습니다.이 파일 시스템 은 사용자가 정상적으로 사용할 수 없으며, 일부는 마운트 포인트가 없으며 일부는 사용자에게 노출됩니다. 커널은 /etc/fstab그것들 을 참조 할 필요가 없습니다 . 그 예로 /proc는 대부분 프로세스에 대한 정보를 제공하는 가상 파일 시스템이며 실제로 /sys다른 가상 파일 시스템에 있어야하는 하드웨어 및 시스템에 대한 정보를 제공합니다 .

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.