「Linux - 基础」 文件系统管理磁盘分区

文件系统管理

磁盘结构


  1. 磁盘的逻辑结构

在这里插入图片描述

每个扇区的大小事固定的,为512Byte。扇区也是磁盘的最小存贮单位

  • 硬盘的大小是使用“磁头数×柱面数×扇区数×每个扇区的大小”这样的公式来计算的。其中磁头数(Heads)表示硬盘总共有几个磁头也可以理解成为硬盘有几个盘面,然后乘以二;柱面数(Cylinders)表示硬盘每一面盘片有几条磁道;扇区数(Sectors)表示每条磁道上有几个扇区;每个扇区的大小一般是 512Byte。
  1. 磁盘接口

    • IDE 硬盘接口(Integrated Drive Electronics,并口,即电子集成驱动器)也称作“ATA 硬盘”或“PATA 硬盘”,是早期机械硬盘的主要接口,ATA133 硬盘的理论速度可以达到 133MB/s(此速度为理论平均值),IDE 硬盘接口
    • SATA 接口(Serial ATA,串口)是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力。目前已经是 SATA 三代,理论传输速度达到 600MB/s(此速度为理论平均值)
    • SCSI 接口(Small Computer System Interface,小型计算机系统接口)广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及支持热插拔等优点,理论传输速度达到320MB/s

文件系统

  1. Linux 文件系统的特性:

    • super block(超级块):记录整个文件系统的信息,包括block与inode的总量,已经使用inode和block的数量,未使用的inode和block的数量,未使用的 inode和 block的数量,block与 inode的大小,文件系统的挂载时间,最近一次的写入时间,最近一次的磁盘检验时间等。
    • date block(数据块,也称作 block):用来实际保存数据的(柜子的隔断),block 的大小(1KB、2KB或 4KB)和数量在格式化后就已经决定,不能改变,除非重新格式化(制作柜子的时候,隔断大小就已经决定,不能更改,除非重新制作柜子)。每个 blcok只能保存一个文件的数据,要是文件数据小于一个 block块,那么这个 block的剩余空间不能被其他文件是要;要是文件数据大于一个 block块,则占用多个 block块。Windows中磁盘碎片整理工具的原理就是把一个文件占用的多个 block块尽量整理到一起,这样可以加快读写速度。
    • inode(i 节点,柜子门上的标签):用来记录文件的权限(r、w、x),文件的所有者和属组,文件的大小,文件的状态改变时间(ctime),文件的最近一次读取时间(atime),文件的最近一次修改时间(mtime),文件的数据真正保存的 block 编号。每个文件需要占用一个 inode。
  2. Linux常见文件系统

文件 系统描述
extLinux中最早的文件系统,由于在性能和兼容性上具有很多缺陷,现在已经很少使用
ext2是 ext文件系统的升级版本,Red Hat Linux 7.2版本以前的系统默认都是 ext2文件系 统 。 于 1993 年 发 布 , 支 持 最 大 16TB 的 分 区 和 最 大 2TB 的 文 件(1TB=1024GB=1024×1024KB)
ext3是 ext2 文件系统的升级版本,最大的区别就是带日志功能,以便在系统突然停止时提高文件系统的可靠性。支持最大 16TB的分区和最大 2TB的文件
ext4是 ext3文件系统的升级版。ext4 在性能、伸缩性和可靠性方面进行了大量改进。ext4的变化可以说是翻天覆地的,比如向下兼容 ext3、最大 1EB文件系统和 16TB文件、无限数量子目录、Extents连续数据块概念、多块分配、延迟分配、持久预分配、快速 FSCK、日志校验、无日志模式、在线碎片整理、inode增强、默认启用 barrier等。它是 CentOS6.x的默认文件系统
xfsXFS最早针对 IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个 64 位的文件系统,后来进行开源并且移植到了 Linux 操作系统中,目前 CentOS 7.x 将 XFS+LVM 作为默认的文件系统。据官方所称,XFS对于大文件的读写性能较好。
swapswap是 Linux中用于交换分区的文件系统(类似于 Windows中的虚拟内存),当内存不够用时,使用交换分区暂时替代内存。一般大小为内存的 2倍,但是不要超过 2GB。它是 Linux的必需分区
NFSNFS是网络文件系统(Network File System)的缩写,是用来实现不同主机之间文件共享的一种网络服务,本地主机可以通过挂载的方式使用远程共享的资源
iso9600光盘的标准文件系统。Linux要想使用光盘,必须支持 iso9660文件系统
fat就是 Windows下的 fat16文件系统,在 Linux中识别为 fat
vfat就是 Windows下的 fat32文件系统,在 Linux中识别为 vfat。支持最大 32GB的分区和最大 4GB的文件
NTFS就是 Windows下的 NTFS文件系统,不过 Linux默认是不能识别 NTFS文件系统的,如果需要识别,则需要重新编译内核才能支持。它比 fat32文件系统更加安全,速度更快,支持最大 2TB的分区和最大 64GB的文件
ufsSun公司的操作系统 Solaris和 SunOS所采用的文件系统
procLinux中基于内存的虚拟文件系统,用来管理内存存储目录/proc
sysfs和 proc一样,也是基于内存的虚拟文件系统,用来管理内存存储目录/sysfs
tmpfs也是一种基于内存的虚拟文件系统,不过也可以使用 swap交换分区

