文章目录
分区与文件系统
分区类型
-
主分区:一个系统总共最多有只能有4个主分区
这是由于磁盘的结构决定的,因为磁盘分区是通过一个磁盘管理程序管理的,这个程序在磁盘最开始的那一段磁道上,并且记录着每个分区的首地址编号信息,一般的磁盘其自带的分区地址信息存储空间只能存4个分区地址,所以系统最多有4个主分区。
-
扩展分区:只能有一个,是主分区中的一种,就是说要么就是4个单纯的主分区,要么是3个主分区一个扩展分区,主分区和扩展分区(算主分区中的一种特殊形式)一共最多4个。扩展分区不能存储数据和格式,要再细划为逻辑分区才能使用。
扩展分区是为了解决主分区只能有4个这个问题而提出来的解决方案,让磁盘管理更有条理。
-
逻辑分区:逻辑分区是扩展分区划分出来的小分区。
注意:逻辑分区是扩展分区里的小分区,可以存储数据和格式化。
Linux分区其实与win系统一样,原理也是差不多,只是win展现给用户的更加简单。
分区的设备文件名:
主分区1 | /dev/sda1 |
---|---|
主分区2 | /dev/sda2 |
主分区3 | /dev/sda3 |
扩展分区 | /dev/sda4 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
逻辑分区4 | /dev/sda8 |
逻辑分区5 | /dev/sda9 |
逻辑分区6 | /dev/sda10 |
sda表示第一块硬盘(sata接口),第二块为sdb,以此类推,sdc,sdd。
hd代表的是IDE接口的硬盘,一般U盘,磁盘都是Sata接口,IDE逐渐被淘汰。以后还会有新的接口。
分区的名称是有规律的,前四个分区是留给主分区和扩展分区的,比如一个主分区,一个扩展分区,扩展分区再分为3个逻辑分区,那么:
主分区 | /dev/sda1 |
---|---|
扩展分区 | /dev/sda2 |
逻辑分区1 | /dev/sda5 |
逻辑分区2 | /dev/sda6 |
逻辑分区3 | /dev/sda7 |
前四分区是留给主分区使用的,即使没有,也要空着,使用逻辑分区是5开始的。
文件系统
默认的文件系统是ext文件系统(ext1/ext2/ext3/ext4)centos目前默认用的是ext4文件系统。越高级的文件系统越先进,支持的磁盘分区空间越大也越安全稳定。
文件系统常见命令
df 文件系统查看命令
df [选项] [挂载点]
- -a ,显示所有的文件系统信息,包括特殊文件系统的隐藏信息,如/proc、/sysfs
- -h ,人性化格式显示,使用习惯单位表示大小,如KB,MB,GB
- -T ,显示文件系统类型
- -m ,以MB为单位显示容量
- -k ,以KB为单位显示容量,默认的就是以KB为单位的。
du 统计目录或文件大小命令
du [选项] [目录或者文件名]
- -a ,显示每个子文件的磁盘占用量,默认只统计子目录的磁盘占有量。
- -h ,人性化显示,使用习惯单位。
- -s ,统计总占用量,而不列出子目录和子文件的占用量。比如查看单个文件夹或者单个文件,而不看其内部包含的目录的大小。
du目录一般是统计目录的大小,文件大小一般用ls命令查看大小,需要提到的是,ls也可以查看目录用-d选项,但是前面有提到,将镜像挂载道/mnt/cdrom下后,用ls查看其大小发现文件夹都是几十KB几百KB,其实ls查看的不是文件夹里面数据的总大小,而是文件内文件的名字总共占的空间,使用查看目录内文件的数据大小用du命令。
[root@XYLJ cdrom]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 写保护,将以只读方式挂载
[root@XYLJ cdrom]# ll
总用量 0
[root@XYLJ cdrom]# cd /mnt/cdrom/
[root@XYLJ cdrom]# ll -h
总用量 678K
-rw-rw-r--. 1 root root 14 5月 2 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root 2.0K 5月 4 2018 EFI
-rw-rw-r--. 1 root root 227 8月 30 2017 EULA
-rw-rw-r--. 1 root root 18K 12月 10 2015 GPL
drwxr-xr-x. 3 root root 2.0K 5月 4 2018 images
drwxr-xr-x. 2 root root 2.0K 5月 4 2018 isolinux
drwxr-xr-x. 2 root root 2.0K 5月 4 2018 LiveOS
drwxrwxr-x. 2 root root 640K 5月 4 2018 Packages
drwxrwxr-x. 2 root root 4.0K 5月 4 2018 repodata
-rw-rw-r--. 1 root root 1.7K 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1.7K 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2.9K 5月 4 2018 TRANS.TBL
[root@XYLJ cdrom]# du -h
2.5M ./EFI/BOOT/fonts
8.6M ./EFI/BOOT
8.6M ./EFI
57M ./images/pxeboot
66M ./images
57M ./isolinux
421M ./LiveOS
3.7G ./Packages
15M ./repodata
4.2G .
#查看文件夹内所有文件目录以及其子目录文件大小
[root@XYLJ cdrom]# du -ha
512 ./CentOS_BuildTag
1004K ./EFI/BOOT/BOOTIA32.EFI
1.3M ./EFI/BOOT/BOOTX64.EFI
512 ./EFI/BOOT/fonts/TRANS.TBL
2.5M ./EFI/BOOT/fonts/unicode.pf2
2.5M ./EFI/BOOT/fonts
109K ./Packages/abrt-libs-2.1.11-50.el7.centos.x86_64.rpm
109K ./Packages/abrt-python-2.1.11-50.el7.centos.x86_64.rpm
122K ./Packages/abrt-retrace-client-2.1.11-50.el7.centos.x86_64.rpm
100K ./Packages/abrt-tui-2.1.11-50.el7.centos.x86_64.rpm
78K ./Packages/accountsservice-libs-0.6.45-7.el7.x86_64.rpm
95K ./Packages/accountsservice-0.6.45-7.el7.x86_64.rpm
82K ./Packages/acl-2.2.51-14.el7.x86_64.rpm
69K ./Packages/acpid-2.0.19-9.el7.x86_64.rpm
104K ./Packages/adcli-0.8.1-4.el7.x86_64.rpm
189K ./Packages/adwaita-qt5-1.0-1.el7.x86_64.rpm
13M ./Packages/adwaita-icon-theme-3.26.0-1.el7.noarch.rpm
128K ./Packages/adwaita-gtk2-theme-3.22.2-1.el7.x86_64.rpm
642K ./Packages/adwaita-cursor-theme-3.26.0-1.el7.noarch.rpm
145K ./Packages/agg-2.5-18.el7.x86_64.rpm
23K ./Packages/aic94xx-firmware-30-6.el7.noarch.rpm
134K ./Packages/aide-0.15.1-13.el7.x86_64.rpm
16K ./Packages/akonadi-mysql-1.9.2-4.el7.x86_64.rpm
725K ./Packages/akonadi-1.9.2-4.el7.x86_64.rpm
....
#查看文件大小
[root@XYLJ cdrom]# du -h /tmp/study/xiaoshuo.hard
12M /tmp/study/xiaoshuo.hard
#du 与du -s 的区别
[root@XYLJ cdrom]# du -sh EFI/
8.6M EFI/
[root@XYLJ cdrom]# du -h EFI/
2.5M EFI/BOOT/fonts
8.6M EFI/BOOT
8.6M EFI/
[root@XYLJ cdrom]#
一般用-s比较多。还要du是扫描文件的操作,耗费的资源比较大。
du和df的区别:
[root@XYLJ /]# df -h /
文件系统 容量 已用 可用 已用% 挂载点
/dev/sda2 170G 13G 149G 8% /
[root@XYLJ /]# du -sh /
du: 无法访问"/proc/4555/task/4555/fd/3": 没有那个文件或目录
du: 无法访问"/proc/4555/task/4555/fdinfo/3": 没有那个文件或目录
du: 无法访问"/proc/4555/fd/4": 没有那个文件或目录
du: 无法访问"/proc/4555/fdinfo/4": 没有那个文件或目录
21G /
[root@XYLJ /]#
如上,为什么du统计的/与df统计的/大小不一样呢?
-
那是因为df命令他是从文件系统的角度出发统计根目录大小,不光是考虑文件占用的空间,还要统计被命令或者程序占用的空间(最常见的就是文件已经删除,但是程序还没有释放空间);
-
而du命令是面向文件的,在执行du命令的那一刻,系统会扫描文件目录,只会计算文件或者目录占用的空间,不包含程序缓存等等空间。
所以查看系统还要多少可用空间使用df命令查看,而不是du命令。
fsck 文件系统修复命令
fsck [选项] [分区设备文件名,如sda5]
- -a 不用显示用户提示,自动修复文件系统
- -y 自动修复。和-a一致不过有些文件系统只支持-y。
一般不推荐使用这个命令,除非实在需要,系统启动的时候会自动检测文件系统,这个命令是比较底层的命令,搞不好会导致系统崩溃,所以了解下就行。系统一般会每隔一段时间自动扫描磁盘修复。
dumpe2fs 显示磁盘状态命令
dumpe2fs 分区设备文件名
[root@XYLJ /]# dumpe2fs /dev/sda1 | less
Filesystem volume name: <none>
Last mounted on: /boot #挂载点
Filesystem UUID: 33dc64ef-3d97-4970-8860-a94bf00658ef
Filesystem magic number: 0xEF53
Filesystem revision #: 1 (dynamic)
Filesystem features: has_journal ext_attr resize_inode dir_index filetype needs_recovery extent
64bit flex_bg sparse_super large_file huge_file uninit_bg dir_nlink extra_isize
Filesystem flags: signed_directory_hash
Default mount options: user_xattr acl #默认挂载选项
Filesystem state: clean
Errors behavior: Continue
Filesystem OS type: Linux
Inode count: 1310720 #I节点数
Block count: 5242880 #数据块数量
Reserved block count: 262144
Free blocks: 5082903
Free inodes: 1310385
First block: 0
Block size: 4096 #数据块的大小
Fragment size: 4096
Group descriptor size: 64
Reserved GDT blocks: 1024
Blocks per group: 32768
Fragments per group: 32768
Inodes per group: 8192
Inode blocks per group: 512
Flex block group size: 16
Filesystem created: Sat Oct 30 16:42:20 2021
Last mount time: Thu Nov 18 13:12:16 2021
Last write time: Thu Nov 18 13:12:16 2021
Mount count: 27
Maximum mount count: -1
Last checked: Sat Oct 30 16:42:20 2021
Check interval: 0 (<none>)
Lifetime writes: 678 MB
Reserved blocks uid: 0 (user root)
Reserved blocks gid: 0 (group root)
First inode: 11
Inode size: 256
Required extra isize: 28
Desired extra isize: 28
Journal inode: 8
Default directory hash: half_md4
Directory Hash Seed: f50c5763-0941-49ac-996b-8b4d9f643e7f
Journal backup: inode blocks
Journal features: journal_64bit
日志大小: 128M
Journal length: 32768
Journal sequence: 0x000001a9
Journal start: 1
#块组信息
Group 0: (Blocks 0-32767) [ITABLE_ZEROED]
Checksum 0xf42d, unused inodes 8172
主 superblock at 0, Group descriptors at 1-3
保留的GDT块位于 4-1027
....
Group 159: (Blocks 5210112-5242879) [INODE_UNINIT, ITABLE_ZEROED]
Checksum 0x7878, unused inodes 8192
Block bitmap at 4718607 (bg #144 + 15), Inode bitmap at 4718623 (bg #144 + 31)
Inode表位于 4726304-4726815 (bg #144 + 7712)
32768 free blocks, 8192 free inodes, 0 directories, 8192个未使用的inodes
可用块数: 5210112-5242879
可用inode数: 1302529-1310720
主要是查看超级块的信息。
一块磁盘,好比是一个柜子,分区相当于把一个大柜子分成几个小的柜子空间,而格式化就是在这些小柜子中写入文件系统,把小柜子分划成一个一个的隔断抽屉,每一个隔断就是一个数据块,数据块可用是1KB也可以是2KB,上面查询到是4KB,格式化其实就是写入文件系统。
挂载命令:mount
mount [选项]
直接用mount或者用选项-l为查看系统中已经挂载的设备,-l显示卷标名称
- -a 依据配置文件/etc/fstab的内容自动挂载 mount -a这个命令了解一下就行
mount 选项[-t文件系统] [-L卷标名] [-o特殊选项] 参数1[设备文件名如/dev/sr0] 参数2[挂载点盘幅(目录如sda2挂载在/根目录下这里就为/)]
设备名比如光驱的设备名为sr0,sr1…硬盘和U盘的设备名为sda1,sda2,sdb1…等等,这个具体的设备名可以去/dev/目录下查询。
- -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、etx4、iso9660(光盘的文件系统记住就行)等等
- -L 卷标名:挂载指定卷标的分区,而不是安装设备文件名挂载
- -o 特殊选项:可以指定挂载的额外选项如下参数
-o中,有一个选项为noexec,他的意思为挂载分区后,分区内不可执行文件,所以有时候文件不可执行不是因为权限的问题,而是因为分区不允许文件执行,或者说分区没有读写(rw)权限,只有读权限(ro),所以可以重新挂载如:
mount -o remount,exec,rw sda3 /home,重新挂载home。
挂载光盘与U盘
磁盘分区是在系统启动过程中自动进行挂载,但是u盘和光盘、移动硬盘需要人为手动挂载。
挂载的意思就是将硬件放到一个可以打开的文件目录下,这样来浏览操作硬件内的文件与数据,就像win系统里我的电脑打开可以看见C盘D盘一样,这里win系统是在开机是自动挂载,将sda1分区挂载到C盘将sda2分区挂载到D盘,其过程如果用Linux的mount来手动挂载就是:
第一步创建D文件夹(也叫挂载点、盘幅):mkdir D;
第二步将磁盘分区挂载到盘幅D上:mount sda2 D。
这样一来,我们就可以通过打开文件夹D来浏览sda2分区内的文件和目录了,其实win系统和Linux是一样的,只是win将很多操作自动进行,适合普通大众方便使用,而Linux确是要最大地保证系统的简洁稳定安全,注重的是系统稳定方面,所以很多东西需要自己操作。
所以在Linux上挂载硬件分为两步:
- 创建挂载点(盘幅),挂载点是自己建立的任何地方都行,只要是目录就ok,但是一般挂载到/mnt/目录下,这是系统留给用户的专门挂载目录。
- 挂载具体硬件到创建的盘幅
刚接触Linux系统时,因为以前都是使用win系统,省略了挂载过程所以非常不理解挂载是什么意思,总感觉挂载这个词很高端,其实这就是一个基础操作,win里的挂载盘幅叫C,D,E…盘而已(这里C,D,E…盘与Linux里面根目录概念有点像,像多个并行的多个根分区,而Linux里只有一个根目录)他是把分区跟挂载合在一起跳过细节,而Linux里面分区是分区,挂载是挂载,并且挂载盘幅是根目录下的一个文件目录。
[root@XYLJ dev]# mkdir /mnt/cdrom <--创建挂载目录
[root@XYLJ dev]# mount /dev/sr0 /mnt/cdrom/ <--将目标挂载到前面创建的挂载目录
[root@XYLJ /]# ll /mnt/cdrom/
总用量 678
-rw-rw-r--. 1 root root 14 5月 2 2018 CentOS_BuildTag
drwxr-xr-x. 3 root root 2048 5月 4 2018 EFI
-rw-rw-r--. 1 root root 227 8月 30 2017 EULA
-rw-rw-r--. 1 root root 18009 12月 10 2015 GPL
drwxr-xr-x. 3 root root 2048 5月 4 2018 images
drwxr-xr-x. 2 root root 2048 5月 4 2018 isolinux
drwxr-xr-x. 2 root root 2048 5月 4 2018 LiveOS
drwxrwxr-x. 2 root root 655360 5月 4 2018 Packages
drwxrwxr-x. 2 root root 4096 5月 4 2018 repodata
-rw-rw-r--. 1 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-7
-rw-rw-r--. 1 root root 1690 12月 10 2015 RPM-GPG-KEY-CentOS-Testing-7
-r--r--r--. 1 root root 2883 5月 4 2018 TRANS.TBL
卸载命令 umount
umount 设备文件名或挂载点
在win中装上光盘后,想要卸载光盘直接按弹出即可,系统自动卸载光盘,而在Linux中这个过程需要手动卸载,不然在真实机上是弹不出光盘的,必须先卸载才能取出光盘。
[root@XYLJ /]# umount /mnt/cdrom/
umount: /mnt/cdrom:目标忙。
(有些情况下通过 lsof(8) 或 fuser(1) 可以
找到有关使用该设备的进程的有用信息)
这里显示设备忙,这是因为要么是你本身在盘幅里面,要么就是由进程在使用光盘,将对应进程关闭后再卸载即可。这里不演示比较麻烦。
挂载U盘
首先查询设备名,用fdisk -l查询磁盘信息。这里显示U盘的设备名称为sdb1
[root@XYLJ ~]# fdisk -l
磁盘 /dev/sda:214.7 GB, 214748364800 字节,419430400 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x000a106c
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 41945087 20971520 83 Linux
/dev/sda2 41945088 402653183 180354048 83 Linux
/dev/sda3 402653184 419430399 8388608 82 Linux swap / Solaris
磁盘 /dev/sdb:30.9 GB, 30943995904 字节,60437492 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x4516fd8d
设备 Boot Start End Blocks Id System
/dev/sdb1 * 2048 60436479 30217216 c W95 FAT32 (LBA)
[root@XYLJ ~]#
[root@XYLJ ~]# mkdir /mnt/usb
[root@XYLJ ~]# cd /mnt/
[root@XYLJ mnt]# ll
总用量 10
drwxr-xr-x. 8 root root 2048 5月 4 2018 cdrom
drwxr-xr-x. 2 root root 4096 11月 14 20:21 hgfs
drwxr-xr-x. 2 root root 4096 11月 18 16:57 usb
[root@XYLJ mnt]# mount /dev/sdb1 /mnt/usb/
[root@XYLJ mnt]# ll usb/
总用量 64
drwxr-xr-x. 4 root root 16384 4月 23 2021 code
drwxr-xr-x. 3 root root 16384 12月 21 2020 PHM 2010
drwxr-xr-x. 2 root root 16384 4月 16 2021 System Volume Information
drwxr-xr-x. 5 root root 16384 4月 23 2021 新建文件夹
[root@XYLJ mnt]#
一般的命令会带选项-t vfat 表示挂载的文件系统格式为fat32。
注意:U盘的文件系统可能跟Linux不兼容,默认是不支持NTFS文件系统
跟光盘一样,弹出需要先卸载挂载点再拔取U盘。
支持NTFS文件系统
Linux不支持ntfs文件系统的原因在于它的内核没有支持ntfs的驱动,所以解决ntfs的支持问题有两个方法:
- 编辑内核,加入驱动
- 用第三方插件
由于编辑内核工作量巨大得不偿失,而且很难,基本上绝大多数Linux使用层面上的问题都不会去编辑内核,编辑内核是专业人员比如嵌入式开发裁剪内核或者编辑内核工作才会去干,一般的使用系统是不需要触及内核层面的修改的,所以使用第三方插件更加方便。
下载NTFS-3G插件:http://www.tuxera.com/community/ntfs-3g-download/
这里省略过程,因为安装过程比较麻烦。安装好后挂载与前面一样只是要用-t ntfs-3g。
fdisk分区
在系统加入新的磁盘时如何进行分区呢?这里使用fdisk分区命令进行分区。
fdisk -l
查询系统的可用磁盘信息,可用用来查询设备名。
[root@XYLJ ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00052c06
设备 Boot Start End Blocks Id
/dev/sda1 * 2048 2099199 1048576
/dev/sda2 2099200 37742591 17821696
/dev/sda3 37742592 41936895 2097152
[root@XYLJ ~]#
这里看见相加入的20G硬盘,设备名为sdb,还没有分区
创建分区
分区指令:fdisk [参数,目标设备名如/dev/sdb]
这里因为sdb还没有分区所有后面是没有数值的,其代表的是整个硬盘。
[root@XYLJ ~]# fdisk /dev/sdb
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
Device does not contain a recognized partition table
使用磁盘标识符 0xe21c4c92 创建新的 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
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p <--选择分区的类型(主分区还是开展分区)
分区号 (1-4,默认 1):1 <--输入分区号,最好按顺序输入
起始 扇区 (2048-41943039,默认为 2048): <--起始柱面一般按顺序直接默认即可
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-41943039,默认为 41943039):+5G <--结束柱面,一般使用+size方式选择该分区大小,这里选择5G
分区 1 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):p <--p为查询分区信息情况
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe21c4c92
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux <--可以看见前面分区已经创建了,这里只是计划的创建,实际上还没有创建,结束时确定创建分区输入w退出程序即可
命令(输入 m 获取帮助):n <--再新建分区
Partition type:
p primary (1 primary, 0 extended, 3 free)
e extended
Select (default p): e <--选择扩展分区
分区号 (2-4,默认 2):2
起始 扇区 (10487808-41943039,默认为 10487808):
将使用默认值 10487808
Last 扇区, +扇区 or +size{K,M,G} (10487808-41943039,默认为 41943039):
将使用默认值 41943039
分区 2 已设置为 Extended 类型,大小设为 15 GiB <--将属于空间全部给扩展分区
命令(输入 m 获取帮助):n <--再新建分区
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5) <--前面有了扩展分区后,新建分区可以选择逻辑分区
Select (default p): l
添加逻辑分区 5 <--选择分区编号时是从5开始的,这里默认就好
起始 扇区 (10489856-41943039,默认为 10489856):
将使用默认值 10489856
Last 扇区, +扇区 or +size{K,M,G} (10489856-41943039,默认为 41943039):+10G
分区 5 已设置为 Linux 类型,大小设为 10 GiB
命令(输入 m 获取帮助):n <--新建第二个逻辑分区
Partition type:
p primary (1 primary, 1 extended, 2 free)
l logical (numbered from 5)
Select (default p): l
添加逻辑分区 6
起始 扇区 (31463424-41943039,默认为 31463424):
将使用默认值 31463424
Last 扇区, +扇区 or +size{K,M,G} (31463424-41943039,默认为 41943039):
将使用默认值 41943039
分区 6 已设置为 Linux 类型,大小设为 5 GiB
命令(输入 m 获取帮助):p <--查询分区信息
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe21c4c92
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 41943039 15727616 5 Extended <--可以看到扩展分区和第一个逻辑分区的起始柱面一样
/dev/sdb5 10489856 31461375 10485760 83 Linux
/dev/sdb6 31463424 41943039 5239808 83 Linux
命令(输入 m 获取帮助):w <--输入指令w表示写入并执行前面的分区计划,进行实际分区操作
The partition table has been altered!
Calling ioctl() to re-read partition table.
正在同步磁盘。
[root@XYLJ ~]# partprobe <--最后输入这个指令,强制系统重新读取一遍分区表
Warning: 无法以读写方式打开 /dev/sr0 (只读文件系统)。/dev/sr0 已按照只读方式打开。
##这个警告可以忽略,因为这是警告光盘的权限只是只读文件,而光盘本来就是只读,所以忽略
[root@XYLJ ~]#
其实在最后在写入分区计划并执行就是输入w指令后,分区就已经按照计划分好了,后面再加上partprobe指令是让系统强制重新扫描读取一遍分区表,以免分区表一直被系统进程占用,如果还有第二块新磁盘需要分区,会报错说分区表被占用需要重新启动系统才能进行分区,这个指令是避免重新启动,所以习惯性加在分区结束后。
此时系统分区情况为:
[root@XYLJ ~]# fdisk -l
磁盘 /dev/sdb:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0xe21c4c92
设备 Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 83 Linux
/dev/sdb2 10487808 41943039 15727616 5 Extended
/dev/sdb5 10489856 31461375 10485760 83 Linux
/dev/sdb6 31463424 41943039 5239808 83 Linux
磁盘 /dev/sda:21.5 GB, 21474836480 字节,41943040 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x00052c06
设备 Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 37742591 17821696 83 Linux
/dev/sda3 37742592 41936895 2097152 82 Linux swap / Solaris
[root@XYLJ ~]#
格式化分区
mkfs [选项] [参数,目标设备]
- -t 文件系统:文件系统有ext3,ext4,现在一般是ext4
[root@XYLJ ~]# mkfs -t ext4 /dev/sdb1
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
327680 inodes, 1310720 blocks
65536 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=1342177280
40 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
这里可以实验一下,如果用dumpe2fs来查看磁盘状态的话,可以看见已经格式化了的sdb1分区并且在挂载点那写着没有挂载,如果查看sdb2或者sdb5就不会有输出信息。
注意:扩展分区是不可用格式化的,也不能写入数据,它只是逻辑分区的容器,是一个范围的称号,所以格式化sdb2会报错这里。
[root@XYLJ ~]# mkfs -t ext4 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
mkfs.ext4: inode_size (128) * inodes_count (0) too big for a
filesystem with 0 blocks, specify higher inode_ratio (-i)
or lower inode count (-N).
[root@XYLJ ~]# mkfs -t ext4 /dev/sdb5
mke2fs 1.42.9 (28-Dec-2013)
文件系统标签=
OS type: Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
655360 inodes, 2621440 blocks
131072 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=2151677952
80 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632
Allocating group tables: 完成
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
创建新建分区的挂载点
创建分区后不能直接使用,要挂载到具体目录后才能使用,这里选择家目录创建挂载文件夹。
[root@XYLJ disk1]# mkdir sdb5
[root@XYLJ disk1]# mkdir sdb6
[root@XYLJ disk1]# mount /dev/sdb1 /root/disk1/sdb1
[root@XYLJ disk1]# mount /dev/sdb5 /root/disk1/sdb5
[root@XYLJ disk1]# mount /dev/sdb6 /root/disk1/sdb6
[root@XYLJ disk1]# mount
sysfs on /sys type sysfs (rw,nosuid,nodev,noexec,relatime,seclabel)
proc on /proc type proc (rw,nosuid,nodev,noexec,relatime)
devtmpfs on /dev type devtmpfs (rw,nosuid,seclabel,size=915956k,nr_inodes=228989,mode=755)
securityfs on /sys/kernel/security type securityfs (rw,nosuid,nodev,noexec,relatime)
...
/dev/sr0 on /run/media/root/CentOS 7 x86_64 type iso9660 (ro,nosuid,nodev,relatime,uid=0,gid=0,iocharset=utf8,dmode=0500,mode=0400,uhelper=udisks2)
/dev/sdb1 on /root/disk1/sdb1 type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdb5 on /root/disk1/sdb5 type ext4 (rw,relatime,seclabel,data=ordered)
/dev/sdb6 on /root/disk1/sdb6 type ext4 (rw,relatime,seclabel,data=ordered)
[root@XYLJ disk1]# df
文件系统 1K-块 已用 可用 已用% 挂载点
devtmpfs 915956 0 915956 0% /dev
tmpfs 931508 0 931508 0% /dev/shm
tmpfs 931508 10692 920816 2% /run
tmpfs 931508 0 931508 0% /sys/fs/cgroup
/dev/sda2 17410832 5809260 10694104 36% /
/dev/sda1 999320 252564 677944 28% /boot
vmhgfs-fuse 242754556 28541056 214213500 12% /mnt/hgfs
tmpfs 186304 36 186268 1% /run/user/0
/dev/sr0 4600876 4600876 0 100% /run/media/root/CentOS 7 x86_64
/dev/sdb1 5029504 20472 4730504 1% /root/disk1/sdb1
/dev/sdb5 10190100 36888 9612540 1% /root/disk1/sdb5
/dev/sdb6 5026432 20472 4727588 1% /root/disk1/sdb6
[root@XYLJ disk1]#
查看分区被正常挂载用mount命令或者df指令,这里挂载成功。分区结束。
这里分区分并挂载好后就可以正常使用磁盘空间了,但是这是临时挂载,系统重新启动时不会自动挂载,下面介绍自动挂载。
分区自动挂载
前面说了手动挂载过程,一重启就失效了,归根结底在于挂载过程没有写入配置文件,磁盘挂载对应的配置文件为/etc/fstab文件,注意:该文件是系统启动的重要系统文件,如果写错会导致系统崩溃无法启动,这时需要进行fstab文件的修复。
[root@XYLJ disk1]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Aug 8 00:03:28 2021
#
# 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=88702d24-9f66-45a7-9f98-9d40019b0b49 / ext4 defaults 1 1
UUID=816e7d6d-485a-4782-a7fe-2f5c161d0dde /boot ext4 defaults 1 2
UUID=7ac5cc69-4e8b-4a7f-8b1d-8ab186e5e589 swap swap defaults 0 0
~
这里看见系统启动时会进行三个挂载,分别是/、/boot、swap分区的挂载点
这里显示的信息有6个字段:
- 第1字段:分区设备文件名或者UUID(硬盘通用唯一识别码)一般使用UUID比较稳定,用设备文件名有时会因为更改调换分区的设备命导致这里挂载失败,所以使用UUID。
- 第2字段:挂载点
- 第3字段:文件系统名称
- 第4字段:挂载参数,这里与前面mount -o 后面的挂载权限参数是完全一样的可以参考。
- 第5字段:指定分区是否被dump备份,0代表不备份,1代表每天备份,2代表不定期备份。自动备份的地址是每个分区目录下的lost+found目录下,此目录只有分区挂载点一级目录下才有。
- 第6字段:指定分区是否被fsck检测,0代表不检测,其他数字代表检测的优先级,1比2的优先级高
查询分区的UUID用dumpe2fs /dev/sdb1命令。
将新建分区的信息填入,按照其格式填入,并保存。
#
# /etc/fstab
# Created by anaconda on Sun Aug 8 00:03:28 2021
#
# 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=88702d24-9f66-45a7-9f98-9d40019b0b49 / ext4 defaults 1 1
UUID=816e7d6d-485a-4782-a7fe-2f5c161d0dde /boot ext4 defaults 1 2
UUID=7ac5cc69-4e8b-4a7f-8b1d-8ab186e5e589 swap swap defaults 0 0
UUID=4dfa6133-c19d-4c23-b607-c7ce3f0621c5 /root/disk1/sdb1 ext4 defaults 1 2
UUID=feecc7b7-d1de-4913-92de-7d2960230658 /root/disk1/sdb5 ext4 defaults 1 2
UUID=ff2a08b2-10c9-43a1-905c-a34571313a0e /root/disk1/sdb6 ext4 defaults 1 2
~ [root@XYLJ disk1]# mount -a
注意:修改fstab文件时一定要小心,不要写错了,写错了系统重新开机直接崩溃,也不要吧新加的挂载点目录删除了,这样一样会报错。最后一步使用mount -a是在写完后让系统自动挂载一遍,看是否写错,这样避免写错重新启动系统崩溃。到这里新建的分区自动挂载已经实现了。
如果最后还是写错了,启动系统报错的话,还是有挽回的余地,即报错信息会提示用户可以登入root用户,这样可以进入系统,打开fstab文件,修改错误,此刻可能会出现无法写入即使强制写入也是不行,因为磁盘的权限只读,所以使用mount将/目录重新挂载一遍并且加入读写权限即:mount -o remount,rw / 。然后再打开fstab文件进行修改即可,改完后重新启动系统就ok了。当然了这种方法不是万能的,其有效的前提是根分区的自动挂载信息没错,这样报错时才可以进入root用户进行修复,如果根分区的挂载都出错了,那么系统直接崩溃。