Linux中磁盘分区分为MBR和GPT.node
MBR全称为Master Boot Record,为主引导记录,是传统的分区机制,应用于绝大多数使用的BIOS的PC设备。linux
- MBR分区的特色:
- MBR支持32位和64位的系统
- MBR支持分区数量有限
- MBR只支持不超过2T的硬盘,超过2T的硬盘将只能用2T空间
GPT(全称为GUID Partition Table)分区为全局惟一分区表,是一个较新的分区机制,解决了MBR不少缺点vim
- GPT分区的特色:
- 支持超过2T的磁盘(64位寻址)。Fdisk最大只能创建2TB大小的分区
- 向后兼容MBR
- 必须在支持UEFI的硬件上才能使用(Intel提出,用于取代BIOS)
- 必须使用64位系统
- Mac、Linux、Windows7/8 64bit、windows Server2008 64bits系统都能支持GPT分区格式
GPT磁盘分区是使用parted工具实现的:windows
- Parted用法个经常使用选项:
用法:parted [选项]… [设备 [ 命令 [参数]… ]… ]缓存
将带有参数的命令用于设备。若是没有出现命令,则以交互模式运行。bash
- 帮助选项:
- -h,--help 显示此帮助信息
- -l , --list 列出全部设备的分区信息
- -I , --interactive 在必要是,提示用户-s, --script 从不提示用户
- -v , --version 显示版本
- 操做命令:
- Minot # 对文件系统进行一个简单的检查
- cp [FROM-DEVICE] FROM-MINOR TO-MINOR #将文件系统复制到另外一个分区
- mklable 标签类型 #建立新的磁盘标签(分区表)
- 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 的分区的标志
要求:网络
boock
大小为2048,预留空间为20%,卷标为MYDATAapp
[root@localhost ~]# mkfs -t ext4 -b 2048 -m 20 -L MYDATA /dev/sdb1 mke2fs 1.42.9 (28-Dec-2013) Filesystem label=MYDATA OS type: Linux Block size=2048 (log=1) Fragment size=2048 (log=1) Stride=0 blocks, Stripe width=0 blocks 655360 inodes, 5242880 blocks 1048576 blocks (20.00%) reserved for the super user First data block=0 Maximum filesystem blocks=273678336 320 block groups 16384 blocks per group, 16384 fragments per group 2048 inodes per group Superblock backups stored on blocks: 16384, 49152, 81920, 114688, 147456, 409600, 442368, 802816, 1327104, 2048000, 3981312 Allocating group tables: done Writing inode tables: done Creating journal (32768 blocks): done Writing superblocks and filesystem accounting information: done
挂载到/mydat
目录,要求挂载时禁止程序自动运行,且不更新文件的访问时间dom
[root@localhost ~]# mkdir /mydata [root@localhost ~]# mount -o noatime,noexec /dev/sdb1 /mydata
可开机自动挂载ide
[root@localhost ~]# blkid /dev/sdb1 /dev/sdb1: LABEL="MYDATA" UUID="af467f45-8b5c-426f-9aa6-6327e0a4e064" TYPE="ext4" [root@localhost ~]# vim /etc/fstab UUID=af467f45-8b5c-426f-9aa6-6327e0a4e064 /mydata ext4 defaults 0 0 [root@localhost ~]# mount –a
建立 一个大小为1G的swap分区,并启用。
[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): n Partition type: p primary (1 primary, 0 extended, 3 free) e extended Select (default p): p Partition number (2-4, default 2): 2 First sector (20973568-41943039, default 20973568): Using default value 20973568 Last sector, +sectors or +size{K,M,G} (20973568-41943039, default 41943039): +1G Partition 2 of type Linux and of size 1 GiB is set Command (m for help): t Partition number (1,2, default 2): 2 Hex code (type L to list all codes): 82 Changed type of partition 'Linux' to 'Linux swap / Solaris' 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. [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: 0x3a339f3a Device Boot Start End Blocks Id System /dev/sdb1 2048 20973567 10485760 83 Linux /dev/sdb2 20973568 23070719 1048576 82 Linux swap / Solaris [root@localhost ~]# mkswap /dev/sdb2 [root@localhost ~]# swapon /dev/sdb3
编写脚本计算/etc/passwd
文件中第10个用户和第20个用户id之和。
#!/bin/bash id1=$(head -10 /etc/passwd |tail -1 |cut -d: -f3) id2=$(head -20 /etc/passwd |tail -1 |cut -d: -f3) id_sum=$($id1+$id2) echo "id_sum=$id_sum"
将当前主机名保存至hostName
变量中,主机名为空,或者为localhost.localdomain
则将设置为www.magedu.com
。
hostName=$(hostname) [ -z "$hostName" -o "$hostName" == "localhost.localdomain" -o "$hostName" == "localhost" ] && hostname www.magedu.com
编写脚本,命令行参数传入一个用户名,判断id
号是偶数仍是奇数。
#!/bin/bash if ![ $# -eq 1] ;then echo "please input one usename" exit 2 fi $uid = grep "^$1>" /etc/passwd | cut -d: -f3 $uid_yu = $uid % 2 if $uid_yu -eq 0 ;then echo "$1的ID号为偶数" else echo "$1的ID号为奇数" fi
lvm
基本应用以及扩展缩减实现。
Lvm基本应用以及扩展缩减实现(转载自:http://blog.csdn.net/ikikik2002/article/details/5187276
1、 前言
LVM是逻辑卷管理(Logical Volume Manager)的简称,他是创建在物理存储设备之上的一个抽象层,容许你生成逻辑存储卷,和直接使用物理存储在管理上相比,提供了更好灵活性。
LVM将存储虚拟化,使用逻辑卷,你不会受限于物理磁盘的大小,另外,和硬件相关的存储设置被其隐藏,你能不用中止应用或卸载文件系统来调整卷大小或数据迁移.这样能减小操做成本.
LVM和直接使用物理存储相比,有如下好处:
- 灵活的容量.
当使用逻辑卷时,文件系统能扩展到多个磁盘上,你能聚合多个磁盘或磁盘分区成单一的逻辑卷.2.可伸缩的存储池.
你能使用简单的命令来扩大或缩小逻辑卷大小,不用从新格式化或分区磁盘设备.3.在线的数据再分配.
你能在线移动数据,数据能在磁盘在线的状况下从新分配.好比,你能在线更换可热插拔的磁盘.
- 方便的设备命名
逻辑卷能按你以为方便的方式来起全部名称.5.磁盘条块化.
你能生成一个逻辑盘,他的数据能被条块化存储在2个或更多的磁盘上.这样能明显提高数据吞吐量.6.映像卷
逻辑卷提供方便的方法来映像你的数据.7.卷快照
使用逻辑卷,你能得到设备快照用来一致性备份或测试数据更新效果而不影响真实数据.2、 LVM基本术语
前面谈到,LVM是在物理存储上添加的一个逻辑层,来为文件系统屏蔽下面的硬件存储设备,提供了一个抽象的盘卷,在盘卷上创建文件系统。首先咱们讨论如下几个LVM术语:
- 物理存储介质(The Physical Media)
这里指系统的存储设备,如:/dev/hda一、/dev/sda等等,是存储系统最低层的存储单元。- 物理卷(PV, Physical Volume)
物理卷就是指磁盘,磁盘分区或从逻辑上和磁盘分区具备一样功能的设备(如RAID),是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有和LVM相关的管理参数。当前LVM容许你在每一个物理卷上保存这个物理卷的0至2份元数据拷贝.默认为1,保存在设备的开始处.为2时,在设备结束处保存第二份备份.- 卷组(VG, Volume Group)
LVM卷组相似于非LVM系统中的物理硬盘,其由物理卷组成。能在卷组上建立一个或多个“LVM分区”(逻辑卷),LVM卷组由一个或多个物理卷组成。- 逻辑卷(LV, Logical Volume)
LVM的逻辑卷相似于非LVM系统中的硬盘分区,在逻辑卷之上能创建文件系统(好比/home或/usr等)。*线性逻辑卷 (Linear Volumes)
一个线性逻辑卷聚合多个物理卷成为一个逻辑卷.好比,若是你有两个60GB硬盘,你能生成120GB的逻辑卷.*条块化的逻辑卷(Striped Logical Volumes)
当你写数据到此逻辑卷中时,文件系统能将数据放置到多个物理卷中.对于大量链接读写操做,他能改善数据I/O效率.*映像的逻辑卷(Mirrored Logical Volumes)
映像在不一样的设备上保存一致的数据.数据同时被写入原设备及映像设备.他提供设备之间的容错。*快照卷(Snapshot Volumes)
快照卷提供在特定瞬间的一个设备虚拟映像,当快照开始时,他复制一份对当前数据区域的改动,因为他优先执行这些改动,因此他能重构当前设备的状态。
- PE(physical extent)
每个物理卷被划分为称为PE(Physical Extents)的基本单元,具备惟一编号的PE是能被LVM寻址的最小单元。PE的大小是可设置的,默认为4MB。- LE(logical extent)
逻辑卷也被划分为被称为LE(Logical Extents) 的可被寻址的基本单位。在同一个卷组中,LE的大小和PE是相同的,而且一一对应。和非LVM系统将包含分区信息的元数据保存在位于分区的起始位置的分区表中相同,逻辑卷及卷组相关的元数据也是保存在位于物理卷起始处的VGDA(卷组描述符区域)中。VGDA包括如下内容: PV描述符、VG描述符、LV描述符、和一些PE描述符 。系统启动LVM时激活VG,并将VGDA加载至内存,来识别LV的实际物理存储位置。当系统进行I/O操做时,就会根据VGDA创建的映射机制来访问实际的物理位置。
3、 安装LVM
首先肯定系统中是否安装了lvm工具:
[root@test2 root]# rpm ?qa|grep lvm
lvm-x-x-x
若是命令结果输入相似于上例,那么说明系统已安装了LVM管理工具;若是命令没有输出则说明没有安装LVM管理工具,则须要从网络下载或从光盘装LVM rpm工具包。安装了LVM的RPM软件包之后,要使用LVM还须要设置内核支持LVM。RedHat默认内核是支持LVM的,若是须要从新编译内核,则须要在设置内核时,进入Multi-device Support (RAID and LVM)子菜单,选中以选项:
Multiple devices driver support (RAID and LVM)
Device mapper support
Snapshot target (EXPERIMENTAL)
Mirror target (EXPERIMENTAL)
而后从新编译内核,便可将LVM的支持添加到新内核中。为了使用LVM,要确保在系统启动时激活LVM,在RedHa的版本中,系统启动脚本已具备对激活LVM的支持,在/etc/rc.d/rc.sysinit中有如下内容:
if [ -x /sbin/lvm.static ]; then
action $“Setting up Logical Volume Management:” /sbin/lvm.static vgchange -a y --ignorelockingfailure
fi
vgchange -a y命令激活系统全部卷组。4、 建立和管理LVM
要建立一个LVM系统,通常须要通过如下步骤:
一、 建立分区
使用分区工具(如:fdisk等)建立LVM分区,方法和建立其余通常分区的方式是相同的,差异仅仅是LVM的分区类型为8e。
# fdisk -l /dev/sdb /dev/sdc
Disk /dev/sdb: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn’t contain a valid partition table
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 200 1606468+ 8e Linux LVM
若是要将使用整块盘,能经过下面的命令来覆盖磁盘上的原有分区信息:
#dd if=/dev/zero of=/dev/sdc bs=512 count=1
二、 建立物理卷
建立物理卷的命令为pvcreate,利用该命令将但愿添加到卷组的全部分区或磁盘建立为物理卷。将整个磁盘建立为物理卷的命令为:
# pvcreate /dev/sdb
Physical volume “/dev/sdb” successfully created
将单个分区建立为物理卷的命令为:
# pvcreate /dev/sdc1
Physical volume “/dev/sdc1” successfully created
也能同时生成多个卷:
#pvcreate /dev/sdb /dev/sdc1三、扫描块设备
经过lvmdiskscan能看到那些设备成为了物理卷.
#lvmdiskscan
/dev/ramdisk [ 16.00 MB]
/dev/sda [ 4.00 GB]
/dev/root [ 2.88 GB]
/dev/ram [ 16.00 MB]
/dev/sda1 [ 101.94 MB]
/dev/VolGroup00/LogVol01 [ 1.00 GB]
/dev/ram2 [ 16.00 MB]
/dev/sda2 [ 3.90 GB] LVM physical volume
/dev/lvm_test/test [ 508.00 MB]
/dev/ram3 [ 16.00 MB]
/dev/ram4 [ 16.00 MB]
/dev/ram5 [ 16.00 MB]
/dev/ram6 [ 16.00 MB]
/dev/ram7 [ 16.00 MB]
/dev/ram8 [ 16.00 MB]
/dev/ram9 [ 16.00 MB]
/dev/ram10 [ 16.00 MB]
/dev/ram11 [ 16.00 MB]
/dev/ram12 [ 16.00 MB]
/dev/ram13 [ 16.00 MB]
/dev/ram14 [ 16.00 MB]
/dev/ram15 [ 16.00 MB]
/dev/sdb [ 512.00 MB] LVM physical volume
/dev/sdc [ 512.00 MB] LVM physical volume
5 disks
16 partitions
2 LVM physical volume whole disks
1 LVM physical volume四、显示物理卷
能使用pvs,pvscan,pvdisplay来显示当前系统中的物理卷.
#pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 VolGroup00 lvm2 a- 3.88G 0
/dev/sdb lvm_test lvm2 a- 508.00M 0
/dev/sdc lvm2 -- 512.00M 512.00M
#pvscan
PV /dev/sdb VG lvm_test lvm2 [508.00 MB / 0 free]
PV /dev/sda2 VG VolGroup00 lvm2 [3.88 GB / 0 free]
PV /dev/sdc lvm2 [512.00 MB]
Total: 3 [4.87 GB] / in use: 2 [4.37 GB] / in no VG: 1 [512.00 MB]
#pvdisplay
--- Physical volume ---
PV Name /dev/sdb
VG Name lvm_test
PV Size 512.00 MB / not usable 4.00 MB
Allocatable yes (but full)
PE Size (KByte) 4096
Total PE 127
Free PE 0
Allocated PE 127
PV UUID Pkp5Cq-SD1w-ANw2-cDDe-BGtw-nmFS-jTxXFD--- NEW Physical volume ---
PV Name /dev/sdc
VG Name
PV Size 512.00 MB
Allocatable NO
PE Size (KByte) 0
Total PE 0
Free PE 0
Allocated PE 0
PV UUID BNCVEE-YWlK-0mrV-LOcf-0tCY-WWNw-DeySk0五、移除物理卷
#pvremove /dev/sdc
Labels on physical volume “/dev/sdc” successfully wiped六、 建立卷组
建立卷组的命令为vgcreate,将使用pvcreate创建的物理卷建立为一个完整的卷组:
# vgcreate lvm_test /dev/sdc1 /dev/sdb
Volume group “lvm_test” successfully created
vgcreate命令第一个参数是指定该卷组的逻辑名:lvm_test。后面参数是指定但愿添加到该卷组的全部分区和磁盘。vgcreate在建立卷组 lvm_test 之外,还设置使用大小为4 MB的PE(默认为4MB),这表示卷组上建立的全部逻辑卷都以 4 MB 为增量单位来进行扩充或缩减。PE最小为1KB ,而且必须老是1KB的 2^n 的倍数(使用-s指定,具体请参考man vgcreate)。七、 激活卷组
卷组在建立时默认激活,也能使用vgchange来激活卷组:
# vgchange -a y lvm_test八、 添加新的物理卷到卷组中
当系统安装了新的磁盘或新建分区并建立了新的物理卷,而要将其添加到已有卷组时,就须要使用vgextend命令:
#fdisk -l /dev/sdc
Disk /dev/sdc: 18.2 GB, 18200739840 bytes
255 heads, 63 sectors/track, 2212 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Device Boot Start End Blocks Id System
/dev/sdc1 1 200 1606468+ 8e Linux LVM
/dev/sdc2 201 400 1606500 8e Linux LVM#pvcreate /dev/sdc2
Physical volume “/dev/sdc2” successfully created# vgextend lvm_test /dev/sdc2
Volume group “lvm_test” successfully extended
这里/dev/sdc2是新的物理卷。九、显示卷组
显示卷组能使用vgs和vgdisplay.
# vgs
VG #PV #LV #SN Attr VSize VFree
VolGroup00 1 2 0 wz--n- 3.88G 0
lvm_test 1 1 0 wz--n- 508.00M 0# vgdisplay
--- Volume group ---
VG Name lvm_test
System ID
Format lvm2
Metadata Areas 1
Metadata Sequence No 10
VG Access read/write
VG Status resizable
MAX LV 0
Cur LV 1
Open LV 1
Max PV 0
Cur PV 1
Act PV 1
VG Size 508.00 MB
PE Size 4.00 MB
Total PE 127
Alloc PE / Size 127 / 508.00 MB
Free PE / Size 0 / 0
VG UUID uJx24t-WWdY-vffu-97Of-mgFB-FEov-eRwzAf十、扫描磁盘生成缓存文件
#vgscan
Reading all physical volumes. This may take a while...
Found volume group “lvm_test” using metadata type lvm2
Found volume group “VolGroup00” using metadata type lvm2十一、 从卷组中删除一个物理卷
要从一个卷组中删除一个物理卷,首先要确认要删除的物理卷没有被全部逻辑卷正在使用,就要使用pvdisplay命令察看一个该物理卷信息:
#pvdisplay /dev/sdc2
--- Physical volume ---
PV Name /dev/sdc2
VG Name lvm_test
PV Size 1.53 GB / not usable 868.00 KB
Allocatable yes
PE Size (KByte) 4096
Total PE 392
Free PE 392
Allocated PE 0 (表示未被使用)
PV UUID jAiils-1vRz-Td9k-1AiD-kIJs-191z-YMz09H
若是某个物理卷正在被逻辑卷所使用,就须要将该物理卷的数据备份到其余地方,而后再删除。删除物理卷的命令为vgreduce:
# vgreduce lvm_test /dev/sdc2
Removed “/dev/sdc2” from volume group “lvm_test”十二、 建立逻辑卷
建立逻辑卷的命令为lvcreate:
# lvcreate -L 1500 ?n test lvm_test
Logical volume “test” created
该命令就在卷组lvm_test上建立名字为test,大小为1500M的逻辑卷,而且设备入口为/dev/lvm_test/test (lvm_test为卷组名,test为逻辑卷名)。若是但愿建立一个使用所有卷组的逻辑卷,则须要首先察看该卷组的PE数,而后在建立逻辑卷时指定:
# vgdisplay lvm_test| grep “Total PE”
Total PE 4731
# lvcreate -l 4731 lvm_test -n test
Logical volume “test” created1三、建立条块化的逻辑卷
# lvcreate -L 500M -i2 -n test lvm_test
Using default stripesize 64.00 KB
Rounding size (125 extents) up to stripe boundary size (126 extents)
Logical volume “test” created
-i2指此逻辑卷在两个物理卷中条块化存放数据,默认一块大小为64KB.1四、建立映像的逻辑卷。
#lvcreate -L 52M -m1 -n test lvm_test /dev/sdb1 /dev/sdc1 /dev/sdb2
Logical volume “test” created
-m1表示只生成一个单一映像,映像分别放在/dev/sdb1和/dev/sdc1上,映像日志放在/dev/sdb2上.1五、建立快照卷。
#lvcreate --size 10 --snapshot --name snaptest /dev/lvm_test/test
1六、 建立文件系统
如使用ext3文件系统:
#mkfs.ext3 /dev/lvm_test/test
mke2fs 1.35 (28-Feb-2004)
max_blocks 4294967295, rsv_groups = 0, rsv_gdb = 1024
Filesystem label=
OS type: Linux
Block size=4096 (log=2)
Fragment size=4096 (log=2)
2424832 inodes, 4844544 blocks
242227 blocks (5.00%) reserved for the super user
First data block=0
Maximum filesystem blocks=8388608
148 block groups
32768 blocks per group, 32768 fragments per group
16384 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
Writing inode tables: done
inode.i_blocks = 90120, i_size = 4243456
Creating journal (8192 blocks): done
Writing superblocks and filesystem accounting information: done
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
建立了文件系统之后,就能加载并使用他:
# mkdir /mnt/test
# mount /dev/lvm_test/test /mnt/test
若是但愿系统启动时自动加载文件系统,则还须要在/etc/fstab中添加内容:
/dev/lvm_test/test /mnt/test ext3 defaults 1 21七、 删除一个逻辑卷
删除逻辑卷之前首先须要将其卸载,而后删除:
# umount /dev/lvm_test/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume “test”? [y/n]: y
Logical volume “test” successfully removed
1八、 扩展逻辑卷大小
LVM提供了方便调整逻辑卷大小的能力,扩展逻辑卷大小的命令是lvextend:
# lvextend -L12G /dev/lvm_test/test
Extending logical volume test to 12.00 GB
Logical volume test successfully resized
上面的命令就实现将逻辑卷test的大小扩大为12G。
# lvextend -L+1G /dev/lvm_test/test
Extending logical volume test to 13.00 GB
Logical volume test successfully resized
上面的命令就实现将逻辑卷test的大小增长1G。
增长了逻辑卷的容量之后,就须要修改文件系统大小以实现利用扩充的空间。
对于但愿调整被加载的文件系统大小,使用ext2online(ext2resize) 或 resize2fs.
#df -h
# ext2online /dev/lvm_test/test
ext2online /dev/lvm_test/test
ext2online v1.1.18 - 2001/03/18 for EXT2FS 0.5b#df -h
Filesystem 容量 已用 可用 已用% 挂载点
/dev/mapper/VolGroup00-LogVol01
16G 11G 3.6G 76% /
/dev/sda1 494M 18M 451M 4% /boot
none 506M 0 506M 0% /dev/shm
/dev/mapper/lvm_test-test
13G 63M 13G 1% /mnt/test
通常建议最佳将文件系统卸载,调整大小,而后再加载:
# umount /dev/lvm_test/test
#resize2fs /dev/lvm_test/test
# mount /dev/lvm_test/test /mnt/test1九、 减小逻辑卷大小
使用lvreduce便可实现对逻辑卷的容量,一样须要首先将文件系统卸载:
# umount /mnt/test
#e2fsck -f /dev/lvm_test/test
# resize2fs /dev/lvm_test/test 11G
# lvreduce -L -1.992G /dev/lvm_test/test (少2个PE的大小)
# resize2fs /dev/lvm_test/test (经过此命令确认是否文件系统大小和收缩后的逻辑卷大小匹配)
# mount /dev/lvm_test/test /mnt/test20、显示逻辑卷
经过lvscan,lvs及lvdisplay能察看当前系统中存在的逻辑卷。
# lvdisplay
--- Logical volume ---
LV Name /dev/VolGroup00/LogVol00
VG Name VolGroup00
LV UUID sPmLMD-6xq4-wStB-uSAP-jlQc-YKTm-3bt8Pc
LV Write Access read/write
LV Status available
# open 1
LV Size 2.88 GB
Current LE 92
Segments 1
Allocation inherit
Read ahead sectors 0
Block device 253:0#lvscan
lvscan
ACTIVE ’/dev/VolGroup00/LogVol00’ [2.88 GB] inherit
ACTIVE ’/dev/VolGroup00/LogVol01’ [1.00 GB] inherit#lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92)2一、使用过滤控制LVM的设备扫描
经过编辑/etc/lvm/lvm.conf 中的filter段,来定义过滤那些设备要扫描。
filter =[ “a|/dev/sd.|”, “a|/dev/hd.|”, “r|.*|” ]
上面对scsi及ide设备扫描,对其余设备均不扫描。2二、在线数据迁移
经过pvmove能将一个PV上的数据迁移到新的PV上,也能将PV上的某个LV迁移到另外一个PV上。
#lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92)
test lvm_test -wi-ao 52.00M /dev/sdb1(0)#pvmove -n test /dev/sdb1 /dev/sdc1
#lvs -o +devices
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92)
test lvm_test -wi-ao 52.00M /dev/sdc1(0)2三、删除卷组
按照顺序卸载文件系统,删除逻辑卷,而后删除卷组。
#umount /mnt/test
# lvremove /dev/lvm_test/test
Do you really want to remove active logical volume “test”? [y/n]: y
Logical volume “test” successfully removed
#vgremove lvm_test
Volume group “lvm_test” successfully removed
2四、故障排查
经过在命令后加 -v,-vv,-vvv或-vvvv来得到更周详的命令输出。
经过在lvs,vgs后加-P能更好的查看失败设备.
#vgs -a -o +devices -P
Partial mode. Incomplete volume groups will be activated read-only.
VG #PV #LV #SN Attr VSize VFree Devices
VolGroup00 1 2 0 wz--n- 3.88G 0 /dev/sda2(0)
VolGroup00 1 2 0 wz--n- 3.88G 0 /dev/sda2(92)
lvm_test 2 2 0 wz--n- 1016.00M 896.00M pvmove0(0)
lvm_test 2 2 0 wz--n- 1016.00M 896.00M /dev/sdb(0),/dev/sdc(0)
#lvs -a -o +devices -P
Partial mode. Incomplete volume groups will be activated read-only.
Failure parsing mirror status fraction: 1 core
Failure parsing mirror status fraction: 1 core
LV VG Attr LSize Origin Snap% Move Log Copy% Devices
LogVol00 VolGroup00 -wi-ao 2.88G /dev/sda2(0)
LogVol01 VolGroup00 -wi-ao 1.00G /dev/sda2(92)
[pvmove0] lvm_test p-C-ao 60.00M /dev/sdb /dev/sdb(0),/dev/sdc(0)
test lvm_test -wI-a- 60.00M pvmove0(0)5、 总结
根据上面的讨论能看到,LVM具备很是好的可伸缩性,使用起来很是方便。能方便地对卷组、逻辑卷的大小进行调整,更进一步调整文件系统的大小,还能方便的进行数据迁移,数据完整性保护。若是但愿了解更多信息,请参考LVM-HOWTO。此文件使用内核为2.6.22.1,在作pvmove时出现错误,如上.补丁以下:
Index: linux-2.6.21/drivers/md/dm-raid1.c
===================================================================
--- linux-2.6.21.orig/drivers/md/dm-raid1.c 2007-05-13 18:56:09.000000000 +0100
+++ linux-2.6.21/drivers/md/dm-raid1.c 2007-05-13 19:09:54.000000000 +0100
@@ -1288,12 +1288,12 @@ static int mirror_status(struct dm_targe
for (m = 0; m nr_mirrors; m++)
DMEMIT(“%s “, ms->mirror[m].dev->name);- DMEMIT(“%llu/%llu”,
+ DMEMIT(“%llu/%llu “,
(unsigned long long)ms->rh.log->type->
get_sync_count(ms->rh.log),
(unsigned long long)ms->nr_regions);- sz = ms->rh.log->type->status(ms->rh.log, type, result, maxlen);
+ sz += ms->rh.log->type->status(ms->rh.log, type, result+sz, maxlen-sz); break;