ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

系列教程--Linux基础--15--linux磁盘管理

2020-12-09 21:02:54  阅读:164  来源: 互联网

标签:15 -- 分区 dev 490M linux tmpfs root localhost


本节概要

  磁盘空间查看

  Linux常见文件系统

  Linux inode理解

  fdisk磁盘分区

  mkfs.ext4 格式化磁盘

  磁盘挂载、卸载、开机自动挂载操作

  生产环境常见问题

环境准备

操作系统:Centos6.5、Centos7.2。

一、磁盘空间查看

1. df

功能:查看文件系统的磁盘占用情况,以及剩余空间。

格式:df 参数 目录/文件名

参数:

  -a  列出所有的文件系统

  -k  容量单位为KB进行显示

  -m 容量单位为MB进行显示

  -h  以较易读的方式进行显示,根据文件的大小,显示单位可以为KB、MB、GB

  -T  显示文件系统的类型

  -  显示各分区的inode使用量

举例:

[root@localhost ~]# df     #列出各个文件系统,及其磁盘占用情况

Filesystem     1K-blocks    Used Available Use% Mounted on

/dev/sda3       29037720 4039012  24998708  14% /

devtmpfs          492560       0    492560   0% /dev

tmpfs             501580      80    501500   1% /dev/shm

tmpfs             501580   13472    488108   3% /run

tmpfs             501580       0    501580   0% /sys/fs/cgroup

/dev/sda1         303788  114324    189464  38% /boot

tmpfs             100316       0    100316   0% /run/user/0

tmpfs             100316       0    100316   0% /run/user/42

[root@localhost ~]# df –h  #人性化显示,单位为MB、GB

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  3.9G   24G  14% /

devtmpfs        482M     0  482M   0% /dev

tmpfs           490M   80K  490M   1% /dev/shm

tmpfs           490M   14M  477M   3% /run

tmpfs           490M     0  490M   0% /sys/fs/cgroup

/dev/sda1       297M  112M  186M  38% /boot

tmpfs            98M     0   98M   0% /run/user/0

tmpfs            98M     0   98M   0% /run/user/42

[root@localhost ~]# df –hT  #显示文件系统类型

Filesystem     Type      Size  Used Avail Use% Mounted on

/dev/sda3      xfs        28G  3.9G   24G  14% /

devtmpfs       devtmpfs  482M     0  482M   0% /dev

tmpfs          tmpfs     490M   80K  490M   1% /dev/shm

tmpfs          tmpfs     490M   14M  477M   3% /run

tmpfs          tmpfs     490M     0  490M   0% /sys/fs/cgroup

/dev/sda1      xfs       297M  112M  186M  38% /boot

tmpfs          tmpfs      98M     0   98M   0% /run/user/0

tmpfs          tmpfs      98M     0   98M   0% /run/user/42

[root@localhost ~]# df –hi  #查看inode使用情况

Filesystem     Inodes IUsed IFree IUse% Mounted on

/dev/sda3         28M  127K   28M    1% /

devtmpfs         121K   362  120K    1% /dev

tmpfs            123K     5  123K    1% /dev/shm

tmpfs            123K   509  122K    1% /run

tmpfs            123K    13  123K    1% /sys/fs/cgroup

/dev/sda1        300K   330  300K    1% /boot

tmpfs            123K     1  123K    1% /run/user/0

tmpfs            123K     1  123K    1% /run/user/42

 

  Linux 常见的文件系统一般有ext2、ext3、ext4、xfs等,多种文件系统对比如下:

Ext2

Ext3

Ext4

Xfs

非日志文件系统,单文件最大2TB,文件系统最大32TB,较早的文件系统。

日志文件系统,单文件最大16TB,文件系统最大32TB。

日志文件系统,单文件最大16TB,文件系统最大1EB。

日志文件系统,单文件最大9EB,文件系统最大18EB。相比ext4大文件、多文件、空间利用率上更具优势,适合云计算等场景。

 

2. du

功能:du 也是用于磁盘空间使用情况的查看,与df 不同的是du是对磁盘各个分区的查看,du是对具体的文件或者目录的空间占用进行查看。

格式:du 参数 文件名/目录名

参数:

  -a  列出所有文件/目录的磁盘用量

  -h  以较易读的方式显示,单位MB、GB

  -s  显示磁盘占用总量

  -k  显示单位为KB

  -m 显示单位为MB

举例:

[root@localhost ~]# du  #默认会列出当前所有文件空间占用,会递归目录

4     ./.cache/abrt

4     ./.cache

0     ./.config/abrt

[root@localhost ~]# du –sm  #当前目录空间占用总量

20   .

[root@localhost ~]# du -sm ./*  #当前路径下文件、目录空间占用量

1     ./anaconda-ks.cfg

1     ./log

16   ./nginx-1.6.2

1     ./nginx-1.6.2.tar.gz

3     ./zsh-5.0.2-28.el7.x86_64.rpm

3. inode

inode 是linux中的一个重要的概念,是理解linux文件系统和磁盘存储的基础。理解inode有助于提供对操作系统的理解,体会linux的设计哲学。

简单理解就是inode用于存储文件的元数据信息。操作系统在读取磁盘数据的时候不会一次读取一个一个扇区,这样读取效率较低,操作系统一般会一次性的连续读取多个扇区,即一次性的读取一个block块,块是文件存取的最小的单位,最常见的是以8个扇区组成一个块,即一个块4KB。文件的数据分散在块中,因此需要找一个地方记录文件的一些元数据,如文件属主、文件新建日期、文件大小等,Linux中这些元数据存储在inode中。

inode 中存储除文件名之外的所有的文件信息,具体为:

  1. 文件字节数
  2. 文件属主的UID
  3. 文件属组的GID
  4. 文件的读、写、执行权限
  5. 文件的三个时间戳,即ctime(inode上次变动时间),atime(文件上次打开时间),mtime(文件内容上次的修改时间)
  6. 文件的链接数,即指向这个inode的文件数
  7. 文件数据block的位置

查看文件inode信息:

[root@localhost ~]# stat /etc/passwd

  File: ‘/etc/passwd’

  Size: 2160        Blocks: 8          IO Block: 4096   regular file

Device: 803h/2051d       Inode: 34824187    Links: 1

Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)

Context: system_u:object_r:passwd_file_t:s0

Access: 2018-04-18 05:59:42.231071262 -0700

Modify: 2018-04-12 04:22:01.849537812 -0700

Change: 2018-04-12 04:22:01.851537959 -0700

 Birth: -

有时磁盘空间未用完,但是磁盘已经不能进行写入,此时可以查看下是不是inode已经用完。

下节在讲解Linux的文件链接时会对inode进行深入的学习。

二、磁盘分区

磁盘需要分区、格式化、挂载后才能进行使用。

1. fdisk

功能:Linux 磁盘分区工具

格式:fdisk 参数 磁盘设备路径

参数:

  -l  列出所有分区

举例:

添加磁盘:

需要先给虚拟机添加一块磁盘。

磁盘大小随意。

磁盘添加完后重启虚拟机。

此时在/dev/下可以看到多了一个设备sdb:

[root@localhost ~]# fdisk /dev/sdb  #分区

Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.

Be careful before using the write command.

Device does not contain a recognized partition table

Building a new DOS disklabel with disk identifier 0xda821520.

Command (m for help): n    #new,新建分区

Partition type:

   p   primary (0 primary, 0 extended, 4 free)

   e   extended

Select (default p): p   #新建主分区,e为扩展分区

Partition number (1-4, default 1): 1  #分区号

First sector (2048-41943039, default 2048):    #起始扇区

Using default value 2048

Last sector, +sectors or +size{K,M,G} (2048-41943039, default 41943039): #结束扇区

Using default value 41943039

Partition 1 of type Linux and of size 20 GiB is set

Command (m for help): w  #保存上面的更改

The partition table has been altered!

Calling ioctl() to re-read partition table.

