0.重点摘要
-
分区
-
格式化(创建文件系统)
-
挂载
-
逻辑卷管理LVM
1.磁盘/硬盘
所有的东西都存储在磁盘上,然后加载进入内存。
-
机械硬盘 (传统的普通硬盘)
-
固态硬盘 (固态驱动器SSD: Solid State Disk或Solid State Drive)
1.1 磁盘命名
第一块硬盘的全名: /dev/sda
-
/dev 设备文件目录
-
sda 是一个文件
-
s代表sata 就是串口
-
d代表disk磁盘
-
a 第一块 b 第二块 … 依次类推
思考:第二十七块磁盘名?
磁盘阵列(RAID)、把多个硬盘当成一块来使用
扇区:512字节 后面分区的时候会看到
1.2 分区方式
1.2.1 MBR Master Boot Record
-
支持的最大磁盘容量是<2TB,设计时分配4个分区
-
如果希望超过4个分区,需要放弃一个主分区,改为扩展分区和逻辑分区
1.2.2 GPT GUID Partition Table
-
支持大于2T的硬盘,支持128个分区
1.3 管理磁盘 (请在root下运行)
分区、格式化(创建文件系统)、挂载
分区、格式化(创建文件系统)、挂载
分区、格式化(创建文件系统)、挂载
重要的事情说三遍!
1.3.1 添加磁盘
虚拟机实验
1.3.2 查看磁盘信息
看看你的电脑上有几块磁盘,每块磁盘的分区信息。
1 | ll /dev/sd* |
1 | lsblk |
1 | df -hT |
1.3.3 创建分区
假设我现在对第二块硬盘进行分区
-
启动分区工具
1
fdisk /dev/sdb
注意!是对磁盘进行分区,是/dev/sdb
-
进入会话模式
-
操作:敲击字母"n"键
-
说明:欢迎界面,输入帮助指令或操作指令
-
操作:敲击字母”p“键
-
说明:创建主分区
-
操作:敲击字母”1“键
-
说明:选择分区号
-
操作:敲击回车键
-
说明:选择磁盘开始的扇区
-
操作: 输入分区大小 ”+2G“ 后回车 根据自己的实际情况决定分区大小
-
说明:选择磁盘分区结束的扇区,即分区大小
-
说明: 已经完成2G大小分区记录,但未生效
-
操作:输入w保存分区信息
-
自动退出分区工具
-
-
刷新分区表
刷新第二块磁盘的分区表
1 | partprobe /dev/sdb |
注意!刷新的是磁盘的分区表,是磁盘/dev/sdb, 而不是分区/dev/sdb1
-
查看分区结果
1 | lsblk |
1.3.4 创建文件系统(格式化)
为分区创建文件系统
1 | mkfs.ext4 /dev/sdb1 |
注意是分区/dev/sdb1, 而不是磁 盘/dev/sdb
1.3.5 挂载mount
-
手动挂载
- 创建挂载点(目录),一个分区一个挂载点
1 | mkdir /mnt/disk1 |
挂载点 就好像是一个指针,它可以通过挂载操作”指向“不同的磁盘或者是磁盘中的分区,从而实现针对同一个文件夹,往不同的磁盘中写入。
1.3.6 查看挂载信息
1 | df -hT |
1 | mount |
Linux 下的文件系统是统一的,都是从/开始,向下你爱分几级目录就分几级目录,但是实际的存储内容在真实的硬盘上,通过挂载这一操作联系起来。
1 | mount -t ext4 /dev/sda1 /mnt/disk1 |
倘若现在你通过挂载操作将/dev/sda1挂载到/mnt/disk1目录下,那么现在你往/mnt/disk1目录下放东西,都会放到/dev/sda这块磁盘的/dev/sda1分区上。
接下来,你又执行了如下命令
1 | unmount -v /dev/sda1 |
情况会变为
接下来,你之前存放在/mnt/disk1下的东西会变得”不可见“(实际上它们还在磁盘/dev/sda上的分区/dev/sda1上),你现在看到的/mnt/disk1下的东西应该是/dev/sdb1下的内容;
现在你往/mnt/disk1下放的东西,统统都会存放到/dev/sdb这块磁盘的/dev/sdb1分区上。
2. 交换分区Swap
2.1 作用
类似Winodws下的虚拟内存,提升内存容量,防止OOP(out of memory)。
2.2 大小
推荐: 实际内存大小的2倍
2.3 查看当前的交换分区
1 | free -m |
2.4 增加交换分区
2.4.1 分区 fdisk
-
划分分区后,按t键,将类型设置为82
2.4.2 格式化
1 | mkswap /dev/sde1 |
2.4.3 挂载
1 | swapon /dev/sde1 |
卸载
1 | swapoff /dev/sde1 |
2.4.4 查看
1 | free -m |
3.逻辑卷管理 LVM (Logical volume Manager)
3.0 为什么产生LVM
其实在Linux操作系统中,我们的磁盘管理机制和windows上的差不多,绝大多数都是使用MBR(Master Boot Recorder)都是通过先对一个硬盘进行分区,然后再将该分区进行文件系统的格式化,在Linux系统中如果要使用该分区就将其挂载上去即可,windows的话其实底层也就是自动将所有的分区挂载好,然后我们就可以对该分区进行使用了。
但是这种传统的磁盘管理经常会带来很多的问题,比如说当我们使用的一个分区,其空间大小已经不再够用了,这个时候我们没有办法通过拉伸分区来进行分区扩充,当然目前也有其他第三方的磁盘管理软件可以进行磁盘的分区空间划分,但是这样会给我们的文件系统造成很大的伤害,有时会导致文件系统崩溃等问题。对于传统的磁盘管理如果说我们碰到当分区大小不足的时候,我们只能通过增加新的硬盘,然后在新的硬盘上创建分区,对分区进行格式化以后,然后将之前分区的所有东西都拷贝到新的分区里面才行。但是新增加的硬盘是作为独立的文件系统存在的,原有的文件系统并没有得到任何的扩充,上层应用只能访问到一个文件系统。这样的方式对个人的电脑来说可能还能接受,但是如果对于生产环境下的服务器来说,这是不可接受的。因为如果要把一个分区的内容都拷贝到另一个分区上去,势必要首先卸载掉之前的那个分区,然后对整个分区进行拷贝,如果服务器上运行着一个重要的服务,比如说WWW或者FTP,其要求是 7*24 小时运行正常的,那么卸载掉分区这是不可想象的,同时如果该分区保存的内容非常非常的多,那么在对分区进行转移时时间可能会耗费很久,所以,这个时候我们就会受到传统磁盘管理的限制,因为其不能够进行动态的磁盘管理。因此,为了解决这个问题,LVM技术就诞生了!!!
LVM是Linux系统中对磁盘分区进行管理的一种逻辑机制,它是建立在硬盘和分区之上,文件系统之下的一个逻辑层,建立文件系统是屏蔽了下层的磁盘分区布局,能够在保持现有数据不变的情况下动态调整磁盘容量,从而提高磁盘管理的灵活性。需要注意的是:/boot分区用于存放引导文件,不能基于LVM创建。
3.1 特点
随意扩张大小,缩减大小,快照备份
随意扩张大小
随意扩张大小
3.2 原理剖析
LVM(Logical volume Manager)是逻辑卷管理的简称。它是Linux环境下对磁盘分区进行管理的一种机制。现在不仅仅是Linux系统上可以使用LVM这种磁盘管理机制,对于其它的类UNIX操作系统,以及windows操作系统都有类似与LVM这种磁盘管理软件。
LVM的工作原理其实很简单,它就是通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,我们的上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,当我们对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。比如说我增加一个物理硬盘,这个时候上层的服务是感觉不到的,因为呈现给上次服务的是以逻辑卷的方式。
LVM最大的特点就是可以对磁盘进行动态管理。因为逻辑卷的大小是可以动态调整的,而且不会丢失现有的数据。我们如果新增加了硬盘,其也不会改变现有上层的逻辑卷。作为一个动态磁盘管理机制,逻辑卷技术大大提高了磁盘管理的灵活性!!!
-
PE (Physical Extend) 物理拓展
-
PV (Physical Volume) 物理卷
-
VG (Volume Group) 卷组
-
LV (Logical Volume) 逻辑卷
我们知道在使用LVM对磁盘进行动态管理以后,我们是以逻辑卷的方式呈现给上层的服务的。所以我们所有的操作目的,其实就是去创建一个LV(Logical Volume)逻辑卷 用来取代我们之前的分区,我们通过对逻辑卷进行格式化,然后进行挂载操作就可以使用了。
去创建一个LV(Logical Volume)逻辑卷用来取代我们之前的分区!!!
去创建一个LV(Logical Volume)逻辑卷用来取代我们之前的分区!!!
去创建一个LV(Logical Volume)逻辑卷用来取代我们之前的分区!!!
1.将我们的物理硬盘格式化成PV(Physical Volume)
我们看到,这里有两块硬盘,一块是sda,另一块是sdb,在LVM磁盘管理里,我首先要将这两块硬盘格式化为我们的PV(Physical Volume),也就是我们的物理卷,其实格式化物理卷的过程中LVM是将底层的硬盘划分为了一个一个的PE(Physical Extend),我们的LVM磁盘管理中PE的默认大小是4M大小,可以自己调节,其实PE就是我们逻辑卷管理的最基本单位。比如说我有一个400M的硬盘,那么在将其格式化成PV的时候,其实际就是将这块物理硬盘划分成了100个的PE,因为PE默认的大小就是4M。这个就是我们的第一步操作。
2.创建一个VG(Volume Group)
在将硬盘格式化成PV以后,我们第二步操作就是创建一个卷组,也就是VG(Volume Group),卷组在这里我们可以将其抽象化成一个空间池,VG的作用就是用来装PE的,我们可以把一个或者多个PV加到VG当中,因为在第一步操作时就已经将该硬盘划分成了多个PE,所以将多个PV加到VG里面后,VG里面就存放了许许多多来自不同PV中的PE,我们通过上面的图片就可以看到,我们格式化了两块硬盘,每个硬盘分别格式化成了3个PE,然后将两块硬盘的PE都加到了我们的VG当中,那么我们的VG当中就包含了6个PE,这6个PE就是两个硬盘的PE之和。通常创建一个卷组的时候我们会为其取一个名字,也就是该VG的名字。
3.基于VG创建我们最后要使用的LV(Logical Volume)
【注意】PV以及VG创建好以后我们是不能够直接使用的,因为PV、VG是我们逻辑卷底层的东西,我们其实最后使用的是在VG基础上创建的LV(Logical Volume),所以第三步操作就是基于VG来创建我们最终要使用的LV。
当我们创建好我们的VG以后,这个时候我们创建LV其实就是从VG中拿出我们指定数量的PE,还是拿上图来说,我们看到我们此时的VG里面已经拥有了6个PE,这时候我们创建了我们的第一个逻辑卷,它的大小是4个PE的大小,也就是16M(因为一个PE的默认大小是4M),而这4个PE有三个是来自于第一块硬盘,而另外一个PE则是来自第二块硬盘。当我们创建第二个逻辑卷时,它的大小就最多只有两个PE的大小了,因为其中的4个PE已经分配给了我们的第一个逻辑卷。
所以创建逻辑卷其实就是我们从VG中拿出我们指定数量的PE,VG中的PE可以来自不同的PV,我们可以创建的逻辑卷的大小取决于VG当中PE存在的数量,并且我们创建的逻辑卷其大小一定是PE的整数倍(即逻辑卷的大小一定要是4M的整数倍)。
4.将我们创建好的LV进行文件系统的格式化,然后挂载使用
在创建好LV以后,这个时候我们就能够对其进行文件系统的格式化了,我们最终使用的就是我们刚创建好的LV,其就相当于传统的文件管理的分区,我们首先要对其进行文件系统的格式化操作,然后通过mount命令对其进行挂载,这个时候我们就能够像使用平常的分区一样来使用我们的逻辑卷了。
我们在创建好LV以后,我们会在 /dev 目录下看到我们的LV信息,例如 /dev/vgname/lvname, 我们每创建一个VG,其会在/dev目录下创建一个以该VG名字命名的文件夹,在该VG的基础上创建好LV以后,我们会在这个VG目录下多出一个以LV名字命名的逻辑卷。
LVM的工作原理进行一个总结:
(1)物理磁盘被格式化为PV,空间被划分为一个个的PE
(2)不同的PV加入到同一个VG中,不同PV的PE全部进入到了VG的PE池内
(3)LV基于PE创建,大小为PE的整数倍,组成LV的PE可能来自不同的物理磁盘
(4)LV现在就直接可以格式化后挂载使用了
(5)LV的扩充缩减实际上就是增加或减少组成该LV的PE数量,其过程不会丢失原始数据
我们看到,我们这里如果要对LV进行扩充,直接加进来一块sdc硬盘,然后将其格式化成PE,然后将该PV加入到了VG当中,这个时候我们就可以通过增加LV中PE的数量来动态的对LV进行扩充了,只要我们的LV的大小不要超过我们VG空余空间的大小就行了!!
3.3 Linux命令实操
主要命令列表
3.3.1 创建物理卷PV
1.给虚拟机添加两块硬盘,然后重启Linux系统(重启系统才能识别到硬盘,用“reboot”或“init6”命令重启)。
2.使用 如下命令查看磁盘信息
1 | fdisk -l |
-
对磁盘/dev/sdb进行配置,将所有空间全部分配到一个主分区,然后转换分区格式为LVM格式。
注意更改类型为8e
4.用上面的方法,对磁盘/dev/sdc进行于磁盘/dev/sdb相同的配置,并保存退出磁盘配置面板。(因为过程相同我就不多赘述了)
5.再次用fdisk -l命令,检查磁盘分区是否配置成功。
6.用pvcreate命令将两个磁盘分区创建为两个物理卷。(我用的是正则表达式输入,更简便,跟输入“pvcreate /dev/sdb1 /dev/sdc1 ”命令行结果是相同的)
1 | pvcreate /dev/sd{b..c}1 |
3.3.2 新建卷组VG
1.将物理卷sdb1、sdc1加入到卷组mailbox内。
1 | vgcreate mailbox /dev/sd{b..c}1---------新建卷组mailbox并将物理卷sdb1、sdc1、sdd1添加进去 |
2.查看一下卷组mailbox的详细信息。
1 | vgdisplay----------显示卷组详细信息 |
3.3.3 新建逻辑卷(LV)
1.给mailbox卷组新建一个逻辑卷mbox01。
1 | lvcreate -L 300M -n mbox01 mailbox-------给mailbox卷组新建一个名为mbox01的逻辑卷,容量为300M |
2.再给mailbox卷组创建一个逻辑卷mbox02,容量设置为600M。
1 | lvcreate -L 600M -n mbox02 mailbox |
3.如果感觉逻辑卷mbox01的空间给少了,我们可以给它扩展一个300M的空间。
1 | lvextend -L +300M /dev/mailbox/mbox01--------给mbox01扩展300M空间,“+”表示增加多少容量,如果不带“+”表示扩容到多少容量。 |
3.3.4 格式化逻辑卷并挂载
1.格式化逻辑卷mbox01和mbox02。
1 | mkfs.xfs /dev/mailbox/mbox01----------将逻辑卷mbox01格式化为xfs文件格式 |
2.在/mnt/目录下新建两个目录作为两个逻辑卷的挂载点。
1 | mkdir /mnt/mbox0{1..2}----------在/mnt/目录下新建两个名为mbox01、mbox02的目录 |
3.在**/etc/fstab**文件里添加逻辑卷mbox01、mbox02的自动挂载命令。(可以自行选择,谨慎操作!否则会导致你的系统启动不起来)
1 | vim /etc/fstab-----------------------------------------用vim编辑器对fstab文件进行编辑 |
3.4 LVM的扩容
3.4.1 逻辑卷(LV)的扩容
3.4.1.1 ext2/ext3/ext4文件系统,调整命令是resize2fs,或者直接用“-r”自动扩展文件系统大小
1.将mbox01逻辑卷解挂载,然后将文件格式,格式化为ext4格式
【注意】
【注意】
【注意】
请去/etc/fstab 中同时改掉/dev/mailbox/mbox01 的文件类型为ext4,否则重启机器会出错,不信你试试。“试试就逝世”
1 | umount /dev/mailbox/mbox01-------------解挂载mbox01 |
2.将mbox01重新挂载,然后查看挂载详细信息。
1 | mount /dev/mailbox/mbox01 /mnt/mbox01----------挂载mbox01 |
3.我们给mbox01添加200M容量,然后查看挂载详情,发现容量并没有增加,这是因为文件系统还没有同步,使用后面一步的resize2fs命令同步文件系统。
1 | lvextend -L +200M /dev/mailbox/mbox01---------------增加容量 |
4.用resize2fs命令执行容量调整,然后查看发现增加容量成功。
1 | resize2fs /dev/mailbox/mbox01-------------------------执行调整 |
5.使用“-r”选项直接自动扩展文件系统大小。
1 | lvextend -L +100M /dev/mailbox/mbox01 -r-------------增加mbox01容量100M并自动扩展 |
3.4.1.2 xfs文件系统的调整命令是xfs_growfs,或者直接用“-r”自动扩展文件系统大小
1.如果在使用mbox02的过程中,容量不够了,我们可以直接进行扩容,但前提是卷组中有足够的容量支持。
1 | lvextend -L +200M /dev/mailbox/mbox02----------给mbox02逻辑卷增加200M容量 |
2.我们再用df -hT命令查看一下挂载信息,发现mbox02的容量并没有增加。这是因为文件系统还没有同步,我们只需用xfs_growfs命令同步一下即可。
1 | df -hT-------------------------------------------------查看挂载详情 |
3.用“-r”直接自动扩展文件系统大小。
1 | lvextend -L +100M /dev/mailbox/mbox02 -r-------------增加mbox02容量100M并自动扩展 |
3.5 VG的扩容
1.如果我们发现卷组的剩余空间不足,首先我们添加一块硬盘。
2.添加完硬盘后一般是重启系统,但企业中服务器是不能随意重启的,这里我们用echo “- - -” > /sys/class/scsi_host/host0/scan命令重新扫描scsi总线来添加磁盘。
1 | echo "- - -" > /sys/class/scsi_host/host0/scan----------扫描scsi总线添加硬盘 |
3.将新增磁盘格式化,然后添加到卷组mailbox中去,查看空间添加成功。
1 | pvcreate /dev/sdd-----------------------创建一个新的物理卷/dev/sde |