磁盘和文件系统

硬盘的结构 

  • 盘片:硬盘有多个盘片,每盘片有2面(正反两面)
  • 磁头:每面一个磁头,并不是只有一个磁头,磁头也 不会碰到盘面,磁头等于盘片数量
  • 扇区:盘片被分为多个扇形区域,每个扇区存放512 字节的数据(扇区越多容量越大)
  • 磁道:同一盘片不同半径的同心圆
  • 柱面:不同盘片相同半径构成的圆(柱面和磁道数量 相同)

硬盘存储容量

  • 硬盘存储容量=磁头数(8个2进制)×磁道(柱面) 数×每道扇区数(6个二进制)×每扇区字节数
  • 1柱面=512 * 扇区数/磁头数×磁道=51263255=7.84M
  • 可以用柱面/磁头/扇区来唯一定位磁盘上每一个区域

MBR与磁盘分区

分区的作用

  • 优化I/O性能
  • 实现磁盘空间配额限制
  • 提高修复速度
  • 隔离系统和程序
  • 安装多个OS
  • 采用不同文件系统

主引导记录

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

Linux中将硬盘、分区等设备均表示为文件

  • /dev/:硬件设备文件所在的目录
  • hd:表示IDE设备(sd表示scsi设备)
  • a:硬盘的顺序号,表示的第几块硬盘,以a、b、c…表示
  • 5:分区的顺序号,表示第一块硬盘接口的第五个分区

磁盘分区结构

  • 硬盘中的主分区数目只有4个
  • 主分区和扩展分区的序号限制在1~4
  • 扩展分区再分为逻辑分区
  • 逻辑分区的序号将始终从5开始

 (扩展分区一定是主分区,主分区不一定是扩展分区)

文件系统的组成

  • 内核中的模块:ext4, xfs, vfat
  • Linux的虚拟文件系统:VFS
  • 用户空间的管理工具:mkfs.ext4, mkfs.xfs,mkfs.vfat

分区工具

fdisk

格式

 fdisk -l [磁盘设备]     //非交互式查看磁盘分区
 
 fdisk [磁盘设备]        //交互式查看和管理磁盘分区

交互式查看和管理磁盘分区

常用指令

指令作用
m打印出菜单
p打印出当前分区表
n新建一个分区
d删除一个分区
t改变分区的属性,系统ID
w保存
q不保存退出

示例

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

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


命令(输入 m 获取帮助):p             //p指令打印出当前分区表

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

   设备 Boot      Start         End      Blocks   Id  System
/dev/sda1   *        2048     2099199     1048576   83  Linux
/dev/sda2         2099200   125829119    61864960   8e  Linux LVM

blkid

可以查看块设备属性信息

示例

[root@localhost ~]# blkid
/dev/sda1: UUID="1003453c-ed08-492a-bac5-76fd0e006c5d" TYPE="xfs" 
/dev/sda2: UUID="4zS7ZS-vwuG-OXJz-rvsT-zmn9-pszq-u5Wqd7" TYPE="LVM2_member" 
/dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
/dev/mapper/centos-root: UUID="dbfa8769-3674-4dca-9ea2-ce4d5d08a176" TYPE="xfs" 
/dev/mapper/centos-swap: UUID="cc343a9d-2526-43ec-ae59-a927a4c8e9ec" TYPE="swap" 
/dev/mapper/centos-home: UUID="fe129d06-2d94-456a-b126-728f0c61d9db" TYPE="xfs" 

mkfs

创建文件系统(格式化)常用选项

选项

  • -t      {ext2|ext3|ext4|xfs} 指定文件系统类型
  • -b     {1024|2048|4096} 指定块 block 大小
  • -L   ‘LABEL’ 设置卷标
  • -j      ext3,相当于 -t mkfs.ext3 = mkfs -t ext3 = mke2fs -j = mke2fs -t ext3-i
  • -i      为数据空间中每多少个字节创建一个 inode;不应该小于block大小
  • -N     指定分区中创建多少个inode
  • -I      一个inode记录占用的磁盘空间大小,128---4096
  • -m     默认5%,为管理人员预留空间占总空间的百分比
  • -O     FEATURE[,...] 启用指定特性-O ^FEATURE 关闭指定

示例

 [root@localhost ~]# 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@localhost ~]# mkfs.xfs /dev/sdb1      //将sdb1格式化为XFS文件系统
 meta-data=/dev/sdb3              isize=512    agcount=4, agsize=655360 blks
          =                       sectsz=512   attr=2, projid32bit=1
          =                       crc=1        finobt=0, sparse=0
 data     =                       bsize=4096   blocks=2621440, 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

