Linux基础-----磁盘与文件系统管理

目录

一.硬盘结构

二.MBR

三.Liunx中的硬盘和分区

四.文件系统类型

五.管理磁盘及分区---fdisk命令

六.创建文件系统

七.挂载、卸载文件系统


一.硬盘结构

  • 硬盘的物理结构,盘片:硬盘有个多个盘片,每个盘片2面,磁头:每面一个磁头
  • 硬盘的数据结构,扇区:盘片被分为多个扇形区域且每个扇区存放512字节的数据,磁道:同一盘片不同半径的同心圆,柱面:不同盘片相同半径构成的圆柱面
  • 硬盘存储容量=磁头数*磁道数(柱面数)*每道扇区数*每扇区字节数
  • 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域
  • 磁盘的接口类型可以分为IDE(并口),SATA(串口),SCSI(服务器专用)

二.MBR

  • MBR(主引导记录)位于硬盘第一个物理扇区处(相当于目录)
  • MBR中包含硬盘的主引导程序和硬盘分区表
  • 分区表有4个分区记录区,每个分区记录区占16个字节

三.Liunx中的硬盘和分区

  • Linux中将硬盘、分区等设备均表示为文件
  • 例:/dev/sda5  。/dev代表硬件设备所在的目录 ,/ sda5 中sd表示SCSI设备,另外还有hd表示IDE设备,a表示磁盘序列,5代表分区。
  • 硬盘中的主分区和扩展分区数目为4个(主分区必须要有一个),其序列号在1~4
  • 扩展分区可以再分为逻辑分区,且逻辑分区的序号始终从5开始

四.文件系统类型

  • XFS文件系统,存放文件和目录数据的分区,CentOS7系统中默认使用的文件系统
  • SWAP交换文件系统,为Linux系统建立交换分区
  • EXT4文件系统,CentOS6系统中默认使用的文件系统
  • EXT3文件系统,CentOS5系统中默认使用的文件系统
  • FAT16,windows系统使用的文件系统,MS—DOS和win95采用的磁盘分区格式,采用16位的文件分配表,只支持2GB的磁盘分区,最大单文件2GB,且磁盘利用率低
  • FAT32,windows系统使用的文件系统,(即Vfat)采用32位的文件分配表,支持最大分区128GB,最大文件4GB
  • NTFS,windows系统使用的文件系统,支持最大分区2TB,最大文件2TB,安全性和稳定性非常好,不易出现文件碎片

五.管理磁盘及分区---fdisk命令

  • fdisk -l ,查看当前系统中所有硬盘设备及其分区的信息
[root@localhost ~]# fdisk -l 

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节


磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    33556479    10485760   83  Linux
/dev/sda3        33556480    41945087     4194304   82  Linux swap / Solaris
/dev/sda4        41945088    83886079    20970496    5  Extended
/dev/sda5        41947136    62918655    10485760   83  Linux
[root@localhost ~]# 
  • fdisk 【磁盘路径】,查看或者管理磁盘分区
  • 交互模式中常用指令,如下
  • -m 帮助信息 ;-p 显示分区信息; -n 新建一个分区; -d 删除分区; -t 转换文件系统id,即转换格式 ;-w 保存信息 ;-q 退出 
  • 实例
[root@localhost ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

Device does not contain a recognized partition table
使用磁盘标识符 0xfa0d0f0b 创建新的 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
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): p
分区号 (1-4,默认 1):
起始 扇区 (2048-41943039,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (1 primary, 0 extended, 3 free)
   e   extended
Select (default p): p
分区号 (2-4,默认 2):
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):+2G
分区 2 已设置为 Linux 类型,大小设为 2 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 0 extended, 2 free)
   e   extended
Select (default p): e
分区号 (3,4,默认 3):
起始 扇区 (14682112-41943039,默认为 14682112):
将使用默认值 14682112
Last 扇区, +扇区 or +size{K,M,G} (14682112-41943039,默认为 41943039):
将使用默认值 41943039
分区 3 已设置为 Extended 类型,大小设为 13 GiB

