4.1-4.13 预习笔记

1. # df

 

1)用# man df, 可以看到这个命令的定义df - report file system disk space usage, 汇报文件系统磁盘使用情况4.1-4.13 预习笔记

挂载点实际为系统中的目录,linux中的磁盘不可直接访问必须要有个挂载点,通过挂载点才可以进入磁盘读写数据

 

2)-h 参数,可以显示磁盘容量单位(byte, 1000b=1KB, 1000kb=1MB, 1000MB=1GB, 1000GB=1TB...)

     # df -m, 可以以容量单位MB来显示

4.1-4.13 预习笔记

 

)如下图所示,文件系统中含有“tmpfs”表明是临时文件系统,其挂载点中文件的内容在重启之后就会消失;挂载点“/dev/shm”为内存,大小为物理内存的一般,且写入此目录中的内容运行速度极快。

 

我们需要关注的是/dev/sda3 & /dev/sda1这种文件系统

4.1-4.13 预习笔记

注: # free,可以用来查看swap

详解见于:http://www.cnblogs.com/peida/archive/2012/12/25/2831814.html

free命令可以显示Linux系统中空闲的、已用的物理内存及swap内存,及被内核使用的buffer。在Linux系统监控的工具中,free命令是最经常使用的命令之一。

4.1-4.13 预习笔记

 4)# df -i, 用来查看分区下面有多少个inode以及inode的使用情况

4.1-4.13 预习笔记

系统分区之后进行格式化才可以写入内容,例如windows系统下格式化成NTFS/FAT文件系统,在linux系统中格式化的过程就是在创建inode,inode在格式化的过程中预分配好了,每个分区磁盘中有多少inode是事先弄好的(跟磁盘分区大小有关系)。有时我们看见磁盘中仍有剩余空间,但是无法写入的时候,我们可以查看一下# df -i来看一下磁盘中inode的使用情况,如果inode满了,即使磁盘空间有剩余也无法写入文件

 

 

2. # du

用来查看文件目录大小的

1)# du -sh directory_name/ file_name, 可以显示大小带单位; du -s,则输出的结果不显示单位

 4.1-4.13 预习笔记

我们也可以用# du directory_name/file_name,来查看大小,以目录为例,会列出目录下所有子目录及文件的大小,没有针对性,也不显示大小单位,因此平常建议使用# du -sh

4.1-4.13 预习笔记 

2) 之前我们学过用 # ls -lh,也可以查看大小。一下图为例/etc/passwd这个文件用# du -sh查看时大小显示为4K,用#ls -lh查看时大小为1.6K, 当文件小于4KB的时候会显示为4KB,这是因为磁盘分区格式化的时候块的概念,磁盘会被分成小块,一个小块就是4KB,当文件不够4KB的时候也会占用一个块,因此一个块只能有一个文件。

如果使用# du -sb来看大小所显示的内容就和# ls -lh所显示的一样了

4.1-4.13 预习笔记

 

3. 磁盘分区

日常工作中经常可以接触到给一个系统增加一些磁盘然后给这些磁盘划分分区,再进行挂载

 

1)增加磁盘,在工作环境中,服务器是支持硬盘热插拔的,但是在试验虚拟机环境中我们需要进行以下步骤,如图所示。

  • 右击虚拟机tab,选择设置

4.1-4.13 预习笔记 

4.1-4.13 预习笔记 

4.1-4.13 预习笔记 

4.1-4.13 预习笔记 

2)#fdisk (find disk)可以用来查看磁盘分区,# fdisk -l可以列出目前系统有的磁盘,新加的磁盘需要重启才能识别

如下图可以看出两块硬盘,第二块为1)新加的10G硬盘,磁盘名称为/dev/sdb

4.1-4.13 预习笔记

 