#文件系统检测和修复 
fsck.FS_TYPE 
fsck -t FS_TYPE
-a 自动修复 
-r 交互式修复错误

mkswap

swap

特殊的文件系统,缓解内存不足,为了个别应为程序加 内存有点浪费

添加交换分区的空间

  • mkswap + 分区
  • swapon +分区 开启 -a 全部
  • swapoff +分区 关闭 -a 全部

lsblk

[root@localhost ~]# lsblk -d -o name,rota
#查看当前硬盘是什么模式 固态 机械 1 机械 0 固态
NAME ROTA
sda     1
sr0     1

挂载与解挂载

mount

格式

mount [ -t 类型 ] 存储设备 挂载点目录 mount -o loop ISO镜像文件 挂载点目录

示例

 [root@localhost data]# mount /dev/sdb1 /data/aa     //将sdb1挂载到aa目录下
[root@localhost ~]# df -h                            //查看磁盘情况,已成功挂载
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   10G  4.9G  5.2G   49% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    183M     0  183M    0% /run/user/0
tmpfs                    183M   40K  183M    1% /run/user/1005
/dev/sr0                 4.3G  4.3G     0  100% /run/media/Amy/CentOS 7 x86_64
/dev/sdb1                 10G   33M   10G    1% /data/aa

挂载

  • 一个挂载点同一时间只能挂载一个设备
  • 一个挂载点同一时间挂载了多个设备,只能看到最后
  • 一个设备的数据,其它设备上的数据将被隐藏
  • 一个设备可以同时挂载到多个挂载点
  • 通常挂载点一般是已存在空的目录

umount

格式

 umount 存储设备位置
 umount 挂载点目录

示例

 [root@localhost data]# umount /dev/sdb1     //将sdb1解除挂载
 [root@localhost data]# df -h                //查看磁盘情况,已成功解挂载
文件系统                 容量  已用  可用 已用% 挂载点
/dev/mapper/centos-root   10G  4.9G  5.2G   49% /
devtmpfs                 897M     0  897M    0% /dev
tmpfs                    912M     0  912M    0% /dev/shm
tmpfs                    912M  9.1M  903M    1% /run
tmpfs                    912M     0  912M    0% /sys/fs/cgroup
/dev/sda1               1014M  179M  836M   18% /boot
tmpfs                    183M     0  183M    0% /run/user/0
tmpfs                    183M   40K  183M    1% /run/user/1005

磁盘分区完整步骤

第一步:检测并确认新硬盘

新加硬盘后,需要刷新磁盘接口,让系统识别新硬盘。命令如下:

 [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host0/scan
 [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host1/scan
 [root@localhost ~]# echo "- - -" > /sys/class/scsi_host/host2/scan
 [root@localhost ~]# lsblk     //查看块设备,已识别到新硬盘sdb
 NAME            MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
 sda               8:0    0   60G  0 disk 
 ├─sda1            8:1    0    1G  0 part /boot
 └─sda2            8:2    0   14G  0 part 
   ├─centos-root 253:0    0   10G  0 lvm  /
   └─centos-swap 253:1    0    4G  0 lvm  [SWAP]
 sdb               8:16   0   20G  0 disk 
 sr0              11:0    1  4.2G  0 rom 

第二步:设置硬盘分区

[root@localhost ~]# fdisk /dev/sdb
命令(输入 m 获取帮助):n
Partition type:
   p   primary (0 primary, 0 extended, 4 free)
   e   extended
Select (default p): 
Using default response p
分区号 (1-4,默认 1):
起始 扇区 (2048-125829119,默认为 2048):
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-125829119,默认为 125829119):+10G
分区 1 已设置为 Linux 类型,大小设为 10 GiB

命令(输入 m 获取帮助):w

Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@localhost ~]# lsblk 
NAME       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda          8:0    0   60G  0 disk 
├─sda1       8:1    0    1G  0 part /boot
└─sda2       8:2    0   59G  0 part 
 
sdb          8:16   0   60G  0 disk 
├─sdb1       8:17   0   10G  0 part 

第三步:为分区指定文件系统(格式化)

将/dev/sdb1 格式化为XFS文件系统——mkfs.xfs命令

[root@localhost ~]# mkfs.xfs /dev/sdb1
meta-data=/dev/sdb1              isize=512    agcount=4, agsize=655360 blks
         =                       sectsz=512   attr=2, projid32bit=1
         =                       crc=1        finobt=0, sparse=0
data     =                       bsize=4096   blocks=2621440, 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=