Syncing disks.

此时可以在/dev/下看到一个新的分区sdb1:

fdisk –l 也可查看到新建的分区:

2. parted

Centos7中默认已经安装。

parted 是一个用于磁盘分区的工具,与fdisk相比parted支持2TB以上大磁盘的分区,并且支持调整分区的大小,以及数据到新硬盘的拷贝。

parted可以识别多种分区表格式,如MBR和GPT等,MBR最大支持4个分区表项。此处以GPT为例进行讲解。

 parted与fdisk的比较:

fdisk

parted

大于2TB以上磁盘分区特别慢,且部分容量可能识别不了,不支持非交互模式(难以脚本化)。

支持大于2TB磁盘分区,且分区速度快,支持非交互模式,可调整分区大小。

 

GPT分区

GPT即全局唯一分区表,MBR限制分区表项最大为4个,GPT并未对Linux磁盘分区数量做限制,对windows数量有限制,GPT可管理磁盘最大可达18EB(1EB为1024PB,1PB为1024TB)。

parted使用

参数:

  -l  显示磁盘分区信息,比fdisk –l详细

  -v  显示版本号

  -i  交互模式

  -s  脚本模式

举例:

按照上面的fdisk命令中添加磁盘的方式添加一块磁盘,并重启系统。可以看到/dev/下已经添加的设备文件sdc:

[root@localhost ~]# parted –l  #查看所有分区信息

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sda: 32.2GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

Disk Flags:

Number  Start   End     Size    Type     File system     Flags

 1      1049kB  316MB   315MB   primary  xfs             boot

 2      316MB   2463MB  2147MB  primary  linux-swap(v1)

 3      2463MB  32.2GB  29.7GB  primary  xfs

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdb: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: msdos

 

[root@localhost ~]# parted /dev/sdc  #分区

GNU Parted 3.1

Using /dev/sdc

Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) p  #列出已有分区表,此时没有                                                              

Error: /dev/sdc: unrecognised disk label

Model: VMware, VMware Virtual S (scsi)                                   

Disk /dev/sdc: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: unknown

Disk Flags:

(parted) mklabel  #新建分区表

New disk label type? gpt  #分区表类型                                               

(parted) mkpart  #新建分区                                                          

Partition name?  []? sdc1  #分区名称                                               

File system type?  [ext2]?  #文件系统类型,默认即可后续哈需要格式化                                                

Start? 1  #起始位置,第一个分区则此处必须是1                                                                  

End? 1G  #分区大小                                                                   

(parted) p  #查看分区表                                                               

Model: VMware, VMware Virtual S (scsi)

Disk /dev/sdc: 21.5GB

Sector size (logical/physical): 512B/512B

Partition Table: gpt

Disk Flags:

Number  Start   End     Size   File system  Name  Flags

 1      1049kB  1000MB  999MB               sdc1   #1是分区号, rm 1 可删除此分区

(parted) quit                                                             

Information: You may need to update /etc/fstab.

分区完此时分区还不能使用,需要后续的格式化后才可使用。

三、格式化磁盘分区

磁盘分区完后需要格式化才能挂载使用。

1. mkfs

功能:在指定的分区上新建文件系统,如ext3、ext4、xfs等

格式:mkfs.文件系统类型  分区

参数:

  -t  指定分区的文件系统类型

  -c  格式化前检查分区是否正常

举例:

[root@localhost ~]# mkfs -c /dev/sdb1  #检查分区

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

1310720 inodes, 5242624 blocks

262131 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=4294967296

160 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

       4096000

Checking for bad blocks (read-only test): done                                                

Allocating group tables: done                           

Writing inode tables: done                           

Writing superblocks and filesystem accounting information: done  

[root@localhost ~]# mkfs -t ext4 /dev/sdb1  #为分区建ext4文件系统,即格式化

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

1310720 inodes, 5242624 blocks

262131 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=2153775104

160 block groups

32768 blocks per group, 32768 fragments per group

8192 inodes per group

Superblock backups stored on blocks:

       32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,

       4096000