常见的磁盘管理命令

df 统计磁盘剩余空间大小

[root@iZbp10cdilkxcswm4l893lZ ~]# df [选项] [目录或文件名]
选项
-a  显示特殊文件系统
-h  人性化显示 KB,MB
-T  多出了文件系统类型一列

du 统计文件大小

[root@iZbp10cdilkxcswm4l893lZ ~]# du [选项] [目录或文件名]
选项
-a  显示每个子文件的磁盘占用量
-h  人性化显示 KB,MB
-s  统计占用量,不显示出子目录和子文件的占用量

fsck 文件系统修复命令

[root@iZbp10cdilkxcswm4l893lZ ~]# fsck -y /dev/vda1  //自动修复 
fsck from util-linux 2.23.2
e2fsck 1.42.9 (28-Dec-2013)
/dev/vda1 is mounted.
e2fsck: Cannot continue, aborting.

dumpe2fs 显示磁盘状态

[root@iZbp10cdilkxcswm4l893lZ ~]# dumpe2fs -h /dev/vda1    //显示磁盘状态
dumpe2fs 1.42.9 (28-Dec-2013)
Filesystem volume name:   <none>                           //卷标名
Last mounted on:          /                                //挂载点
Filesystem UUID:          1114fe9e-2309-4580-b183-d778e6d97397
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags:         signed_directory_hash 
Default mount options:    user_xattr acl                    //挂载参数
Filesystem state:         clean                             //文件系统状态,正常
Errors behavior:          Continue               
Filesystem OS type:       Linux
Inode count:              2621440                           //inode总数
Block count:              10484164                          //块总数   
Reserved block count:     471777
Free blocks:              9287867
Free inodes:              2495670
First block:              0
Block size:               4096                              //块大小
Fragment size:            4096

stat 查看文件的详细信息

[root@iZbp10cdilkxcswm4l893lZ ~]# stat test.sh     //查看test.sh文件详细信息
  File: ‘test.sh’   //文件名                             
  Size: 0         	Blocks: 0          IO Block: 4096   regular empty file
 //文件大小          占用块			系统分区块大小     
Device: fd01h/64769d	Inode: 917519      Links: 1
//存放文件的设备 inode号    硬链接数
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
//权限                      属主                    数组
Access: 2020-09-22 09:31:48.312915609 +0800         //访问时间
Modify: 2020-09-22 09:31:48.312915609 +0800         //数据修改时间 
Change: 2020-09-22 09:31:48.312915609 +0800         //状态修改时间
 Birth: -

type file判断文件类型

[root@iZbp10cdilkxcswm4l893lZ ~]# file 文件名    //判断文件类型
[root@iZbp10cdilkxcswm4l893lZ ~]# type 命令名    //判断命令类型

fdisk 命令手工分区

只能分MBR分区表,不能分区GPT分区

新硬盘分区步骤

  1. 关机添加硬盘
  2. 分区(主分区或逻辑分区、分区号、大小)
  3. 格式化
  4. 挂载
分区
  • n—p主----1分区号----1起始柱面-----分区大小+100M-----w

  • n—e扩展—2分区号—124起始柱面----1024柱面(所有剩余空间都分配给扩展分区)

  • n—l逻辑—不用指定分区号—124起始柱面----+100M(指定大小)-----w

[root@localhost ~]# fdisk -l           //查看系统所有硬盘及分区
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: dos
Disk identifier: 0xb565d87c

Device     Boot   Start      End  Sectors Size Id Type
/dev/sda1  *       2048  2099199  2097152   1G 83 Linux
/dev/sda2       2099200 41943039 39843840  19G 8e Linux LVM

Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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

Disk /dev/mapper/cl-root: 17 GiB, 18249416704 bytes, 35643392 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

Disk /dev/mapper/cl-swap: 2 GiB, 2147483648 bytes, 4194304 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
[root@localhost ~]# fdisk -l
Disk /dev/sda: 20 GiB, 21474836480 bytes, 41943040 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: dos
Disk identifier: 0xb565d87c

