Linux系统管理之磁盘管理与文件系统
Linux系统管理之磁盘管理与文件系统
一、前言
管理磁盘是管理员的重要工作内容,本文主要介绍以下几个方面
- 磁盘结构及分区表示
- 管理磁盘及分区
- 管理文件系统
二、磁盘(无尘环境制造)结构及分区
1.物理结构
- 盘片:硬盘有多个盘片,每盘片2面
- 磁头:每面有一个磁头
2.数据结构
- 扇区:盘片被分为多个扇形区域,每个扇区存放512字节的数据
- 磁道:同一盘片不同半径的同心圆
- 柱面:不同盘片相同半径构成的圆柱面
多个扇区组成磁道,多个相同直径的磁道组成柱面
笔记本的磁盘一般是2.5英寸,7mm厚度和9.5mm厚度,台式机一般是3.5英寸,SSD 2.5英寸 厚度7mm ,固态硬盘,电子芯片存储,数据丢失无法恢复,速度快。
3.存储容量=磁头数柱面每道扇区数*每扇区字节数
4.磁盘接口类型
- IDE 基本不用
- SATA 目前是SATA3
- SCSI 服务器专用的
5.MBR与磁盘分区表示
MBR最多4个分区,GPT支持128分区
1)主引导记录
- MBR位于硬盘第一个物理扇区处
- MBR中包含硬盘的主引导程序和硬盘分区表
- 分区表有4个分区记录区,每个分区记录占16字节
2)Linux中将硬盘、分区等设备均表示为文件
/dev/hda5 hd--IDE设备接口 ,sd--SCSI设备 a--第一块 5--序列号
3)磁盘分区结构
硬盘中的主分区2数目只有四个主分区和扩展分区的序号为1~4
扩展分区(MBR必须有一个主分区才可以创建主分区)可以分为逻辑分区,序号从5开始
三、文件系统
1.文件系统类型
1)XFS文件系统
高性能的日志文件系统,擅长处理大文件,支持百万级T字节的存储空间。
存放文件和目录数据的分区,有日志功能,宕机也可以进行数据恢复
2)swap
SWAP,交换文件系统--用于Linux系统建立交换分区,相当于虚拟内存,缓解物理内存不足的问题(但是有上限,只是缓解,而不是解决)该区不用于直接存储用户的文件和目录等数据!!!
3)Linux支持的其他文件系统类型
FAT16、FAT32(不安全)、NTFS
EXT4(Centos6) EXT3(Centos5)
四、管理磁盘、分区及文件系统
1.lsblk命令
用于列出所有可用块设备的信息,而且还能显示他们之间的依赖关系,但是它不会列出RAM盘的信息
2.检测并确认新硬盘--分区
fdisk命令--(fdisk -l )查看或(fdisk 设备)管理磁盘分区
交互模式中的常用命令:m(帮助信息)、p(显示)、n(新建)、d(删除)、t(变更分区类型)、w(保存,考虑清楚操作)、q(不保存退出)
[root@lokott ~]# fdisk -l磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x000a0791 设备 Boot Start End Blocks Id System/dev/sda1 * 2048 12584959 6291456 83 Linux/dev/sda2 12584960 54527999 20971520 83 Linux/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris/dev/sda4 62916608 83886079 10484736 5 Extended/dev/sda5 62918656 83886079 10483712 83 Linux 设备 *代表引导分区 起始位置 结束位置 分区大小(kb)系统ID号 分区类型
3.格式化文件系统类型
- mkfs -t 文件系统类型(如xfs) 分区设备(/dev/sdbn,n表示序号)例如:mkfs -t xfs /dev/sdb1
- mkfs.xfs /dev/sdb1 mkfs一般用于格式化XFS、EXT4、FAT等不同类型的分区
- mkswap 格式化Swap交换分区
4.挂载
mount /dev/sdb1 /mnt
总结:首先我们要先添加一块到多块磁盘,在VMware上可以进行添加,后面给出具体操作,其次进行分区、格式化、挂载操作,但是目前挂载是一次有效,虚拟机重启后是无效的,需要手动操作进行再次挂载,这样是非常不方便的,所以下面介绍永久挂载的操作
5.永久挂载
- 在root用户下先vim /etc/fstab文件,
- 添加设备名称 挂载点 文件系统类型 文件权限功能(一般是defaults) 0 (容灾处理) 0(启动优先级,0表示正常顺序进行加载)
- 保存退出后,一般服务器是不能重启(宕机的),所以一般不会重启来使系统加载,而是使用mount -a命令进行挂载
6.查看磁盘使用情况
df -hT
具体操作过程如下:
(1)首先在VMware上添加三块新的硬盘
(2)重启Centos7
[root@lokott ~]# init 6
(3)lsblk查看块设备信息
[root@lokott ~]# lsblk //查看原本有sda,添加了sdb、sdc和sddNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 40G 0 disk ├─sda1 8:1 0 6G 0 part /boot├─sda2 8:2 0 20G 0 part /├─sda3 8:3 0 4G 0 part [SWAP]├─sda4 8:4 0 1K 0 part └─sda5 8:5 0 10G 0 part /homesdb 8:16 0 20G 0 disk sdc 8:32 0 20G 0 disk sdd 8:48 0 20G 0 disk sr0 11:0 1 4.2G 0 rom /run/media/root/CentOS 7 x86_64[root@lokott ~]# fdisk -l //也可以用fdisk -l 查看详细信息磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x000a0791 设备 Boot Start End Blocks Id System/dev/sda1 * 2048 12584959 6291456 83 Linux/dev/sda2 12584960 54527999 20971520 83 Linux/dev/sda3 54528000 62916607 4194304 82 Linux swap / Solaris/dev/sda4 62916608 83886079 10484736 5 Extended/dev/sda5 62918656 83886079 10483712 83 Linux磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/sdc:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘 /dev/sdd:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节
(4)fdisk /dev/sdn 进入交互模式下进行硬盘分区
[root@lokott ~]# fdisk /dev/sdb //分区操作开始欢迎使用 fdisk (util-linux 2.23.2)。更改将停留在内存中,直到您决定将更改写入磁盘。使用写入命令前请三思。Device does not contain a recognized partition table使用磁盘标识符 0x4b4b9f25 创建新的 DOS 磁盘标签。命令(输入 m 获取帮助):m命令操作 a toggle a bootable flag b edit bsd disklabel c toggle the dos compatibility flag d delete a partition g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types m print this menu n add a new partition o create a new empty DOS partition table p print the partition table q quit without saving changes s create a new empty Sun disklabel t change a partition's system id u change display/entry units v verify the partition table w write table to disk and exit x extra functionality (experts only)命令(输入 m 获取帮助):n //将硬盘分区,分出一个extend区来建立逻辑分区,但是必须先有主分区Partition type: p primary (0 primary, 0 extended, 4 free) e extendedSelect (default p): p分区号 (1-4,默认 1):起始 扇区 (2048-41943039,默认为 2048):将使用默认值 2048Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G分区 1 已设置为 Linux 类型,大小设为 5 GiB命令(输入 m 获取帮助):nPartition type: p primary (3 primary, 0 extended, 1 free) e extendedSelect (default e): e已选择分区 2起始 扇区 (10487808-41943039,默认为 10487808):将使用默认值 10487808Last 扇区, +扇区 or +size{K,M,G} (10487808-20973567,默认为 20973567):将使用默认值 20973567分区 2 已设置为 Extended 类型,大小设为 5 GiB命令(输入 m 获取帮助):w[root@lokott ~]# fdisk -l /dev/sdb //查看sdb硬盘信息磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区Units = 扇区 of 1 * 512 = 512 bytes扇区大小(逻辑/物理):512 字节 / 512 字节I/O 大小(最小/最佳):512 字节 / 512 字节磁盘标签类型:dos磁盘标识符:0x4b4b9f25 设备 Boot Start End Blocks Id System/dev/sdb1 2048 10487807 5242880 83 Linux/dev/sdb2 10487808 20973567 5242880 5 Extended/dev/sdb3 20973568 31459327 5242880 83 Linux/dev/sdb4 31459328 41943039 5241856 83 Linux/dev/sdb5 10489856 14684159 2097152 83 Linux/dev/sdb6 14686208 18880511 2097152 83 Linux/dev/sdb7 18882560 20973567 1045504 83 Linux
(5)mkfs进行格式化操作
[root@lokott ~]# mkfs -t xfs /dev/sdb1meta-data=/dev/sdb1 isize=512 agcount=4, agsize=327680 blks = sectsz=512 attr=2, projid32bit=1 = crc=1 finobt=0, sparse=0data = bsize=4096 blocks=1310720, imaxpct=25 = sunit=0 swidth=0 blksnaming =version 2 bsize=4096 ascii-ci=0 ftype=1log =internal log bsize=4096 blocks=2560, version=2 = sectsz=512 sunit=0 blks, lazy-count=1realtime =none extsz=4096 blocks=0, rtextents=0
(6)进行磁盘挂载并且用df -hT检查是否成功挂载
[root@lokott ~]# mkdir /sdb1_mount[root@lokott ~]# ls /sdb1_mount/[root@lokott ~]# mount /dev/sdb1 /sdb1_mount/[root@lokott ~]# df -hT文件系统 类型 容量 已用 可用 已用% 挂载点/dev/sda2 xfs 20G 4.5G 16G 23% /devtmpfs devtmpfs 474M 0 474M 0% /devtmpfs tmpfs 489M 0 489M 0% /dev/shmtmpfs tmpfs 489M 7.2M 481M 2% /runtmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot/dev/sda5 xfs 10G 37M 10G 1% /hometmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 20K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64/dev/sdb1 xfs 5.0G 33M 5.0G 1% /sdb1_mount
注意!重启之后不会自动挂载的
[root@lokott ~]# init 6Connection closing...Socket close.Connection closed by foreign host.Disconnected from remote host(centos7-1) at 22:25:16.Type `help' to learn how to use Xshell prompt.[c:\~]$ Connecting to 192.168.189.133:22...Connection established.To escape to local shell, press 'Ctrl+Alt+]'.Last login: Fri Nov 1 22:26:01 2019[root@lokott ~]# df -hT文件系统 类型 容量 已用 可用 已用% 挂载点/dev/sda2 xfs 20G 4.5G 16G 23% /devtmpfs devtmpfs 474M 0 474M 0% /devtmpfs tmpfs 489M 0 489M 0% /dev/shmtmpfs tmpfs 489M 7.2M 481M 2% /runtmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot/dev/sda5 xfs 10G 37M 10G 1% /hometmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 16K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64
(8)设置永久挂载设置操作
[root@lokott ~]# cat /etc/fstab //查看一下文件的内容然后vim 写入命令## /etc/fstab# Created by anaconda on Wed Oct 23 12:15:45 2019## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#UUID=d0f8b702-0aa9-4857-9551-2e1283d2f5f9 / xfs defaults 0 0UUID=4d632b10-c77d-438f-a9f4-8b4b0aeee9a9 /boot xfs defaults 0 0UUID=a12d80a9-1b44-487a-996f-b57fbca184b5 /home xfs defaults 0 0UUID=af672794-14a8-433a-a9c9-c3c263de9243 swap swap defaults 0 0[root@lokott ~]# vim /etc/fstab [root@lokott ~]# cat /etc/fstab ## /etc/fstab# Created by anaconda on Wed Oct 23 12:15:45 2019## Accessible filesystems, by reference, are maintained under '/dev/disk'# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info#UUID=d0f8b702-0aa9-4857-9551-2e1283d2f5f9 / xfs defaults 0 0UUID=4d632b10-c77d-438f-a9f4-8b4b0aeee9a9 /boot xfs defaults 0 0UUID=a12d80a9-1b44-487a-996f-b57fbca184b5 /home xfs defaults 0 0UUID=af672794-14a8-433a-a9c9-c3c263de9243 swap swap defaults 0 0/dev/sdb1 /sdb1_mount xfs defaults 0 0[root@lokott ~]# df -hT //添加之后一般是需要重启才会加载的,但是我们知道服务器 //一般是不允许允许宕机的,因此需要用mount -a使其立即生效文件系统 类型 容量 已用 可用 已用% 挂载点/dev/sda2 xfs 20G 4.5G 16G 23% /devtmpfs devtmpfs 474M 0 474M 0% /devtmpfs tmpfs 489M 0 489M 0% /dev/shmtmpfs tmpfs 489M 7.2M 481M 2% /runtmpfs tmpfs 489M 0 489M 0% /sys/fs/cgroup/dev/sda1 xfs 6.0G 158M 5.9G 3% /boot/dev/sda5 xfs 10G 37M 10G 1% /hometmpfs tmpfs 98M 4.0K 98M 1% /run/user/42tmpfs tmpfs 98M 20K 98M 1% /run/user/0/dev/sr0 iso9660 4.3G 4.3G 0 100% /run/media/root/CentOS 7 x86_64[root@lokott ~]# mount -a[root@lokott ~]# df -hT | tail -1 /dev/sdb1 xfs 5.0G 33M 5.0G 1% /sdb1_mount[root@lokott ~]#
小结:
在理解原理的基础上进行实际操作,需要多熟悉体会并且真正理解操作过程,巧用一些命令可以简化一些问题提高效率,例如上面的管道符号(|)的使用,可以更加直观地查看信息,提高效率。所以我们需要学以致用,多思多用。