一直学一直嗨,一直嗨一直学

Linux 磁盘与文件系统管理

Linux 用户账号与权限管理

Linux中,我们该如何对磁盘进行分区,格式化、挂载?


硬盘基础知识

1.物理结构

盘片:硬盘有多个盘片,每个盘片两面。(Platter)

磁头:每面一个磁头。(Head)

2.数据结构

磁道:磁盘旋转时,磁头若保持在一个位置上,则每个磁头都会在磁盘表面划出一个圆形轨迹,这些圆形轨迹就叫做磁道(Track)。

扇区:每个磁道被等分为福哦干个弧段,这些弧段便是扇区(Sector)。扇区是磁盘的最小组成单元,通常是512字节,由于不断提高磁盘的大小,部分厂商设定每个扇区的大小是4096字节。

柱面:在多个盘片构成的盘组中,由不同盘片的面,但处于同一半径圆的多个磁道组成的一个圆柱面(Cylinder)。

3.存储容量

硬盘存储容量 = 磁头数 × 磁道(柱面)数 × 每道扇区数 × 每扇区字节数。

4.磁盘读取响应时间

寻道时间:磁头从开始移动到数据所在磁道所需要的时间,寻道时间越短,I/O操作越快,目前磁盘的平均寻道时间一般在3-15ms,一般都在10ms左右。

旋转延迟:盘片旋转将请求数据所在扇区移至读写磁头下方所需要的时间,旋转延迟取决于磁盘转速。普通硬盘一般都是7200rpm,慢的5400rpm。

数据传输时间:完成传输所请求的数据所需要的时间。

5.扇区、块/簇、page

扇区:硬盘的最小读写单元

块/簇:是操作系统针对硬盘读写的最小单元

page:是内存与操作系统之间操作的最小单元。

  • 扇区 <= 块/簇 <= page

6.硬盘接口

ATA(IDE):并口,抗干扰性太差,排线占用空间大,逐渐被SATA取代。

SATA:抗干扰性强,支持热拔插,速度快,纠错能力强。

SCSI:广为工作站级个人电脑以及服务器使用,资料传输时CPU占用率较低,转速快,支持热拔插。

SAS:新一代的SCSI技术,与SATA相同,都是采取序列式技术以获得更高的传输速度,可达6Gb/s


MBR

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


分区表示

  1. IDE接口的设备表示为hdX形式,SCSI接口的设备表示为sdX形式。

  2. X可以为abc等,如第一个IDE设备表示为hda,第二个SCSI设备表示为sdb

  3. 主分区和扩展分区序号为1~4,逻辑分区从5开始,扩展分区里分逻辑分区。如hda2sdb5。扩展分区不可存数据,扩展分区中的逻辑分区可以存数据。


文件系统

  1. SWAP:交换文件系统,相当于虚拟内存。能够在一定程度上缓解物理内存不足的问题。

  2. EXT4:第4代扩展文件系统,典型的日志型文件系统,保存有磁盘存取记录的日志数据,便于恢复,在存取性能和稳定性方面更加出色。

  3. XFS:高性能的日志文件系统,擅长处理大文件,能识别PB级别的存储。由于文件系统开启日志功能,所以即使发生宕机也不怕数据遭到破坏,可根据日志记录在短时间内进行数据恢复。


管理磁盘及分区

fdisk 查看分区列表
  • fdisk -l [磁盘设备]

-l:查看磁盘分区列表

[root@localhost ~]# fdisk -l    磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0x000a9fb6       设备 Boot      Start         End      Blocks   Id  System  /dev/sda1   *        2048     4196351     2097152   83  Linux  /dev/sda2         4196352    46139391    20971520   83  Linux  /dev/sda3        46139392    62916607     8388608   82  Linux swap / Solaris  /dev/sda4        62916608    83886079    10484736    5  Extended  /dev/sda5        62918656    83886079    10483712   83  Linux  
  • 添加一块60G硬盘,并重启linux
