파일 시스템과 파티션 및 디렉토리


29

저는 Linux를 처음 사용하므로이 질문에서 발생할 수있는 혼란에 대해 용서해주십시오.

내가 이해 한 바에 따르면 파일 시스템은 파티션이 ext2, ext3, reiserfs, xfs 등과 같은 표준으로 파일을 저장 / 관리하는 방법을 지정합니다. 때때로 사람들은 각 " directory"을

    /boot filesystem
    /usr/bin filesystem
    /root filesystem
    /bin filesystem

우리는 왜 이것을 이것을이라고 부를 filesystems까요?

그들 각각의 파티션 인 경우, 때문에 내가 아는 한, 지금까지처럼 그 혼란 저 /usr/usr/bin같은 파티션에 있어야하는 경향이 있지만, 나는 사람들을보고는 모두를 의미 /usr filesystem하고 /usr/bin filesystem.

filesystem여기에서 Window 's와 동등한 경우 directory파일 시스템이 디렉토리 이상이라는 것이 분명하지 않습니다. 또한 내가 아는 한 리눅스에는 directory개념 이 없다 . 모두 파일입니다.


"/ root 파일 시스템"의 인스턴스를 본 적이 없습니다. "/"에 마운트 된 파일 시스템은 "루트 파일 시스템"입니다. 최신 Linux 배포판의 다른 마운트 지점은 "xx"의 다양한 값에 대해 "/ boot", "/ home"및 "/ mnt / xx"또는 "/ media / xx"입니다. 커널 2.x + (?) 배포판에는 "/ proc"및 "/ sys"가 있고 Systemd에는 다양한 숫자 UID nnnn에 대한 마운트 포인트 "/ var / run / nnnn"이 있습니다. 이전 Unix 설치는 NFS를 통해 "/ usr"을 마운트 할 수 있지만 개인 Linux 배포판에는 없을 것입니다. "/ bin"및 "/ usr / bin"은 일반적으로 별도의 마운트 지점이 아닙니다.
david

이있다 / 루트 가, 그렇지? 별도의 파일 시스템에 머 무르지 않는다는 것을 의미합니까?
Kenny

권리. "/ root"는 사용자 "root"의 표준 홈 디렉토리이지만 일반적으로 루트 파일 시스템의 다른 디렉토리입니다.
david

이 주제는 Ask Ubuntu 에서 광범위하게 논의되었습니다 . IMNSHO는 AFAIK이기 때문에 어리석은 개념이므로 Ubuntu에서는 다른 형태의 Unix 또는 Linux에 대한 개념이 다르지 않습니다. 예를 들어 “마운트”란 무엇입니까?며칠 전에 물었습니다.
Scott

나는 그 질문에 깊은 감명을 받았습니다. 약간의 지식으로 인해 현재 이미 많은 것을 이해할 수 있고 "/ root filesystem"이 파티션에 마운트 된 파일 시스템을 참조 할 수 있다는 결론을 놓쳤다는 결론을 놓쳤습니다 /root. 상태.
erikbwork

답변:


13

https://superuser.com/a/293160/38062 에서 쓴 것처럼 :

여기서 문제는 "파일 시스템"이라는 단어입니다. POSIX / Unix / Linux 환경에서는 여러 가지 다른 의미로 사용됩니다.

  1. "파일 시스템"은 /운영 체제 커널에 의해 응용 프로그램 소프트웨어에 뿌리를두고 제공되는 파일의 전체 시스템입니다 . 이러한 의미에서 사람들 은 예를 들어 "단일 파일 시스템 트리 "를 갖는 POSIX 운영 체제에 대해 이야기 합니다.
  2. "파일 시스템"은 때때로 하나 이상의 슬라이스입니다. (또는 여러) DASD (들)의 하나 일부 포맷으로 단일 볼륨 으로 포맷 된 하나 이상의 연속 디스크 섹터 모음) 로 일부 디스크 분할에 의해 구분됩니다. 계획. 이러한 의미로 사람들은 "내 /usr파일 시스템 포맷팅"에 대해 이야기 합니다. " /usr"는 볼륨의 (예상 된) 마운트 포인트 또는 (일부 파티션 구성표에서) 식별 레이블입니다.
  3. "파일 시스템"은 파일 시스템 드라이버 (예 : VFS 계층)에 의해 나머지 시스템에 제공되는 추상 결합 가능한 파일 및 디렉토리 트리입니다. 이런 의미로 사람들은 " proc 파일 시스템 마운트/proc "또는 " tmpfs 파일 시스템 을 사용하여 /tmp"라고 말합니다.