[root@localhost ~]# fdisk /dev/sdb    //开始分区进入硬盘

Welcome to fdisk (util-linux 2.32.1).
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.
Created a new DOS disklabel with disk identifier 0xdfb50382.

Command (m for help): n             //新建分区
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p               //如上p代表 选择主分区 e 代表选择扩展分区    
Partition number (1-4, default 1): 1       //分区的驱动号为1
First sector (2048-20971519, default 2048):    //分多少扇区  默认为2048 可按回车
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +1G  //给主分区分多少 +1G 代表分区1G

Created a new partition 1 of type 'Linux' and of size 1 GiB.

Command (m for help): w    //保存退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
命令说明
a设置可引导标记
b编辑bsd磁盘标签
c设置DOS操作系统兼容标记
d删除一个分区
l显示已知的文件系统类型 82为Linux swap分区 83为Linux分区
m显示帮助菜单
n新建分区
o建立空白DOS分区表
p显示分区列表
q不保存退出
s新建空白SUN磁盘标签
t改变一个分区的系统ID
u改变显示记录单位
v验证分区表
w保存退出
格式化
//mkfs 不能调整分区的默认参数
[root@localhost ~]# mkfs -t ext4 /dev/sdb1
                 // 格式化 -t 建立文件系统 磁盘位置
mke2fs 1.44.6 (5-Mar-2019)
Creating filesystem with 262144 4k blocks and 65536 inodes
Filesystem UUID: 62259879-3c50-4095-9ebe-ee7741aa531e
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376

Allocating group tables: done                            
Writing inode tables: done                            
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done

// ----------------mke2fs 可以调整分区的默认参数--------------------
[root@localhost ~]# mke2fs [选项] 分区设备文件名
    -t 文件系统      //指定格式化那个文件系统,ext2 ext3
    -b 字节          //指定block块的大小
    -i 字节          //指定 字节/inode 的比例
    -j               //建立带有ext3 日志功能的文件系统
    -L 卷标名        //给文件系统设置卷标名,就不能使用e21abel命令设定了
挂载
[root@localhost ~]# mkdir /disk1              // 1.创建挂载目录 
[root@localhost ~]# ls /
bin   dev   disk1  home  lib64  mnt  proc  run   srv  test  usr
boot  disk  etc    lib   media  opt  root  sbin  sys  tmp   var
[root@localhost ~]# mount /dev/sdb1 /disk1    // 2.挂载到目录下
自动挂载
  • 修改分区自动挂载文件,可以用UUID挂载也可以用磁盘详细路径挂载
[root@localhost ~]# vi  /etc/fstab    //修改分区自动挂载文件
UUID=b03826e6-79c2-4f0b-8b03-e714094e26af /boot               ext4    defaults        1 2
//设备文件名                              挂载点             文件系统   挂载选项      
//第五列  1可以备份   0不备份   1 每天备份   2不定期备份
//第六列  2是否检测磁盘 fsck 0不检测 1启动是检测 2启动后检测
    
//查看系统  UUID
[root@localhost ~]# dumpe2fs /dev/sdb1
    [root@localhost ~]# dumpe2fs /dev/sdb
sdb   sdb1  
[root@localhost ~]# dumpe2fs /dev/sdb
sdb   sdb1  
[root@localhost ~]# dumpe2fs /dev/sdb1
dumpe2fs 1.44.6 (5-Mar-2019)
Filesystem volume name:   <none>
Last mounted on:          <not available>
Filesystem UUID:          62259879-3c50-4095-9ebe-ee7741aa531e    //磁盘UUID
//…………………………此处省略……………………
或者
[root@localhost ~]# ls -l /dev/disk/by-uuid/  //查看系统所有磁盘的UUID
total 0
lrwxrwxrwx. 1 root root  9 Sep 21 22:01 2020-01-03-21-42-40-00 -> ../../sr0
lrwxrwxrwx. 1 root root 10 Sep 21 22:01 61c13acc-51d5-47a0-9bcc-0d00792ce99a -> ../../dm-0
lrwxrwxrwx. 1 root root 10 Sep 21 23:43 62259879-3c50-4095-9ebe-ee7741aa531e -> ../../sdb1
lrwxrwxrwx. 1 root root 10 Sep 21 22:01 b03826e6-79c2-4f0b-8b03-e714094e26af -> ../../sda1
lrwxrwxrwx. 1 root root 10 Sep 21 22:01 e9fc89a9-476c-4264-b825-bb1ce544ddf3 -> ../../dm-1