注:先科普分区的概念-主分区;扩展分区;逻辑分区;活动分区;主引导扇区
 

  • 主分区:一个硬盘的主分区也就是包含操作系统启动所必需的文件和数据的硬盘分区,要在硬盘上安装操作系统,则该硬盘必须得有一个主分区。实际上在早期的硬盘分区中并没有主分区、扩展分区和逻辑分区的概念,每个分区的类型都是主分区。由于硬盘仅仅为分区表保留了64个字节的存储空间,而每个分区的参数占据16个字节,故主引导扇区中总计只能存储4个分区的数据。最多可能创建4个,当创建四个主分区时候,就无法再创建扩展分区了。在具体的应用中,4个磁盘分区往往不能满足实际需求。为了建立更多的逻辑磁盘供操作系统使用,引入了扩展分区和逻辑分区,并把原来的分区类型称为主分区。
  • 扩展分区:扩展分区是一个概念,实际上是看不到的。扩展分区也就是除主分区外的分区,但它不能直接使用,必须再将它划分为若干个逻辑分区才行,扩展分区相当于逻辑分区的壳子,实际写数据的是逻辑分区
  • 逻辑分区:在扩展分区上进行切割,变成一个个D盘,E盘,F盘什么的,但是这些盘综合起来就是一个扩展分区,这些盘是相互链接的,并不像主分区那样,4个之间相互独立互不干扰。逻辑分区用链表进行链接,如果E盘中的分区信息丢掉,操作系统就找不到F盘了。

 

  • 活动分区:活动分区是主分区,活动分区是系统分区,每次PC启动时,一块硬盘只能有一个活动分区,如果要启动windows就将windows的系统分区设为活动分区,计算机就会去那里装载引导程序(Ntldr或者Grub)并执行,如果要启动Linux就将Linux的系统分区设为活动分区

 

  • 主引导扇区:每块硬盘,对,每块硬盘不是每个分区,都只有一个主引导扇区,即该硬盘0号柱面,0号磁头的第一个扇区(扇区为数据存储的最小单元),大小为512字节。主引导扇区包含的MBR(硬盘主引导记MBR占446bytes)、DPT(分区表DP占64bytes)、MN(硬盘有效标志Magic Numbe占2byte。AA和55被称为幻数(Magic Number),BOIS读取MBR的时候总是检查最后是不是有这两个幻数,如果没有就被认为是一个没有被分区的硬盘),这3个区域是操作系统无关的,在每块硬盘上都存在;MBR是一段可执行程序,由各个操作系统写入不同的代码。MBR的存储空间限制为446字节,MBR所做的唯一的事情就是装载第二引导装载程序。Windows产生的MBR装载运行PBR;GRUB产生的MBR装载运行grldr
    MBR:正如上面所说的那样,它是一段程序,长度为446字节,作用是加载bootloader的。

3)# fdisk也可以用于给硬盘分区

4.1-4.13 预习笔记 

  • 再回到linux给硬盘分区,之前提到的新添加的硬盘的名字为/dev/sdb,想要给/dev/sdb分区,使用# fdisk /dev/sdb, 进入到下图,输入“m”获取帮助信息
  • 常用的命令有:n/p/d/w/q
  • n- 新建一个分区
  • d-删除一个分区
  • p-查看分区列表
  • w-write and exit with save
  • q- exit without save

4.1-4.13 预习笔记 

 

  • 输入n,新建一个分区,可以发现如下选择分区的类型: p (primary)-主分区;e(extended)-扩展分区(仅仅是个壳子,真正写数据占用空间的是逻辑分区);l(logical)-逻辑分区,与Windows系统中的概念是一样的。用#fdisk 分区有一个格式或者称谓叫MBR分区,传统的分区方式,其特点时单个分区容量最大为2TB,超过便不能用# fdisk分区;分区有限。主分区加上扩展分区只能最多有4个,而且扩展分区最多只能有1个。如果想要多个分区就在扩展分区下创建逻辑分区。

        主分区+扩展分区小于等于4

4.1-4.13 预习笔记

 输入p,创建主分区,显示分区号1-4,输入默认分区号即可,起始扇区和last扇区(有时也以磁柱为单位)两行为定义分区大小,再用p看,可以看到新建的主分区1-/dev/sdb1, 我们可以照此依次创建2-4号的主分机

4.1-4.13 预习笔记

4.1-4.13 预习笔记 

  • 如上图所示四个主分区已经创建完毕,如果我们相加扩展分区,则需要删除一个主分区

       输入命令“d”,来进行删除,默认从4开始删除,可以再输入p来查看4号主分区是否被删除

4.1-4.13 预习笔记

再次输入“n”,选择扩展分区“e”,创建扩展分区,操作方式跟主分区一致,再用p查看

4.1-4.13 预习笔记 

 

注:blocks-为分区大小单位,单位为k;Id为分区类型: 83-主分区、逻辑分区,5-扩展分区 

  • 如果此时再输入“n”,变不会再提示分区类型(因为分区数已满),只能添加逻辑分区,如下图所示

4.1-4.13 预习笔记 

如果输入“q”就是不保存退出,退出之后可以继续划分(如下图所示),先创建一个扩展分区1号分区,再创建一个3号分区主分区,然后再创建一个逻辑分区5号分区,我们在“p”可以发现一个规律,主分区号可以留空,而逻辑分区号则连续不可以留空并且从5号开始依次排列下去

4.1-4.13 预习笔记 

  • 最后输入“w”,保存并推出,如果想要删除已经保存好的分区,则可以再次使用# fdisk 磁盘名称来进行编辑分区

 

 

4. 磁盘格式化