Allocating group tables: done                           

Writing inode tables: done                           

Creating journal (32768 blocks): done

Writing superblocks and filesystem accounting information: done

[root@localhost ~]# mkfs.ext4 /dev/sdc1  #-t ext4 可用mkfs.ext4代替

mke2fs 1.42.9 (28-Dec-2013)

Filesystem label=

OS type: Linux

Block size=4096 (log=2)

Fragment size=4096 (log=2)

Stride=0 blocks, Stripe width=0 blocks

61056 inodes, 243968 blocks

12198 blocks (5.00%) reserved for the super user

First data block=0

Maximum filesystem blocks=251658240

8 block groups

32768 blocks per group, 32768 fragments per group

7632 inodes per group

Superblock backups stored on blocks:

       32768, 98304, 163840, 229376

Allocating group tables: done                           

Writing inode tables: done                           

Creating journal (4096 blocks): done

Writing superblocks and filesystem accounting information: done

四、磁盘挂载、卸载

磁盘分区、格式化后需要挂载到已有的目录下才能进行使用。

1. mount

作用:挂载文件系统

格式:mount  格式化分区  目录

参数:

  -a  挂载所有的分区,读取/etc/fstab中的配置,一般用于测试开机自动挂载

  -t  指定分区类型

  -o ro  分区只读

  -o rw  分区可写

  -o remount  重新挂载

举例:

[root@localhost ~]# mkdir /sdb1  #新建目录,用于挂载分区

[root@localhost ~]# mount /dev/sdb1 /sdb1  #挂载分区

[root@localhost ~]# mkdir /sdc1

[root@localhost ~]# mount -o ro /dev/sdc1 /sdc1  #只读方式挂载

[root@localhost ~]# df –h  #查看分区

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  3.9G   24G  14% /

devtmpfs        481M     0  481M   0% /dev

tmpfs           490M   80K  490M   1% /dev/shm

tmpfs           490M  7.1M  483M   2% /run

tmpfs           490M     0  490M   0% /sys/fs/cgroup

/dev/sda1       297M  112M  186M  38% /boot

tmpfs            98M   12K   98M   1% /run/user/42

tmpfs            98M     0   98M   0% /run/user/0

/dev/sdb1        20G   45M   19G   1% /sdb1

/dev/sdc1       922M  2.4M  856M   1% /sdc1

[root@localhost ~]# echo 11111 > /sdb1/file1  #可写

[root@localhost ~]# ls /sdb1

file1  lost+found

[root@localhost ~]# echo 22222 > /sdc1/file1  #只读

-bash: /sdc1/file1: Read-only file system

2. 开机自动挂载

将格式化好的磁盘分区mount到指定的目录,每次重启后都需要对磁盘分区进行重新的挂载,不方便,因此需要配置开机自动挂载。

开机自动挂载的配置文件为/etc/fstab。

各字段解释如下:

UUID=0c19d0ed-c669-4942-b9fc-efabe0da41fb /boot xfs defaults  0 0

分区标识  挂载点  文件系统  文件系统参数  是否做备份  检查分区完整性

分区标识: 可以是分区路径、设备UUID、分区软连接

挂载点:分区的挂载位置

文件系统:文件系统类型,和mkfs格式化时的一致

文件系统参数:即mkfs –o指定的参数,如ro、rw等,default为: rw、suid、dev、exec、auto等默认参数设置,一般用default即可,除非有特殊的需求

是否做备份:开机时是否做分区的dump备份,0不做,1每天dump备份,2不定期备份

检查分区完整性:开机时是否用fsck对分区完整性进行检查,0不检查,1检验(根目录用此),2 在1检查完后进行检验。

使用设备名称挂载

在/etc/fstab中添加分区/dev/sdb1和/dev/sdc1的自动挂载配置:

修改并保存完配置配置文件后,mount –a重新加载配置文件,df –h看下分区是否会自动挂载。

[root@localhost ~]# mount -a

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  3.9G   24G  14% /

devtmpfs        481M     0  481M   0% /dev