parted 命令分区

  • MBR分区表:支持的最大分区是2TB(1TB=1024GB);最多支持4个主分区,或3个主分区1个扩展分区
  • GPT分区表:支持最大18EB的分区(1EB=1024PB=1024*1024TB);最多支持128个分区,其他中1个系统保留分区,127个用户自定义分区

parted 交互模式

parted交互命令说明
help [COMMAND]显示所有的命令帮助
mklabel,mktable LABEL-TYPE创建新的磁盘卷标(分区表)
mkpart PART-TYPE [FS-TYPE] START END创建一个分区
name NUMBER NAME给分区命名
print显示分区表等信息
quit退出
rescue START END修复丢失的分区
resizepart NUMBER END修改分区大小
rm NUMBER删除分区
select DEVICE选择需要编辑的设备
disk_set FLAG STATE更改选定设备上的标志
disk_toggle [FLAG]在选中时切换标志的状态
set NUMBER FLAG STATE更改分区号上的标志
toggle [NUMBER [FLAG]]切换分区上标志的状态
unit UNIT设置默认的单位
version显示版本

parted 创建分区

  • 修改分区表
  • 建立分区
[root@localhost ~]# parted /dev/sdb        //进入parted分区
GNU Parted 3.2
Using /dev/sdb
Welcome to GNU Parted! Type 'help' to view a list of commands.

(parted) print                             //打印分区 
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos                     //分区表类型,就是MBR分区  
Disk Flags: 
//分区号  分区起始位置 分区结束位置  大小     类型         文件系统类型   标志
 Number     Start       End        Size     Type       File system     Flags
   1        1049kB     1075MB      1074MB   primary        ext4
//--------------------修改分区-----------------------------------
(parted) mklabel gpt                       //修改分区表 此时为GPT分区
Warning: The existing disk label on /dev/sdb will be destroyed and all data on this
disk will be lost. Do you want to continue?
Yes/No? yes                                // 输入yes                              
//---------------------建立分区----------------------------------
(parted) mkpart                            //创建新的磁盘卷标(分区表)
Partition name?  []? disk2                 //分区名字
File system type?  [ext2]?                 //分区类型                                
Start? 1                                   //分区从1MB开始                             
End? 2GB                                   //分区到2GB结束                               

(parted) print                             //分区打印                                 
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 10.7GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Disk Flags: 

Number  Start   End     Size    File system  Name   Flags
 1      1049kB  2000MB  1999MB  ext2         disk2

调整分区大小

删除分区

swap分区

  1. 添加硬盘、新建分区
  2. 格式化
  3. 使用swap分区
//------------------新建分区--------------------------
[root@localhost ~]# fdisk /dev/sdb 
Command (m for help): n                  
Partition type
   p   primary (0 primary, 0 extended, 4 free)
   e   extended (container for logical partitions)
Select (default p): p
Partition number (1-4, default 1): 1
First sector (2048-20971519, default 2048):    
Last sector, +sectors or +size{K,M,G,T,P} (2048-20971519, default 20971519): +5G
Do you want to remove the signature? [Y]es/[N]o: Y

Command (m for help): p                         //打印

Disk /dev/sdb: 10 GiB, 10737418240 bytes, 20971520 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: dos
Disk identifier: 0xe669ff7c

Device     Boot Start      End  Sectors Size Id Type
/dev/sdb1        2048 10487807 10485760   5G 83 Linux         //分第一个区

Filesystem/RAID signature on partition 1 will be wiped.
//-----------------创建swap分区---------------------------------
Command (m for help): t                            //修改分区的系统ID
Selected partition 1                               //只有一个分区,不用选择分区了
Hex code (type L to list all codes): 82            //swap分区的ID为 82
Changed type of partition 'FAT12' to 'Linux swap / Solaris'.

Command (m for help): w                            //保存并退出
The partition table has been altered.
Calling ioctl() to re-read partition table.
Syncing disks.
//---------------------------格式化成为swap分区---------------------------
[root@localhost ~]# mkswap /dev/sdb1
Setting up swapspace version 1, size = 5 GiB (5368705024 bytes)
no label, UUID=12fd3a49-11f9-4647-b8cd-50ce5844b453
//----------------------查看---------------------------------
[root@localhost ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:          1.8Gi       209Mi       1.3Gi       8.0Mi       217Mi       1.4Gi
Swap:         2.0Gi          0B       2.0Gi
//------------------挂载swap分区------------------------------
[root@localhost ~]# swapon /dev/sdb1                   //类似于mount挂载光盘
[root@localhost ~]# vim /etc/fstab                     //设置开机自动挂载swap分区
/dev/sdb1               swap                    swap    defaults        0 0 

总结

以上就是今天要讲的内容,本文仅仅简单介绍了Linux磁盘如何分区及步骤还有命令。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值