English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Linux 디스크 관리

Linux 디스크 관리의 좋고 나쁜은 전체 시스템의 성능 문제와 직접 관련이 있습니다.

Linux 디스크 관리에서 사용하는 일반적인 명령어는 df, du, fdisk입니다.

  • df:파일 시스템의 전체 디스크 사용량을 나열합니다

  • du:디스크 공간 사용량을 확인합니다

  • fdisk:디스크 파티션을 사용합니다

df

df 명령어 매개변수 기능: 파일 시스템의 디스크 공간 사용량을 확인합니다. 이 명령어를 사용하여 하드디스크가 얼마나 많은 공간을 사용했는지, 현재 남아 있는 공간이 얼마인지 등의 정보를 얻을 수 있습니다.

Syntax:

df [-ahikHTm] [디렉토리나 파일 이름]

옵션 및 매개변수:

  • -a  :모든 파일 시스템을 나열합니다. 시스템이 특유한 것도 포함합니다 /proc 등의 파일 시스템;

  • -k  :KBytes 용량으로 각 파일 시스템을 표시합니다;

  • -m  :MBytes 용량으로 각 파일 시스템을 표시합니다;

  • -h  :인간이 쉽게 읽을 수 있는 GBytes, MBytes, KBytes 등의 형식으로 자체로 표시합니다;

  • -H  :M=으로 표시합니다1000K 대신 M=1024K의 진위 방식;

  • -T  :파일 시스템 유형을 표시합니다, 해당 파티션의 filesystem 이름을 포함하여 (예: ext3)도 나열합니다;

  • -i  :하드디스크 용량 대신 inode 수로 표시합니다

예제 1

시스템 내의 모든 파일 시스템을 나열합니다!

[root@www ~]# df
Filesystem      1K-blocks      Used Available Use% Mounted on
/dev/hdc2         9920624   3823112   5585444  41% /
/dev/hdc3         4956316    141376   4559108   4% /home
/dev/hdc1          101086     11126     84741  12% /boot
tmpfs              371332         0    371332   0% /dev/shm

Linux에서 df에 어떤 옵션도 추가하지 않으면, 기본적으로 시스템 내의 모든 (특수 메모리 내의 파일 시스템 및 swap을 제외하고) 모두 1 Kbytes 용량으로 나열하십시오!

예제 2

용량 결과를 읽기 쉬운 용량 형식으로 표시합니다

[root@www ~]# df -h
Filesystem           Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /
/dev/hdc3             4.8G  139M  4.4G   4% /home
/dev/hdc1              99M   11M   83M  12% /boot
tmpfs                 363M     0  363M   0% /dev/shm

예제 3

시스템 내의 모든 특수 파일 포맷 및 이름을 나열합니다

[root@www ~]# df -aT
Filesystem    Type 1K-blocks    Used Available Use% Mounted on
/dev/hdc2     ext3   9920624 3823112   5585444  41% /
proc          proc         0       0         0   -  /proc
sysfs        sysfs         0       0         0   -  /sys
devpts      devpts         0       0         0   -  /dev/pts
/dev/hdc3     ext3   4956316  141376   4559108   4% /home
/dev/hdc1     ext3    101086   11126     84741  12% /boot
tmpfs        tmpfs    371332       0    371332   0% /dev/shm
none   binfmt_misc         0       0         0   -  /proc/sys/fs/binfmt_misc
sunrpc  rpc_pipefs         0       0         0   -  /var/lib/nfs/rpc_pipefs

예제 4

을(를) /etc 아래의 사용 가능한 디스크 용량을 쉽게 읽을 수 있는 용량 형식으로 표시

[root@www ~]# df -h /etc
Filesystem           Size  Used Avail Use% Mounted on
/dev/hdc2             9.5G  3.7G  5.4G  41% /

du

Linux du 명령어는 공간을 확인하는 명령어이지만, df 명령어와 달리 Linux du 명령어는 파일과 디렉토리의 디스크 사용 공간을 확인하며, df 명령어와 약간 다릅니다. 여기서 Linux du 명령어를 소개합니다.

