声明:本系列文章是博主根据 “兄弟连新版Linux视频教程”做的笔记和视频截图,只为学习和教学使用,不适用任何商业用途。
PS:文章基于Linux版本CentOS6.9,如果对Linux感兴趣,建议去看《细说Linux》,沈超老师和李明老师的教学风格我很喜欢:)
在设备文件名/dev/sda1中,sd代表sata或scsi(四嘎斯)硬盘接口,a代表第一块硬盘,1代表第一个分区;
hd代表ide硬盘接口
当主分区不足三个时,扩展分区里的逻辑分区 的 设备文件名有所变化:
注意:
1、2、3、4四个分区号只能给主分区或扩展分区使用,而不能给扩展分区中的逻辑分区使用;
在CentOS6以后,开始使用ext4文件系统:
du命令用于统计目录大小,一般不用来统计文件大小,直接用ll –h就可以查看文件大小;
注意:
ll –h 命令查看目录大小时发现不符合该目录真实大小:
因为ls或ll只统计该目录下一级目录和文件的大小;
使用du –h查看该目录下所有文件的大小及总目录的大小,习惯上使用du –sh只查看总目录大小:
发现:根目录下使用df查看1.4G,du查看(其实统计时包括了/home和/boot目录)1.3G,
这是由于df命令查看时会包含该分区下被进程或删除文件占用的空间
dumpe2fs命令用于展示超级块(分区)的信息,可以查看分区的格式化的块(block)的大小:
这里我们可以看到:
/dev/sda1分区(超级块)中,他的
挂载点:/boot,
UUID(唯一标识符),
划分的块的个数:Block count,
i节点个数:Inode count,
每个块的大小:Block size:1024(b)=1kb
再看/dev/sda5超级块:
由于dumpe2fs展示信息过多,可以使用more命令展示:
dumpe2fs /dev/sda5|more
可以看到默认挂载选项:Default mount options:user_xattr acl
分块大小:Block size:4096(b)=4kb
而且基本上根分区的分块大小都是4k
把设备文件名(如/dev/sda5)和盘符(挂载点(如/boot))联系起来的过程叫挂载
使用mount命令查看当前系统中已经挂载了哪些分区:
proc、sysfs系统内存使用的挂载点,tmpfs临时挂载点
分区时系统开机时自动挂载,但是光盘、U盘、硬盘不是自动挂载,所以就要依靠/etc/fstab文件设置自动挂载,使用mount –a命令根据/etc/fstab文件自动挂载;
使用mount –t 文件系统 –L 卷标名 –o 特殊选项 设备文件名 挂载点 命令时,
注意:
当挂载的是分区和硬盘时,-t 文件系统为ext4,当挂载的是光驱,文件系统为iso9660;
-o 特殊选项:
对于特殊选项中的exec/noexec参数,进行以下测试:
编写一个最简单的shell脚本hello.sh:
注意:
#!/bin/bash 为bash脚本必须的开头声明,
echo “abc” 打印一段话
赋予sh文件执行权限,使用 ./命令执行:
再看exec/noexce 参数:
测试:
重新挂载/home分区,撤销执行权限,复制hello.sh文件到/home/下:
执行hello.sh文件:
可以发现,即使是root用户在具有755权限的情况下也无法执行.sh文件,恢复/home/的执行权限:
1.挂载光盘
Linux中默认mnt用来挂在u盘,media用来挂载光盘,但是实际可以根据需要设置;
mkdir /mnt/cdrom/
勾选‘已连接’(否则就像没有给光驱接通电源),选则一个iso文件
mount –t iso9660 /dev/cdrom /mnt/cdrom
mount /dev/sr0 /mnt/cdrom
其实进入/dev/cdrom路径查看,发现他是sr0的一个软链接:
发现报错:
第一个错误表名光盘是只读光盘,这是正常报错;
第二个错误说明之前可能已经给/dev/sr0挂载了其他挂载点,需要先取消挂载,再进行新的挂载:
进入/mnt/cdrom/下发现没有文件了,此时再次进行挂载(注意不能在挂载点卸载,否则会报错)
再次进入/mnt/cdrom/下,发现与.iso文件中的文件一样,说明挂载成功:
2.卸载
3.挂载U盘
注意:
使用fdisk –l命令查看U盘设备文件名(此时可以使用远程连接工具):
发现U盘的信息:/dev/sdb ,容量为4026MB,设备文件名:/dev/sdb1;
使用mount –t vfat /dev/sdb1 /mnt/usb/ 命令挂载U盘
1.根据U盘的文件系统不同选择不同的文件系统进行挂载
如果是fat16分区,Linux中识别为fat文件系统;
如果是fat32分区,Linux中识别为vfat文件系统;
但是实际操错中无论fat,还是vfat挂载U盘时都报错:
(待解决)
注意:
由于Linux默认不支持NTFS格式的文件系统,
而直接挂载U盘会提示:未知的文件系统类型“ntfs”,所以挂载失败;
解决方法:看下一个视频内容
与Windows系统相比:
Windows系统需要手动安装硬件驱动;
Linux系统把大多数常见硬件的驱动都已经装载到Linux内核中,这点优于Windows系统;
但是,类似: ①NTFS文件系统等 ②一些在Linux内核之后出现的硬件 ,Linux中没有对应的驱动;
解决方法:
第一种,因为Linux内核没有编译NTFS的驱动,可以重新编译一遍Linux的内核,把NTFS的驱动编译进来;
第二种,应用第三方软件,如NTFS-3G插件;
1.下载NTFS-3G插件
http://www.tuxera.com/community/ntfs-3g-download/
2.安装NTFS-3G
安装步骤:
1.解压NTFS插件包:tar –zxvf ntfs-3g_ntfsprogs-2017.3.23
2.进入解压后的压缩包,里面有安装说明,直接安装 ./configure && make && make install
3.再次使用mount –t ntfs-3g /dev/sdb1 /mnt/usb/ 命令挂载U盘,查看挂载点(盘符),已经看到U盘中的内容;
注意:
安装ntfs-3g需要gcc等支持,如果没有安装gcc会报错,需要重新安装,安装方法见本文:
然后使用yum –y install gcc命令安装
3.使用NTFS-3G文件系统
使用fdisk –l 查看设备文件名,发现插入的硬盘有3个分区,其中一个是扩展分区:
W95 Ext’d(LBA),所以可以使用的只有另外两个分区:
1.添加新硬盘
选择 添加-硬盘-SCSI ,接下来基本都是直接 ‘下一步’:
在选择 磁盘容量时,由于是练习,而且我的电脑只剩40G,这里就选择5G容量,其实虚拟机只有在用到时才会真正占用容量:
添加完成之后,可以看到硬件中已经多了一块硬盘:
确定,开机,查看硬盘是否正常挂载:
fdisk –l命令可以看到硬盘有多少个磁头(255 heads),多少个扇区(63 sectors/track),每个扇区有多少个柱面(2610 cylinders),
Partition 1 does not end on cylinder boundary.说明这个分区没有把硬盘使用完,即还可以再次分区。
Linux通过Id可以识别分区到底是什么分区:
83是普通分区,82是交换分区,5是扩展分区;
2.查看新硬盘
3.使用fidsk命令给新添加的硬盘分区
输入l查看文件系统类型:
可以看到5是扩展分区,82是交换分区,83是主分区
输入p查看当前分区列表:
输入n进行分区,
选择p(主分区),
选择分区号(1),
起始柱面(直接回车,默认从1开始)
终止柱面(不熟悉柱面大小,可使用自定义分配,使用+号:分配2G空间)
继续添加分区:
输入n,
选择e(扩展分区),
输入分区号(2),
柱面起点终点直接回车使用默认(分配剩余所有柱面)
添加完扩展分区,可以在扩展分区中添加逻辑分区了:
输入n,
选择l(逻辑分区),
默认起点终点柱面,
输入p查看当前分区情况,:
最后,别忘记输入w保存退出:
注意:
如果文件的分区正在被使用,这时w保存会提示重启Linux才能进行下一步,但是如果不想重启,可以使用partprobe命令强制重新读取分区表信息;
但是在使用partprobe这条命令时,报错not found:
网上搜了下原因,是没有安装对应了rpm包,找对应的rpm包步骤:
首先这条报错是由于我的Linux系统是最小化安装,许多命令没有安装;
接下来,在公司的服务器上使用which partprobe命令寻找此命令的安装路径;
/sbin/partprobe
紧接着,使用rpm –qf /sbin/partprobe 命令查找命令所在的rpm包:
parted-2.1-25 .el6.x86_64
接下来使用yum –y install parted 安装parted包:
安装成功,最上面一行的警告是正常的,下面三行报错有关/dev/sr0,即我安装的光盘,执行报错,可能是由于我之前挂载了光盘,导致光盘无法读取;
4.partprobe重新读取分区表信息
5.mkfs –t ext4 /dev/sdb1格式化分区
注意:
不能格式化扩展分区(扩展分区只是为了容纳多个逻辑分区)
可以使用fdisk -l 查看当前分区,在使用mkfs –t ext4 设备文件名 命令格式化对应分区;
根据展示的分区系统,格式化/dev/sdb1和/dev/sdb5:
6.建立挂载点并挂载(临时挂载,下次重启需重新挂载)
使用mount或df –h 命令查看当前挂载情况:
只有当目录为挂载点(为分区的目录)才会有lost+found目录
mount命令查看当前设备文件名挂载情况:
注意:
/etc/fstab 是重要的系统启动文件,如果内容出错,会导致系统启动报错,让系统崩溃;
如果配置不正确会报错,这样就可避免配置不正确导致的系统重启崩溃;
执行mount –a会发现:
启动报错,可以看到fsck.ext4:Bad magic number in super-block while trying to open /dev/sdb,
然后看到最后系统给出的解决方案:
发现居然能进入系统,这说明:这个报错是可以被修复的:
发现文件此时为只读的,即使是root用户也无法编辑。
发现可以修改/etc/fstab文件内容了
可以正常启动,说明已经正常自动挂载/etc/fstab文件的配置
使用mount命令查看挂载情况:
dev/sdb1已经正常挂载
只针对/etc/fstab文件内容错误的情况进行修复,而且:
当根分区的配置出错时,连之前的报错信息都无法看到,系统将直接崩溃!
当使用时发现swap空间不够大,可以根据要添加使用空间;
1.free命令查看swap分区使用
使用free或者其他命令可查看swap分区的使用情况,使用free –m可将大小以M单位展示:
上面说明有996M的内存,1499M的swap交换空间
2.新建swap分区
接下来给swap分区增加分配空间:
之前把扩展分区全都分出去了,现在需要删除原来的逻辑分区后,重新添加两个逻辑分区:一个用作主分区文件类型,一个用作swap交换分区类型
4)partprobe重新读取分区表信息
报错信息与新增加的swap分区无关。
之前删除重新添加的逻辑分区/dev/sdb5需要格式化:mkfs –t ext4 /dev/sdb5
3.格式化swap分区mkswap /dev/sdb6
swap分区格式化命令与主分区格式化命令有所不同:mkswap 设备文件名
格式化出错,可能由于分区被占用,重启Linux再次 尝试,格式化成功:
4.加入swap分区
使用free –m命令查看swap分区信息:
执行swapon /dev/sdb6命令后,查询swap分区信息:
发现swap分区增加了512M,大小跟新建的swap分区相同:
如果不想添加,可使用swapoff 设备文件名取消加入的swap分区。
同样的使用命令方式添加的swap分区在Linux系统重启后将消失,需要重新挂载。
5.swap分区开机自动挂载
在vi /etc/fstab文件中新加入一行,格式与上面swap分区格式保持一致,最后0 0表示不需要dump备份和fsck监测。
mount –a自动挂载,检查是否出错: