配置分区大小
根据前面介绍的分区命令就可以创建分区了,不过需要注意,我们要为某些特定挂载点设置合适的分区大小。CentOS 7 (参考 Red Hat Ent erprise Linux 7 安装手册)至少需要为 /boot
、/
、/home
、swap
这四个挂载点配置分区。下面是这四个挂载点分区大小建议:
-
/boot
:建议大小至少有 500 MB。挂载到/boot
的分区含有操作系统内核,它可让系统引导 CentOS,并提供引导过程中要使用的文件。/boot
在日常系统运行中并不需要,只在启动和内核升级的时候用到。多数情况下, 500 MB 的/boot
分区就足够了。 -
/
:建议大小至少为 10 GB。/ 分区(或叫根分区)是最重要而且必需的,需要最先挂载。/ 目录(或叫根目录)是目录树的顶层,所有文件和目录都在 / 目录中显示,即使它们实际上存储在其他的物理设备上(不要将/ 目录
与/root 目录
混淆。/root 目录
是root 用户
的主目录)。根文件系统中的内容应该足以启动、恢复、修复系统。因此/
目录下的特定目录是不能作为独立分区的。默认情况下所有文件都写入这个分区,除非要写入的路径挂载到了不同分区,比如/home
分区。虽然 5 GB root 分区满足最低安装条件,但还是建议至少分配 10 GB 分区以便可以尽可能安装想要的软件包。 -
/home
:其分区大小取决于本地保存数据量、用户数量等等。/home 目录包含用户定义的配置文件、缓存、应用程序数据和媒体文件。该分区的存在可以让你在不删除用户数据文件的情况下进行升级或者重装 CentOS。如果存储空间超过 50 GB,则会在创建其他分区的同时自动创建 /home 分区。考虑为所有可能包含敏感数据的分区加密。考虑为所有可能包含敏感数据的分区加密。加密可防止对这些分区中数据的未授权访问,即使他们可以访问物理存储设备。在大多数情况下,应该至少对 /home 分区加密。 -
swap
:swap 分区支持虚拟内存。当没有足够的 RAM 保存系统处理的数据时会将数据写入 swap 分区。当系统缺乏 swap 空间时,内核会因 RAM 内存耗尽而终止进程。配置过多 swap 空间会造成存储设备处于分配状态而闲置,这是浪费资源。过多 swap 空间还会掩盖内存泄露。内存小于 4G 时设置该分区大小为内存的 2 倍 ,内存大于 4G 时设置该分区的大小和内存大小一致即可 。下表根据系统中的 RAM 容量以及是否需要足够的内存以便系统休眠来提供推荐的 swap 分区大小。
系统 RAM 容量 | 建议 swap 空间大小 | 允许休眠的建议 swap 空间大小 |
---|---|---|
低于 2 GB | RAM 容量的两倍 | RAM 容量的三倍 |
2 GB - 8 GB | 与 RAM 容量相等 | RAM 容量的两倍 |
8 GB - 64 GB | 4 GB 到 RAM 容量的 0.5 倍 | RAM 容量的 1.5 倍 |
超过 64 GB | 独立负载(至少 4GB) | 不建议使用休眠功能 |
下面是可选的挂载点分区:
-
/var
:/var 分配 8-12 GB 对于桌面系统来说是比较合适的取值,具体取值取决于安装的软件数量。/var 目录中包含大量的应用程序变量数据,例如 spool 目录和文件,管理和登录数据,pacman 的缓存,ABS 树,Apache 网页服务器,临时下载的更新软件包(PackageKit 更新软件默认将更新的软件包下载到 /var/cache/yum/)等等。它通常被用作缓存或者日志记录,因此读写频繁。将它独立出来可以避免由于大量日志写入造成的磁盘空间耗尽等问题。确定挂载在 /var 的分区中有足够空间可用于保存下载的更新以及其他内容。如果要为 /var 生成独立分 区,请确定 /var/cache/yum/ 大小至少在 3.0 GB 以上以便保存下载的软件包更新。 -
/usr
:/user 目录中包含 CentOS 系统中大部分软件内容。要安装默认软件组需要分配至少 5 GB 空间。如果将该系统作为软件开发工作站使用,则至少需要分配 10GB。如果 /usr 或 /var 是在剩余 root 卷之外进行分区,引导过程会变得非常复杂,因为这些目录包含对引导极为重要的组件。在某些情况下,比如这些目录位于 iSCSI 驱动器或 FCoE 位置, 系统可能无法引导,或 者在关机或重启时挂起,并给出 Device is busy 出错信息。这些限制仅适用于 /usr 或 /var,不会对以下目录产生影响。例如:/var/www 的独立分区可正常工作,没有任何问题。考虑在 LVM 卷组中保留部分未分配空间。如果空间需要更改,但不希望删除其他分区中的数据来重新分配存储,这个未分配空间就提供了一些机动性。还可以为该分区选择精简配置设备类型,以便该卷可以自动处理未使用的空间。如果将子目录分成分区,就可以在决定使用当前安装 CentOS 新版时保留那些子目录中的内容。例如:如果要在 /var/lib/mysql 中运行 MySQL 数据库,请将那个目录放在单独的分区中,以备之后需要重新安装。
-
/boot/efi
:如果使用 UEFI 引导方式,则还需要 /boot/efi 分区,该分区应至少应有 50 MB,建议使用 200 MB。我们可以根据需要(比如安装 Weblogic 和 Oracle 时)创建额外的分区。在使用 GPT(GUID 分区表)的引导装载程序的 BIOS 系统中,需要生成大小为 1 MB 的 biosboot 分区。 -
/data
:可以为需要多用户共享的文件建立一个 data (其他名称也可以)分区,比如 Oracle 的数据库实例可以放在该目录下。
为各挂载目录创建好分区之后,就可以为其创建文件系统了。
创建文件系统
在 Windows 环境下,格式化的操作相对简单。通常的操作步骤是:先打开资源管理器,接着在希望被执行格式化的盘符图标上右击,然后选择“格式化”,再按照提示操作即可。也可以选择“快速格式化”,但要求分区没有坏道。需要注意的是:对硬盘执行格式化操作时,用户需要拥有系统管理员权限(仅限于 Windows Vista 以及此后推出的作业系统)。在 Windows 环境中,除了可以使用图形化的操作界面执行格式化操作之外,也可以在命令提示字符中使用 Diskpart 指令
(仅限于 Windows 2000 及以后的作业系统,包含 Windows PE)进行操作。
在 Unix/Linux 环境下,通常使用命令工具执行格式化操作。需要注意的是:对硬盘执行格式化操作时,用户需要拥有超级用户权限。创建文件系统的常用命令如下:
- mkfs:创建一个 ext 文件系统;
- mke2fs:创建一个 ext2 文件系统;
- mkfs.ext2:创建一个 ext2 文件系统;
- mkfs.ext3:创建一个 ext3 文件系统;
- mkfs.ext4:创建一个 ext4 文件系统;
- mkfs.xfs:创建一个 XFS 文件系统;
- xfs_mkfile:创建一个 XFS t文件系统;
- mkfs.cramfs:创建一个 cramfs 文件系统;
- mkfs.btrfs:创建一个 Btrfs 文件系统;
- mkswap:创建一个 swap 文件系统;
- jfs_mkfs:创建一个 JFS 文件系统。
并非所有文件系统的命令工具都已经默认安装了。要想知道某个文件系统的命令工具是否可用,可以使用 type 命令。
[root@localhost ~]# type mkfs
mkfs is /usr/sbin/mkfs
[root@localhost ~]# type mke2fs
mke2fs is /usr/sbin/mke2fs
[root@localhost ~]# type mkfs.ext2
mkfs.ext2 is /usr/sbin/mkfs.ext2
[root@localhost ~]# type mkfs.ext3
mkfs.ext3 is /usr/sbin/mkfs.ext3
[root@localhost ~]# type mkfs.ext4
mkfs.ext4 is /usr/sbin/mkfs.ext4
[root@localhost ~]# type mkfs.xfs
mkfs.xfs is /usr/sbin/mkfs.xfs
[root@localhost ~]# type mkfs.cramfs
mkfs.cramfs is /usr/sbin/mkfs.cramfs
[root@localhost ~]# type mkfs.btrfs
mkfs.btrfs is /usr/sbin/mkfs.btrfs
[root@localhost ~]# type xfs_mkfile
xfs_mkfile is /usr/sbin/xfs_mkfile
[root@localhost ~]# type mkswap
mkswap is /usr/sbin/mkswap
[root@localhost ~]# type jfs_mkfs
-bash: type: jfs_mkfs: not found
每个文件系统命令都有很多命令行选项,允许你定制如何在分区上创建文件系统。要查看所有可用的命令行选项,可用 man 命令来显示该文件系统命令的手册页面。所有的文件系统命令都允许通过不带选项的简单命令来创建一个默认的文件系统。
[root@localhost ~]# parted
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
Using /dev/sdb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 2149MB 2147MB primary ext4
2 2149MB 4296MB 2147MB primary
3 4296MB 5370MB 1074MB primary
(parted) q
[root@localhost ~]# mkfs.ext3 /dev/sdb2
mke2fs 1.42.9 (28-Dec-2013)
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
131072 inodes, 524288 blocks
26214 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=536870912
16 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Writing superblocks and filesystem accounting information: done
[root@localhost ~]# parted
GNU Parted 3.1
Using /dev/sda
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) select /dev/sdb
sdb sdb1 sdb2 sdb3
(parted) select /dev/sdb
Using /dev/sdb
(parted) print
Model: VMware, VMware Virtual S (scsi)
Disk /dev/sdb: 21.5GB
Sector size (logical/physical): 512B/512B
Partition Table: msdos
Disk Flags:
Number Start End Size Type File system Flags
1 1049kB 2149MB 2147MB primary ext4
2 2149MB 4296MB 2147MB primary ext3
3 4296MB 5370MB 1074MB primary
(parted) q
[root@localhost ~]#
为分区创建了文件系统之后,下一步是将它挂载到虚拟目录下的某个挂载点,这样就可以将数据存储在新文件系统中了。你可以将新文件系统通过 mount 命令挂载到虚拟目录中需要额外空间的任何位置。
[root@localhost ~]# mkdir /data
[root@localhost ~]# cd /
[root@localhost /]# ll
total 70
lrwxrwxrwx. 1 root root 7 May 4 06:32 bin -> usr/bin
dr-xr-xr-x. 5 root root 1024 May 8 21:44 boot
drwxr-xr-x. 2 root root 4096 May 13 20:47 data
drwxr-xr-x. 20 root root 3400 May 13 20:43 dev
drwxr-xr-x. 139 root root 12288 May 13 20:25 etc
drwxr-xr-x. 4 root root 4096 May 4 06:46 home
lrwxrwxrwx. 1 root root 7 May 4 06:32 lib -> usr/lib
lrwxrwxrwx. 1 root root 9 May 4 06:32 lib64 -> usr/lib64
drwx------. 2 root root 16384 May 4 06:32 lost+found
drwxr-xr-x. 2 root root 4096 Nov 5 2016 media
drwxr-xr-x. 3 root root 4096 May 8 21:41 mnt
drwxr-xr-x. 3 root root 4096 May 4 06:42 opt
dr-xr-xr-x. 182 root root 0 May 8 07:35 proc
dr-xr-x---. 5 root root 4096 May 13 20:19 root
drwxr-xr-x. 41 root root 1200 May 13 11:23 run
lrwxrwxrwx. 1 root root 8 May 4 06:32 sbin -> usr/sbin
drwxr-xr-x. 2 root root 4096 Nov 5 2016 srv
dr-xr-xr-x. 13 root root 0 May 8 07:35 sys
drwxrwxrwt. 20 root root 4096 May 13 20:42 tmp
drwxr-xr-x. 13 root root 4096 May 4 06:32 usr
drwxr-xr-x. 22 root root 4096 May 8 07:35 var
[root@localhost /]# mount -t ext4 /dev/sdb1 /data
[root@localhost /]# ls -al /data
total 24
drwxr-xr-x. 3 root root 4096 May 13 20:39 .
dr-xr-xr-x. 19 root root 4096 May 13 20:47 ..
drwx------. 2 root root 16384 May 13 20:39 lost+found
[root@localhost /]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 9.8G 4.6G 4.7G 50% /
devtmpfs 474M 0 474M 0% /dev
tmpfs 489M 156K 489M 1% /dev/shm
tmpfs 489M 14M 476M 3% /run
tmpfs 489M 0 489M 0% /sys/fs/cgroup
/dev/sda1 477M 142M 307M 32% /boot
/dev/mapper/cl-home 5.8G 276M 5.2G 5% /home
tmpfs 98M 24K 98M 1% /run/user/1000
tmpfs 98M 0 98M 0% /run/user/0
/dev/sdb1 2.0G 6.0M 1.8G 1% /data
[root@localhost /]#
现在你可以在新分区中保存新文件和目录了! 这种挂载文件系统的方法只能临时挂载文件系统。当重启 Linux 系统时,文件系统并不会自动挂载。要强制 Linux 在启动时自动挂载新的文件系统,可以将其添加到 /etc/fstab 文件。
逻辑卷管理(LVM)
如果用标准分区在硬盘上创建了文件系统,为已有文件系统添加额外的空间多少是一种痛苦的体验。你只能在同一个物理硬盘的可用空间范围内调整分区大小。如果硬盘上没有地方了,你就必须弄一个更大的硬盘,然后手动将已有的文件系统移动到新的硬盘上。这时候就可以通过将另外一个硬盘上的分区加入已有文件系统,动态地添加存储空间。 Linux 逻辑卷管理器(logical volume manager, LVM)软件包正好可以用来做这个。它可以让你在无需重建整个文件系统的情况下,轻松地管理磁盘空间。
逻辑卷管理布局
逻辑卷管理的核心在于如何处理安装在系统上的硬盘分区。在逻辑卷管理的世界里,硬盘称作物理卷(physical volume, PV)。每个物理卷都会映射到硬盘上特定的物理分区。多个物理卷集中在一起可以形成一个卷组(volume group, VG)。逻辑卷管理系统将卷组视为一个物理硬盘,但事实上卷组可能是由分布在多个物理硬盘上的多个物理分区组成的。卷组提供了一个创建逻辑分区的平台,而这些逻辑分区则包含了文件系统。 整个结构中的最后一层是逻辑卷(logical volume, LV)。逻辑卷为 Linux 提供了创建文件系统的分区环境,作用类似于到目前为止我们一直在探讨的 Linux 中的物理硬盘分区。Linux 系统将逻辑卷视为物理分区。 每个逻辑卷可以被格式化成某种文件系统,然后挂载到虚拟目录中某个特定位置。逻辑卷由 PE (physical extents,即物理区段)组成,PE 为硬盘可供指派给逻辑卷的最小单位(通常为4MB)。
lvm01.png注意,上图中的第三个物理硬盘有一个未使用的分区。通过逻辑卷管理,你随后可以轻松地将这个未使用分区分配到已有卷组:要么用它创建一个新的逻辑卷,要么在需要更多空间时用它来扩展已有的逻辑卷。 类似地,如果你给系统添加了一块硬盘,逻辑卷管理系统允许你将它添加到已有卷组,为某个已有的卷组创建更多空间,或是创建一个可用来挂载的新逻辑卷。这种扩展文件系统的方法要好用得多!
1024px-LVM1.svg.png优点
比起正常的硬盘分区管理,LVM 更富于弹性:
- 使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。
- 使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
- 可以创建小的逻辑卷(LV),在空间不足时再动态调整它的大小。
- 在调整逻辑卷(LV)大小时可以不用考虑逻辑卷在硬盘上的位置,不用担心没有可用的连续空间。
- 可以在线(online)对逻辑卷(LV)和卷组(VG)进行创建、删除、调整大小等操作。LVM 上的文件系统也需要重新调整大小,某些文件系统也支持这样的在线操作。
- 无需重新启动服务,就可以将服务中用到的逻辑卷(LV)在线(online)/动态(live)迁移至别的硬盘上。
- 允许创建快照,可以保存文件系统的备份,同时使服务的下线时间(downtime)降低到最小。
这些优点使得 LVM 对服务器的管理非常有用,对于桌面系统管理的帮助则没有那么显著,你需要根据实际情况进行取舍。
缺点
- 在系统设置时需要更复杂的额外步骤。
Linux LVM
Linux LVM 是由 Heinz Mauelshagen 开发的,于 1998年 发布到了 Linux 社区。它允许你在 Linux 上用简单的命令行命令管理一个完整的逻辑卷管理环境。 Linux LVM 有两个可用的版本。
- LVM1:最初的 LVM 包于 1998 年发布,只能用于 Linux 内核 2.4 版本。它仅提供了基本的逻 辑卷管理功能。
- LVM2: LVM 的更新版本,可用于 Linux 内核 2.6 版本。它在标准的 LVM1 功能外提供了额外的功能。
大部分采用 2.6 或更高内核版本的现代 Linux 发行版都提供对 LVM2 的支持。除了标准的逻辑卷管理功能外, LVM2 还提供了另外一些好用的功能。
-
快照。
最初的 Linux LVM 允许你在逻辑卷在线的状态下将其复制到另一个设备。这个功能叫作快照(snapshot )。在备份由于高可靠性需求而无法锁定的重要数据时,快照功能非常给力。传统的备份方法在将文件复制到备份媒体上时通常要将文件锁定。快照允许你在复制的同时,保证运行关键任务的 Web 服务器或数据库服务器继续工作。遗憾的是, LVM1 只允许你创建只读快照。一旦创建了快照,就不能再写入东西了。 LVM2 允许你创建在线逻辑卷的可读写快照。有了可读写的快照,就可以删除原先的逻辑卷, 然后将快照作为替代挂载上。这个功能对快速故障转移或涉及修改数据的程序试验(如果失败, 需要恢复修改过的数据)非常有用。
-
条带化。
LVM2 提供的另一个引人注目的功能是条带化(striping)。有了条带化,可跨多个物理硬盘创建逻辑卷。当 Linux LVM 将文件写入逻辑卷时,文件中的数据块会被分散到多个硬盘上。每个后继数据块会被写到下一个硬盘上。条带化有助于提高硬盘的性能,因为 Linux 可以将一个文件的多个数据块同时写入多个硬盘, 而无需等待单个硬盘移动读写磁头到多个不同位置。这个改进同样适用于读取顺序访问的文件, 因为 LVM 可同时从多个硬盘读取数据。LVM 条带化不同于 RAID 条带化。 LVM 条带化不提供用来创建容错环境的校验信息。事实上,LVM 条带化会增加文件因硬盘故障而丢失的概率。单个硬盘故障可能会造成多个逻辑卷无法访问。
-
镜像。
通过 LVM 安装文件系统并不意味着文件系统就不会再出问题。和物理分区一样, LVM 逻辑卷也容易受到断电和磁盘故障的影响。一旦文件系统损坏,就有可能再也无法恢复。 LVM 快照功能提供了一些安慰,你可以随时创建逻辑卷的备份副本,但对有些环境来说可能还不够。对于涉及大量数据变动的系统,比如数据库服务器,自上次快照之后可能要存储成百上千条记录。 这个问题的一个解决办法就是 LVM 镜像。镜像是一个实时更新的逻辑卷的完整副本。当你创建镜像逻辑卷时, LVM 会将原始逻辑卷同步到镜像副本中。根据原始逻辑卷的大小,这可能需要一些时间才能完成。 一旦原始同步完成, LVM 会为文件系统的每次写操作执行两次写入——一次写入到主逻辑卷,一次写入到镜像副本。可以想到,这个过程会降低系统的写入性能。就算原始逻辑卷因为某些原因损坏了,你手头也已经有了一个完整的最新副本!
使用 Linux LVM
Linux LVM 包只提供了命令行程序来创建和管理逻辑卷管理系统中所有组件。有些 Linux 发行版则包含了命令行命令对应的图形化前端,但为了完全控制你的 LVM 环境,最好习惯直接使用这些命令。
-
定义物理卷
创建过程的第一步就是将硬盘上的物理分区转换成 Linux LVM 使用的物理卷区段。
fdisk
命令可以帮忙。在创建了基本的 Linux 分区之后,你需要通过t
命令改变分区类型。# 查看新添加新硬盘后新建分区的系统 id,发现为默认的 Linxu [root@localhost ~]# fdisk -l /dev/sdb* 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: 0x000391ab Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux /dev/sdb2 4196352 8390655 2097152 83 Linux /dev/sdb3 8390656 10487807 1048576 83 Linux Disk /dev/sdb1: 2147 MB, 2147483648 bytes, 4194304 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/sdb2: 2147 MB, 2147483648 bytes, 4194304 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/sdb3: 1073 MB, 1073741824 bytes, 2097152 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 # 修改新建分区的系统 id [root@localhost ~]# fdisk /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): p 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: 0x000391ab Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 83 Linux /dev/sdb2 4196352 8390655 2097152 83 Linux /dev/sdb3 8390656 10487807 1048576 83 Linux Command (m for help): l 0 Empty 24 NEC DOS 81 Minix / old Lin bf Solaris 1 FAT12 27 Hidden NTFS Win 82 Linux swap / So c1 DRDOS/sec (FAT- 2 XENIX root 39 Plan 9 83 Linux c4 DRDOS/sec (FAT- 3 XENIX usr 3c PartitionMagic 84 OS/2 hidden C: c6 DRDOS/sec (FAT- 4 FAT16 <32M 40 Venix 80286 85 Linux extended c7 Syrinx 5 Extended 41 PPC PReP Boot 86 NTFS volume set da Non-FS data 6 FAT16 42 SFS 87 NTFS volume set db CP/M / CTOS / . 7 HPFS/NTFS/exFAT 4d QNX4.x 88 Linux plaintext de Dell Utility 8 AIX 4e QNX4.x 2nd part 8e Linux LVM df BootIt 9 AIX bootable 4f QNX4.x 3rd part 93 Amoeba e1 DOS access a OS/2 Boot Manag 50 OnTrack DM 94 Amoeba BBT e3 DOS R/O b W95 FAT32 51 OnTrack DM6 Aux 9f BSD/OS e4 SpeedStor c W95 FAT32 (LBA) 52 CP/M a0 IBM Thinkpad hi eb BeOS fs e W95 FAT16 (LBA) 53 OnTrack DM6 Aux a5 FreeBSD ee GPT f W95 Ext'd (LBA) 54 OnTrackDM6 a6 OpenBSD ef EFI (FAT-12/16/ 10 OPUS 55 EZ-Drive a7 NeXTSTEP f0 Linux/PA-RISC b 11 Hidden FAT12 56 Golden Bow a8 Darwin UFS f1 SpeedStor 12 Compaq diagnost 5c Priam Edisk a9 NetBSD f4 SpeedStor 14 Hidden FAT16 <3 61 SpeedStor ab Darwin boot f2 DOS secondary 16 Hidden FAT16 63 GNU HURD or Sys af HFS / HFS+ fb VMware VMFS 17 Hidden HPFS/NTF 64 Novell Netware b7 BSDI fs fc VMware VMKCORE 18 AST SmartSleep 65 Novell Netware b8 BSDI swap fd Linux raid auto 1b Hidden W95 FAT3 70 DiskSecure Mult bb Boot Wizard hid fe LANstep 1c Hidden W95 FAT3 75 PC/IX be Solaris boot ff BBT 1e Hidden W95 FAT1 80 Old Minix Command (m for help): t Partition number (1-3, default 3): 1 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): t Partition number (1-3, default 3): 2 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): t Partition number (1-3, default 3): 3 Hex code (type L to list all codes): 8e Changed type of partition 'Linux' to 'Linux LVM' Command (m for help): p 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: 0x000391ab Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 8e Linux LVM /dev/sdb2 4196352 8390655 2097152 8e Linux LVM /dev/sdb3 8390656 10487807 1048576 8e Linux LVM Command (m for help): w The partition table has been altered! Calling ioctl() to re-read partition table. WARNING: Re-reading the partition table failed with error 16: Device or resource busy. The kernel still uses the old table. The new table will be used at the next reboot or after you run partprobe(8) or kpartx(8) Syncing disks. # 再次查看新建分区的系统 id,发现已经变成了 Linux LVM [root@localhost ~]# fdisk -l /dev/sdb* 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: 0x000391ab Device Boot Start End Blocks Id System /dev/sdb1 2048 4196351 2097152 8e Linux LVM /dev/sdb2 4196352 8390655 2097152 8e Linux LVM /dev/sdb3 8390656 10487807 1048576 8e Linux LVM Disk /dev/sdb1: 2147 MB, 2147483648 bytes, 4194304 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/sdb2: 2147 MB, 2147483648 bytes, 4194304 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/sdb3: 1073 MB, 1073741824 bytes, 2097152 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 [root@localhost ~]#
分区类型 8e 表示这个分区将会被用作 Linux LVM 系统的一部分,而不是一个直接的文件系统。
下一步是用物理分区来创建物理卷。这可以通过
pvcreate
命令来完成。pvcreate DEVICE
定义了用于物理卷的物理分区DEVICE
。它只是简单地将物理分区标记成 Linux LVM 系统中的分区而已。如果pvcreate
命令不能正常工作,很可能是因为 LVM2 软件包没有默认安装,可参考软件包的安装部分的介绍来安装 LVM2。# 如果物理分区已存在签名标签,创建物理卷时需要擦除该签名 [root@localhost ~]# pvcreate /dev/sdb1 WARNING: ext4 signature detected on /dev/sdb1 at offset 1080. Wipe it? [y/n]: y Wiping ext4 signature on /dev/sdb1. Physical volume "/dev/sdb1" successfully created. # 如果物理分区已被挂载,那么在创建物理卷之前需要先将其卸载 [root@localhost ~]# pvcreate /dev/sdb2 Can't open /dev/sdb2 exclusively. Mounted filesystem? [root@localhost ~]# umount /dev/sdb2 [root@localhost ~]# pvcreate /dev/sdb2 WARNING: ext3 signature detected on /dev/sdb2 at offset 1080. Wipe it? [y/n]: y Wiping ext3 signature on /dev/sdb2. Physical volume "/dev/sdb2" successfully created. [root@localhost ~]# pvcreate /dev/sdb3 dev_is_mpath: failed to get device for 8:17 Physical volume "/dev/sdb3" successfully created. [root@localhost ~]#
别被吓人的消息 dev_is_mpath: failed to get device for 8:17 或类似的消息唬住了。只要看到了 successfully created 就没问题。 pvcreate 命令会检查分区是否为多路(multi-path, mpath)设备。如果不是的话,就会发出上面那段消息。
如果你想查看创建进度的话,可以使用
pvdisplay
命令来显示已创建的物理卷列表。[root@localhost ~]# pvdisplay /dev/sdb* "/dev/sdb2" is a new physical volume of "2.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb2 VG Name PV Size 2.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID xKDxtk-6Bgp-CmEL-Lp14-X18Q-67l7-xr1jvn "/dev/sdb1" is a new physical volume of "2.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb1 VG Name PV Size 2.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID dS6C30-O5rh-k3bx-eG1O-8WkX-9KxU-ruerYU "/dev/sdb3" is a new physical volume of "1.00 GiB" --- NEW Physical volume --- PV Name /dev/sdb3 VG Name PV Size 1.00 GiB Allocatable NO PE Size 0 Total PE 0 Free PE 0 Allocated PE 0 PV UUID LXuFvo-7eDX-RdAm-9c1x-f4eZ-0N3g-UTdEAf Failed to find physical volume "/dev/sdb". [root@localhost ~]#
pvdisplay
命令显示出/dev/sdb1
、/dev/sdb2
、/dev/sdb3
现在已经被标记为物理卷。注意,输出中的 VG Name 内容为空,因为物理卷还不属于某个卷组。由于我们并没有为/dev/sdb
上的剩余空间创建分区和物理卷,所以命令最后输出Failed to find physical volume "/dev/sdb"
。 -
创建卷组
下一步是从物理卷中创建一个或多个卷组(VG)。究竟要为系统创建多少卷组并没有既定的规则,你可以将所有的可用物理卷加到一个卷组,也可以结合不同的物理卷创建多个卷组。要从命令行创建卷组,需要使用
vgcreate
命令。vgcreate <volume_group> <physical_volume_list>
命令需要指定要创建的卷组名以及用来创建卷组的若干物理卷名。[root@localhost ~]# vgcreate VG01 /dev/sdb1 Volume group "VG01" successfully created [root@localhost ~]#
输出结果平淡无奇。如果你想看看新创建的卷组的细节,可用
vgdisplay
命令。[root@localhost ~]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 2.00 GiB PE Size 4.00 MiB Total PE 511 Alloc PE / Size 0 / 0 Free PE / Size 511 / 2.00 GiB VG UUID WaAcyp-fQfL-YzUJ-N27b-RZFW-41aY-R1pxaH [root@localhost ~]#
这个例子使用
/dev/sdb1
分区上创建的物理卷,创建了一个名为VG01
的卷组。Cur PV(当前物理卷数)
、Act PV(实际物理卷数)
表示当前卷组由几个物理卷组成。使用
vgextend <volume_group> <another_physical_volume>
命令可以为已存在的卷组添加新的物理卷。[root@localhost ~]# vgextend VG01 /dev/sdb2 /dev/sdb3 Volume group "VG01" successfully extended [root@localhost ~]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 2 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 4.99 GiB PE Size 4.00 MiB Total PE 1277 Alloc PE / Size 0 / 0 Free PE / Size 1277 / 4.99 GiB VG UUID 6aYut8-yFel-eniy-CWiO-dMi8-cRH5-uWKWrW [root@localhost ~]#
使用
vgreduce <volume_group> <add_physical_volume>
命令可以为已存在的卷组去除某些物理卷。仅有一个物理卷的卷组不允许再去除仅剩的物理卷。[root@localhost ~]# vgreduce VG01 /dev/sdb2 /dev/sdb3 Removed "/dev/sdb2" from volume group "VG01" Removed "/dev/sdb3" from volume group "VG01" [root@localhost ~]# vgreduce VG01 /dev/sdb1 Can't remove final physical volume "/dev/sdb1" from volume group "VG01" [root@localhost ~]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 1 Metadata Sequence No 7 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 1 Act PV 1 VG Size 2.00 GiB PE Size 4.00 MiB Total PE 511 Alloc PE / Size 0 / 0 Free PE / Size 511 / 2.00 GiB VG UUID 6aYut8-yFel-eniy-CWiO-dMi8-cRH5-uWKWrW [root@localhost ~]#
使用
vgremove <volume_group>
命令可以删除已存在的整个卷组。[root@localhost ~]# vgremove VG01 Volume group "VG01" successfully removed [root@localhost ~]# vgdisplay VG01 Volume group "VG01" not found Cannot process volume group VG01 [root@localhost ~]#
在创建卷组时可以一次性指定多个物理卷。
[root@localhost ~]# vgcreate VG01 /dev/sdb1 /dev/sdb2 /dev/sdb3 Volume group "VG01" successfully created [root@localhost ~]# vgdisplay VG01 --- Volume group --- VG Name VG01 System ID Format lvm2 Metadata Areas 3 Metadata Sequence No 1 VG Access read/write VG Status resizable MAX LV 0 Cur LV 0 Open LV 0 Max PV 0 Cur PV 3 Act PV 3 VG Size 4.99 GiB PE Size 4.00 MiB Total PE 1277 Alloc PE / Size 0 / 0 Free PE / Size 1277 / 4.99 GiB VG UUID 4pOIcr-z8iP-IK3S-funj-8NI9-49Pd-klWHC0 [root@localhost ~]#
创建一个或多个卷组后,就可以创建逻辑卷了。
-
创建逻辑卷
Linux 系统使用逻辑卷来模拟物理分区,并在其中保存文件系统。 Linux 系统会像处理物理分区一样处理逻辑卷,允许你定义逻辑卷中的文件系统,然后将文件系统挂载到虚拟目录上。 要创建逻辑卷,使用
lvcreate
命令。lvcreate
命令通过指定卷组剩余的逻辑区段数来指定逻辑卷的大小。如果当前卷组没有足够的逻辑区段,则可以将向该卷组添加额外的物理卷,或者通过lvreduce
命令来减少现有逻辑卷的大小。虽然通常不需要在其他 Linux LVM 命令中使用命令行选项,但
lvcreate
命令要求至少输入一些选项。-c, --chunksize ChunkSize[b|B|s|S|k|K|m|M|g|G]:指定快照、缓存池、薄池逻辑卷(thin pool logical volumes)的块单位大小,默认为 KB。对于快照来说,该值必须是 4KiB 到 512KiB 之间 2 的次方,默认为 4KiB。对于缓存池来说,该值必须是32KiB and 1GiB之间 32KiB 的整数倍,默认为 64KiB。当通过逻辑缓存来指定大小,该值可能不小于缓存池的创建块大小。对于薄池,该值必须是 64KiB 到 1GiB 之间 64 KiB 的整数倍。如果没有指定池的元数据大小的话,默认值从 64 KiB 增长到适应池的元数据大小(在 128 MiB范围内); -C, --contiguous {y|n}:设置或重置逻辑卷的连续分配策略,默认不连续分配; -i,--stripes Stripes:指定条带数。该值等于分散逻辑卷数据的逻辑卷数量。在创建 RAID 4/5/6 逻辑卷时,额外分区对于内部解释来说同样必要。 -I --stripesize:指定每个条带的大小; -l --extents:指定分配给新逻辑卷的逻辑区段数,或者要用的逻辑区段的百分比; -L --size:指定分配给新逻辑卷的硬盘大小; --minor:指定设备的次设备号; -m --mirrors:创建逻辑卷镜像; -M --persistent:让次设备号一直有效; -n --name:指定新逻辑卷的名称; -p --permission:为逻辑卷设置读/写权限; -r --readahead:设置预读扇区数; -R --regionsize:指定将镜像分成多大的区; -s snapshot:创建快照逻辑卷; -Z --zero:将新逻辑卷的前 1 KB 数据设置为零。
大多数情况下用到的只是少数几个选项。比如使用
lvcreate -L <size> <volume_group> -n <logical_volume>
指定新逻辑卷的大小、所在的卷组、名称后即可创建新的逻辑卷。-L 选项用于为要创建的逻辑卷指定空间大小,而 -n 选项用于为逻辑卷指定名称。[root@localhost ~]# lvcreate -L 2G VG01 -n lv01 Logical volume "lv01" created. [root@localhost ~]#
也可以使用 -l 选项按照卷组空间的百分比来指定要创建逻辑卷的大小,比如
lvcreate -l 50%FREE VG01 -n lv02
命令将使用卷组剩余空间的 50% 来创建一个名为 lv02 的逻辑卷。如果想查看你创建的逻辑卷的详细情况,可用lvdisplay <volume_group>
命令。[root@localhost ~]# lvcreate -l 50%FREE VG01 -n lv02 Logical volume "lv02" created. [root@localhost ~]# lvdisplay VG01 --- Logical volume --- LV Path /dev/VG01/lv01 LV Name lv01 VG Name VG01 LV UUID OoyXAQ-6Jkh-isGh-Ak5N-vvZ3-qatN-o4Q6yP LV Write Access read/write LV Creation host, time localhost.localdomain, 2018-05-29 23:41:42 +0800 LV Status available # open 0 LV Size 2.00 GiB Current LE 512 Segments 2 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:3 --- Logical volume --- LV Path /dev/VG01/lv02 LV Name lv02 VG Name VG01 LV UUID Axe12D-fgnA-pCbv-Qq4F-nhC0-XT7l-MlGpKV LV Write Access read/write LV Creation host, time localhost.localdomain, 2018-05-29 23:47:05 +0800 LV Status available # open 0 LV Size 1.49 GiB Current LE 382 Segments 1 Allocation inherit Read ahead sectors auto - currently set to 8192 Block device 253:4 [root@localhost ~]#
-
创建文件系统
运行完
lvcreate
命令之后,逻辑卷就已经产生了,但它还没有文件系统。你必须使用相应的命令行程序来创建所需要的文件系统。[root@localhost ~]# mkfs.ext4 /dev/VG01/lv01 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 131072 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=536870912 16 block groups 32768 blocks per group, 32768 fragments per group 8192 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (16384 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# mkfs.ext3 /dev/VG01/lv02 mke2fs 1.42.9 (28-Dec-2013) Filesystem label= OS type: Linux Block size=4096 (log=2) Fragment size=4096 (log=2) Stride=0 blocks, Stripe width=0 blocks 97920 inodes, 391168 blocks 19558 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=402653184 12 block groups 32768 blocks per group, 32768 fragments per group 8160 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Allocating group tables: done Writing inode tables: done Creating journal (8192 blocks): done Writing superblocks and filesystem accounting information: done [root@localhost ~]# fdisk -l /dev/VG01/lv* Disk /dev/VG01/lv01: 2147 MB, 2147483648 bytes, 4194304 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/VG01/lv02: 1602 MB, 1602224128 bytes, 3129344 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 [root@localhost ~]#
在创建了新的文件系统之后,可以用标准
mount
命令将这个卷挂载到虚拟目录中,就跟它是物理分区一样。唯一的不同是你需要用特殊的路径来标识逻辑卷。[root@localhost ~]# mount /dev/VG01/lv01 /appData [root@localhost appData]# ll -a /appData total 24 drwxr-xr-x. 3 root root 4096 May 30 00:00 . dr-xr-xr-x. 20 root root 4096 May 26 10:51 .. drwx------. 2 root root 16384 May 30 00:00 lost+found [root@localhost appData]#
注意,
mkfs.ext4
和mount
命令中用到的路径都有点奇怪。路径中使用了卷组名和逻辑卷名,而不是物理分区路径。文件系统被挂载之后,就可以访问虚拟目录中的这块新区域了。
此外,还可以使用以下命令来操作逻辑卷:
- vgchange:激活和禁用卷组;
- vgscan:搜索所有卷组;
- pvresize:修改物理卷大小;
- lvresize:修改逻辑卷大小;
- lvscan:列出所有卷组中的所有逻辑卷;
- lvs:显示逻辑卷信息;
- lsblk:显示所有块信息;
- lvremove:移除逻辑卷。
在手动增加或减小逻辑卷的大小时,要特别小心。逻辑卷中的文件系统需要手动修整来处理大小上的改变。大多数文件系统都包含了能够重新格式化文件系统的命令行程序,比如用于 ext2、 ext3 和 ext4 文件系统的 resize2fs 程序。
动态调整逻辑卷大小
LV 扩容:
第一种方法:直接增大5G,写“+5G”
- lv 扩容 5G
lvresize -L +5G /dev/mapper/vg_linuxidc-lv_root
- 文件系统大小变更
resize2fs /dev/mapper/vg_linuxidc-lv_root
第二种方法:原来是10G,增大5G就是“15G”
- lv扩容到15G
lvresize -L 15G /dev/mapper/vg_linuxidc-lv_u01
- 文件系统大小变更
resize2fs /dev/mapper/vg_linuxidc-lv_u01
注:以上的lvresize 命令操作也可以通过 lvextend 命令实现。
LV 缩减
- 需要先卸载目录
umount /u01
- 这一步是否有根据执行下一步的执行返回决定,看下面的例子
e2fsck -f /dev/mapper/vg_linuxidc-lv_u01
- 文件系统大小变更
resize2fs /dev/mapper/vg_linuxidc-lv_u01 10G
- lv 缩减
lvresize -L 10G /dev/mapper/vg_linuxidc-lv_u01
- 挂载所有 /etc/fstab 中记录的目录
mount -a
动态扩容示例:
# 比如发现某个目录锁挂在的逻辑卷大小不够用了,可以动态扩容(当然也可以动态减小)
# 新建一个5G大小的新分区 /dev/sda3 后查看 sda 硬盘的现有分区情况
[root@localhost gitlab_rpms]# fdisk -l /dev/sda*
Disk /dev/sda: 42.9 GB, 42949672960 bytes, 83886080 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: 0x000d5723
Device Boot Start End Blocks Id System
/dev/sda1 * 2048 1026047 512000 83 Linux
/dev/sda2 1026048 38780927 18877440 8e Linux LVM
/dev/sda3 38780928 49266687 5242880 8e Linux LVM
Disk /dev/sda1: 524 MB, 524288000 bytes, 1024000 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/sda2: 19.3 GB, 19330498560 bytes, 37754880 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
# 但是查看 sda 硬盘的实际生成的分区情况时发现刚刚创建的 /dev/sda3 并未创建
[root@localhost gitlab_rpms]# ll /dev/sda*
brw-rw----. 1 root disk 8, 0 Dec 16 16:45 /dev/sda
brw-rw----. 1 root disk 8, 1 Dec 16 16:45 /dev/sda1
brw-rw----. 1 root disk 8, 2 Dec 16 16:45 /dev/sda2
# partprobe 命令重读分区表即可显示新建分区。
# 当出现删除文件后出现仍然占用空间,或新建分区看不到新建分区时可以使用 partprobe 命令在不重启的情况下重读分区
[root@localhost gitlab_rpms]# partprobe
[root@localhost gitlab_rpms]# ll /dev/sda*
brw-rw----. 1 root disk 8, 0 Dec 16 16:52 /dev/sda
brw-rw----. 1 root disk 8, 1 Dec 16 16:52 /dev/sda1
brw-rw----. 1 root disk 8, 2 Dec 16 16:52 /dev/sda2
brw-rw----. 1 root disk 8, 3 Dec 16 16:52 /dev/sda3
[root@localhost gitlab_rpms]# fdisk -l /dev/sda3
Disk /dev/sda3: 5368 MB, 5368709120 bytes, 10485760 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
# 为新建分 /dev/sda3 分区创建同名的物理卷
[root@localhost gitlab_rpms]# pvcreate /dev/sda3
Physical volume "/dev/sda3" successfully created.
# 查看 sda 硬盘上的所有物理卷。
# /dev/sda2 和 /dev/sda3 都位于 cl 卷组,/dev/sda 和 /dev/sda1 并未创建物理卷所以无法查看
[root@localhost gitlab_rpms]# pvdisplay /dev/sda*
--- Physical volume ---
PV Name /dev/sda2
VG Name cl
PV Size 18.00 GiB / not usable 3.00 MiB
Allocatable yes (but full)
PE Size 4.00 MiB
Total PE 4608
Free PE 0
Allocated PE 4608
PV UUID p6IMSf-lHv6-ZifS-cd0h-R7V7-2wom-gW3u2R
"/dev/sda3" is a new physical volume of "5.00 GiB"
--- NEW Physical volume ---
PV Name /dev/sda3
VG Name
PV Size 5.00 GiB
Allocatable NO
PE Size 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID rU9a3K-LuKe-P1nK-GRrd-ETgq-5a1l-aSwMcy
Failed to find physical volume "/dev/sda".
Failed to find physical volume "/dev/sda1".
# 查看卷组 cl 的情况
[root@localhost gitlab_rpms]# vgdisplay cl
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 4
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 1
Act PV 1
VG Size 18.00 GiB
PE Size 4.00 MiB
Total PE 4608
Alloc PE / Size 4608 / 18.00 GiB
Free PE / Size 0 / 0
VG UUID w73gEP-ways-grKH-YtfK-0hee-uisC-DfW1Wz
# 将新建的物理卷 /dev/sda3 添加到卷组 cl 上
[root@localhost gitlab_rpms]# vgextend cl /dev/sda3
Volume group "cl" successfully extended
# 再次查看卷组 cl 的情况,发现其大小已经由之前的 18G 增加到 23G,正是物理卷(即新建分区)/dev/sda3 的大小
[root@localhost gitlab_rpms]# vgdisplay cl
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 23.00 GiB
PE Size 4.00 MiB
Total PE 5887
Alloc PE / Size 4608 / 18.00 GiB
Free PE / Size 1279 / 5.00 GiB
VG UUID w73gEP-ways-grKH-YtfK-0hee-uisC-DfW1Wz
# 使用 df 命令查看逻辑卷 /dev/mapper/cl-root 的大小
[root@localhost gitlab_rpms]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 9.8G 7.7G 1.6G 84% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 84K 1.9G 1% /dev/shm
tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 477M 142M 307M 32% /boot
/dev/mapper/cl-home 5.8G 1.3G 4.3G 23% /home
tmpfs 378M 0 378M 0% /run/user/1002
tmpfs 378M 16K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
# 使用 lvdisplay 命令查看逻辑卷 /dev/cl/root 的大小
[root@localhost gitlab_rpms]# lvdisplay /dev/cl/root
--- Logical volume ---
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID fuabl5-TPRQ-Y3i5-QCM3-F6vG-9cfC-yUuvp9
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-05-04 06:32:32 +0800
LV Status available
# open 1
LV Size 10.00 GiB
Current LE 2560
Segments 1
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
# 使用 vgdisplay 命令查看扩容后的 cl 卷组,发现有 5G 空闲空间
[root@localhost gitlab_rpms]# vgdisplay cl
--- Volume group ---
VG Name cl
System ID
Format lvm2
Metadata Areas 2
Metadata Sequence No 5
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 3
Open LV 3
Max PV 0
Cur PV 2
Act PV 2
VG Size 23.00 GiB
PE Size 4.00 MiB
Total PE 5887
Alloc PE / Size 4608 / 18.00 GiB
Free PE / Size 1279 / 5.00 GiB
VG UUID w73gEP-ways-grKH-YtfK-0hee-uisC-DfW1Wz
# 使用 lvextend 命令来扩容 /dev/cl/root 逻辑卷(1279 就是 5 G 空间的 PE 数量)
[root@localhost gitlab_rpms]# lvextend -l +1279 /dev/cl/root
Size of logical volume cl/root changed from 10.00 GiB (2560 extents) to 15.00 GiB (3839 extents).
Logical volume cl/root successfully resized.
# 使用 lvdisplay 命令查看逻辑卷 /dev/cl/root 的大小已经改变
[root@localhost gitlab_rpms]# lvdisplay /dev/cl/root
--- Logical volume ---
LV Path /dev/cl/root
LV Name root
VG Name cl
LV UUID fuabl5-TPRQ-Y3i5-QCM3-F6vG-9cfC-yUuvp9
LV Write Access read/write
LV Creation host, time localhost.localdomain, 2018-05-04 06:32:32 +0800
LV Status available
# open 1
LV Size 15.00 GiB
Current LE 3839
Segments 2
Allocation inherit
Read ahead sectors auto
- currently set to 8192
Block device 253:0
# 但使用 df 命令查看逻辑卷 /dev/mapper/cl-root 的大小仍为改变
[root@localhost gitlab_rpms]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 9.8G 7.7G 1.6G 84% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 84K 1.9G 1% /dev/shm
tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 477M 142M 307M 32% /boot
/dev/mapper/cl-home 5.8G 1.3G 4.3G 23% /home
tmpfs 378M 0 378M 0% /run/user/1002
tmpfs 378M 16K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
# 使用 resize2fs 命令来增大或者收缩文件系统的大小
[root@localhost gitlab_rpms]# resize2fs /dev/cl/root
resize2fs 1.42.9 (28-Dec-2013)
Filesystem at /dev/cl/root is mounted on /; on-line resizing required
old_desc_blocks = 2, new_desc_blocks = 2
The filesystem on /dev/cl/root is now 3931136 blocks long.
# 再次使用 df 命令查看逻辑卷 /dev/mapper/cl-root 的大小已经改变
[root@localhost gitlab_rpms]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/cl-root 15G 7.7G 6.3G 56% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 84K 1.9G 1% /dev/shm
tmpfs 1.9G 9.1M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 477M 142M 307M 32% /boot
/dev/mapper/cl-home 5.8G 1.3G 4.3G 23% /home
tmpfs 378M 0 378M 0% /run/user/1002
tmpfs 378M 16K 378M 1% /run/user/42
tmpfs 378M 0 378M 0% /run/user/0
[root@localhost gitlab_rpms]#
关于 LVM 的更详细用法可以参考:
网友评论