Syntax:

du [-ahskm] 파일이나 디렉토리 이름

옵션 및 매개변수:

  • -a  :모든 파일과 디렉토리의 용량을 나열합니다. 기본적으로는 디렉토리 아래의 파일 용량만 계산합니다.

  • -h  :사람들이 쉽게 읽을 수 있는 용량 형식(G)/M) 나열합니다;

  • -s  :총량만 나열하며 각각의 디렉토리가 차지하는 용량을 나열하지 않습니다;

  • -S  :자식 디렉토리의 총 합을 포함하지 않으며, -s는 약간 다릅니다.

  • -k  :용량을 KBytes로 나열합니다;

  • -m  :용량을 MBytes로 나열합니다;

예제 1

현재 디렉토리에 있는 모든 폴더 용량을 나열합니다(숨겨진 폴더 포함):

[root@www ~]# du
8       ./test4     <==모든 디렉토리가 나열됩니다
8       ./test2
....중간 생략....
12      ./.gconfd   <==숨겨진 파일이 포함된 디렉토리
220     .           <==이 디렉토리(.)가 차지하는 총량

du를 직접 입력하면 옵션을 추가하지 않으면, du는 현재 디렉토리의 파일과 디렉토리가 차지하는 하드 디스크 공간을 분석합니다.

예제 2

파일의 용량도 나열합니다

[root@www ~]# du -a
12      ./install.log.syslog   <==파일 목록이 있습니다
8       ./.bash_logout
8       ./test4
8       ./test2
....중간 생략....
12      ./.gconfd
220     .

예제 3

루트 디렉토리 아래의 각 디렉토리가 사용하는 공간을 확인합니다

[root@www ~]# du -sm /*
7       /bin
6       /boot
..... 중간 내용 생략....
0       /proc
..... 중간 내용 생략....
1       /tmp
3859    /usr <== 시스템 초기에는 이것이 가장 큽니다!
77      /var

패턴 문자 * 로 각 디렉토리를 대표합니다.

df와 다른 점은, du 명령어는 실제로 파일 시스템 내에 있는 모든 파일 데이터를 직접 검색합니다.

fdisk

fdisk는 Linux의 디스크 파티션 테이블 작업 도구입니다.

Syntax:

fdisk [-l] 장치 이름

옵션 및 매개변수:

  • -l : 다음에 따르는 장치의 모든 파티션 내용을 출력합니다. 만약에만 fdisk -l 때      그렇게 하면 시스템이 전체 시스템에서 검색할 수 있는 장치의 파티션을 모두 나열합니다.

예제 1

모든 파티션 정보를 나열합니다

[root@AY120919111755c246621 tmp]# fdisk -l
디스크 /dev/xvda: 21.5 GB, 21474836480 바이트
255 헤드, 63 섹터/트랙, 2610 켜터
단위 = 마그넷 콜럼의 16065 * 512 = 8225280 바이트
섹터 크기 (로컬/물리적): 512 바이트 / 512 바이트
I/O 크기 (최소/최적): 512 바이트 / 512 바이트
디스크 식별자: 0x00000000
    장치 부팅      시작      종료      블록      Id      시스템
/dev/xvda1   *           1        2550    20480000   83  Linux
/dev/xvda2            2550        2611      490496   82  Linux swap / Solaris
디스크 /dev/xvdb: 21.5 GB, 21474836480 바이트
255 헤드, 63 섹터/트랙, 2610 켜터
단위 = 마그넷 콜럼의 16065 * 512 = 8225280 바이트
섹터 크기 (로컬/물리적): 512 바이트 / 512 바이트
I/O 크기 (최소/최적): 512 바이트 / 512 바이트
디스크 식별자: 0x56f40944
    장치 부팅      시작      종료      블록      Id      시스템
/dev/xvdb2               1        2610    20964793+  83  Linux

예제 2

시스템에서 루트 디렉토리가 있는 디스크를 찾고 해당 하드디스크 내의 관련 정보를 확인하세요