命令(输入 m 获取帮助):n
Partition type:
   p   primary (2 primary, 1 extended, 1 free)
   l   logical (numbered from 5)
Select (default p): l
添加逻辑分区 5
起始 扇区 (14684160-41943039,默认为 14684160):
将使用默认值 14684160
Last 扇区, +扇区 or +size{K,M,G} (14684160-41943039,默认为 41943039):
将使用默认值 41943039
分区 5 已设置为 Linux 类型,大小设为 13 GiB

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# fdisk -l

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    14682111     2097152   83  Linux
/dev/sdb3        14682112    41943039    13630464    5  Extended
/dev/sdb5        14684160    41943039    13629440   83  Linux

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    33556479    10485760   83  Linux
/dev/sda3        33556480    41945087     4194304   82  Linux swap / Solaris
/dev/sda4        41945088    83886079    20970496    5  Extended
/dev/sda5        41947136    62918655    10485760   83  Linux
[root@localhost ~]# 


注:添加一块20G的硬盘,通过fidsk中的辅助功能,创建一个5G大小和2G大小的主分区,创建一个13G的扩展分区,在扩展分区里再创建一个13G的逻辑分区,其中只有主分区和逻辑分区存储数据,而扩展分区不行

六.创建文件系统

  • 在Linux系统里中,使用fdisk工具在硬盘中建立分区以后,还需要对分区进行格式化并挂载到系统中的指定目录,然后才能用于存储文件、目录等数据
  • 创建文件系统的过程,也就是格式化分区的过程,也可以看作启用这个分区,要不然无法使用
  • Linux系统中使用mkfs(make Filesystem,创建文件系统)命令工具可以格式化XFS、EXT4、FAT等不同类型的分区
  • 使用mkswap命令可以格式化Swap交换分区
  • mkfs命令,可以加载不同的程序来创建各种类型的分区
  • 实例
[root@192 ~]# ls /sbin/mkfs*
/sbin/mkfs         /sbin/mkfs.ext2  /sbin/mkfs.fat    /sbin/mkfs.vfat
/sbin/mkfs.btrfs   /sbin/mkfs.ext3  /sbin/mkfs.minix  /sbin/mkfs.xfs
/sbin/mkfs.cramfs  /sbin/mkfs.ext4  /sbin/mkfs.msdos
[root@192 ~]# 
  • mkfs命令的使用格式:mkfs -t 文件系统类型 分区设备 或者 mkfs.文件系统类型 分区设备
  • 实例(扩展分区不能使用,不用格式化,其ID为5)
