Linux의 i-node, 파티션, 파일 시스템 및 마운트 복습

개요


AWS에서 SQL Server on EC2의 가져오기 보도를 시도할 때 데이터 파일에 대한 디렉터리에 섹션 등 여러 가지 설정이 생겼고 좋은 기회이기 때문에 다시 공부하기로 했습니다.

Linux 파일 시스템


2차 저장 장치의 비트 데이터 집합을 논리적 분리 처리로 사용합니다.
뜻이 불분명하게 느껴져서 순서대로 설명하다.

잠시 구역을 잊어버리세요.


우선 간단하게 보기 위해 HDD, SSD 등 2차 저장 장치를 모두 그대로 사용하는 것을 고려한다.

파일에 속성이 있습니다.


Linux 파일에는 많은 속성이 있습니다.
  • 모든 사용자 그룹
  • 권한
  • 사이즈
  • 최종 업데이트 시간, 최종 방문 시간
  • etc...
  • 물론 파일 자체의 데이터도 있다.
    이러한 속성 정보(메타데이터)와 파일 자체의 정보는 어디에 있습니까?

    데이터 영역


    2차 저장 장치 내의 파일의 실제 데이터 위치.↑ 파일 자체의 정보가 있는 곳.

    i-node 영역


    Linux는 사용되는 2차 저장 장치에서 i-node 영역이라고 불리는 부분을 만들고 그곳에는 하나의 파일에 대응하는 i-node라고 불리는 데이터 구조가 배열되어 있다.
    이 i-node에는 각 파일의 메타정보, 파일의 실제 데이터의 위치(↑ 데이터 영역 내)를 가리키는 바늘이 있습니다.

    즉, 이 i-node에 접근할 수 있다면 이 파일에 대한 모든 정보를 찾을 수 있다는 것이다.

    i-node에는 파일 이름이 없습니다.


    그럼 어디 있죠?금방 나올게요.

    i-node에 쉽게 액세스할 수 있습니다.


    아이노드 분야에서 몇 번째 이노드인가요?의 정보는 i번(i-number)입니다.
    하나의 파일은 i-number 하나만 해당합니다.파일 이름을 바꾸면 이것을 바꾸지 않습니다.
    (즉, 여러 개의 파일 이름을 추가해도 모든 파일 이름이 가리키는 i-number는 같다)

    i-number 어떻게 찾으세요?


    디렉토리에는 파일 이름과 i-number에 대한 테이블이 있습니다.
    또는 파일 이름과 i-number의 대응표는 디렉터리가 좋을 수도 있습니다.
    디렉터리 자체에도 i-node, i-number가 있습니다.
    ↑ 에는 i-node에 파일 이름은 포함되지 않지만 디렉토리에 파일 이름이 기재되어 있습니다.
    이 디렉터리에 저장된 파일 이름: i-number는 링크(하드 링크)로 대칭됩니다.

    만약 이러한 대응표가 없다면 파일의 i-node에 파일 이름이 포함되어 있다면 파일 이름에서 파일을 찾을 때 모든 i-node를 순서대로 조사해야 하기 때문에 시간이 많이 걸린다.

    디렉터리의 i-number는 어떻게 찾습니까?


    그 디렉터리의 아버지 디렉터리는 알고 있다.
    그러면 그 부모 디렉터리의 i-number는 그 아버지 디렉터리가 알고 있습니다. 프로세스가 아버지 디렉터리를 추적하는 것과 마찬가지로 루트 디렉터리의 i-number는 무엇입니까?그럼
    루트 디렉터리의 i-number는 역사의 경과에 따라 2인 것 같습니다.

    디렉토리는 현재 디렉토리(.)및 부모 디렉토리(...)링크


    ls-la 등의 명령과 같이 디렉터리는 "."「..」에서 설명한 대로 해당 매개변수의 값을 수정합니다.
    이것은 자신의 i-number와 부모 디렉터리의 i-number입니다.
    공연의 관점에서 보면

    파티션이란 무엇입니까?


    지금까지의 논의는 하드디스크나 솔리드 스테이트 드라이브 등 2급 저장 장치를 단일한 것으로 간주하는 상황에서 이루어졌다.
    실제로 저장 장치를 논리적으로 비교적 작은 단위로 나누어 각각 구분하는 곳은 마치 2차 저장 장치처럼 사용한다.
    이 구분 단위를 파티션이라고 합니다.

    파일 시스템, 파티션 및 노드


    파일 시스템은 처음에 2차 저장 장치의 비트 데이터의 집합을 논리적 구분으로 처리하기 위해서였다
    구체적으로 말하면 각 파일의 크기와 날짜의 범위와 같은 2차 저장 장치 내의 구분을 결정한다.
    각 파일 시스템은 i-node, i-number를 관리합니다.
    즉, 2차 저장 장치에 구역이 있고 이 구역에 대해 파일 시스템을 설정한다.
    각 파티션의 각 파일 시스템은 i-node 및 i-number를 관리합니다.
    처음에 설명한 구역이 하나밖에 없는 상황에서 = 파일 시스템은 2차 저장 장치로서 전체적으로 하나가 되었다.

    이 서버는 어떤 장치와 구역을 구분해서 사용할 수 있는 상태입니까?


    현재 블록 장치 확인
    블록 장치 확인 lsblk 명령
    파티션 확인 fdisk 명령
    블록 장치란 무엇입니까?이런 사람은 링크를 인용하는 곳이다.
    Linux에서는 HDD, 모뎀 등 장치를/dev/sda와 같은 장치 파일로 관리합니다.장치 파일에서 액세스할 때 문자 단위가 아닌 블록 단위로 데이터를 전송하는 파일을 블록 장치라고 합니다.하드 드라이브, CD-ROM 등은 블록 장치입니다."ls-al/dev"를 실행할 때, 블록 장치는 처음에 "b"로 표시됩니다.
    다음은 SQL Server on Amazon Linux에서 실행됩니다.
    블록 장치 확인
    $ lsblk
    NAME    MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
    xvda    202:0    0   8G  0 disk            # デバイス
    └─xvda1 202:1    0   8G  0 part /          # デバイス内のパーティション
    
    파티션 확인
    $ sudo fdisk -l
    # 2次記憶装置(のデバイスファイル)の名前 /dev/xvda
    Disk /dev/xvda: 8 GiB, 8589934592 bytes, 16777216 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
    Disklabel type: gpt
    Disk identifier: DAC1631E-C621-457C-AB6B-46D376AE5954
    
    # 2次記憶装置内のパーティション
    Device       Start      End  Sectors Size Type
    /dev/xvda1    4096 16777182 16773087   8G Linux filesystem
    /dev/xvda128  2048     4095     2048   1M BIOS boot
    
    Partition table entries are not in disk order.
    
    # ブロックデバイスのIDとかもわかる
    $ sudo blkid
    /dev/xvda1: LABEL="/" UUID="76e177a9-8195-43cf-84ae-14ea371008b6" TYPE="xfs" PARTLABEL="Linux" PARTUUID="bd10b85f-c226-4c70-a4b4-11f7976028dd"
    
    Linux에서 식별된 2차 저장 장치의 장치 파일 이름은 xvda, xvdb, xvdc...이런 알파벳은 증가하는 형식으로 증가한다
    (sdb나 종류에 따라 장치 파일의 알파벳 자체도 변화)
    구역은 xvda1, xvda2...이렇게 숫자로 늘려요.
    파일 시스템 확인
    $ lsblk -f
    NAME    FSTYPE LABEL UUID                                 MOUNTPOINT
    xvda
    └─xvda1 xfs    /     76e177a9-8195-43cf-84ae-14ea371008b6 /             
    # xfs がファイルシステムの名前。パーティション xvda1 のファイルシステムは xfs ということ
    

    이 서버는 어떤 파일 시스템을 사용합니까?


    df 명령은 디스크의 사용 가능한 공간을 확인하는 명령입니다.
    df 명령
    사용된 파일 시스템
    #ファイルシステムごとに使用容量などを表示
    $ df -Th
    Filesystem     Type      Size  Used Avail Use% Mounted on
    devtmpfs       devtmpfs  476M     0  476M   0% /dev
    tmpfs          tmpfs     493M     0  493M   0% /dev/shm
    tmpfs          tmpfs     493M  392K  493M   1% /run
    tmpfs          tmpfs     493M     0  493M   0% /sys/fs/cgroup
    /dev/xvda1     xfs       8.0G  3.9G  4.2G  49% /
    tmpfs          tmpfs      99M     0   99M   0% /run/user/1000
    

    그럼 마운트는 뭐예요?


    파일 시스템이 설정된 각 구역을 디렉터리의 트리로 처리하기 위해 접합하는 방법
    예를 들어 다음 명령에서 "/dev/sdb1의 장치 파일이 표시하는 구역의 내용이/mnt 디렉터리와 연결되어 있다고 생각합니다."
    이 예에서 말한 "적재된 쪽/mnt"를 적재점이라고 합니다.
    mount /dev/sdb1 /mnt
    # ls /dev/sdb1 と ls /mnt の中身が同じになる、ということ
    
    또한 마운트 시 파일 시스템을 지정할 수도 있습니다.
    mount -t ext4 /dev/sdb1 /mnt
    # ファイルシステム ext4 で、/dev/sdb1 パーティション を マウントポイント /mnt にマウントする。
    

    OS 재부팅 후에도 마운트 상태 유지


    운영체제를 다시 시작하면 마운트가 떨어지지만/etc/fstab에 기술되면 다시 시작한 후에도 마운트됩니다.
    마운트 정보
    $ cat /etc/fstab
    #
    UUID=76e177a9-8195-43cf-84ae-14ea371008b6     /           xfs    defaults,noatime  1   1
    

    참고 자료


    https://qiita.com/kamihork/items/fbcd116a631324aae05d
    https://qiita.com/lnznt/items/6178e1c5f066f22fe9c2
    http://bob-mk2.hateblo.jp/entry/2012/09/12/005550

    좋은 웹페이지 즐겨찾기