tmpfs           490M   80K  490M   1% /dev/shm

tmpfs           490M  7.1M  483M   2% /run

tmpfs           490M     0  490M   0% /sys/fs/cgroup

/dev/sda1       297M  112M  186M  38% /boot

tmpfs            98M   12K   98M   1% /run/user/42

tmpfs            98M     0   98M   0% /run/user/0

/dev/sdb1        20G   45M   19G   1% /sdb1

/dev/sdc1       922M  2.4M  856M   1% /sdc1

也可重启虚拟机,然后df –h看下分区是否可以自动挂载。

UUID 挂载

UUID 是一个字符串,可以唯一标识系统中的存储设备,Centos7中默认已经采用这种方式进行存储设备的标识。

  参考上文中步骤,对新建的磁盘进行分区并格式化,在/etc/fstab中配置分区的开机自动挂载,具体配置如下:

[root@localhost ~]# blkid | grep sdb1  #查看sdb1分区的UUID

/dev/sdb1: UUID="20bf3ae7-ab68-4f55-84d2-e13480c3a9f2" TYPE="ext4" PARTLABEL="sdc1" PARTUUID="1d4f944f-1327-41b6-82e8-20b15935e5ee"

/etc/fstab文件中格式如下:

[root@localhost ~]# mount –a  #重新加载配置文件,测试开机自动挂载

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  3.9G   24G  14% /

devtmpfs        481M     0  481M   0% /dev

tmpfs           490M  248K  490M   1% /dev/shm

tmpfs           490M  7.1M  483M   2% /run

tmpfs           490M     0  490M   0% /sys/fs/cgroup

/dev/sda1       297M  113M  184M  39% /boot

tmpfs            98M     0   98M   0% /run/user/0

/dev/sdb1       922M  2.4M  856M   1% /sdb1

3. umount

功能:卸载文件系统

格式:umount 参数  文件系统

参数:

  -a  卸载/etc/mtab中记录的所有文件系统

  -n  卸载时信息不写入/etc/fstab中

  -r  卸载失败时尝试以只读的方式重新挂载文件系统

  -v  显示卸载过程的详细信息

举例:

[root@localhost ~]# df -h

Filesystem      Size  Used Avail Use% Mounted on

/dev/sda3        28G  3.9G   24G  14% /

devtmpfs        481M     0  481M   0% /dev

tmpfs           490M  248K  490M   1% /dev/shm

tmpfs           490M  7.1M  483M   2% /run

tmpfs           490M     0  490M   0% /sys/fs/cgroup

/dev/sda1       297M  113M  184M  39% /boot

tmpfs            98M     0   98M   0% /run/user/0

/dev/sdb1       922M  2.4M  856M   1% /sdb1

[root@localhost ~]# umount /sdb1  #/sdb1为挂载目录,也可/dev/sdb1

[root@localhost ~]# mount /dev/sdb1 /sdb1

[root@localhost ~]# cd /sdb1

[root@localhost sdb1]# umount /dev/sdb1  #不能在挂载目录内卸载当前文件系统

umount: /sdb1: target is busy.

        (In some cases useful info about processes that use

         the device is found by lsof(8) or fuser(1))

4. 生产环境常见问题

移出磁盘时记得删除下/etc/fstab中对应的自动挂载配置,否则系统重启时因为找不到需要自动挂载的分区会导致启动异常:

  此时可以输入root密码,打开/etc/fstab文件,将已经移除磁盘对应的记录删除,保存修改后systemctl reboot重启虚拟机。

  云环境的话建议周期性的保存镜像或者快照,也可在做过总要的配置后进行镜像或者快照,当系统出现异常的时候从镜像或者快照快速的进行恢复。

五、拓展

  1. 查询添加磁盘后不重启即可在/dev/下看到设备名的方法。
  2. 查询windows可以支持的GPT分区数目。

标签:15,--,分区,dev,490M,linux,tmpfs,root,localhost
来源: https://blog.csdn.net/u010472499/article/details/110940251

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有