"가 표시 될 때 # 1의 의미가 나타납니다./usr/bin filesystem" . 디렉토리에 뿌리를 둔 파일 시스템 트리 /usr/bin입니다. 예, 리눅스는 매우 않는 디렉토리의 개념을 가지고있다.

의미 # 2와 의미 # 3은 당신이 잘못 읽는 것입니다. 사람들은/usr/bin 디스크 슬라이싱 / 파티션으로 구분 된 온 디스크 데이터 세트에 대해 이야기 하지 않습니다 . 또한 /usr/bin특정 유형의 파일 시스템 드라이버 또는 특정 디스크 볼륨 형식에 대해서도 이야기하지 않습니다 .

추가 자료

  • 라 메쉬 방 기아 (2010). "파일 시스템". 정보 기술 사전 . Laxmi Publications, Ltd. ISBN 9789380298153 p. 224.
  • 파일 시스템 . "기본 정의". 개방형 그룹 기본 사양 . 이슈 7 IEEE 1003.1. 공개 그룹. 2013.
  • 빈 응 우옌 (2004-08-16). "파일 시스템". 리눅스 사전 . 버전 0.16. 피. 616.

7

물론 리눅스는 디렉토리 개념을 사용합니다. 디렉토리의 개념은 Windows와 동일합니다.

파일 시스템의 개념은 Windows에서 사용되는 것과 매우 유사합니다. Windows는 일반적으로 NTFS 또는 FAT를 사용합니다. Linux는 일반적으로 ext2, ext3, ext4 등을 사용하므로 모든 차이점이 있습니다.

다른 점은 Linux에서 사용 가능한 모든 파티션의 파일 / 디렉토리가 단일 트리로 구성된다는 것입니다. Windows에서는 Linux에서 사용 가능한 파일의 전체 경로 인 루트 디렉토리 인 "/"로 시작하는 fe "a :", "c :"문자를 사용하여 다른 파티션을 참조합니다. 예를 들어, 시스템을 부팅하는 데 필요한 파일이있는 별도의 파티션이 hdd에 있습니다. 적절한 인수와 함께 'mount'명령을 실행하면이 파티션의 내용이 "/ boot /"경로에서 사용 가능해집니다. 따라서 fe "/ boot"및 "/ home"경로는 다른 파티션의 데이터를 참조 할 수 있으며 이러한 파티션은 다른 파일 시스템을 가질 수 있습니다. 아마 당신의 오해를 일으켰습니다.

동일한 파티션에 실제로 위치한 디렉토리는 항상 "같은 파일 시스템"을 갖습니다. 누군가 어떤 디렉토리의 파일 시스템에 대해 이야기 할 때, 실제로는이 디렉토리가 위치한 파티션의 파일 시스템에 관한 것입니다.

(사소하고 중요한 수정은 아닙니다. 때때로 파일 시스템이 가상이고 해당 파티션이 없습니다. 예를 들어 "/ proc"에는 파일과 매우 흡사 한 파일이 포함되어 있지만, 이러한 "파일"은 가상입니다. 모든 하드 드라이브 및 프로세스 실행에 대한 정보를 포함하며이 데이터에 대한 일반적인 파일과 같은 인터페이스를 제공하는 특별한 "procfs"파일 시스템이 있습니다)


"디렉토리의 파일 시스템"을 언급했으며 모든 서브 디렉토리에 캐스케이드합니다. 하나의 디렉토리와 그 서브 디렉토리가 다른 파일 시스템을 가질 수 있습니까? 예를 들어, / a/ a / b 와 함께 / b 는 자체 파일 시스템 F2가 있는 파일 시스템 F1?
Kenny