[root@www ~]# df /            <== 주의: 중요한 것은 디스크 파일 이름을 찾는 것입니다
Filesystem           1K-blocks      Used Available Use% Mounted on
/dev/hdc2              9920624   3823168   5585388  41% /
[root@www ~]# fdisk /dev/hdc <== 숫자를 추가하지 마세요!
이 디스크의 켜터 수는 설정되었습니다 5005.
그것에 대해 문제가 없지만, 이것은 이렇게 큽니다 1024,
그러나 특정 설정에서 문제를 일으킬 수 있습니다:
1) 부팅 시 실행되는 소프트웨어 (예를 들어,古い 버전의 LILO)
2) 다른 OS에서의 부팅 및 파티션 소프트웨어
   (예를 들어, DOS FDISK, OS)/2 FDISK)
Command (m for help): <== 당신의 입력을 기다립니다!

입력 m을 입력하면, 아래에 있는 이러한 명령 설명을 볼 수 있습니다

Command (m for help): m <== 입력 m을 입력하면, 아래에 있는 이러한 명령 설명을 볼 수 있습니다
명령 작업
   a      부팅 가능 플래그 전환
   b      bsd 디스크 레이블 편집
   c      dos 호환성 플래그 전환
   d      분할 삭제      <== partition 삭제
   l      알려진 분할 유형 목록
   m      이 메뉴 출력
   n      새로운 분할 추가      <== 새로운 partition 추가
   o      새로운 비어 있는 DOS 분할 테이블 생성
   p      분할 테이블 출력      <== 스크린에 분할 테이블을 표시합니다
   q      변경 사항을 저장하지 않고 탈출      <== fdisk 프로그램을 저장하지 않고 나갑니다
   s      새로운 비어 있는 Sun 디스크 레이블 생성
   t      분할의 시스템 ID 변경
   u      디스플레이 변경/단위
   v      분할 테이블 확인
   w      분할 테이블에 작업을 쓰고 종료      <== 최근의 작업을 분할 테이블에 쓰습니다
   x      추가 기능 (전문가 전용)

fdisk을 떠나기 전에 q를 누르면 모든 작업이 효과가 없습니다! 반대로, w를 누르면 작업이 효과가 발생합니다.

명령 (m을 도움말로 입력): p      <== 현재 디스크 상태를 출력할 수 있습니다
디스크 /dev/hdc: 41.1 GB, 41174138880 바이트      <== 이 디스크의 파일 이름과 용량
255 헤드, 63 섹터/트랙, 5005 마그넷 콜럼      <== 헤드, 섹터, 마그넷 콜럼의 크기
단위 = 마그넷 콜럼의 16065 * 512 = 8225280 바이트 <== 각 마그넷 콜럼의 크기
   장치 부팅      시작      종료      블록      Id      시스템
/dev/hdc1   *           1          13      104391   83  Linux
/dev/hdc2              14        1288    10241437+  83  Linux
/dev/hdc3            1289        1925     5116702+  83  Linux
/dev/hdc4            1926        5005    24740100    5  확장
/dev/hdc5            1926        2052     1020096   82  Linux swap / Solaris
# 장치 파일 이름 시작 구역 없음 시작 마그넷 콜럼      종료 마그넷 콜럼  1K大小容量 磁盘分区槽内的系统
Command (m for help): q

想要不储存离开吗?按下 q 就对了!不要随便按 w 啊!

使用 p 可以列出目前这颗磁盘的分割表信息,这个信息的上半部在显示整体磁盘的状态。

磁盘格式化

磁盘分割完毕后自然就是要进行文件系统的格式化,格式化的命令非常的简单,使用 mkfs(make filesystem) 命令。

Syntax:

mkfs [-t 文件系统格式] 装置文件名

옵션 및 매개변수:

  • -t  :可以接文件系统格式,例如 ext3, ext2, vfat 등(系统有支持才会生效)

예제 1

查看 mkfs 支持的文件格式

[root@www ~]# mkfs[tab][tab]
mkfs mkfs.cramfs mkfs.ext2    mkfs.ext3    mkfs.msdos mkfs.vfat

