Linux磁盘分区

  • 主分区,primary partition
  • 扩展分区,extended
    • 逻辑分区

linux一切接文件,磁盘设备在系统中也以文件形式展示
文件分区、格式化、挂载 - 图1

  • /dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名 ```shell /dev/sda–第一个SCSI磁盘或简单的硬盘。。

/dev/sdb–第二个SCSI磁盘。

/dev/sdc–第三个SCSI磁盘。

/dev/hda–IDE主控制器上的主磁盘。

/dev/hdb–IDE主控制器上的从磁盘。

  1. **注意:CentOS 67统统将硬盘设备文件标识为/dev/sd[a-z]**
  2. <a name="lsXtj"></a>
  3. ### 分区类型
  4. 在系统上的/dev/sda1、/dev/sda2又是何物?答:代表分区(Partition
  5. ```shell
  6. /dev/sda1
  7. /dev/sda2
  8. /dev/sda3
  9. /dev/sda4
  10. /dev/sda5

一个硬盘的结构如下:
系统默认分区1~4留给了主分区和扩展分区

  • 主分区1 * (星号代表是引导分区,引导分区装在这里)
  • 主分区2
  • 主分区3
  • 主分区4(extended)
    • 逻辑分区n

      fdisk命令

      分区管理命令fdisk,命令危险,慎重使用
      1. fdisk - manipulate disk partition table 用来管理磁盘分区表,修改、查看
      2. fdisk -l [-u] [device...]
      3. fdisk -l /dev/sda
      文件分区、格式化、挂载 - 图2 ```shell [root@luffycity ~]# fdisk /dev/sda 欢迎使用 fdisk (util-linux 2.23.2)。

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

命令(输入 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 获取帮助):

  1. n:创建新分区
  2. d:删除已有分区
  3. t:修改分区类型
  4. l:查看所有已经ID
  5. w:保存并退出
  6. q:不保存并退出
  7. m:查看帮助信息
  8. p:显示现有分区信息
  1. <a name="yYgpA"></a>
  2. ### 新加一块硬盘进行磁盘分区
  3. 我们添加了/dev/sdb新硬盘
  4. ```shell
  5. [root@local-pyyu ~]# fdisk -l |grep sd[a-c]
  6. 磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
  7. /dev/sda1 * 2048 2099199 1048576 83 Linux
  8. /dev/sda2 2099200 41943039 19921920 8e Linux LVM
  9. 磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
  10. fdisk磁盘分区命令
  11. -v 打印 fdisk 的版本信息并退出.
  12. -l 列出指定设备的分区表信息并退出。
  13. -u 以扇区数而不是以柱面数的形式显示分区表中各分区的信息.
  14. -s 分区 将分区的 大小 (单位为块)信息输出到标准输出

分区命令步骤图解

文件分区、格式化、挂载 - 图3

格式化文件系统

给刚打好隔断的房间,装修———给刚分区号的磁盘格式化文件系统
mkfs 针对磁盘分区进行格式化文件系统
fsck 修复文件系统的命令
lsblk -f # 列出分区的文件系统类型