동일한 파티션에 위치한 디렉토리가 실제로 동일한 파일 시스템의 일부인지 여부에 관해서는 ZFS 또는 btrfs와 같은 매우 현대적인 파일 시스템에 대해 약간의 퍼지가 발생할 수 있습니다. 고유 한 마운트 지점과 함께 여러 파일 시스템이 공유하는 ZFS 볼륨을 가질 수 있습니다.
Charles Duffy

@ 케니 그래, 맞아. 라이브 예 : CD 드라이브에 CD를 넣습니다. 리눅스는 CD를 "/ mount / cdrom"에 마운트합니다. "/ mount"디렉토리 (및 내가 만든 파일)는 하드 드라이브에 있습니다. 그러나 "/ mount / cdrom"내용은 이미 CD에 있습니다.
lesnik

6

디스크는 하나 이상의 파티션 으로 나뉩니다 . Windows의 경우 일반적으로 복구 파티션이 어딘가에 숨어있을 수 있습니다. 파티션은 디스크의 논리적으로 인접한 영역입니다 (예 : "섹터 1-10,000,000").

파티션에서 파일 시스템을 구축 할 수 있습니다. Windows의 경우 NTFS 또는 FAT입니다. Linux의 경우 이것은 ext버전 중 하나 이거나 다양한 다른 옵션입니다.

파일 시스템 안에는 파일과 디렉토리가 있습니다. 리눅스는 디렉토리를 가지고 있는데, 당신이 어떻게 생각하지 않았는지 전혀 모른다.

운영 체제는 여러 디스크의 여러 파티션을 사용자에게 어떻게 제공합니까? Windows에서는이 이루어집니다 드라이브 문자 : C:, D:등등에 리눅스, 거기에는 드라이브 문자가없는 모든 것이 이루어집니다 마운트 포인트 : 특정 디렉토리, 다른 파일 시스템에 라우트 액세스에서 (+) 종종 만약 CD를 삽입합니다. 또는 USB 스틱이 /media또는 아래에 나타납니다 /mnt.

/usr그리고 /usr/bin일반적으로 같은 파일 시스템에있을 것입니다하지만 할 필요가 없습니다. 사람들은 /usr/bin그 문구를 사용할 때 "디렉토리 를 포함하는 파일 시스템"을 의미 할 수 있습니다.

(+) NTFS 연결 지점에서도이 작업을 수행 할 수 있지만 사람들은 거의하지 않습니다. 그들이 드라이브 문자가 부족할 때까지.


내가 틀렸다면 나를 바로 잡으십시오. Linux에서는 하나의 물리 디스크를 여러 개의 파티션으로 나눌 수 있습니다. 각 파티션은 자체 파일 시스템을 가지고 있습니까? Windows의 하드 디스크에 여러 개의 파티션이있는 방식과 유사하게 하나는 FAT이고 다른 하나는 NTFS 일 수 있습니다.
Kenny

1
예, 맞습니다. 그러나 유사하지는 않습니다. 정확히 동일한 기본 메커니즘입니다. 이중 부팅 시스템에는 동일한 디스크에 NTFS 및 ext3 파티션이있을 수 있으며 각 운영 체제의 디스크 관리자는 동일한 파티션 세트를 봅니다. Windows가 파일을보기 위해 ext3 파티션을 마운트 할 수 없다는 것입니다.
pjc50

3

모든 서브 디렉토리가 하나의 파일 시스템에있는 상태에서 하나의 파티션에 전체 Linux 시스템을 유지할 수 있습니다.

특정 디렉토리 서브 트리가 다른 파일 시스템에있는 상태에서 여러 파티션으로 분산시킬 수도 있습니다. 예를 들어, 넣어 일반적이다 /home, /tmp, /usr, 그리고 /var별도의 파일 시스템에. 귀하의 질문 중 하나를 해결하기 위해 때로는 /usr/bin자체 파일 시스템에도 있습니다.

