Linux磁盘分区
- 主分区,primary partition
- 扩展分区,extended
- 逻辑分区
linux一切接文件,磁盘设备在系统中也以文件形式展示
/dev/vd[a-d][1-128]:为虚拟磁盘的磁盘文件名 ```shell /dev/sda–第一个SCSI磁盘或简单的硬盘。。
/dev/sdb–第二个SCSI磁盘。
/dev/sdc–第三个SCSI磁盘。
/dev/hda–IDE主控制器上的主磁盘。
/dev/hdb–IDE主控制器上的从磁盘。
**注意:CentOS 6和7统统将硬盘设备文件标识为/dev/sd[a-z]**<a name="lsXtj"></a>### 分区类型在系统上的/dev/sda1、/dev/sda2又是何物?答:代表分区(Partition)```shell/dev/sda1/dev/sda2/dev/sda3/dev/sda4/dev/sda5
一个硬盘的结构如下:
系统默认分区1~4留给了主分区和扩展分区
- 主分区1 * (星号代表是引导分区,引导分区装在这里)
- 主分区2
- 主分区3
- 主分区4(extended)
更改将停留在内存中,直到您决定将更改写入磁盘。 使用写入命令前请三思。
命令(输入 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:创建新分区d:删除已有分区t:修改分区类型l:查看所有已经IDw:保存并退出q:不保存并退出m:查看帮助信息p:显示现有分区信息
<a name="yYgpA"></a>### 新加一块硬盘进行磁盘分区我们添加了/dev/sdb新硬盘```shell[root@local-pyyu ~]# fdisk -l |grep sd[a-c]磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区/dev/sda1 * 2048 2099199 1048576 83 Linux/dev/sda2 2099200 41943039 19921920 8e Linux LVM磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区fdisk磁盘分区命令-v 打印 fdisk 的版本信息并退出.-l 列出指定设备的分区表信息并退出。-u 以扇区数而不是以柱面数的形式显示分区表中各分区的信息.-s 分区 将分区的 大小 (单位为块)信息输出到标准输出
分区命令步骤图解
格式化文件系统
给刚打好隔断的房间,装修———给刚分区号的磁盘格式化文件系统
mkfs 针对磁盘分区进行格式化文件系统
fsck 修复文件系统的命令lsblk -f # 列出分区的文件系统类型
针对磁盘分区进行格式化联系
- 先格式化文件系统
- 关闭文件系统自检
```shell
格式化为xfs文件系统
[root@local-pyyu ~]# mkfs.xfs -f /dev/sdb5 meta-data=/dev/sdb5 isize=512 agcount=4, agsize=327680 blks
data = bsize=4096 blocks=1310720, imaxpct=25= sectsz=512 attr=2, projid32bit=1= crc=1 finobt=0, sparse=0
naming =version 2 bsize=4096 ascii-ci=0 ftype=1 log =internal log bsize=4096 blocks=2560, version=2= sunit=0 swidth=0 blks
realtime =none extsz=4096 blocks=0, rtextents=0= sectsz=512 sunit=0 blks, lazy-count=1
[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
格式化为ext4```shell[root@local-pyyu ~]# mkfs.ext4 /dev/sdb5mke2fs 1.42.9 (28-Dec-2013)文件系统标签=OS type: Linux块大小=4096 (log=2)分块大小=4096 (log=2)Stride=0 blocks, Stripe width=0 blocks327680 inodes, 1310720 blocks65536 blocks (5.00%) reserved for the super user第一个数据块=0Maximum filesystem blocks=134217728040 block groups32768 blocks per group, 32768 fragments per group8192 inodes per groupSuperblock backups stored on blocks:32768, 98304, 163840, 229376, 294912, 819200, 884736Allocating group tables: 完成正在写入inode表: 完成Creating journal (32768 blocks): 完成Writing superblocks and filesystem accounting information: 完成
关闭文件系统自检
[root@local-pyyu ~]# tune2fs -c -1 /dev/sdb5tune2fs 1.42.9 (28-Dec-2013)Setting maximal mount count to -1
fsck
fsck命令被用于检查并且试图修复文件系统中的错误。当文件系统发生错误四化,可用fsck指令尝试加以修复。
- 禁止文件系统开机修复错误
修改/etc/fstab文件,然后改成如下设置
- 针对磁盘进行修复检查
fsck -t 文件系统类型 设备名
fsck命令-a:自动修复文件系统,不询问任何问题;-A:依照/etc/fstab配置文件的内容,检查文件内所列的全部文件系统;-N:不执行指令,仅列出实际执行会进行的动作;-P:当搭配"-A"参数使用时,则会同时检查所有的文件系统;-r:采用互动模式,在执行修复时询问问题,让用户得以确认并决定处理方式;-R:当搭配"-A"参数使用时,则会略过/目录的文件系统不予检查;-s:依序执行检查作业,而非同时执行;-t<文件系统类型>:指定要检查的文件系统类型;-T:执行fsck指令时,不显示标题信息;-V:显示指令执行过程。
系统开机过程会读取/etc/fstab文件,最后一列为1或2,磁盘在开机时候就会调用fsck自检
cat /etc/fstab# /etc/fstab# Created by anaconda on Fri Aug 18 03:51:14 2017## 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=59d9c*********933****76b5 / ext4 defaults 1 1最后一列为0表示不对磁盘检查,1是检查
[root@www ~]# fsck -t ext3 /dev/sda1 #检查ext3 类型的分区/dev/sad1
总结
xfs文件系统 用xfs_info显示信息用xfs_admin修改信息ext3 ext4 用dumpe2fs显示信息用tune2fs修改信息
Linux文件系统挂载
挂载
Linux 下设备不挂载不能使用,不挂载的设备相当于没门没窗户的监狱(进不去出不来),挂载相当于给设备创造了一个入口(挂载点,一般为目录)
挂在通常是将一个存储设备挂载到另一个已经存在的文件夹中,访问这个文件夹,就是访问该存储设备的内容。这个Linux上的普通文件夹,就是挂载点。
例如Linux访问U盘数据

挂载通常是将一个存储设备挂接到一个已经存在的目录上,访问这个目录就是访问该存储设备的内容。
对于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多出很多新选项
#显示已经挂载情况[root@local-pyyu ~]# mount -l/dev/sda1 on /boot type xfs (rw,relatime,attr2,inode64,noquota)#分区dev/sda1挂载在 /boot文件夹 文件系统类型是 xfs,参数是(rw,relatime,attr2,inode64,noquota)rw 读写relatime mount 选项 relatime(relative atime 的意思)。relatime 的意思是访问文件时,仅在 atime 早于文件的更改时间时对 atime 进行更新。attr2 在磁盘上存储内联扩展属性,提升性能inode64 允许在文件系统的任意位置创建 inodenoquota 强制关闭所有文件系统限额功能
mount挂载案例
注意,如果分区未格式化,是无法写入数据的!!!
[root@local-pyyu ~]# mount /dev/sdb5 /mntmount: /dev/sdb5 写保护,将以只读方式挂载mount: 未知的文件系统类型“(null)”如何解决,格式化文件系统即可[root@local-pyyu ~]# lsblk -f #看一下文件系统类型[root@local-pyyu ~]# mkfs.xfs /dev/sdb5 #格式化分区[root@local-pyyu ~]# mount /dev/sdb5 /mnt #此时正常挂载
默认挂载结果
/dev/sdb5 on /mnt type xfs (rw,relatime,attr2,inode64,noquota) #centos7默认的挂载选项
- 先用
mount -l查看当前已挂载的所有文件系统的情况 fdisk -l | grep sd查看磁盘lsblk -f查看磁盘的系统类型mount 你要挂载的设备 挂载点mkfs.ext4 /dev/sdb1给磁盘格式化一个文件系统mount /dev/sdb5 /mnt把sdb5挂载到mntdf -hT显示所有已经挂载设备的磁盘使用量情况
取消挂载
umount /mnt #此时/dev/sdb5设备必须没有人在用,才能取消挂载
```shell
[root@luffycity ~]# fdisk /dev/sda
欢迎使用 fdisk (util-linux 2.23.2)。