针对磁盘分区进行格式化联系

  1. 先格式化文件系统
  2. 关闭文件系统自检 ```shell

    格式化为xfs文件系统

    [root@local-pyyu ~]# mkfs.xfs -f /dev/sdb5 meta-data=/dev/sdb5 isize=512 agcount=4, agsize=327680 blks
    1. = sectsz=512 attr=2, projid32bit=1
    2. = crc=1 finobt=0, sparse=0
    data = bsize=4096 blocks=1310720, imaxpct=25
    1. = sunit=0 swidth=0 blks
    naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2
    1. = sectsz=512 sunit=0 blks, lazy-count=1
    realtime =none extsz=4096 blocks=0, rtextents=0

[root@local-pyyu ~]# lsblk -f -a NAME FSTYPE LABEL UUID MOUNTPOINT sda ├─sda1 xfs 2cf87472-f9c2-43cd-aa0e-1d8827ac307f /boot └─sda2 LVM2_member VWePn4-g5RI-mWqG-6ted-DpQf-JU5Y-2OGJwi ├─centos-root xfs d417666c-9823-47db-b69d-f0c9318304c4 / └─centos-swap swap ce7999ab-4ffc-455a-9849-af8aa3ed2975 [SWAP] sdb ├─sdb1 xfs 5a912c96-90ec-4769-900c-53900a153ed4 ├─sdb2 └─sdb5 xfs 5db9857c-4ea6-4819-a265-89b2eb41396d sr0

  1. 格式化为ext4
  2. ```shell
  3. [root@local-pyyu ~]# mkfs.ext4 /dev/sdb5
  4. mke2fs 1.42.9 (28-Dec-2013)
  5. 文件系统标签=
  6. OS type: Linux
  7. 块大小=4096 (log=2)
  8. 分块大小=4096 (log=2)
  9. Stride=0 blocks, Stripe width=0 blocks
  10. 327680 inodes, 1310720 blocks
  11. 65536 blocks (5.00%) reserved for the super user
  12. 第一个数据块=0
  13. Maximum filesystem blocks=1342177280
  14. 40 block groups
  15. 32768 blocks per group, 32768 fragments per group
  16. 8192 inodes per group
  17. Superblock backups stored on blocks:
  18. 32768, 98304, 163840, 229376, 294912, 819200, 884736
  19. Allocating group tables: 完成
  20. 正在写入inode表: 完成
  21. Creating journal (32768 blocks): 完成
  22. Writing superblocks and filesystem accounting information: 完成

关闭文件系统自检

  1. [root@local-pyyu ~]# tune2fs -c -1 /dev/sdb5
  2. tune2fs 1.42.9 (28-Dec-2013)
  3. Setting maximal mount count to -1

fsck
fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。

  1. 禁止文件系统开机修复错误

修改/etc/fstab文件,然后改成如下设置

  1. 针对磁盘进行修复检查

fsck -t 文件系统类型 设备名

  1. fsck命令
  2. -a:自动修复文件系统,不询问任何问题;
  3. -A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;
  4. -N:不执行指令,仅列出实际执行会进行的动作;
  5. -P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;
  6. -r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;
  7. -R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;
  8. -s:依序执行检查作业,而非同时执行;
  9. -t<文件系统类型>:指定要检查的文件系统类型;
  10. -T:执行fsck指令时,不显示标题信息;
  11. -V:显示指令执行过程。

系统开机过程会读取/etc/fstab文件,最后一列为1或2,磁盘在开机时候就会调用fsck自检

  1. cat /etc/fstab
  2. # /etc/fstab
  3. # Created by anaconda on Fri Aug 18 03:51:14 2017
  4. #
  5. # Accessible filesystems, by reference, are maintained under '/dev/disk'
  6. # See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
  7. #
  8. UUID=59d9c*********933****76b5 / ext4 defaults 1 1
  9. 最后一列为0表示不对磁盘检查,1是检查
  1. [root@www ~]# fsck -t ext3 /dev/sda1 #检查ext3 类型的分区/dev/sad1

总结

  1. xfs文件系统 xfs_info显示信息
  2. xfs_admin修改信息
  3. ext3 ext4 dumpe2fs显示信息
  4. tune2fs修改信息

Linux文件系统挂载

image.png

挂载

Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
挂在通常是将一个存储设备挂载到另一个已经存在的文件夹中,访问这个文件夹,就是访问该存储设备的内容。这个Linux上的普通文件夹,就是挂载点。
例如Linux访问U盘数据
image.png
image.png
挂载通常是将一个存储设备挂接到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。
对于Linux系统来说,一切皆文件,所有文件都放在以根目录为起点的树形目录结构中,任何硬件设备也都是文件形式
如图所示,是U盘存储设备和Linux系统自己的文件系统结构,此时Linux想要使用U盘的硬件设备,必须将Linux本身的目录和硬件设备的文件目录合二为一,此过程就称之为挂载。
挂载操作会隐藏原本Linux目录中的文件,因此选择Linux本身的目录,最好是新建空目录用于挂载 挂载之后,这个目录被称为挂载点

mount命令