이 체계에는 장점이 있습니다. 예를 들어, /var많은 이메일로 가득 차면 나머지 시스템은 영향을받지 않습니다. 마찬가지로 하나의 파일 시스템이 충돌 등으로 인해 손상된 경우 다른 파일 시스템은 여전히 ​​양호하며 시스템을 복구하기가 더 쉽습니다.

시스템이 부팅되면 처음에는 루트 파일 시스템 만 사용할 수 있습니다. 그곳에 보관 된 프로그램은 부팅 과정에서 실행됩니다. 이 프로그램 중 하나는 mount파일 /etc/fstab시스템 파일 인 파일의 데이터를 사용하여 여러 번 실행 됩니다. 한 가지 예를 들어 보자. 원래 /home루트 파일 시스템의 일반 디렉토리 일 뿐이다. 그런 다음이 명령을 루트로 실행합니다.

mount /dev/sda7 /home

이것은 시스템에 파티션의 파일 시스템 이 디렉토리에 마운트/dev/sda7 되어야한다는 것을 알려줍니다 . 이제 해당 파일 시스템의 모든 것이 아래에있는 것으로 간주됩니다 ./home/home

을 실행하여 현재 마운트 된 내용을 확인할 수 있습니다 df.


3

filesystems때때로 이러한 디렉토리는 마운트 포인트이기 때문에 때때로 로 지칭합니다 . 당신이 물었던 유일한 질문에 대해 ...

filesystem 두 가지 다른 것을 참조 할 수 있습니다 ... 또는 실제로 같은 두 가지 매우 다른 측면을 참조하십시오.

  1. 저장 매체에서 데이터를 구성하는 데 사용되는 논리적 구조.
  2. 프로세스에서 데이터에 대한 통합 액세스를 제공하기 위해 OS에서 사용하는 방법론.

파일과 디렉토리의 개념은 은유입니다. 컴퓨터에는 데이터 만 있고 모든 미디어는 데이터를 보유 할 수있는 장치 일뿐입니다. 일부 장치는 데이터 읽기 및 쓰기 (예 : HDD)를 허용하고 다른 장치는 데이터 읽기 (예 : CD-ROM) 만 허용하며 데이터 쓰기 만 허용하는 장치 (예 : 프린터)도 있습니다. 우리는 파일과 디렉토리 메타포를 사용하여 데이터를 구조화하여 동시에 모든 것보다는 작은 양의 데이터에 액세스 할 수 있습니다.

스토리지 미디어 (ext4, xfs, fat)에 넣은 파일 시스템은 구조화 부분을 수행합니다. 이를 사용하여 데이터 청크 (파일)에 레이블을 배치하고 모든 레이블 (디렉토리)의 일관된 구조화 된 목록을 갖습니다. 구조화 된 목록은 실제로 나무입니다. 가장 중요한 측면은 나무가 시작부터 정확히 하나의 뿌리를 가지고 있다는 것입니다. 이 구조를 유지하고 데이터를 액세스 가능하게 유지하는 것은 매우 중요한 작업이므로 파일 시스템의 특성이 한 가지가 아닙니다.

파일 시스템의 다른 측면은 스토리지 장치에 저장된 데이터를 모든 프로그램에서 액세스 할 수있게하는 것이 OS의 역할이라는 것입니다. 이것은 두 가지로 수행됩니다.

  1. OS는 파일 및 디렉토리에 액세스하고 상호 작용할 수있는 정확히 하나의 프로그래밍 인터페이스를 제공합니다. 프로그램 / 프로세스의 경우 저장 장치의 파일 시스템이 ext2, xfs, fat 등 무엇이든 중요하지 않습니다. 프로그램 / 프로세스는 파일과 디렉토리에 균일 한 방식으로 액세스합니다.

  2. OS는 모든 스토리지 미디어, 즉 파일 시스템을 하나의 상위 구조로 구성합니다. 프로그램은이 상위 구조를 통해 파일과 디렉토리에 액세스하며 저장 장치와 직접 상호 작용할 필요가 없습니다. 이렇게하면 프로그램이 데이터가 실제로있는 장치를 신경 쓸 필요가 없습니다. 이 상위 구조는 종종 커널의 "가상 파일 시스템"이라고합니다.