[root@localhost ~]# reboot  
[root@localhost ~]# fdisk -l    磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0x000a9fb6       设备 Boot      Start         End      Blocks   Id  System  /dev/sda1   *        2048     4196351     2097152   83  Linux  /dev/sda2         4196352    46139391    20971520   83  Linux  /dev/sda3        46139392    62916607     8388608   82  Linux swap / Solaris  /dev/sda4        62916608    83886079    10484736    5  Extended  /dev/sda5        62918656    83886079    10483712   83  Linux    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  
fdisk 交互模式

m:帮助
p:显示分区列表print
n:创建新分区new
d:删除分区delete
t:转化分区类型type,通过ID号。82swap、83ext4或xfs、bfat32。
w:保存修改write
q:退出quit

1.按m查看帮助

[root@localhost ~]# fdisk /dev/sdb  欢迎使用 fdisk (util-linux 2.23.2)。    更改将停留在内存中,直到您决定将更改写入磁盘。  使用写入命令前请三思。    Device does not contain a recognized partition table  使用磁盘标识符 0x4ef44485 创建新的 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)  

2.分区3个主分区分别为15G10G5G

命令(输入 m 获取帮助):n  Partition type:     p   primary (0 primary, 0 extended, 4 free)     e   extended  Select (default p): p  分区号 (1-4,默认 1):1  起始 扇区 (2048-125829119,默认为 2048):  将使用默认值 2048  Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+15G  分区 1 已设置为 Linux 类型,大小设为 15 GiB    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  
命令(输入 m 获取帮助):n  Partition type:     p   primary (1 primary, 0 extended, 3 free)     e   extended  Select (default p): p  分区号 (2-4,默认 2):2  起始 扇区 (31459328-125829119,默认为 31459328):  将使用默认值 31459328  Last 扇区, +扇区 or +size{K,M,G} (31459328-125829119,默认为 125829119):+10G  分区 2 已设置为 Linux 类型,大小设为 10 GiB    命令(输入 m 获取帮助):n  Partition type:     p   primary (2 primary, 0 extended, 2 free)     e   extended  Select (default p): p  分区号 (3,4,默认 3):3  起始 扇区 (52430848-125829119,默认为 52430848):  将使用默认值 52430848  Last 扇区, +扇区 or +size{K,M,G} (52430848-125829119,默认为 125829119):+5G  分区 3 已设置为 Linux 类型,大小设为 5 GiB    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760   83  Linux  /dev/sdb3        52430848    62916607     5242880   83  Linux  

3.剩下的空间再分一个扩展分区

命令(输入 m 获取帮助):n  Partition type:     p   primary (3 primary, 0 extended, 1 free)     e   extended  Select (default e): e  已选择分区 4  起始 扇区 (62916608-125829119,默认为 62916608):  将使用默认值 62916608  Last 扇区, +扇区 or +size{K,M,G} (62916608-125829119,默认为 125829119):  将使用默认值 125829119  分区 4 已设置为 Extended 类型,大小设为 30 GiB    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760   83  Linux  /dev/sdb3        52430848    62916607     5242880   83  Linux  /dev/sdb4        62916608   125829119    31456256    5  Extended  

4.分两个逻辑分区,分别为20G10G

命令(输入 m 获取帮助):n  All primary partitions are in use  添加逻辑分区 5  起始 扇区 (62918656-125829119,默认为 62918656):  将使用默认值 62918656  Last 扇区, +扇区 or +size{K,M,G} (62918656-125829119,默认为 125829119):+20G  分区 5 已设置为 Linux 类型,大小设为 20 GiB    命令(输入 m 获取帮助):n  All primary partitions are in use  添加逻辑分区 6  起始 扇区 (104863744-125829119,默认为 104863744):  将使用默认值 104863744  Last 扇区, +扇区 or +size{K,M,G} (104863744-125829119,默认为 125829119):  将使用默认值 125829119  分区 6 已设置为 Linux 类型,大小设为 10 GiB    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760   83  Linux  /dev/sdb3        52430848    62916607     5242880   83  Linux  /dev/sdb4        62916608   125829119    31456256    5  Extended  /dev/sdb5        62918656   104861695    20971520   83  Linux  /dev/sdb6       104863744   125829119    10482688   83  Linux  

