系列教程--Linux基础--15--linux磁盘管理
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了系列教程--Linux基础--15--linux磁盘管理,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含16984字,纯文字阅读大概需要25分钟。
内容图文
本节概要
磁盘空间查看
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 中存储除文件名之外的所有的文件信息,具体为:
- 文件字节数
- 文件属主的UID
- 文件属组的GID
- 文件的读、写、执行权限
- 文件的三个时间戳,即ctime(inode上次变动时间),atime(文件上次打开时间),mtime(文件内容上次的修改时间)
- 文件的链接数,即指向这个inode的文件数
- 文件数据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重启虚拟机。
云环境的话建议周期性的保存镜像或者快照,也可在做过总要的配置后进行镜像或者快照,当系统出现异常的时候从镜像或者快照快速的进行恢复。
五、拓展
- 查询添加磁盘后不重启即可在/dev/下看到设备名的方法。
- 查询windows可以支持的GPT分区数目。
内容总结
以上是互联网集市为您收集整理的系列教程--Linux基础--15--linux磁盘管理全部内容,希望文章能够帮你解决系列教程--Linux基础--15--linux磁盘管理所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。