linux磁盘分区与管理详解
linux磁盘分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种,基本分区和扩充分区的数目之和不能大于四个。且基本分区可以马上被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。在 Linux 中,每一个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux把各种 IDE 设备分配了一个由 hd 前缀组成的文件;而对于各种 SCSI 设备,则分配了一个由 sd 前缀组成的文件。
分区简介
磁盘分区表
磁盘分区
嵌入式分区
Linux分区简介
Linux的分区没有像Windows一样有什么C、D、E、F盘了。Linux中是文件目录挂载点的概念,简单点说就是按文件夹分区,比如我设置/home文件夹就是一个挂载点,占了10个G的空间,那就可以理解有一个10G大小的/home分区。而且Linux可以有未分配空间保留,那我们这些新手当然要留出一些空间留给以后的练习了。
下面简单给大家介绍一下常见挂载点:
一般来说,在linux系统中都有最少两个挂载点,分别是/(根目录)及 swap(交换分区),其中,/ 是必须的;
建议挂载的几大目录:
/——-根目录,唯一必须挂载的目录。不要有任何的犹豫,选一个分区,挂载它!(在绝大多数情况下 有2G的容量应该是够用了。当然了,很多东西都是多多益善的)
swap—-交换分区,可能不是必须的,不过按照传统,并且照顾到您的安全感,还是挂载它吧。它的容量 只要约等于您的物理内存就可以了,如果超过了您物理内存两倍的容量,那绝对是一种浪费。
/home—这是您的家目录,通常您自己创建的文件,都保存在这里,您最好给它分配一个分区
/usr—-应用程序目录。大部分的软件都安装在这里,如果您计划安装许多软件,建议也给它分配一个分区
/var—-如果您要作一些服务器方面的应用,可以考虑给它分配一个较大的分区
/boot—如果您的硬盘不支持LBA模式(不太可能),您最好挂载它,如果挂载,将它挂载在硬盘的第一个 分区,应该比较稳妥。一般来说,挂载的分区只要100M大小就足够了。
关于挂载点情况(加粗为常用几种)
目录 内容
/ 根目录,存放系统命令和用户数据等(如果下面挂载点没有单独的分区,它们都将在根目录的分区中)
/boot boot loader 的静态链接文件,存放与Linux启动相关的程序
/home 用户目录,存放普通用户的数据
/tmp 临时文件
/usr 是Red Hat Linux系统存放软件的地方,如有可能应将最大空间分给它
/usr/local 自已安装程序安装在此
/var 不断变化的数据,服务器的一些服务放在下面。
/opt 附加的应用程序软件包
/bin 基本命令执行文件
/dev 设备文件
/etc 主机特定的系统配置
/lib 基本共享库以及内核模块
/media 用于移动介质的挂载点
/mnt 用于临时挂载文件系统或者别的硬件设备(如光驱、软驱)
/proc 系统信息的虚拟目录(2.4 和 2.6 内核),这些信息是在内存中,由系统自己产生的。
/root root 用户的目录
/sbin 基本系统命令执行文件
/sys 系统信息的虚拟目录(2.6 内核)
/srv 系统提供的用于 service 的数据
/usr/X1186 X-Windows目录,存放一些X-Windows的配置文件
/usr/include 系统头文件,存储一些C语言的头文件
/usr/src Linux内核源代码,Linux系统所安装的内核源代码都保存在此
/usr/bin 对/bin目录的一些补充
/usr/sbin 对/sbin目录的一些补充
/lost+found 这个目录在大多数情况下都是空的。但是如果你正在工作突然停电,或是没有用正常方式关机,在你重新启动机器的时候,有些文件就会找不到应该存放的地方,对于这些文件,系统将他们放在这个目录下,就象为无家可归的人提供一个临时住所。
/boot: 必须总是物理地包含 /etc、/bin、/sbin、/lib 和 /dev,否则您将不能启动系统。典型的根分区需要 150–250MB 大小空间。
/home: 每个用户将放置他的私有数据到这个目录的子目录下。其大小取决于将有多少用户使用系统,以及有什么样文件放在他们的目录下。根据规划的用途,应该为每个用户准备
100MB 空间,不过应该按您的需求调整。假如您在 home 目录下计划保存大量的多媒体文件(图片、MP3、电影),该预备更多的空间。
/tmp: 程序创建的临时数据大都存到这个目录。通常 40–100 MB 应该足够。一些应用程序 — 包括归档处理程序、D/DVD
制作工具和多媒体软件 — 可能会使用 /tmp 临时保存映像文件。如果要使用这些程序,应该相应地调整 /tmp
目录的大小。这对于多用户系统或者网络服务器来说是有必要的。这样即使程序运行时生成大量的临时文件,或者用户对系统进行了错误的操作,文件系统的其它部分仍然是安全的。因为文件系统的这一部分仍然还承受着读写操作,所以它通常会比其它的部分更快地发生问题。
/usr: 包含所有的用户程序(/usr/bin),库文件(/usr/lib),文档(/usr/share/doc),等等。这是文件系统中耗费空间最多的部分。您需要提供至少
500MB 磁盘空间。总容量会依据您要安装的软件包数量和类型增长。宽松的工作站或服务器安装应该需要 4–6GB。
/var: 所有的可变数据,如新闻组文章、电子邮件、网站、数据库、软件包系统的缓存等等,将被放入这个目录。这个目录的大小取决于您计算机的用途,但是对大多数人来说,将主要用于软件包系统的管理工具。如果做服务器的话空间应尽量大。我的服务器的实际分法及实际使用的大小,还没有实际投入使用。所以/var目录没有用那么多。一般WEB存放网页的目录是/var/www,postfix邮件的存放邮件的目录是:/var/mail,var/log,是系统日志记录分区,
/var/spool:存放一些邮件、新闻、打印队列等。
/opt: 存放可选的安装的软件。
上面介绍了几个挂载点,一般来说我们最少需要两个分区(当然只要一个分区也可以),需要一个SWAP分区,和一个“/”分区,但把一些常用、重要的挂载点分到其它分区,这样便于管理。一般一个/分区,一个/usr分区,一个/home
分区,一个/var/log分区。当然这没有什么规定,完全是依照需要来定的。我们可以使用Red Hat Linux提供的硬盘管理工具Disk
Druid来完成分区和挂载点设置。
服务器分区的方案:
分区类型 分区的实际大小
/ 1G-2G (最少要150–250MB)
/boot 32M-100M (启动分区,最多只要100M左右)
/opt 100M-1G (附加应用程序)
/tmp 40M-1000M (最大可以设为1G左右,如果加载ISO镜像文件就设为4G左右吧,一般不用那么多)
/home 2G-10G (每个用户100M左右,具体自定。用户目录。)
/usr 3G-10G (最耗用空间的部份。最少要500M左右,一般宽松的服务器要分到4-6G)
/usr/local 3G-15G (自已安装程序安装在此)
/var >2G–硬盘余下全部空间 ( 最少300M-500M,一般2-3G,做服务器的话把上面余下的空间都分给它)
SWAP分区 2G(内存为1G)
分区的管理
上面我们已经知道了分区最重要的就是挂载点的选择与管理。因为我们经常会遇到文件的增大,导致存储空间不足,这就需要增加磁盘来扩大存储空间。
由于传统的磁盘管理不能对磁盘进行磁盘管理,因此诞生了LVM技术,LVM技术最大的特点就是对磁盘进行动态管理。
由于LVM的逻辑卷的大小更改可以进行动态调整,且不会出现丢失数据的情况。
LVM基本介绍
- 物理存储介质(The physical media)
- 这里指系统的存储设备:硬盘,如:/dev/hda、/dev/sda等等,是存储系统最低层的存储单元。
- 物理卷(physicalvolume)
- 物理卷就是指硬盘分区或从逻辑上与磁盘分区具有同样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数。
- 卷组(Volume Group)
- LVM卷组类似于非LVM系统中的物理硬盘,其由物理卷组成。可以在卷组上创建一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。
- 逻辑卷(logicalvolume)
- LVM的逻辑卷类似于非LVM系统中的硬盘分区,在逻辑卷之上可以建立文件系统(比如/home或者/usr等)。
- PV(physical volume,PV)
- 物理卷,它的文件格式不是ext4这些,而是具有LVM管理功能的LVM格式
- VG(Volume Group,VG)
- 卷组,卷组是在PV物理卷的基础上创建的,卷组是由一个或多个物理卷组成的,卷组可以在物理卷PV的基础上扩展和缩小。
- LV(logical volume,LV)
- 逻辑卷,在VG的基础上创建,可以进行格式化、可以创建文件系统、可以被挂载。对于用户相当于一个磁盘分区,不过实际上是在VG上逻辑出来的,可以在VG的基础上实现扩展和缩小,扩展的边界是不能超过VG的。
- PE(Physical Extents)
- 物理块、PE相当于block块,默认是4M,一个物理卷PV被划分为称为PE(Physical Extents)的基本单元,VG是由这些PE块组成,也是VG可以自由扩展和缩小的关键原因。
- LE(Logical Extent)
- 逻辑卷LV也被划分为可被寻址的基本单位,称为LE。在同一个卷组中,LE的大小和PE是相同的,并且一一对应
分类 | 命令 | 说明 | 示例 |
---|---|---|---|
PV | pvcreate | 创建物理卷 | pvcreate /dev/sdb1 |
PV | pvdisplay | 显示已创建的物理卷的详细信息 | |
PV | pvs | 显示已创建的物理卷的汇总信息 | |
PV | pvremove | 删除物理卷 | pvremove /dev/sdb1 |
VG | vgcreate | 创建卷组 | pvcreate vg1 /dev/sdb1 /dev/sdb2 … |
VG | vgdisplay | 显示已创建的卷组的详细信息 | |
VG | vgs | 显示已创建的卷组的汇总信息 | |
VG | vgextend | 扩展卷组 | vgextend vg1 /dev/sdb3 … |
VG | vgreduce | 收缩卷组 | vgreduce vg1 /dev/sdb5 |
VG | vgremove | 删除卷组 | vgremove vg1 |
LV | lvcreate | 创建逻辑卷 | lvcreate -L 1000M -n lv1 vg1 |
LV | lvdisplay | 显示已创建的逻辑卷的详细信息 | |
LV | lvs | 显示已创建的逻辑卷的汇总信息 | |
LV | lvresize | 重设逻辑卷大小 | lvresize -L 1000M /dev/vg1/lv1 |
LV | resize2fs | 更新逻辑卷信息(ext4) | resize2fs /dev/vg1/lv1 |
LV | lvremove | 删除逻辑卷 | lvremove /dev/vg1/lv1 |
LV | xfs_growfs | 更新逻辑卷信息(xfs) | xfs_growfs /dev/vg1/lv1 |
LV |
e2fsck | 检查逻辑卷错误(ext4) |
e2fsck -f /dev/vg1/lv1 |
lvm逻辑卷组的管理
建立逻辑卷组的命令参数
pvcreate指令:创建物理卷
【语 法】pvcreate [选项] [参数]
【功能介绍】pvcreate指令用于将物理硬盘分区初始化为物理卷,以便被LVM使用。
主要参数
-f 强制创建物理卷,不需要用户确认 -u 指定设备的UUID -y 所有的问题都回答“yes” -Z 是否利用前4个扇区
pvcreate
vgcreate指令:创建卷组
【语 法】vgcreate [选项] [参数]
【功能介绍】vgcreate指令用于创建LVM卷组。
主要参数
-l 卷组上允许创建的最大逻辑卷数 -p 卷组中允许添加的最大物理卷数 -s 卷组上的物理卷的PE大小
vgcreate
lvcreate指令:创建逻辑卷
【语 法】lvcreate [选项] [参数]
【功能介绍】lvcreate指令用于创建LVM的逻辑卷。
主要参数
-L 指定逻辑卷的大小,单位为“kKmMgGtT”字节 -l 指定逻辑卷的大小(LE数) -n 后面跟逻辑卷名 -s 创建快照
lvcreate
磁盘信息
[root@www ~]# fdisk -l Disk /dev/hda: 41.1 GB, 41174138880 bytes 255 heads, 63 sectors/track, 5005 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 13 104391 83 Linux /dev/hda2 14 1288 10241437+ 83 Linux /dev/hda3 1289 1925 5116702+ 83 Linux /dev/hda4 1926 5005 24740100 5 Extended /dev/hda5 1926 2052 1020096 82 Linux swap / Solaris /dev/hda6 2053 2235 1469916 8e Linux LVM /dev/hda7 2236 2418 1469916 8e Linux LVM /dev/hda8 2419 2601 1469916 8e Linux LVM /dev/hda9 2602 2784 1469916 8e Linux LVM
创建pv物理卷的一些操作命令
[root@www ~]# pvscan # 1. 检查有无 PV 在系統上,然后将 /dev/hda6~/dev/hda9 建立成为PV格式 No matching physical volumes found #找不到任何的 PV 存在! [root@www ~]# pvcreate /dev/hda{6,7,8,9} # 将6-9分区转成pv,注意大括號的用途 Physical volume "/dev/hda6" successfully created Physical volume "/dev/hda7" successfully created Physical volume "/dev/hda8" successfully created Physical volume "/dev/hda9" successfully created [root@www ~]# pvscan #这就分別表示每个 PV 的资讯与系统所有 PV 的资讯。 PV /dev/hda6 lvm2 [1.40 GB] PV /dev/hda7 lvm2 [1.40 GB] PV /dev/hda8 lvm2 [1.40 GB] PV /dev/hda9 lvm2 [1.40 GB] Total: 4 [5.61 GB] / in use: 0 [0 ] / in no VG: 4 [5.61 GB] [root@www ~]# pvdisplay #更详细的列示出系统上面每个 PV 资讯 "/dev/hda6" is a new physical volume of "1.40 GB" --- NEW Physical volume --- PV Name /dev/hda6 #实际的 partition 分区名称 VG Name #因为尚未分配出去,所以空白! PV Size 1.40 GB #就是容量说明 Allocatable NO #是否已被分配,结果是 NO PE Size (KByte) 0 #在此 PV 內的 PE 大小 Total PE 0 #共分割出几个 PE Free PE 0 #沒被 LV 用掉的 PE Allocated PE 0 #尚可分配出去的 PE 数量 PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN ....(底下省略)....
[root@www ~]# pvremove /dev/sdb2 #删除物理卷 Labels on physical volume "/dev/sdb2" successfully wiped
修改物理卷属性
[root@www ~]# pvchange -x n /dev/sdb1 #禁止分配指定物理卷上的PE Physical volume "/dev/sdb1" changed 1 physical volume changed / 0 physical volumes not changed
将一个或多个物理卷PV转变为一个卷组VG
[root@www ~]# pvscan #这就分別表示每个 PV 的资讯与系统所有 PV 的资讯。 PV /dev/hda6 lvm2 [1.40 GB] PV /dev/hda7 lvm2 [1.40 GB] PV /dev/hda8 lvm2 [1.40 GB] PV /dev/hda9 lvm2 [1.40 GB] Total: 4 [5.61 GB] / in use: 0 [0 ] / in no VG: 4 [5.61 GB] [root@www ~]# vgcreate -s 16M vbirdvg /dev/hda{6,7,8} #将/dev/hda6-8 建立成为一个 VG,且指定 PE 为 16MB Volume group "vbirdvg" successfully created [root@www ~]# vgscan #确定存在这个 vbirdvg 的 VG Reading all physical volumes. This may take a while... Found volume group "vbirdvg" using metadata type lvm2 [root@www ~]# pvscan #有三个 PV 被用去,剩下一個 /dev/hda9 的 PV 沒被用掉! PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda9 lvm2 [1.40 GB] Total: 4 [5.57 GB] / in use: 3 [4.17 GB] / in no VG: 1 [1.40 GB] [root@www ~]# vgdisplay # 最后那三行指的就是 PE 能够使用的情況!由于尚未切出 LV,因此所有的 PE均可自由使用。 --- Volume group --- VG Name vbirdvg 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.17 GB #整个 VG 容量就这么大 PE Size 16.00 MB #內部每个 PE 的大小 Total PE 267 #总共的 PE 数量! Alloc PE / Size 0 / 0 Free PE / Size 267 / 4.17 GB VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO [root@www ~]# vgextend vbirdvg /dev/hda9 #将剩余的 PV (/dev/hda9) 分配给 vbirdvg Volume group "vbirdvg" successfully extended [root@www ~]# vgdisplay ....(前面省略).... VG Size 5.56 GB PE Size 16.00 MB Total PE 356 Alloc PE / Size 0 / 0 Free PE / Size 356 / 5.56 GB VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO 设置属性的卷组 [root@www ~]# vgchange -ay vg1000 #将卷组"vg1000"设置为活动状态 logical volume(s) in volume group "vg1000" now active 删除逻辑卷组 [root@www ~]# vgremove vg1000 #删除卷组"vg1000" Volume group "vg1000" successfully removed [root@www ~]# vgreduce vg2000 /dev/sdb2 #将物理卷"/dev/sdb2"从卷组"vg2000"中删除 removed "/dev/sdb2" from volume group "vg2000"
从VG中创建逻辑卷
[root@www ~]# pvscan #有三个 PV 被用去,剩下一个 /dev/hda9 的 PV 沒被用掉! PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 1.39 GB free] PV /dev/hda9 lvm2 [1.40 GB] Total: 4 [5.57 GB] / in use: 3 [4.17 GB] / in no VG: 1 [1.40 GB] [root@www ~]# vgdisplay # 最后那三行指的就是 PE 能够使用的情況!由于尚未切出 LV,因此所有的 PE均可自由使用。 --- Volume group --- VG Name vbirdvg 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.17 GB #整个 VG 容量就这么大 PE Size 16.00 MB #內部每个 PE 的大小 Total PE 267 #总共的 PE 数量! Alloc PE / Size 0 / 0 Free PE / Size 267 / 4.17 GB VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO [root@www ~]# lvcreate -l 356 -n vbirdlv vbirdvg #将整个 vbirdvg 通通分配給 vbirdlv 啊,要注意, PE 共有 356 个 Logical volume "vbirdlv" created [root@www ~]# ll /dev/vbirdvg/vbirdlv lrwxrwxrwx 1 root root 27 Mar 11 16:49 /dev/vbirdvg/vbirdlv -> /dev/mapper/vbirdvg-vbirdlv # 看见了沒有啊!这就是我们最重要的一步 [root@www ~]# lvdisplay --- Logical volume --- LV Name /dev/vbirdvg/vbirdlv #LV逻辑卷的名字 VG Name vbirdvg LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0 LV Write Access read/write LV Status available # open 0 LV Size 5.56 GB #LV的大小 Current LE 356 Segments 4 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0
格式化逻辑卷,并且挂载
[root@www ~]# mkfs -t ext3 /dev/vbirdvg/vbirdlv #格式化 格式有ext2.ext3,ext4,xfs等文件系统,按需格式化 [root@www ~]# mkdir /mnt/lvm [root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm #挂载目录 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 9920624 3858984 5549572 42% / /dev/hda3 4956316 1056996 3643488 23% /home /dev/hda1 101086 21408 74459 23% /boot tmpfs 371332 0 371332 0% /dev/shm /dev/mapper/vbirdvg-vbirdlv 5741020 142592 5306796 3% /mnt/lvm
[root@www ~]#vi /etc/fstab# 查看逻辑卷的UUID:最后一行就是逻辑卷的信息,把该行的UUID复制出来,不含引号。
命令:blkid
例:/dev/mapper/vbirdvg-vbirdlv: UUID="11262806-d796-4f49-8f08-897181e8ec33"
# 编辑fstab: 在最后添加一行,输入如下内容:
# 然后保存退出(:wq),重启后查看结果,如果能正常挂载就没有问题了。
UUID=11262806-d796-4f49-8f08-897181e8ec33 /mnt/lvm ext3 defaults 0 0
增加 LV 容量
[root@www ~]# fdisk -l Device Boot Start End Blocks Id System ....(中间省略).... /dev/hda10 2785 3150 2939863+ 8e Linux LVM #增加一下lvm /dev/hda10 [root@www ~]# pvcreate /dev/hda10 建立新的 PV Physical volume "/dev/hda10" successfully created [root@www ~]# pvscan #查看PG物理卷 PV /dev/hda6 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda9 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda10 lvm2 [2.80 GB] # 可以看到 /dev/hda10 是新加入,尚未使用 Total: 5 [8.37 GB] / in use: 4 [5.56 GB] / in no VG: 1 [2.80 GB] [root@www ~]# vgextend vbirdvg /dev/hda10 #加大 VG ,利用 vgextend 功能 Volume group "vbirdvg" successfully extended [root@www ~]# vgdisplay #查看VG逻辑卷组 --- Volume group --- VG Name vbirdvg System ID Format lvm2 Metadata Areas 5 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur LV 1 Open LV 1 Max PV 0 Cur PV 5 Act PV 5 VG Size 8.36 GB PE Size 16.00 MB Total PE 535 Alloc PE / Size 356 / 5.56 GB Free PE / Size 179 / 2.80 GB VG UUID 4VU5Jr-gwOq-jkga-sUPx-vWPu-PmYm-dZH9EO [root@www ~]# lvresize -l +179 /dev/vbirdvg/vbirdlv #利用 lvresize 的功能來增加LV Extending logical volume vbirdlv to 8.36 GB Logical volume vbirdlv successfully resized [root@www ~]# lvdisplay #显示LV逻辑卷 --- Logical volume --- LV Name /dev/vbirdvg/vbirdlv VG Name vbirdvg LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0 LV Write Access read/write LV Status available # open 1 LV Size 8.36 GB Current LE 535 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 [root@www ~]# df /mnt/lvm #查看大小 Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vbirdvg-vbirdlv 5741020 261212 5188176 5% /mnt/lvm [root@www ~]# resize2fs /dev/vbirdvg/vbirdlv #LV分区重设大小 resize2fs 1.39 (29-May-2006) Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-line resizing Performing an on-line resize of /dev/vbirdvg/vbirdlv to 2191360 (4k) blocks. The filesystem on /dev/vbirdvg/vbirdlv is now 2191360 blocks long.
减小 LV 容量
[root@www ~]# umount /mnt/lvm #取消挂载 [root@www ~]# e2fsck -f /dev/vbirdvg/vbirdlv #磁盘检测 e2fsck 1.39 (29-May-2006) Pass 1: Checking inodes, blocks, and sizes Pass 2: Checking directory structure Pass 3: Checking directory connectivity Pass 4: Checking reference counts Pass 5: Checking group summary information /dev/vbirdvg/vbirdlv: 2438/1087008 files (0.1% non-contiguous), [root@www ~]# resize2fs /dev/vbirdvg/vbirdlv 6900M #重设大小 resize2fs 1.39 (29-May-2006) Resizing the filesystem on /dev/vbirdvg/vbirdlv to 1766400 (4k) blocks. The filesystem on /dev/vbirdvg/vbirdlv is now 1766400 blocks long. [root@www ~]# mount /dev/vbirdvg/vbirdlv /mnt/lvm #挂载LVM [root@www ~]# df /mnt/lvm Filesystem 1K-blocks Used Available Use% Mounted on /dev/mapper/vbirdvg-vbirdlv 6955584 262632 6410328 4% /mnt/lvm [root@www ~]# lvresize -l -89 /dev/vbirdvg/vbirdlv #降低 LV 的容量 WARNING: Reducing active and open logical volume to 6.97 GB THIS MAY DESTROY YOUR DATA (filesystem etc.) Do you really want to reduce vbirdlv? [y/n]: y Reducing logical volume vbirdlv to 6.97 GB Logical volume vbirdlv successfully resized [root@www ~]# lvdisplay #查看lv逻辑卷信息 --- Logical volume --- LV Name /dev/vbirdvg/vbirdlv VG Name vbirdvg LV UUID 8vFOPG-Jrw0-Runh-ug24-t2j7-i3nA-rPEyq0 LV Write Access read/write LV Status available # open 1 LV Size 6.97 GB Current LE 446 Segments 5 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:0 [root@www ~]# pvdisplay #先确认 /dev/hda6 是否將 PE 都移除了 --- Physical volume --- PV Name /dev/hda6 VG Name vbirdvg PV Size 1.40 GB / not usable 11.46 MB Allocatable yes (but full) PE Size (KByte) 16384 Total PE 89 Free PE 0 Allocated PE 89 PV UUID Z13Jk5-RCls-UJ8B-HzDa-Gesn-atku-rf2biN ....(中間省略).... --- Physical volume --- PV Name /dev/hda10 VG Name vbirdvg PV Size 2.80 GB / not usable 6.96 MB Allocatable yes PE Size (KByte) 16384 Total PE 179 Free PE 89 Allocated PE 90 PV UUID 7MfcG7-y9or-0Jmb-H7RO-5Pa5-D3qB-G426Vq [root@www ~]# pvmove /dev/hda6 /dev/hda10 #將 /dev/hda6 內的 PE 移动到 /dev/hda10 [root@www ~]# vgreduce vbirdvg /dev/hda6 #將 /dev/hda6从vbirdvg 移出 Removed "/dev/hda6" from volume group "vbirdvg" [root@www ~]# pvscan PV /dev/hda7 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda8 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda9 VG vbirdvg lvm2 [1.39 GB / 0 free] PV /dev/hda10 VG vbirdvg lvm2 [2.80 GB / 0 free] PV /dev/hda6 lvm2 [1.40 GB] Total: 5 [8.37 GB] / in use: 4 [6.97 GB] / in no VG: 1 [1.40 GB] [root@www ~]# pvremove /dev/hda6 #移出物理卷hda6 Labels on physical volume "/dev/hda6" successfully wiped
快照区的建立
[root@www ~]# vgdisplay #查看VG容量 --- Volume group --- VG Name vbirdvg ....(其他省略).... VG Size 6.97 GB PE Size 16.00 MB Total PE 446 Alloc PE / Size 446 / 6.97 GB Free PE / Size 0 / 0 [root@www ~]# pvcreate /dev/hda6 #创建PV物理卷 Physical volume "/dev/hda6" successfully created [root@www ~]# vgextend vbirdvg /dev/hda6 #将刚刚移除的 /dev/hda6 加入這個 VG Volume group "vbirdvg" successfully extended [root@www ~]# vgdisplay #查看VG --- Volume group --- VG Name vbirdvg ....(其他省略).... VG Size 8.36 GB PE Size 16.00 MB Total PE 535 Alloc PE / Size 446 / 6.97 GB Free PE / Size 89 / 1.39 GB #多出了 89 个 可用PE [root@www ~]# lvcreate -l 60 -s -n vbirdss /dev/vbirdvg/vbirdlv #利用 lvcreate 建立系统快照区,命名为vbirdss,且经于 60 个 PE Logical volume "vbirdss" created [root@www ~]# lvdisplay --- Logical volume --- LV Name /dev/vbirdvg/vbirdss VG Name vbirdvg LV UUID K2tJ5E-e9mI-89Gw-hKFd-4tRU-tRKF-oeB03a LV Write Access read/write LV snapshot status active destination for /dev/vbirdvg/vbirdlv LV Status available # open 0 LV Size 6.97 GB #原LV的大小 Current LE 446 COW-table size 960.00 MB #新建快照区的实际大小 COW-table LE 60 #快照区占有的PE Allocated to snapshot 0.00% Snapshot chunk size 4.00 KB Segments 1 Allocation inherit Read ahead sectors auto - currently set to 256 Block device 253:1 [root@www ~]# mkdir /mnt/snapshot [root@www ~]# mount /dev/vbirdvg/vbirdss /mnt/snapshot [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /dev/hda2 9920624 3859032 5549524 42% / /dev/hda3 4956316 1056996 3643488 23% /home /dev/hda1 101086 21408 74459 23% /boot tmpfs 371332 0 371332 0% /dev/shm /dev/mapper/vbirdvg-vbirdlv 6955584 262632 6410328 4% /mnt/lvm #二个一样 /dev/mapper/vbirdvg-vbirdss 6955584 262632 6410328 4% /mnt/snapshot #二个一样
如果想要删除物理卷,只需把操作倒过来操作一遍就好。
删除挂在记录->删除逻辑卷->删除卷组->删除物理卷
Linux 磁盘管理进阶
磁盘的管理自然少不了磁盘工具的使用,window下的分区软件大家应该都知道,那linux系统下分区工具都有哪些呢?
我这里就介绍几种在生产操作过程中用的工具,分别是fdisk、parted、gdisk。注:fidsk只能对2T以内的硬盘进行分区管理,2T以上的我们选择parted ,gdisk这两个工具,gdisk系统默认是没有安装的,我们需要可以直接安装它yum install gdisk -y。
fdisk 命令使用
-v 打印 fdisk 的版本信息并退出. -l 列出指定设备的分区表信息并退出。 如果没有给出设备,那么使用那些在 /proc/partitions (如果存在)提到的. -u 以扇区数而不是以柱面数的形式显示分区表中各分区的信息. -s 分区 将分区的 大小 (单位为块)信息输出到标准输出
fdisk参数
查看所有分区 [root@localhost ~]# fdisk -l Disk /dev/sda: 500.1 GB, 500107862016 bytes 255 heads, 63 sectors/track, 60801 cylinders Units = cylinders of 16065 * 512 = 8225280 bytes Device Boot Start End Blocks Id System /dev/sda1 * 1 17 136552 83 Linux /dev/sda2 18 279 2104515 82 Linux swap / Solaris /dev/sda3 280 60801 486142965 5 Extended /dev/sda5 280 60801 486142964+ 83 Linux
fdisk分区
[root@localhost ~]# fdisk /dev/sda #分区时,不要加上数字 The number of cylinders for this disk is set to 5005. There is nothing wrong with that, but this is larger than 1024, and could in certain setups cause problems with: 1) software that runs at boot time (e.g., old versions of LILO) 2) booting and partitioning software from other OSs (e.g., DOS FDISK, OS/2 FDISK) Command (m for help): m #可以查看帮助 Command action a toggle a bootable flag #设定硬盘启动区 b edit bsd disklabel c toggle the dos compatibility flag d delete a partition #删除分区 l list known partition types #列举已知分区 m print this menu n add a new partition #增加分区 o create a new empty DOS partition table p print the partition table #显示分区表 q quit without saving changes #不保存退出分区 s create a new empty Sun disklabel 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): p Disk /dev/sda: 41.1 GB, 41174138880 bytes #磁盘名称和大小 255 heads, 63 sectors/track, 5005 cylinders #磁头、磁区与磁柱数量,多少 Units = cylinders of 16065 * 512 = 8225280 bytes #每个磁柱的大小 Device Boot Start End Blocks Id System /dev/sda1 * 1 13 104391 83 Linux /dev/sda2 14 1288 10241437+ 83 Linux /dev/sda3 1289 1925 5116702+ 83 Linux /dev/sda4 1926 5005 24740100 5 Extended /dev/sda5 1926 2052 1020096 82 Linux swap / Solaris Command (m for help): q # q是不保存退出,w不要随便输入
Parted命令使用
用法:parted [选项]… [设备 [命令 [参数]…]…] T级别分区的命令。将带有“参数”的命令应用于“设备”。如果没有给出“命令”,则以交互模式运行。 选项: -h, –help 显示此求助信息 -i, –interactive 在必要时,提示用户 -s, –script 从不提示用户 -v, –version 显示版本
parted参数
命令: 检查 MINOR 对文件系统进行一个简单的检查 cp [FROM-DEVICE] FROM-MINOR TO-MINOR 将文件系统复制到另一个分区 help [COMMAND] 打印通用求助信息,或关于 COMMAND 的信息 mklabel 标签类型 创建新的磁盘标签 (分区表) mkfs MINOR 文件系统类型 在 MINOR 创建类型为“文件系统类型”的文件系统 mkpart 分区类型 [文件系统类型] 起始点 终止点 创建一个分区 mkpartfs 分区类型 文件系统类型 起始点 终止点 创建一个带有文件系统的分区 move MINOR 起始点 终止点 移动编号为 MINOR 的分区 name MINOR 名称 将编号为 MINOR 的分区命名为“名称” print [MINOR] 打印分区表,或者分区 quit 退出程序 rescue 起始点 终止点 挽救临近“起始点”、“终止点”的遗失的分区 resize MINOR 起始点 终止点 改变位于编号为 MINOR 的分区中文件系统的大小 rm MINOR 删除编号为 MINOR 的分区 select 设备 选择要编辑的设备 set MINOR 标志 状态 改变编号为 MINOR 的分区的标志
parted交互式分区
[root@localhost ~]# parted /dev/sdb GNU Parted 2.1 使用 /dev/sdb (parted) mklabel gpt #parted命令需要更改分区表标签类型,创建新的磁盘分区表gpt 警告: The existing disk label on /dev/sdb will be destroyed and all data on this disk will be lost. Do you want to continue? 是/Yes/否/No? yes (parted) (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 1074MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name 标志 (parted) mkpart primary 0 100 #创建主分区100M,不带任何大小符号默认为M级别。 警告: The resulting partition is not properly aligned for best performance. 忽略/Ignore/放弃/Cancel? Ignore (parted) p Model: VMware, VMware Virtual S (scsi) Disk /dev/sdb: 1074MB Sector size (logical/physical): 512B/512B Partition Table: gpt Number Start End Size File system Name 标志 1 17.4kB 100MB 100MB primary
parted非交互分区
parted –script /dev/sdb mklabel gpt
parted –script /dev/sdb mkpart primary 0 4800000
parted –script /dev/sdb mkpart primary 4800001 5800001
parted –script /dev/sdb mkpart primary 5800002 5804098
gdisk命令使用
(1).选项 -b <size> 指定扇区大小(512,1024,2048或4096 B) -c 关闭DOS兼容模式 -u <size> 以扇区编号取代柱面编号来表示每个分区的起始地址,一般与-l选项联合使用 -C <number> 指定柱面编号 -H <number> 指定磁头编号 -S <number> 指定磁道扇区编号
gdisk参数
gdisk命令跟fdisk命令差不多,所以我这里只贴出菜单选项
菜单操作说明: a 设置可引导标记(活动分区/引导分区之间切换) b 编辑BSD磁盘标签 c 设置DOS操作系统兼容标记(兼容/不兼容之间切换) d 删除一个分区 l 显示已知的分区类型,其中82为Linux swap分区,83为Linux分区 m 显示帮助信息 n 增加一个新的分区 o 创建一个新的空白的DOS分区表 p 显示磁盘当前的分区表 q 退出fdisk程序,不保存任何修改 s 创建一个新的空白的Sun磁盘标签 t 改变一个分区的系统ID,就是改变分区类型(比如把Linux Swap分区改为Linux分区) u 改变显示或输入单位 v 验证磁盘分区表 w 将分区表写入磁盘并退出(保存并退出) x 额外功能(专家级) 扩展 sda和hda的区别 sd代表的是SCSI,SATA接口硬盘 hd代表IDE接口的硬盘 sda和hda最后面的a都代表的是第一块硬盘 sda1和hda1则代表的是该硬盘的第一分区
其他分区命令
通知系统分区表的变化
命令:partprobe
参数:
- -d,—dry-run实际上不会通知操作系统打印内容摘要
- -h,—帮助显示此帮助并退出
- -v,—版本输出版本信息并退出
其他:
如果生成设备文件失败,可以使用如下命令再次生成
partx -a /dev/XXX
注:如果还是失败就请重启系统。
查看设备分区的UUID与类型
命令:blkid
命令:blkid 设备名称
Swap 分区创建命令
- Linux mkswap命令用于设置交换区(swap area)。
- mkswap可将磁盘分区或文件设为Linux的交换区。
语法:
mkswap [-cf][-v0][-v1][设备名称或文件][交换区大小]
参数:
- -c 建立交换区前,先检查是否有损坏的区块。
- -f 在SPARC电脑上建立交换区时,要加上此参数。
- -v0 建立旧式交换区,此为预设值。
- -v1 建立新式交换区。
- [交换区大小] 指定交换区的大小,单位为1024字节。
开启SWAP分区
Linux swapon命令用于激活Linux系统中交换空间,Linux系统的内存管理必须使用交换区来建立虚拟内存。
语法:
/sbin/swapon -a [-v]
/sbin/swapon [-v] [-p priority] specialfile ...
/sbin/swapon [-s]
参数:
- -h 请帮帮我
- -V 显示版本讯息
- -s 显示简短的装置讯息
- -a 自动启动所有SWAP装置
- -p 设定优先权,你可以在0到32767中间选一个数字给他。或是在 /etc/fstab 里面加上 pri=[value] ([value]就是0~32767中间一个数字),然后你就可以很方便的直接使用 swapon -a 来启动他们,而且有优先权设定
关闭SWAP分区
Linux swapoff命令用于关闭系统交换区(swap area)。
swapoff实际上为swapon的符号连接,可用来关闭系统的交换区。
语法:
swapoff [设备]
参数:
- -a 将/etc/fstab文件中所有设置为swap的设备关闭
- -h 帮助信息
- -V 版本信息
实例
1、显示分区信息
# sfdisk -l
Disk /dev/sda: 1305 cylinders, 255 heads, 63 sectors/track Units = cylinders of 8225280 bytes, blocks of 1024 bytes, counting from 0 Device Boot Start End #cyls #blocks Id System /dev/sda1 * 0+ 12 13- 104391 83 Linux /dev/sda2 13 1304 1292 10377990 8e Linux LVM /dev/sda3 0 - 0 0 0 Empty /dev/sda4 0 - 0 0 0 Empty Disk /dev/sdb: 652 cylinders, 255 heads, 63 sectors/track sfdisk: ERROR: sector 0 does not have an msdos signature /dev/sdb: unrecognized partition No partitions found
2、关闭交换分区。
# swapoff /dev/sda2
好了,分区管理整理就到这里哦!以后可能会补充,也欢迎其他作者补充!