5.更改sdb3swap交换分区

命令(输入 m 获取帮助):t  分区号 (1-6,默认 6):3  Hex 代码(输入 L 列出所有代码):82  已将分区“Linux”的类型更改为“Linux swap / Solaris”    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760   83  Linux  /dev/sdb3        52430848    62916607     5242880   82  Linux swap / Solaris  /dev/sdb4        62916608   125829119    31456256    5  Extended  /dev/sdb5        62918656   104861695    20971520   83  Linux  /dev/sdb6       104863744   125829119    10482688   83  Linux  

6.更改sdb2FAT32分区类型

命令(输入 m 获取帮助):t  分区号 (1-6,默认 6):2  Hex 代码(输入 L 列出所有代码):b    WARNING: If you have created or modified any DOS 6.xpartitions, please see the fdisk manual page for additionalinformation.    已将分区“Linux”的类型更改为“W95 FAT32”    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760    b  W95 FAT32  /dev/sdb3        52430848    62916607     5242880   82  Linux swap / Solaris  /dev/sdb4        62916608   125829119    31456256    5  Extended  /dev/sdb5        62918656   104861695    20971520   83  Linux  /dev/sdb6       104863744   125829119    10482688   83  Linux  

7.删除sdb6分区

命令(输入 m 获取帮助):d  分区号 (1-6,默认 6):6  分区 6 已删除    命令(输入 m 获取帮助):p    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760    b  W95 FAT32  /dev/sdb3        52430848    62916607     5242880   82  Linux swap / Solaris  /dev/sdb4        62916608   125829119    31456256    5  Extended  /dev/sdb5        62918656   104861695    20971520   83  Linux  

8.保存分区修改,并退出。

命令(输入 m 获取帮助):w  The partition table has been altered!    Calling ioctl() to re-read partition table.  正在同步磁盘。  

9.查看磁盘分区列表

[root@localhost ~]# fdisk -l    磁盘 /dev/sda:42.9 GB, 42949672960 字节,83886080 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0x000a9fb6       设备 Boot      Start         End      Blocks   Id  System  /dev/sda1   *        2048     4196351     2097152   83  Linux  /dev/sda2         4196352    46139391    20971520   83  Linux  /dev/sda3        46139392    62916607     8388608   82  Linux swap / Solaris  /dev/sda4        62916608    83886079    10484736    5  Extended  /dev/sda5        62918656    83886079    10483712   83  Linux    磁盘 /dev/sdb:64.4 GB, 64424509440 字节,125829120 个扇区  Units = 扇区 of 1 * 512 = 512 bytes  扇区大小(逻辑/物理):512 字节 / 512 字节  I/O 大小(最小/最佳):512 字节 / 512 字节  磁盘标签类型:dos  磁盘标识符:0xa058335d       设备 Boot      Start         End      Blocks   Id  System  /dev/sdb1            2048    31459327    15728640   83  Linux  /dev/sdb2        31459328    52430847    10485760    b  W95 FAT32  /dev/sdb3        52430848    62916607     5242880   82  Linux swap / Solaris  /dev/sdb4        62916608   125829119    31456256    5  Extended  /dev/sdb5        62918656   104861695    20971520   83  Linux  

创建文件系统

mkfs
  • mkfs -t 文件系统类型 分区设备

  • mkfs.文件系统类型 分区设备

[root@localhost ~]# ls /sbin/mkfs*  /sbin/mkfs        /sbin/mkfs.cramfs  /sbin/mkfs.ext3  /sbin/mkfs.fat    /sbin/mkfs.msdos  /sbin/mkfs.xfs  /sbin/mkfs.btrfs  /sbin/mkfs.ext2    /sbin/mkfs.ext4  /sbin/mkfs.minix  /sbin/mkfs.vfat  

1.格式化sdb1xfs文件系统

[root@localhost ~]# mkfs.xfs /dev/sdb1  meta-data=/dev/sdb1              isize=512    agcount=4, agsize=983040 blks           =                       sectsz=512   attr=2, projid32bit=1           =                       crc=1        finobt=0, sparse=0  data     =                       bsize=4096   blocks=3932160, imaxpct=25           =                       sunit=0      s>挂载、卸载文件系统  
df -hT