저장 장치의 파일 시스템을 가상 파일 시스템에 추가하는 것을 파일 시스템 "마운팅"이라고합니다. Linux가 시작되면 커널은 가상 파일 시스템 (VFS)을 만듭니다. 작성 직후에는 비어 있으며 시작점 (일명 루트)만으로 구성됩니다 /. 그런 다음 커널은 파일 시스템을 VFS의 루트에 마운트합니다. 이것은 램 디스크이거나 하드 드라이브의 파티션에있는 파일 시스템입니다. VFS의 루트에 추가 될 때이 파티션은 종종 루트 파일 시스템이라고합니다.

이제 스토리지 라인의 파일 시스템과 커널의 VFS는 실제로 동일한 OS 작업의 두 가지 측면이라는 것을 알 수 있습니다. 루트 파일 시스템을 마운트하면 VFS에는 많은 파일과 디렉토리가 포함됩니다. 루트 파티션에 존재합니다. 그러나 모든 디렉토리는 "마운트 포인트"가 될 수 있습니다. 마운트 지점은 VFS가 시작 지점을 저장 장치의 파일 시스템에 저장하는 곳입니다. 즉, 파일 시스템을 디렉토리에 마운트 할 때마다 해당 디렉토리에 저장된 데이터에 액세스하는 대신 다른 스토리지 장치의 데이터에 액세스한다고 VFS에 알립니다. 마운트 지점은 일반적으로 빈 디렉토리이므로 다른 파일 시스템을 맨 위에 마운트하여 데이터에 액세스 할 수 없도록합니다.

OS를 설치할 때 모든 데이터를 하나의 파일 시스템에 넣은 다음 루트 파일 시스템이되는지 또는 여러 파일 시스템간에 데이터를 분할할지 여부는 사용자에게 달려 있습니다. 후자는 OS가 모든 개별 파일 시스템을 마운트하여 모든 데이터에 액세스 할 수 있어야합니다. 분할하는 방법은 시스템을 설계하는 방법에 대한 문제입니다. 설치에서 알고있는 디렉토리를 파일 시스템이라고하는 이유가 있습니다.

일반적으로 집에있는 컴퓨터의 경우 더 이상 여러 파일 시스템으로 설치를 분할 할 필요가 없습니다. 그렇게하는 데에는 여전히 충분한 이유가있을 수 있지만 이것은이 게시물의 범위를 벗어납니다.

이 게시물의 나머지 부분을 짧게 유지하려면 : 파티션은 저장 장치의 데이터를 구성하는 또 다른 방법입니다. 파티션을 사용하면 물리적 스토리지 장치에서 연속 스토리지 공간을 확보하고이를 개별 스토리지 장치로 OS에 제공합니다 (파일 시스템을 VFS에 마운트 할 수 있음). 이 작업을 수행하는 한 가지 이유는 하나의 하드 드라이브 만 가지고 있지만 많은 다른 파일 시스템을 사용하고 싶어하기 때문입니다. 루트 파일 시스템이 존재하는 파티션을 종종 루트 파티션이라고합니다.


1

약간 혼란 스럽습니다. Filesystem하드 드라이브 나 CD-ROM과 같은 경우에는 저장 장치 나 대용량 메모리에서 파일을 찾고 구성하는 메커니즘을 나타내며 경우에 따라 RAM에서도 메커니즘을 나타냅니다.

Windows에서도 NTFS이전 과 같은 파일 시스템을 사용합니다 FAT.

여러분의 예제는 리눅스와 유닉스 시스템이 마운트 포인트라는 디렉토리에 마운트 된 서로 다른 파일 시스템으로 구성된 자체 시스템을 갖도록하는 일반적인 관행을 보여줍니다. 따라서 문제가 발생할 경우 모든 파일 시스템이 아닌 하나 이상의 손상을 제한 할 수 있습니다.

따라서 FS는 디렉토리와 같지 않으며, 리눅스에는 특별한 종류의 파일 인 디렉토리가 있습니다.

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