将/dev/sdb2 格式化为交换文件系统——mkswap命令

 [root@localhost ~]# mkswap /dev/sdb2    //将sdb6格式化为swap文件系统
 正在设置交换空间版本 1,大小 = 6289404 KiB
 无标签,UUID=2b59e021-35a5-489a-9450-849917a9850a
 [root@localhost ~]# swapon -s          //显示所有启用的交换分区,目前只显示系统原有的交换分区 
 文件名                          类型            大小    已用    权限
 /dev/dm-1                               partition       4194300 0       -1
 [root@localhost ~]# swapon /dev/sdb2    //启用交换分区
 [root@localhost ~]# swapon -s           //此时查看,显示了刚刚启用的交换分区
 文件名                          类型            大小    已用    权限
 /dev/dm-1                               partition       4194300 0       -1
 /dev/sdb2                               partition       6289404 0       -2
 ​
 [root@localhost ~]# swapoff /dev/sdb2   //不使用后可以停用交换分区
 [root@localhost ~]# swapon -s           //查看所有交换分区,/dev/sdb6已不显示
 文件名                          类型            大小    已用    权限
 /dev/dm-1                               partition       4194300 0       -1

第四步:挂载文件系统

新建/data目录,之后建子目录aa

方式一:使用mount命令一次性挂载

 [root@localhost /]# mkdir /data        //创建/data目录
 [root@localhost /]# cd /data
 [root@localhost data]# mkdir aa       //在/data目录下创建子目录aa
 [root@localhost data]# ls
 aa  
 [root@localhost data]# mount /dev/sdb1 /data/aa   //将sdb1挂载到aa目录下
 [root@localhost ~]# df -Th      //查看磁盘情况并显示文件系统类型,可看到已成功挂载
 文件系统                类型      容量  已用  可用 已用% 挂载点
 /dev/mapper/centos-root xfs        10G  4.9G  5.2G   49% /
 devtmpfs                devtmpfs  897M     0  897M    0% /dev
 tmpfs                   tmpfs     912M     0  912M    0% /dev/shm
 tmpfs                   tmpfs     912M  9.1M  903M    1% /run
 tmpfs                   tmpfs     912M     0  912M    0% /sys/fs/cgroup
 /dev/sda1               xfs      1014M  179M  836M   18% /boot
 tmpfs                   tmpfs     183M     0  183M    0% /run/user/0
 tmpfs                   tmpfs     183M   40K  183M    1% /run/user/1005
 /dev/sr0                iso9660   4.3G  4.3G     0  100% /run/media/Amy/CentOS 7 x86_64
 /dev/sdb1               xfs        10G   33M   10G    1% /data/aa

方式二:永久挂载

需要将文件写入 /etc/fstab

UUID 可以确保唯一

 [root@localhost ~]# blkid       //查看硬件设备的UUID
 /dev/sda1: UUID="87263b93-1e10-49c6-a30c-2b80b6b17038" TYPE="xfs" 
 /dev/sda2: UUID="NOm6dB-M1Oe-2DBL-JyAF-p9by-VTLr-14MAfJ" TYPE="LVM2_member" 
 /dev/sdb1: UUID="e0b714cd-c33e-42b2-a051-1e1f3333b4b7" TYPE="xfs"  
 /dev/sr0: UUID="2017-09-06-10-51-00-00" LABEL="CentOS 7 x86_64" TYPE="iso9660" PTTYPE="dos" 
 /dev/mapper/centos-root: UUID="d0d8117f-e6af-46de-985e-910fafd9d4a2" TYPE="xfs" 
 /dev/mapper/centos-swap: UUID="8a01eff6-7570-42db-ba4d-a7ff11acbdb3" TYPE="swap" 
 ​
 [root@localhost ~]# vim /etc/fstab     //修改配置文件
 #将sdb1和sdb2加入配置文件
 UUID=e0b714cd-c33e-42b2-a051-1e1f3333b4b7 /data/aa xfs  defaults        0 0

 字段1:设备名或设备卷标名、或设备的UUID(建议使用UUID,可使用lsbik命令查看)。

-   字段2:文件系统的挂载点目录的位置。

-   字段3:文件系统类型,如 XFS、swap 等。

-   字段4:挂载参数,即 mount 命令”-o“选项后可使用的参数。例如,default、rw、ro、noexec 分别表示为默认参数、可读可写、只读、禁用执行程序。

-   字段5:表示文件系统是否需要 dump 备份(dump是一个备份工具)。一般设为1时表示需要,设为0时将被dump忽略。

-   字段6:该数字决定在系统启动时进行磁盘检查的顺序。0表示不进行检查, 1表示优先检查,2表示其次检查。根分区可设为1,其他分区设置为2。一般不进行检查,会影响系统性能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值