[root@192 ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=327680 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=1310720, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# mkfs ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext2: invalid blocks '/dev/sdb2' on device 'ext4'
[root@192 ~]# mkfs -t ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks: 
	32768, 98304, 163840, 229376, 294912

Allocating group tables: 完成                            
正在写入inode表: 完成                            
Creating journal (16384 blocks): 完成
Writing superblocks and filesystem accounting information: 完成 
[root@192 ~]# mkfs -t xfs /dev/sdb5
meta-data=/dev/sdb5              isize=512    agcount=4, agsize=851840 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=3407360, imaxpct=25
         =                       sunit=0      swidth=0 blks
naming   =version 2              bsize=4096   ascii-ci=0 ftype=1
log      =internal log           bsize=4096   blocks=2560, version=2
         =                       sectsz=512   sunit=0 blks, lazy-count=1
realtime =none                   extsz=4096   blocks=0, rtextents=0
[root@192 ~]# 

注:一般不在Linux系统创建Windows中的文件类型,如果要在Linux系统中创建FAT文件系统,应该先用fdisk工具添加分区之后将ID改为b

  • 创建swap分区,swap分区的作用类似Windows系统中的虚拟内存,可以一定程度上缓解物理内存不足的情况,当Liunx主机运行的服务较多时,可以为其增加新的swap分区
  • 使用mkswap命令工具可以在指定分区上创建交换文件系统,目标分区应该先通过fdisk工具将ID设为82
[root@192 ~]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    33556479    10485760   83  Linux
/dev/sda3        33556480    41945087     4194304   82  Linux swap / Solaris
/dev/sda4        41945088    83886079    20970496    5  Extended
/dev/sda5        41947136    62918655    10485760   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    14682111     2097152   83  Linux
/dev/sdb3        14682112    41943039    13630464    5  Extended
/dev/sdb5        14684160    41943039    13629440   83  Linux

[root@192 ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。

更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。

命令(输入 m 获取帮助):t
分区号 (1-3,5,默认 5):5
Hex 代码(输入 L 列出所有代码):82
已将分区“Linux”的类型更改为“Linux swap / Solaris”

命令(输入 m 获取帮助):w
The partition table has been altered!

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@192 ~]# fdisk -l

磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000be365

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048    12584959     6291456   83  Linux
/dev/sda2        12584960    33556479    10485760   83  Linux
/dev/sda3        33556480    41945087     4194304   82  Linux swap / Solaris
/dev/sda4        41945088    83886079    20970496    5  Extended
/dev/sda5        41947136    62918655    10485760   83  Linux

磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xfa0d0f0b

   设备 Boot      Start         End      Blocks   Id  System
/dev/sdb1            2048    10487807     5242880   83  Linux
/dev/sdb2        10487808    14682111     2097152   83  Linux
/dev/sdb3        14682112    41943039    13630464    5  Extended
/dev/sdb5        14684160    41943039    13629440   82  Linux swap / Solaris
[root@192 ~]# 
  • 再使用mkswap + 分区设备,创建交换分区
[root@192 ~]# mkswap /dev/sdb5
mkswap: /dev/sdb5: warning: wiping old xfs signature.
正在设置交换空间版本 1,大小 = 13629436 KiB
无标签,UUID=78a5bd52-c1c0-405a-b9ca-d74018a50963
[root@192 ~]# 
  • 创建新的交换分区,可以使用swapon进行启用,反之使用swapoff进行停用指定的交换分区

七.挂载、卸载文件系统

  • 在安装Linux系统的过程中,自动建立或识别的分区通常会由系统自动完成挂载,如“/”,“boot”分区等
  • 但是对于后来新增加的硬盘分区,则需要管理员手动进行挂载,实际上用户访问的是经过格式化后建立的文件系统
  • 挂载一个分区时,还必须为其指定一个目录作为挂载点,这个目录在磁盘a中
  • 实例
[root@192 ~]# ls /opt
rh
[root@192 ~]# mkdir /opt/day01
[root@192 ~]# echo "hello world" > /opt/day01/day02.txt
[root@192 ~]# cat /opt/day01/day02.txt
hello world
[root@192 ~]# mount /dev/sdb1 /opt/day01
[root@192 ~]# cat /opt/day01/day02.txt
cat: /opt/day01/day02.txt: 没有那个文件或目录
[root@192 ~]# echo "I have a pen" > /opt/day01/night02.txt
[root@192 ~]# cat /opt/day01/night02.txt
I have a pen
[root@192 ~]# 
[root@192 ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        10G  3.3G  6.8G   33% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  482M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
tmpfs          tmpfs      98M   12K   98M    1% /run/user/42
tmpfs          tmpfs      98M     0   98M    0% /run/user/0
/dev/sdb1      xfs       5.0G   33M  5.0G    1% /opt/day01
[root@192 ~]# 

注:由上述代码可以看到,当我们在磁盘a中创建目录和文件时,可以看到文件内容,但是当我们把这个文件作为磁盘b1的挂载时,就看不到原来的文件了,而且当我们在这个目录创建文件时,这个文件是在磁盘b1下的。

  • umount命令,使用挂载点目录或对应的设备的文件名作为卸载参数
  • 实例
[root@192 ~]# umount /opt/day01
[root@192 ~]# cat /opt/day01/day02.txt
hello world
[root@192 ~]# cat /opt/day01/night02.txt
cat: /opt/day01/night02.txt: 没有那个文件或目录
[root@192 ~]# 

注:由上可以看见解挂/opt/day01这个目录点之后,可以看到之前在磁盘a这个目录创建的文件day02.txt,而看不到磁盘b1下创建的文件night02.txt

  • 挂载ISO镜像文件,“iso”镜像文件通常被视为一种特殊的“回环”文件系统,因此在挂载时需要添加 “-o look”
  • 设置自动挂载文件系统
  • 系统中的/etc/fstab 文件可以视为mount命令的配置文件,其中储存了文件系统的静态挂载数据
  • Linux系统每次开机时,会自动读取这个文件的内容,自动挂载所指定的文件系统
[root@192 ~]# cat /etc/fstab

#
# /etc/fstab
# Created by anaconda on Wed Oct 23 22:05:20 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=9e75472e-24a7-4fb6-9241-dee91acdffe0 /                       xfs     defaults        0 0
UUID=df84cc7f-d73a-417c-a237-5d5b111d5028 /boot                   xfs     defaults        0 0
UUID=3ba6579a-fce9-4e27-9a82-e50ce18e0899 /home                   xfs     defaults        0 0
UUID=7ad95712-3079-41f4-969d-91d003d2bfa7 swap                    swap    defaults        0 0
[root@192 ~]# 
  • 其中各个部分的含义
  • 第一字段是设备分区,第二字段是挂载点,第三字段是文件系统类型,第四字段中的defaults 代表能读能写(权限功能),第一个0容灾备份(可靠性),第二个0 (启动检查序列)
  • 实例(需要重启才能看到,是否被自动挂载)
[root@192 ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        10G  3.3G  6.8G   33% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  482M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
tmpfs          tmpfs      98M   24K   98M    1% /run/user/0
/dev/sr0       iso9660   4.3G  4.3G     0  100% /run/media/root/CentOS 7 x86_64
[root@192 ~]# vim /etc/fstab



#
# /etc/fstab
# Created by anaconda on Wed Oct 23 22:05:20 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=9e75472e-24a7-4fb6-9241-dee91acdffe0 /                       xfs     defaults        0 0
UUID=df84cc7f-d73a-417c-a237-5d5b111d5028 /boot                   xfs     defaults        0 0
UUID=3ba6579a-fce9-4e27-9a82-e50ce18e0899 /home                   xfs     defaults        0 0
UUID=7ad95712-3079-41f4-969d-91d003d2bfa7 swap                    swap    defaults        0 0
/dev/sdb1       /opt/day01      xfs     defaults        0 0

注:在vi编辑器里操作时要注意编写格式!使用df -hT,命令可以看到当前系统中挂载的各个文件系统的磁盘使用情况。

下面代码是重启之后的情况!

[root@192 ~]# init 6
Connection closing...Socket close.

Connection closed by foreign host.

Disconnected from remote host(centos7-1) at 23:47:24.

Type `help' to learn how to use Xshell prompt.
[D:\~]$ 

Connecting to 192.168.43.133:22...
Connection established.
To escape to local shell, press 'Ctrl+Alt+]'.

Last login: Fri Nov  1 23:18:26 2019
[root@192 ~]# df -hT
文件系统       类型      容量  已用  可用 已用% 挂载点
/dev/sda2      xfs        10G  3.3G  6.8G   33% /
devtmpfs       devtmpfs  474M     0  474M    0% /dev
tmpfs          tmpfs     489M     0  489M    0% /dev/shm
tmpfs          tmpfs     489M  7.2M  482M    2% /run
tmpfs          tmpfs     489M     0  489M    0% /sys/fs/cgroup
/dev/sdb1      xfs       5.0G   33M  5.0G    1% /opt/day01
/dev/sda5      xfs        10G   37M   10G    1% /home
/dev/sda1      xfs       6.0G  158M  5.9G    3% /boot
tmpfs          tmpfs      98M     0   98M    0% /run/user/0
tmpfs          tmpfs      98M  8.0K   98M    1% /run/user/42
[root@192 ~]# 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值