按下两个[tab],会发现 mkfs 支持的文件格式如上所示。

예제 2

将分区 /dev/hdc6(可指定你自己的分区) 格式化为 ext3 文件系统:

[root@www ~]# mkfs -t ext3 /dev/hdc6
mke2fs 1.39 (29-May-2006)
Filesystem label= <==这里指的是分割槽的名称(label)
OS type: Linux
Block size=4096 (log=2) <==block 的大小配置为 4K 
Fragment size=4096 (log=2)
251392 inodes, 502023 blocks <==由此配置决定的inode/block数量
25101 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=515899392
16 block groups
32768 blocks per group, 32768 fragments per group
15712 inodes per group
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912
Writing inode tables: done
Creating journal (8192 blocks): done <==有日志记录
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 34 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
# This creates the Ext we need3 Filesystem! Simple and clear!

Disk inspection

fsck (file system check) is used to check and maintain inconsistent filesystems.

If the system is powered off or a disk problem occurs, you can use the fsck command to check the filesystem.

Syntax:

fsck [-t 파일 시스템] [-ACay] Device name

옵션 및 매개변수:

  • -t : Specify the type of file system given, if in /etc/If it is already defined in fstab or supported by the kernel itself, this parameter does not need to be added

  • -s : Execute fsck instructions sequentially one by one to check

  • -A : For/etc/Check all partitions listed in fstab

  • -C : Display the complete check progress

  • -d : Print out e2fsck debug results

  • -p : At the same time -A condition, multiple fsck checks are executed together

  • -R : At the same time -A condition, omit / Do not check

  • -V : Detailed display mode

  • -a : If there are errors in the check, they are automatically repaired

  • -r : If there are errors in the check, the user decides whether to repair

  • -y : Options specify that each file is automatically input yes, in case of uncertainty about which ones are abnormal, you can execute # fsck -y Check and repair all.

예제 1

Check how many filesystems the fsck command supports in the system:

[root@www ~]# fsck[tab][tab]
fsck fsck.cramfs fsck.ext2    fsck.ext3    fsck.msdos fsck.vfat

예제 2

Forced check /dev/hdc6 Partition:

[root@www ~]# fsck -C -f -t ext3 /dev/hdc6 
fsck 1.39 (29-May-2006)
e2fsck 1.39 (29-May-2006)
Pass 1Checking inodes, blocks, and sizes
Pass 2Checking directory structure
Pass 3Checking directory connectivity
Pass 4Checking reference counts
Pass 5Checking group summary information
vbird_logical: 11/251968 files (9.1% non-contiguous), 36926/1004046 blocks

없이 추가되지 않으면 -f 옵션을 선택하면 이 파일 시스템이 문제가 없었기 때문에 검사 과정이 매우 빠릅니다! 추가로 -f 강제 검사를 선택하면 단계별로 표시됩니다.

디스크 마운트 및 제거

Linux의 디스크 마운트는 mount 명령어를 사용하며, 제거는 umount 명령어를 사용합니다.

디스크 마운트 문법:

mount [-t 파일 시스템] [-L 레이블 이름] [-o 추가 옵션] [-n] 장치 파일 이름 마운트 점

예제 1

기본적인 방식으로, 최근에 생성한 /dev/hdc6 마운트에 /mnt/hdc6 위에!

[root@www ~]# mkdir /mnt/hdc6
[root@www ~]# mount /dev/hdc6 /mnt/hdc6
[root@www ~]# df
Filesystem           1K-blocks      Used Available Use% Mounted on
..... 중간 생략.....
/dev/hdc6              1976312     42072   1833836   3% /mnt/hdc6

디스크 제거 명령어 umount 문법:

umount [-fn] 장치 파일 이름 또는 마운트 점

옵션 및 매개변수:

  • -f : 강제 제거! 네트워크 파일 시스템 (NFS)에서 읽을 수 없는 경우 사용할 수 있습니다;

  • -n : 업그레이드하지 않음 /etc/mtab 상태에서 제거합니다.

제거/dev/hdc6

[root@www ~]# umount /dev/hdc6