Linux磁盘
1 LVM
LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性。
1.1 LVM几个基本概念
物理存储介质(PhysicalStorageMedia):指系统的物理存储设备:磁盘,如:/dev/sda、/dev/vda等,是存储系统最底层的存储单元。
物理卷(Physical Volume,PV):指磁盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
物理块(Physical Extent,PE):每一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,具有唯一编号的PE是可以被LVM寻址的最小单元。PE的大小是可配置的,默认为4MB。所以物理卷(PV)由大小等同的基本单元PE组成。
卷组(Volume Group,VG):类似于非LVM系统中的物理磁盘,其由一个或多个物理卷PV组成。可以在卷组上创建一个或多个LV(逻辑卷)。
逻辑卷(Logical Volume,LV):类似于非LVM系统中的磁盘分区,逻辑卷建立在卷组VG之上。在逻辑卷LV之上可以建立文件系统(比如/home或者/usr等)。
逻辑块(Logical Extent,LE):逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
1.2 创建lvm
检查系统中是否安装了LVM管理工具
rpm -qa|grep lvm2
如果未安装,则使用yum 方式安装
yum install -y lvm2
1.2.1 创建物理卷(PV)
基本PV命令
pvcreate
:用于将物理硬盘分区初始化为物理卷,以便被LVM使用。pvs
:用于输出格式化的物理卷信息报表。使用pvs
命令仅能得到物理卷的概要信息,如果要得到更加详细的信息可以使用pvdisplay
。pvscan
:扫描系统中连接的所有硬盘,列出找到的物理卷列表。pvdisplay
:用于显示物理卷的属性(大小,PE大小,被卷组描述符使用的空间)。pvremove
:用于删除一个存在的物理卷。
将整个磁盘创建为物理卷的命令为:
pvcreate /dev/vdb
将单个分区创建为物理卷的命令为:
pvcreate /dev/vdb1
1.2.2 创建卷组(VG)
创建卷组的命令为vgcreate
,将使用pvcreate
建立的物理卷创建为一个完整的卷组:
创建名为data的卷组,使用/dev/vdb
创建。
vgcreate data /dev/vdb
创建名为data的卷组,使用/dev/vdb1,/dev/vdb2和/dev/vdc1
创建。
vgcreate data /dev/vdb1 /dev/vdb2 /dev/vdc1
1.2.3 创建逻辑卷(LV)
创建一个名为docker 大小为使用全部卷组的逻辑卷。这个逻辑卷使用之前创建的卷组的空间。
lvcreate -L 100M -n docker data
lvcreate -L 100%VG -n docker data
1.2.4 格式化和挂载逻辑卷
mkfs.xfs /dev/data/docker
mkdir data
mount /dev/data/docker /data
echo "/dev/mapper/data-docker /data xfs defaults 0 0" >> /etc/fstab
mount -a
mount -a
是自动挂载/etc/fstab
里面的东西
1.2.5 扩展LVM卷
首先,取消挂载
umount /data
增加容量
lvextend -l +100%FREE /dev/data/docker
lvextend -L +10G /dev/data/docker
刷新磁盘信息与写入
resize2fs(增大和减小都支持)
resize2fs /dev/data/docker
xfs文件系统使用以下命令同步
xfs_growfs(只支持增大)
xfs_growfs /dev/data/docker
1.2.6 缩减LVM卷
虽然xfs文件系统只支持增加,不支持减少。但并不是说在xfs系统文件下不能减小,只是减小后,需要重新格式化才能挂载上。这样原来的数据就丢失了!
在缩减之前应该先强行检查文件,以确保文件系统处于一至性状态
首先,卸载掉逻辑卷
umount /dev/data/docker
减少容量
lvreduce -L -100G /dev/data/docker
刷新磁盘信息与写入,显然会失败
xfs_growfs /dev/data/docker
只能通过重新格式化这个分区,格式化后才能再次挂载
mkfs.xfs /dev/data/docker -f
mount /dev/data/docker /data
2 标准分区
2.1 创建分区
查看分区
fdisk -l
其中sda
是已经分好区的磁盘,sdb
没有分区。
开始分区
fdisk /dev/sdb
输入m获取帮助
输入p 查看当前硬盘分区,目前没有分区。
输入n新建一个分区
分区类型,“p”:为基本分区(默认);“e”:为扩展分区。在此我们选择"p",创建一个基本分区;
分区号,范围为1-4。(默认1,顺序累加);
起始扇区,默认为剩余未被分配的最小扇区,推荐选择默认(直接点击回车);
Last扇区,+扇区 or +size{K,M,G},默认为未被分配的最小扇区,此处推荐默认(直接点击回车)。
再次查看分区
输入w保存分区
建立好的分区还不能用,还需要挂载才可以用。但是挂载之前,必须要格式化才行。
2.2 格式化分区
格式化命令
格式化成ext3
mkfs.ext3 /dev/sdb1
格式化成ext4
mkfs.ext4 /dev/sdb1
格式化之后挂载分区
2.3 挂载分区
mkdir /data
mount /dev/sdb1 /data
这样就挂载成功,可以正常使用了。
2.4 扩容分区
使用growpart
工具包进行扩容,可以参考阿里云的在线扩容:扩容分区和文件系统
2.5 卸载分区
umount /dev/sdb1
卸载之后数据不会丢失,还可以再次挂载
2.6 删除分区
fdisk /dev/sdb
输入w保存,这个时候分区已经删除了,可以重新创建。
2.7 自动挂载
开机直接挂载
编辑/etc/fstab
文件
添加
/dev/sdb1 /data ext4 defaults 0 0
重启发现已经挂载上去。
0,0 表示开机不检查磁盘。
也可以通过磁盘UUID挂载
如果/dev/sdb1
不行,可以试试用UUID进行挂载
查看UUID
ls -l /dev/disk/by-uuid/
如果换了UUID还是不行,还有一个方法 手动是可以挂载的,那么把手动挂载的命令写入一个脚本,设置这个脚本开机自启动也是可以实现的