linux文件系统详解
#######linux文件系统管理##########
文件系统
文件系统这个名词大家都很陌生,不过如果说成分区,大家就比较容易理解了。原先每个分区只能格式化为一个文件系统,所以我们可以认为文件系统就是指分区。不过随着技术的进步,现在一个文件系统可以由几个分区组成,或者一个分区可以格式化为几个不同的文件系统,所以我们已经不能把文件系统和分区等同对待了。
文件系统是创建在硬盘上,所以先聊聊硬盘
##硬盘
#机械硬盘HDD
机械硬盘采用磁性碟片来存储数据
机械硬盘主要由磁盘盘片、磁头、主轴与传动轴等组成
数据就存放在磁盘盘片中,机械硬盘是上下盘面同时进数据读取的,目前机械硬盘的常见转速是 7200 r/min),所以机械硬盘在读取或写入数据时,非常害怕晃动和磕碰
机械硬盘的逻辑结构主要分为磁道、扇区和拄面
磁道:每个盘片都在逻辑上有很多的同心圆,最外面的同心圆就是 0 磁道。我们将每个同心圆称作磁道(注意,磁道只是逻辑结构,在盘面上并没有真正的同心圆)
扇区:在磁盘上每个同心圆是磁道,从圆心向外呈放射状地产生分割线(扇骨),将每个磁道等分为若干弧段,每个弧段就是一个扇区。每个扇区的大小是固定的,为 512Byte。扇区也是磁盘的最小存储单位。
柱面:盘片都会从外向内进行磁道编号,最外侧的就是 0 磁道。具有相同编号的磁道会形成一个圆柱
硬盘的大小等于使用"磁头数 x 柱面数 x 扇区数 x 每个扇区的大小
#常见的硬盘接口
IDE 硬盘接口(Integrated Drive Eectronics,并口,即电子集成驱动器)也称作 "ATA硬盘" 或 "PATA硬盘"
SATA 接口(Serial ATA,串口),是速度更高的硬盘标准,具备了更高的传输速度,并具备了更强的纠错能力
SCSI 接口(Small Computer System Interface,小型计算机系统接口),广泛应用在服务器上,具有应用范围广、多任务、带宽大、CPU 占用率低及热插拔等优点
#固态硬盘SSD
固态硬盘通过闪存颗粒来存储数据
一种是采用闪存作为存储介质的;另一种是采用DRAM作为存储介质的。目前使用较多的主要是采用闪存作为存储介质的固态硬盘
##文件系统
硬盘是用来存储数据的,可以将其想象成柜子,只不过柜子是用来存储衣物的。新买来的硬盘,通常要对其进行分区并格式化,分区就如同把一个大柜按照要求分割成几个小柜子(组合衣柜);格式化就好比在每个小柜子中打入隔断,决定每个隔断的大小和位置,然后在柜门上贴上标签,标签中写清楚每件衣服保存的隔断的位置和这件衣服的一些特性(比如衣服是谁的,衣服的颜色、大小等)。所以格式硬盘不仅仅是删除数据,而且向硬盘中写入文件系统(不同的操作系统就有不同的文件系统,所以格式化是有必要的)。既然可以把硬盘比喻成衣柜,那么怎么快定位到数据呢,那就是通过索引搜索了。
#存储方式
通常情况下,文件系统会将文件的实际内容和属性分开存放:
文件的属性保存在 inode 中(i 节点)中,每个 inode 都有自己的编号。每个文件各占用一个 inode。不仅如此,inode 中还记录着文件数据所在 block 块的编号;
文件的实际内容保存在 block 中(数据块),类似衣柜的隔断,用来真正保存衣物。每个 block 都有属于自己的编号。当文件太大时,可能会占用多个 block 块。
另外,还有一个 super block(超级块)用于记录整个文件系统的整体信息,包括 inode 和 block 的总量、已经使用量和剩余量,以及文件系统的格式和相关信息等
#查看当前系统支持的文件系统
/usr/src/kernels/当前系统版本/fs
[root@lgh ~]# ls /usr/src/kernels/3.10.0-514.16.1.el7.x86_64/fs/
9p befs cifs devpts exofs f2fs gfs2 hppfs jffs2 logfs nfs_common ntfs proc ramfs sysv
adfs bfs coda dlm exportfs fat hfs hugetlbfs jfs Makefile nfsd ocfs2 pstore reiserfs ubifs
affs btrfs configfs ecryptfs ext2 freevxfs hfsplus isofs Kconfig minix nilfs2 omfs qnx4 romfs udf
afs cachefiles cramfs efivarfs ext3 fscache hostfs jbd Kconfig.binfmt ncpfs nls openpromfs qnx6 squashfs ufs
autofs4 ceph debugfs efs ext4 fuse hpfs jbd2 lockd nfs notify overlayfs quota sysfs xfs
#硬盘设备识别
MBR,全称Master Boot Record,可译为硬盘主引导记录,占据硬盘0磁道的第一个扇区。MBR中,包括用来载入操作系统的可执行代码,实际上,此可执行代码就是MBR中前446个字节的boot loader程序(引导加载程序),而在boot loader程序之后的64个(16×4)字节的空间,就是存储的分区表(Partition table)相关信息。如图1所示。
在分区表(Partition table)中,主要存储的值息包括分区号(Partition id)、分区的起始磁柱和分区的磁柱数量。所以 Linux 操作系统在初始化时就可以根据分区表中以上 3 种信息来识别硬盘设备。其中,常见的分区号如下:
0x5(或 0xf):可扩展分区(Extended partition)。
0x82:Linux 交换区(Swap partition)。
0x83:普通 Linux 分区(Linux partition)。
0x8e:Linux 逻辑卷管理分区(Linux LVM partition)。
0xfd:Linux 的 RAID 分区(Linux RAID auto partition)
由于 MBR 留给分区表的磁盘空间只有 64 个字节,而每个分区表的大小为 16 个字节,所以在一个硬盘上最多可以划分出 4 个主分区。如果想要在一个硬盘上划分出 4 个以上的分区时,可以通过在硬盘上先划分出一个可扩展分区的方法来增加额外的分区。
基本命令
##df
df 命令,用于显示 Linux 系统中各文件系统的硬盘使用情况,包括文件系统所在硬盘分区的总容量、已使用的容量、剩余容量等。
df 命令主要是从各文件系统的 Super block 中读取数据
格式:df [选项] [目录或文件名]
-a 显示所有文件系统信息,包括系统特有的 /proc、/sysfs 等文件系统;
-m 以 MB 为单位显示容量;
-k 以 KB 为单位显示容量,默认以 KB 为单位;
-h 使用人们习惯的 KB、MB 或 GB 等单位自行显示容量;
-T 显示该分区的文件系统名称;
-i 不用硬盘容量显示,而是以含有 inode 的数量来显示
#du
du 是统计目录或文件所占磁盘空间大小的命令
格式:du [选项] [目录或文件名]
-a:显示每个子文件的磁盘占用量。默认只统计子目录的磁盘占用量
-h:使用习惯单位显示磁盘占用量,如 KB、MB 或 GB 等;
-s:统计总磁盘占用量,而不列出子目录和子文件的磁盘占用量
--max-depth=1 :用于显示子目录的大小(常用,用来查找哪些子目录占用资源多)
[root@lgh zabbix]# ll
total 4
-rw-r--r-- 1 zabbix zabbix 0 Sep 28 2018 output.txt
drwxrwxr-x 2 zabbix zabbix 4096 Jun 18 11:44 script
[root@lgh zabbix]# du -h --max-depth=1
124K ./script
4.0K ./.ssh
160K .
#du和df比较
df命令是从文件系统的角度考虑的,通过文件系统中未分配的空间来确定文件系统中已经分配的空间大小。
du 命令是面向文件的,只会计算文件或目录占用的磁盘空间。也就是说,df 命令统计的分区更准确,是真正的空闲空间。
#mount
用于挂载磁盘
挂载指的是将硬件设备的文件系统和 Linux 系统中的文件系统,通过指定目录(作为挂载点)进行关联。而要将文件系统挂载到 Linux 系统上
#格式:mount [选项]
-l :单纯使用 mount 命令,会显示出系统中已挂载的设备信息,使用 -l 选项,会额外显示出卷标名称
-a :该选项的含义是自动检查 /etc/fstab 文件中有无疏漏被挂载的设备文件,如果有,则进行自动挂载操作
-t :系统类型:指定欲挂载的文件系统类型。Linux 常见的支持类型有 EXT2、EXT3、EXT4、iso9660(光盘格式)、vfat、reiserfs 等。如果不指定具体类型,挂载时 Linux 会自动检测。
-L :卷标名:除了使用设备文件名(例如 /dev/hdc6)之外,还可以利用文件系统的卷标名称进行挂载。
-n :在默认情况下,系统会将实际挂载的情况实时写入 /etc/mtab 文件中,但在某些场景下(例如单人维护模式),为了避免出现问题,会刻意不写入,此时就需要使用这个选项;
-o :特殊选项,可以指定挂载的额外选项,比如读写权限、同步/异步等,如果不指定,则使用默认值(defaults定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。)
rw/ro:是否对挂载的文件系统拥有读写权限,rw 为默认值,表示拥有读写权限;ro 表示只读权限。
async/sync:此文件系统是否使用同步写入(sync)或异步(async)的内存机制,默认为异步 async。
dev/nodev:是否允许从该文件系统的 block 文件中提取数据,为了保证数据安装,默认是 nodev。
auto/noauto:是否允许此文件系统被以 mount -a 的方式进行自动挂载,默认是 auto。
suid/nosuid:设定文件系统是否拥有 SetUID 和 SetGID 权限,默认是拥有。
exec/noexec:设定在文件系统中是否允许执行可执行文件,默认是允许。
user/nouser:设定此文件系统是否允许让普通用户使用 mount 执行实现挂载,默认是不允许(nouser),仅有 root 可以。
defaults:定义默认值,相当于 rw、suid、dev、exec、auto、nouser、async 这 7 个选项。
remount:重新挂载已挂载的文件系统,一般用于指定修改特殊权限。
#建立挂载点目录
[root@lgh ~]# mkdir /mnt/disk1
#挂载分区
[root@lgh ~]# mount /dev/sdb1 /mnt/disk1、
#挂载光盘
[root@lgh ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #-t iso9660可以省略,系统会自动检测
#挂载u盘
fdisk -l #查看U盘的设备文件名
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
#挂载光盘
[root@lgh ~]# mount -t iso9660 /dev/cdrom /mnt/cdrom/ #-t iso9660可以省略,系统会自动检测
#挂载u盘
fdisk -l #查看U盘的设备文件名
mount -t vfat -o iocharset=utf8 /dev/sdb1 /mnt/usb/
##开机启动配置自动挂载
通过/etc/fstab文件来配置
[root@lgh zabbix]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Wed May 30 08:01:26 2018
#
# 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
#
/dev/mapper/rootvg-rootlv / ext4 defaults 1 1
UUID=35073a22-8611-4c98-a165-5abee7db9d0a /boot ext4 defaults 1 2
/dev/mapper/rootvg-homelv /home ext4 defaults 1 2
/dev/mapper/rootvg-swaplv swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
#####################
tmpfs、devpts、sysfs 和 proc 这几行,它们分别是与共享内存、终端窗口、设备信息和内核参数相关联的特殊设备。(可忽略)
在 fstab 文件中,每行数据都分为了 6 个字段,它们的含义分别是:
1、用来挂载每个文件系统的分区设备文件名或 UUID(用于指代设备名);
2、挂载点;
3、文件系统的类型;
4、各种挂载参数;
5、指定分区是否被 dump 备份,0 代表不备份,1 代表备份,2 代表不定期备份。
6、指定分区是否被 fsck 检测;0 代表不检测,其他数字代表检测的优先级,1 的优先级比 2 高。所以先检测 1 的分区,再检测 2 的分区。一般分区的优先级是 1,其他分区的优先级是 2
UUID 即通用唯一标识符,是一个 128 位比特的数字,可以理解为就是硬盘的 ID,UUID 由系统自动生成和管理。
#umount
#格式:umount 设备文件名或挂载点
如果要卸载某硬件设备,在执行 umount 命令之前,用户须退出挂载目录。
#fsck
检测和修复文件系统,注意:只有身为 root 用户且文件系统出现问题时才会使用,当一个受损文件系统中包含了非常有价值的数据时,务必首先进行备份!使用 fsck 命令修改某文件系统时,这个文件系统对应的磁盘分区一定要处于卸载状态。在正常状况下使用 fsck 命令,很可能损坏系统。
#格式:sck [选项] 分区设备文件名
-a:自动修复文件系统,没有任何提示信息。
-r:采取互动的修复模式,在修改文件前会进行询问,让用户得以确认并决定处理方式。
-A:按照 /etc/fstab 配置文件的内容,检查文件内罗列的全部文件系统。
-t:文件系统类型 指定要检查的文件系统类型。
-C:显示检查分区的进度条。
-f:强制检测,一般 fsck 命令如果没有发现分区有问题,则是不会检测的。如果强制检测,那么不管是否发现问题,都会检测。
-y:自动修复,和 -a 作用一致,不过有些文件系统只支持 -y
#dumpe2fs
可以使用 dumpe2fs 命令来查看文件系统的详细信息
dumpe2fs [-h] 文件名 # 例如dumpe2fs /dev/mapper/VolGroup-LogVol01 -h
-h 选项的含义是仅列出 superblock(超级块)的数据信息
使用 dumpe2fs 命令可以查询到非常多的信息,以上信息大致可分为 2 部分。前半部分显示的是超级块的信息,包括文件系统名称、已使用以及未使用的 inode 和 block 的数量、每个 block 和 inode 的大小,文件系统的挂载时间等。
另外,Linux 文件系统(EXT 系列)在格式化的时候,会分为多个区块群组(block group),每 个区块群组都有独立的 inode/block/superblock 系统。此命令输出结果的后半部分,就是每个区块群组的详细信息(如 Group0、Group1)
#fdisk
fdisk 命令较为常用分区命令,但不支持大于 2TB 的分区,大于2TB用parted命令
fdisk -l #列出系统分区
fdisk <磁盘设备> #对磁盘进行分区
[root@lgh3 ~]# fdisk -l
Disk /dev/sda: 32.2 GB, 32212254720 bytes, 62914560 sectors #硬盘文件名和硬盘大小
Units = sectors of 1 * 512 = 512 bytes #每个柱面的大小
Sector size (logical/physical): 512 bytes / 512 bytes#每个扇区的大小
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a3b98
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 62914559 30407680 8e Linux LVM
Disk /dev/sdb: 21.5 GB, 21474836480 bytes, 41943040 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x3a265abd
Device Boot Start End Blocks Id System
/dev/sdb1 2048 10487807 5242880 8e Linux LVM
/dev/sdb2 10487808 20973567 5242880 8e Linux LVM
/dev/sdb3 20973568 31459327 5242880 8e Linux LVM #7列
Disk /dev/mapper/centos-root: 27.9 GB, 27913093120 bytes, 54517760 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/centos-swap: 3221 MB, 3221225472 bytes, 6291456 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk /dev/mapper/scvg-lamplv: 4294 MB, 4294967296 bytes, 8388608 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
信息的下半部分是分区的信息,共7列,含义如下
Device:分区的设备文件名。
Boot:是否为启动引导分区,在这里/dev/sda1为启动引导分区。
Start:起始柱面,代表分区从哪里开始。
End:终止柱面,代表分区到哪里结束。
Blocks:分区的大小,单位是KB。
id:分区内文件系统的ID。在fdisk命令中,可以使用"i"查看。
System:分区内安装的系统是什么。
#fdisk创建分区之命令详解
[root@lgh3 ~]# fdisk /dev/sdb #对/dev/sdb分区 Welcome to fdisk (util-linux 2.23.2). Changes will remain in memory only, until you decide to write them. Be careful before using the write command. Command (m for help): m Command action a toggle a bootable flag #设置可引导标记 b edit bsd disklabel #编辑 bsd 磁盘标签 c toggle the dos compatibility flag #设置 DOS 操作系统兼容标记 d delete a partition #删除一个分区 g create a new empty GPT partition table G create an IRIX (SGI) partition table l list known partition types #显示已知的文件系统类型。82 为 Linux swap 分区,83 为 Linux 分区 m print this menu #显示帮助菜单 n add a new partition #新建分区 o create a new empty DOS partition table #建立空白 DOS 分区表 p print the partition table #显示分区列表 q quit without saving changes #不保存退出 s create a new empty Sun disklabel #新建空白 SUN 磁盘标签 t change a partition's system id #改变一个分区的系统 ID u change display/entry units #改变显示记录单位 v verify the partition table #验证分区表 w write table to disk and exit #保存退出 x extra functionality (experts only) #附加功能 Command (m for help): q
#fdisk创建主分区和逻辑分区
建立主分区的过程就是这样的:"fdisk 硬盘名 -> n(新建)->p(建立主分区) -> 1(指定分区号) -> 回车(默认从 1 柱面开始建立分区)-> +2G(指定分区大小)" -> w保存退出
创建逻辑分区也是同样的步骤,但是一个磁盘最多建立四个主分区,或者3个主分区+一个扩展分区,然后可以在扩展分区的基础上创建逻辑分区,如下我已经建立了主分区和一个扩展分区:
接下来我们可以下扩展分区的基础上创建逻辑分区。
#fdisk创建逻辑分区
要求重新启动,才能格式化,可是重新启动很浪费时间。如果不想重新启动,则可以使用 partprobe 命令
#partprobe
#parted
parted 命令是可以在命令行直接分区和格式化的,不过 parted 交互模式才是更加常用的命令方式,进入交互模式的方法如下:
parted <硬盘设备文件名>
#################交互命令#######################
check NUMBER #做一次简单的文件系统检测 cp [FROM-DEVICE] FROM-NUMBER TO-NUMBER #复制文件系统到另一个分区 help [COMMAND] #显示所有的命令帮助 mklabel,mktable LABEL-TYPE #创建新的磁盘卷标(分区表) mkfs NUMBER FS-TYPE #在分区上建立文件系统 mkpart PART-TYPE [FS-TYPE] START END #创建一个分区 mkpartfs PART-TYPE FS-TYPE START END #创建分区,并建立文件系统 move NUMBER START END #移动分区 name NUMBER NAME #给分区命名 print [devices|free|list,all|NUMBER] #显示分区表、活动设备、空闲空间、所有分区 quit #退出 rescue START END #修复丢失的分区 resize NUMBER START END #修改分区大小 rm NUMBER #删除分区 select DEVICE #选择需要编辑的设备 set NUMBER FLAG STATE #改变分区标记 toggle [NUMBER [FLAG]] #切换分区表的状态 unit UNIT #设置默认的单位 Version #显示版本
#mkfs
分区完成后,如果不格式化写入文件系统,则是不能正常使用的。这时就需要使用 mkfs 命令对硬盘分区进行格式化。
mkfs [-t 文件系统格式] 分区设备文件名
mkfs -t ext4 /dev/sdb2
#mke2fs
mke2fs [选项] 分区设备文件名
-t 文件系统 #指定格式化成哪个文件系统, 如 ext2、ext3、ext4;
-b 字节 #指定 block 的大小;
-i 字节 #指定"字节 inode "的比例,也就是多少字节分配一个 inode;
-j #建立带有 ext3 日志功能的文件系统;
-L 卷标名 #给文件系统设置卷标名,就不使用 e2label 命令设定了;
mke2fs -t ext4 -b 2048 /dev/sdb2
swap分区
swap 分区通常被称为交换分区,这是一块特殊的硬盘空间,即当实际内存不够用的时候,操作系统会从内存中取出一部分暂时不用的数据,放在交换分区中,从而为当前运行的程序腾出足够的内存空间。swap 分区容量应大于物理内存大小,建议是内存的两倍,但不超过2GB。
建立新的swap分区,只需要执行以下几个步骤。
1、分区:不管是fdisk命令还是parted命令,都需要先区。
2、格式化:格式化命令稍有不同,使用mkswap命令把分区格式化成swap分区。
3、使用swap分区
创建分区,假设我们已经创建好了分区
格式化:
mkswap /dev/sdb2
然后使用free命令查看
#swapon和swapoff
加载和取消交换分区
LVM
LVM 是Logical Volume Manager的简称,译为中文就是逻辑卷管理。它是Linux下对硬盘分区的一种管理机制。提供了动态地管理存储LVM 最大的好处就是可以随时调整分区的大小,分区中的现有数据不会丟失,并且不需要卸载分区、停止服务。
LVM 允许我们在逻辑卷在线的状态下将其复制到另一设备上,此成功被称为快照功能。快照允许我们在复制的同时,保证运行关键任务的 Web 服务器或数据库服务继续工作。
LVM 是在硬盘分区之上建立一个逻辑层,这个逻辑层让多个硬盘或分区看起来像一块逻辑硬盘,然后将这块逻辑硬盘分成逻辑卷之后使用,从而大大提高了分区的灵活性。我们把真实的物理硬盘或分区称作物理卷(PV);由多个物理卷组成一块大的逻辑硬盘,叫作卷组(VG);将卷组划分成多个可以使用的分区,叫作逻辑卷(LV)。而在 LVM 中最小的存储单位不再是 block,而是物理扩展块(Physical Extend,PE)。我们通过下图看这些概念之间的联系。
物理卷(Physical Volume,PV):就是真正的物理硬盘或分区。
卷组(Volume Group,VG):将多个物理卷合起来就组成了卷组。组成同一个卷组的物理卷可以是同一块硬盘的不同分区,也可以是不同硬盘上的不同分区。我们可以把卷组想象为一块逻辑硬盘。
逻辑卷(Logical Volume,LV):卷组是一块逻辑硬盘,硬盘必须分区之后才能使用,我们把这个分区称作逻辑卷。逻辑卷可以被格式化和写入数据。我们可以把逻辑卷想象为分区。
物理扩展(Physical Extend,PE):PE 是用来保存数据的最小单元,我们的数据实际上都是写入PE当中的。PE的大小是可以配置的,默认是4MB。
也就是说,我们在建立LVM的时候,需要按照以下步骤来进行:
1、把物理硬盘分成分区,当然也可以是整块物理硬盘;
2、把物理分区建立为物理卷(PV),也可以直接把整块硬盘都建立为物理卷。
3、把物理卷整合为卷组(VG),卷组就已经可以动态地调整大小了,可以把物理分区加入卷组,也可以把物理分区从卷组中删除。
4、把卷组再划分为逻辑卷(LV),当然逻辑卷也是可以直接调整大小的。我们说逻辑卷可以想象为分区,所以也需要格式化和挂载。
1、创建分区,fdisk就好,注意:Linux 默认的分区 ID 83,而要改成 LVM 的 ID 8e(使用fdisk t交互)
创建结果:
partprobe #记得重新读取分区表,否则重启系统
2、创建物理卷:pvcreate
pvcreate [设备文件名]
pvcreate /dev/sdb5
pvcreate /dev/sdb6
pvcreate /dev/sdb7
查看物理卷:pvscan或者display
删除物理卷:pvremove
pvremove /dev/sdb7 (这里不演示)
注意:在删除物理卷时,物理卷必须不属于任何卷组,也就是需要先将物理卷从卷组中删除,再删除物理卷。其实所有的删除就是把创建过程反过来,建立时不能少某个步骤,删除时也同样不能跳过某一步直接删除。
3、创建卷组
vgcreate [-s PE 大小] 卷组名 物理卷名
[-s PE 大小] 选项的含义是指定 PE 的大小,单位可以是 MB、GB、TB 等。如果不写,则默认 PE 大小是 4MB。这里的卷组名指的就是要创建的卷组的名称,而物理卷名则指的是希望添加到此卷组的所有硬盘区分或者整个硬盘
vgcreate -s 8MB scvg1 /dev/sdb5 /dev/sdb6 /dev/sdb7
#激活
vgchange -a y 卷组名 #激活卷组
vgchange -a y 卷组名 #停用卷组
#查看vgscan或者vgdisplay
#扩容
vgextend scvg /dev/sdb7
#缩小
vgreduce scvg /dev/sdb7
#删除
vgremove scvg
4、建立逻辑卷
lvcreate [选项] [-n 逻辑卷名] 卷组名
-L 容量:指定逻辑卷大小,单位为 MB、GB、TB 等;
-l 个数:按照 PE 个数指定逻辑卷大小,这个参数需要换算容量,太麻烦;
-n 逻辑卷名:指定逻辑卷名;
lvcreate -L 3G -n lamplv scvg1 #在scvg1卷组中建立一个3GB大小的lamplv逻辑卷
建立完逻辑卷,还要在格式化和挂载之后才能正常使用。格式化和挂载命令与操作普通分区时是一样的
逻辑卷的设备文件名是"/dev/卷组名/逻辑卷名",如逻辑卷 lamplv 的设备文件名就是"/dev/scvg/lamplv"
mkfs -t ext4 /dev/scvg1/lamplv
mkdir /disklvm
mount /dev/scvg1/lamplv /disklvm/
#查看
lvscan
lvdisplay
#调整大小
#调整大小
lvresize [选项] 逻辑卷的设备文件名
-L 容量:安装容量调整大小,单位为 KB、GB、TB 等。使用 + 増加空间,- 代表减少空间。如果直接写容量,则代表设定逻辑卷大小为指定大小;
-l 个数:按照 PE 个数调整逻辑卷大小;
lvresize -L 4G /dev/scvg1/lamplv #增加到4G
lvresize -L +1G /dev/scvg1/lamplv #增加到4G
resize2fs [选项] [设备文件名] [调整的大小]
-f:强制调整;
设备文件名:指定调整哪个分区的大小;
调整的大小:指定把分区调整到多大,要加 M、G 等单位。如果不加大小,则会使用整个分区;
resize2fs /dev/scvg1/lamplv
#删除
lvremove 逻辑卷的设备文件名
先要卸载:然后删除
umount /dev/scvg1/lamplv
lvremove /dev/scvg1/lamplv
出处:https://www.cnblogs.com/zsql/
如果您觉得阅读本文对您有帮助,请点击一下右下方的推荐按钮,您的推荐将是我写作的最大动力!
版权声明:本文为博主原创或转载文章,欢迎转载,但转载文章之后必须在文章页面明显位置注明出处,否则保留追究法律责任的权利。