mount命令可以将指定的文件系统挂载到指定目录(挂载点),在Linux系统下必须先挂载后才能访问设备资料

  • 新的硬盘插到机器上,分区、格式化文件系统后,此时可以可以存放数据了
  • 此时的硬盘插到linux上,也只是读取出了一个封闭的盒子,无法读写
  • 和linux的文件夹进行关联、挂载后,即可通过访问被挂载的文件夹,访问到硬盘的数据 | 参数 | 解释 | | —- | —- | | -l | 显示系统以挂载的设备信息 | | -a | 加载文件/etc/fstab中设置的所有设备 | | -t | t<文件系统类型> 指定设备的文件系统类型。如果不设置,mount自行选择挂载的文件类型
    minix Linux最早使用的文件系统。
    ext2 Linux目前的常用文件系统。
    msdos MS-DOS 的 FAT。
    vfat Win85/98 的 VFAT。
    nfs 网络文件系统。
    iso9660 CD-ROM光盘的标准文件系统。
    ntfs Windows NT的文件系统。
    hpfs OS/2文件系统。Windows NT 3.51之前版本的文件系统。
    auto 自动检测文件系统。 | | -o | 添加挂载选项,是安全、性能优化重要参数 | | -r | 只读,等于-o ro | | -w | 读写,等-o rw |

对于mount的-o参数如下

参数 含义
async 以异步方式处理文件系统I/O操作,数据不会同步写入磁盘,而是写到缓冲区,提高系统性能,但损失数据安全性
sync 所有I/O操作同步处理,数据同步写入磁盘,性能较弱,数据安全性高
atime/noatime 文件被访问时是否修改时间戳,不更改时间,可以提高磁盘I/O速度
auto/noauto 通过-a参数可以自动被挂载/不自动挂载
defaults 默认值包括rw、suid、dev、exec、auto、nouser、async,/etc/fstab大多默认值
exec/noexec 是否允许执行二进制程序,取消提供安全性
suid/nosuid 是否允许suid(特殊权限)生效
user/nouser 是否允许普通用户挂载
remount 重新挂载
ro 只读
rw 读写

案例
xfs文件系统,mount多出很多新选项

  1. #显示已经挂载情况
  2. [root@local-pyyu ~]# mount -l
  3. /dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)
  4. #分区dev/sda1挂载在 /boot文件夹 文件系统类型是 xfs,参数是(rw,relatime,attr2,inode64,noquota)
  5. rw 读写
  6. relatime mount 选项 relatimerelative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。
  7. attr2 在磁盘上存储内联扩展属性,提升性能
  8. inode64 允许在文件系统的任意位置创建 inode
  9. noquota 强制关闭所有文件系统限额功能

mount挂载案例

注意,如果分区未格式化,是无法写入数据的!!!

  1. [root@local-pyyu ~]# mount /dev/sdb5 /mnt
  2. mount: /dev/sdb5 写保护,将以只读方式挂载
  3. mount: 未知的文件系统类型“(null)”
  4. 如何解决,格式化文件系统即可
  5. [root@local-pyyu ~]# lsblk -f #看一下文件系统类型
  6. [root@local-pyyu ~]# mkfs.xfs /dev/sdb5 #格式化分区
  7. [root@local-pyyu ~]# mount /dev/sdb5 /mnt #此时正常挂载

默认挂载结果
/dev/sdb5 on /mnt type xfs (rw,relatime,attr2,inode64,noquota) #centos7默认的挂载选项

  1. 先用mount -l查看当前已挂载的所有文件系统的情况
  2. fdisk -l | grep sd查看磁盘
  3. lsblk -f查看磁盘的系统类型
  4. mount 你要挂载的设备 挂载点
  5. mkfs.ext4 /dev/sdb1给磁盘格式化一个文件系统
  6. mount /dev/sdb5 /mnt把sdb5挂载到mnt
  7. df -hT显示所有已经挂载设备的磁盘使用量情况

挂载使用分区,挂载过程图
image.png

取消挂载

umount /mnt #此时/dev/sdb5设备必须没有人在用,才能取消挂载