查看磁盘使用情况,并友好显示,以及类型。

[root@localhost ~]# df -hT  文件系统       类型      容量  已用  可用 已用% 挂载点  /dev/sda2      xfs        20G  3.4G   17G   17% /  devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev  tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm  tmpfs          tmpfs     1.9G  9.1M  1.9G    1% /run  tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup  /dev/sda5      xfs        10G   37M   10G    1% /home  /dev/sda1      xfs       2.0G  174M  1.9G    9% /boot  tmpfs          tmpfs     378M   12K  378M    1% /run/user/42  tmpfs          tmpfs     378M     0  378M    0% /run/user/0  
mount
  • mount [-t 文件系统类型] 存储设备 挂载点

  • mount -o loop ISO镜像 挂载点

[root@localhost ~]# mkdir /mnt/demo01  [root@localhost ~]# mount /dev/sdb1 /mnt/demo01/  [root@localhost ~]# df -hT  文件系统       类型      容量  已用  可用 已用% 挂载点  /dev/sda2      xfs        20G  3.4G   17G   17% /  devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev  tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm  tmpfs          tmpfs     1.9G  9.1M  1.9G    1% /run  tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup  /dev/sda5      xfs        10G   37M   10G    1% /home  /dev/sda1      xfs       2.0G  174M  1.9G    9% /boot  tmpfs          tmpfs     378M   12K  378M    1% /run/user/42  tmpfs          tmpfs     378M     0  378M    0% /run/user/0  /dev/sdb1      xfs        15G   33M   15G    1% /mnt/demo01  
umount
  • umount 存储设备

  • umount 挂载点(推荐)

[root@localhost ~]# umount /mnt/demo01/  [root@localhost ~]# df -hT  文件系统       类型      容量  已用  可用 已用% 挂载点  /dev/sda2      xfs        20G  3.4G   17G   17% /  devtmpfs       devtmpfs  1.9G     0  1.9G    0% /dev  tmpfs          tmpfs     1.9G     0  1.9G    0% /dev/shm  tmpfs          tmpfs     1.9G  9.1M  1.9G    1% /run  tmpfs          tmpfs     1.9G     0  1.9G    0% /sys/fs/cgroup  /dev/sda5      xfs        10G   37M   10G    1% /home  /dev/sda1      xfs       2.0G  174M  1.9G    9% /boot  tmpfs          tmpfs     378M   12K  378M    1% /run/user/42  tmpfs          tmpfs     378M     0  378M    0% /run/user/0  
/proc/meminfo
  • 内存相关信息
[root@localhost ~]# cat /proc/meminfo | grep -i "swap"  SwapCached:            0 kB  SwapTotal:       8388604 kB  SwapFree:        8388604 kB  
swapon
  • 启用交换分区
[root@localhost ~]# swapon /dev/sdb3  [root@localhost ~]# cat /proc/meminfo | grep -i "swap"  SwapCached:            0 kB  SwapTotal:      13631480 kB  SwapFree:       13631480 kB  
swapoff
  • 停用交换分区
[root@localhost ~]# swapoff /dev/sdb3  [root@localhost ~]# cat /proc/meminfo | grep -i "swap"  SwapCached:            0 kB  SwapTotal:       8388604 kB  SwapFree:        8388604 kB  

自动挂载

  • /etc/fstab

/etc/fstab可以看作mount命令的配置文件,其中存储了文件系统的静态挂载数据。每次开机时,自动读取文件内容,自动挂载指定的文件系统。

[root@localhost ~]# cat /etc/fstab    #  # /etc/fstab  # Created by anaconda on Fri Aug  9 11:41:11 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  #  UU总结以及">总结以及..
  1. 挂载只是引用名字,数据存储在对应的磁盘分区中,不会因为挂载而丢失,解挂载还会显示出来。可以做个实验,验证一下。

  2. 下一篇关于LVM逻辑卷的管理,我会努力写的。

Tags:, ,