在Windows系统中主要支持NTFS和FAT两种文件系统,现在已NTFS为主,那么在CentOS7里面支持默认的xfs文件系统,可以用# cat /etc/filesystems来看系统支持的文件系统格式,就可以发现xfs格式

在7之前的CentOS的版本中都是ext4...

4.1-4.13 预习笔记

 1)可以用#mount命令查看一个分区的文件系统,会列出许多分区,我们可以只关注以/dev开头的分区,可以看出文件系统都是xfs

4.1-4.13 预习笔记

2) 我们使用xfs来给新的分区格式化,使用# mke2fs

  • # mke2fs -t, 可以指定想要格式化的文件系统,例如# mke2fs -t ext4 但不支持xfs
  • # mke2fs -b, 可以指定块的大小

        一般不会把块的大小定义的过大,例如8KB,但是如果分区内主要存储高清图片、视频音乐等,我们就可以把块大小设置的大一些,加速提取;但如果分区磁盘存储文件大小很小,建议制定块大小为2048b

但在工作中保持默认4KB的大小就可以了

4.1-4.13 预习笔记

 

  • # mke2fs -m, 用来指定分区预留的空间大小,这个预留空间是给root的,是磁盘最大化使用,参数m后面可以跟带小数点的值,如下图所示,如果想要是磁盘给root用户预留的空间为0.1%,我们就可以写成 mke2fs -m 0.1 /dev/sdb1

        #mke2fs -m 1 /dev/sdb1 = # mkfs.ext4 -m 1 /dev/sdb1

        但是文件系统xfs不支持这种用法

4.1-4.13 预习笔记

在我们格式化的时候可以发现下图highlight出来的那一行,大概为1个inode对应4个块,也就是一个inode对应16384byte

4.1-4.13 预习笔记 

我们可以用# mke2fs -i来制定多少个字节来对应一个inode, 例如 # mke2fs -i 8192 -t ext4 /dev/sdb1, 来制定分区中8192b来对应一个inode,相比上图inode数量变多了

4.1-4.13 预习笔记 

3)命令# mkfs. 文件系统名称 分区名,也可以达到# mke2fs的效果,并支持xfs文件系统

mke2fs -t ext4 等同于命令 mkfs.ext4

参数-f, 可以强制覆盖已格式化好的文件系统, mkfs. xfs -f /dev/sdb1

4.1-4.13 预习笔记

 4)现在我们用#mount是无法查看/dev/sdb1分区的文件系统,是由于文件系统并没挂载到任何挂载点上,但是可以用# blkid 分区名,来查看没有挂载的分区

4.1-4.13 预习笔记

5. 磁盘挂载

 

只有格式化之后才可以挂载文件系统,磁盘若想访问必须挂载到一个挂载点上,挂载点就是目录

1)# mount, 可以用来挂载挂载点, # mount 盘符/分区号 挂载点; # mount /dev/sdb /mnt, 在格式化好的分区挂载挂载点之前,我们用# df -l, 是无法查看到新加入的磁盘的,但是/dev/sdb挂载到/mnt/目录下之后,就可以看到新的磁盘分区了

如下图

4.1-4.13 预习笔记

 

2)可以用# umount 盘符、分区号、挂载目录,三者中任何一个都可以来卸载挂载点

如果目前处于想要卸载的挂载点下,系统会提示目前目录忙,我们可以用# mount -l来强制卸载

 

3)# mount命令下default的选项有rw (read& write), suid(可以设置set_uid权限), dev, exec(是否可执行), auto(自动挂载), nouser(不允许普通用户挂载), and async(不会实时把内存的写入内容重复到磁盘中,与sync对应)

  • # mount -o (option)-remount, rw /dev/foo /dir 用来重新挂载
  • # mount -ro (read only)/ rw (read & write)

 

4)/etc/fstab下面包括了一个系统开机自动挂载的磁盘、分区,我们用# vi /etc/fstab,来进行编辑,可以发现以下内容

4.1-4.13 预习笔记

  • 第一列为设备号,除了UUID (Universally Unique Identifier)我们也可以写磁盘分区如/dev/sdb

      可以用# blkid, 来查看UUID,每一个挂载的分区都有一个UUID,可以用来挂载或更改fstab的配置文件

4.1-4.13 预习笔记

 

  • 第二列,挂载点
  • 第三列为分区格式
  • 第四列挂载选项,defaults不要改,保持默认即可
  • 第五列,系统备份,保持为0即可,This field is used for these filesystems by the dump(8) command to determine which filesystems need  to be dumped
  • 第六列,设置优先级,来使系统重启时来检测磁盘是否有问题的,总共有0、1、2

man etc/fstab下的解释:

This field is used by fsck program to determine the order in which the system checks are done at reboot time.

          The  root  filesystem  should be specified with a fs_passno of 1, and other filesystems should have a fs_passno of 2;Filesystems within a drive will be checked sequentially, but filesystems on  different drives will be checked at the same time to utilize parallelism available in the hardware.

              If the sixth field is not present or zero, a value of zero is returned and fsck will  assume  that  the filesystem does not need to be checked.

          注: #man 不仅可以查看命令,也可以查看配置文件,查看配置文件时,不需要写绝对路径, man+配置文件名就可以了

 

6. 手动增加SWAP空间

 

1)首先在文件系统中模拟一个磁盘,可以用# dd (此命令可以用来操作磁盘,详解见链接https://blog.****.net/noviblue/article/details/56012275)

如果我们想设置一个100M的磁盘小分区,可以写成 #dd if=/dev/zero of=/tmp/newdisk bs=1M count=100

注:/dev/zero/ 是Linux系统内核中的造零器,代表一个永远输出 0的设备文件,使用它作输入可以得到全为空的文件。因此可用来创建新文件和以覆盖的方式清除旧文件。上面的命令使用dd命令将从zero设备中创建一个100M大小(bs决定每次读入输出1M,count定义读写次数为100次),但内容全为0的文件。(来自https://blog.****.net/liaomin416100569/article/details/6673209)

4.1-4.13 预习笔记

2)创建好磁盘之后,需要给磁盘格式化,用# mkswap -f /tmp/newdisk

4.1-4.13 预习笔记 

3)然后再用# swapon, 来进行挂载,# swapon /tmp/newdisk, 前后可以使用# free -m来查看是否swap容量有变。我们可以看到从1906M变成了2006,增加了100M

4.1-4.13 预习笔记 

4)如果想要卸载使用# swapoff,就可以。# swapoff /tmp/newdisk,在用# free -m查看发现swap空间少了100M

4.1-4.13 预习笔记 

7. LVM

 

那个可以方便的给磁盘空间做扩容和缩容,但是存在局限性,例如在文件受到损害需要恢复时,由于LVM的复杂性,恢复起来存在难度.

如下图所示有两块硬盘,A/B,A上有两个分区,B有一个分区,三个分区为物理卷,再组成卷组(物理卷-磁盘分区的集合),在卷组的基础上分成逻辑卷,再格式化,再挂载

4.1-4.13 预习笔记

 1)首先准备磁盘分区

4.1-4.13 预习笔记

4.1-4.13 预习笔记 

2) 创建物理卷,使用# pvcreate (physical volume create), 先安装 # yum install -y lvm

注: 我们可以用# yum provides "/*/command",来安装命令,例如# yum provides "/*/pvcreate"

可以用# pvdiskplay or pvs来查看所有的物理卷

 

3)创建卷组, # vgcreate (volume group create) 语法为 # vgcreate (卷组名)(要添加的物理卷)

用# vgdiskplay or vgs来查看卷组

# vgremove, 来删除卷组

4)创建逻辑卷, # lvcreate -L (指定大小) -n (name)volumegroup_name (从哪个卷组里面划分)

5)格式化 # mkfs. ext4 /dev/vg1/lv1

注:xfs的文件系统会影响之后的扩容或者缩容的操作,因此最好使用ext4文件系统

 

6)进行挂载,例如# mount /dev/vg1/lv1 /mnt/

注:在挂载完成后,我们可以发现挂载的目录变成了/dev/mapper/vg1-lv1, 但是用# ls查看,可以发现/dev/vg1/lv1 和/dev/mapper/vg1-lv1指向的是同一个文件

4.1-4.13 预习笔记

7)逻辑卷扩容

  • ext文件系统的扩容,需要先卸载,在进行扩容;xfs系统则不需要卸载,可以直接扩容

4.1-4.13 预习笔记 

  • xfs文件系统的扩容

先执行 # lvresize -L 300M /dev/vg1/lv1, 再执行 xfs_growfs /dev/vg1/lv1

再用df 查看可发现逻辑卷容量以变

注: xfs不支持缩容

 

8)缩容

4.1-4.13 预习笔记

 具体操作步骤如下,最后还需重新挂载

4.1-4.13 预习笔记

 

9)扩容卷组

扩容逻辑卷的最大限度为卷组的大小,因此我们可以把没有使用的/dev/sdb3加到vg1中, # vgextend /dev/sdb3, 然后在进行对lv1的扩容

4.1-4.13 预习笔记

 

8. 磁盘故障小案例

在我们开机的时候如若发现以下不正常的界面,则有可能是磁盘挂载出现问题

4.1-4.13 预习笔记

 

1)输入root密码

2)修改/ect/fstab,用“dd”来删除下图中highlight出来的磁盘挂载,然后再进行reboot,应该就没有问题了

4.1-4.13 预习笔记