套用文档的一段话开头:文件系统是牵涉到文件与目录在计算机中的存储。一个文件系统可以有不同的格式--称作文件系统类型。这些格式决定着记录到文件以及目录内的信息。有些文
还是把链接贴一下:Storage Administration Guide,Logical Volume Manager Administration
当然翻译的不是很好,补充几点,这里将做几个实验把,fdisk这个工具的使用,raid,lvm等的用法,内容比较多,希望大家能耐心的看完! 来先看一下实验环境,一台RHEL6.2的虚拟机子,添加了四块1GB的ide硬盘,有图有真相。
我们按照上头的顺序从ext3开始讲吧。
ext3 日志文件系统
1 用fdisk 进行分区
2 格式化文件系统 3 打标签 4 创建挂载点 5
加入开机启动/etc/fstab
看一下环境:/dev/下装的都是设备文件
[root@kikupotter3 dev]# ll sd*
brw-rw----. 1 root disk 8, 0 11月 1 03:49 sda
brw-rw----. 1 root disk 8, 16 11月 1 03:49 sdb
brw-rw----. 1 root disk 8, 32 11月 1 03:49 sdc
brw-rw----. 1 root disk 8, 48 11月 1 03:49 sdd
四块IDE硬盘都进去了,嘿嘿。现在有搞头了。
我们先就是sda这块硬盘。用fdisk这个命令来分区,好好介绍一下用法。
[root@kikupotter3 ~]# fdisk /dev/sda
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x394792ea.
Changes will remain in memory only, until you decide to write them.
After that, of course, the previous content won't be recoverable.
Warning: invalid flag 0x0000 of partition table 4 will be corrected by w(rite)
WARNING: DOS-compatible mode is deprecated. It's strongly recommended to
switch off the mode (command 'c') and change display units to
sectors (command 'u').
Command (m for help): //他说输如m来获取帮助
然后我输入m
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 //更改分区类型
u change display/entry units
v verify the partition table
w write table to disk and exit //保存推出,区别q
x extra functionality (experts only)
标记上红色的是比较常用的,说白了没用到的就不要去了解,了解了也没啥用,没有去操练就会忘记了的。
下面的步骤输出会很长,关键的部分我会打上红色注意看哦。
Command (m for help): p
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
//这个部分就是这个硬盘的参数的,算是很详细。
Device Boot Start End Blocks Id System
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 1
First cylinder (1-130, default 1): 1
Last cylinder, +cylinders or +size{K,M,G} (1-130, default 130): +300M
Command (m for help): p
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
Device Boot Start End Blocks Id System
/dev/sda1 1 39 313236 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 2
First cylinder (40-130, default 40):
Using default value 40
Last cylinder, +cylinders or +size{K,M,G} (40-130, default 130): +300M
Command (m for help): p
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
Device Boot Start End Blocks Id System
/dev/sda1 1 39 313236 83 Linux
/dev/sda2 40 78 313267+ 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Partition number (1-4): 3
First cylinder (79-130, default 79):
Using default value 79
Last cylinder, +cylinders or +size{K,M,G} (79-130, default 130): +300M
Command (m for help): p
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
Device Boot Start End Blocks Id System
/dev/sda1 1 39 313236 83 Linux
/dev/sda2 40 78 313267+ 83 Linux
/dev/sda3 79 117 313267+ 83 Linux
Command (m for help): n
Command action
e extended
p primary partition (1-4)
p
Selected partition 4
First cylinder (118-130, default 118):
Using default value 118
Last cylinder, +cylinders or +size{K,M,G} (118-130, default 130):
Using default value 130
Command (m for help): p
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
Device Boot Start End Blocks Id System
/dev/sda1 1 39 313236 83 Linux
/dev/sda2 40 78 313267+ 83 Linux
/dev/sda3 79 117 313267+ 83 Linux
/dev/sda4 118 130 104422+ 83 Linux
Command (m for help):
这样就创建好分区了,如何这时候想保存此分区结果的话,输入w
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[root@kikupotter3 ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
保存后我们扎dev下面就可以看到四个分区了。如果上面不相保存就直接按q就可以了。
删除分区也很简单
Command (m for help): d //删除
Partition number (1-4): 4 //删的分区
Command (m for help): p //打印
Disk /dev/sda: 1073 MB, 1073741824 bytes
255 heads, 63 sectors/track, 130 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xd540b437
Device Boot Start End Blocks Id System
/dev/sda1 1 39 313236 83 Linux
/dev/sda2 40 78 313267+ 83 Linux
/dev/sda3 79 117 313267+ 83 Linux
保存退出后,就剩下三个分区了。
[root@kikupotter3 ~]# ls /dev/sda*
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
[root@kikupotter3 ~]#
那fdisk命令就到这里了,思路明白了?学命令不一定要一口气记他个几十个,会忘的亲,现在还有好多命令我记不住的,还要百度google一下,而且是直接的关 键词。所以关键还是在那个思路!!
分区完了,第二步就是格式化文件系统,红色部分字体重点看一下哦!
[root@kikupotter3 ~]# mkfs.ext3 /dev/sda1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
78312 inodes, 313236 blocks
15661 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67633152
39 block groups
8192 blocks per group, 8192 fragments per group
2008 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 25 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
ext3很标准的完成了一个mkfs的过程,内节点的建立,日志的建立,还有超级块。
最后一个提示是问你要不要做一下 tune2fs -c or -i,不然系统每经过25次mount or 过180天会自动check。
那么现在可以来打一下标签:
先来看一下man文档,突然短路了想不起来
NAME
e2label - Change the label on an ext2/ext3/ext4 filesystem
SYNOPSIS
e2label device [ new-label ]
DESCRIPTION
e2label will display or change the filesystem label on the ext2, ext3,or ext4 filesystem located on device.
If the optional argument new-label is not present, e2label will simply display the current filesystem label.
If the optional argument new-label is present, then e2label will set . the filesystem label to be new-label. Ext2 filesystem labels can be at most 16 characters long;
if new-label is longer than 16 characters, e2label will truncate it and print a warning message.
很简洁的帮助文档,下面给/dev/sda1打标签
[root@kikupotter3 ~]# e2label /dev/sda1 kiku
用下面命令来看label的情况。blkid( command-line utility to locate/print block device attributes)
其实blkid是很强大的能够打印出本地块设备的属性,默认情况下可以打出所有,这里只是用到一下部分的内容,/dev/disk/下存的信息就是blkid用的 。
[root@kikupotter3 ~]# blkid -L kiku
/dev/sda1
或者findfs:(findfs - Find a filesystem by label or UUID)
[root@kikupotter3 ~]# findfs LABEL=kiku
/dev/sda1
然后创建一个目录用于挂载
[root@kikupotter3 ~]# mkdir /mpoint
最后写入开机启动
[root@kikupotter3 etc]# blkid /dev/sda1
/dev/sda1: LABEL="kiku" UUID="b47853df-11b0-407e-aa2a-762f5b4fb36e" SEC_TYPE="ext2" TYPE="ext3"
编辑/etc/fstab 这个文件的写法很简单 终端运行命令:man 5 fstab 一看就会
LABEL=kiku /mpoint ext3 default 0 0
测试是否成功,这里就体现了一个label的高级用法咯。估计用的不多,大多数情况都是用uuid,或者是/dev/sdaX这样来写。
[root@kikupotter3 etc]# mount -av
mount: UUID=dcba6422-90c2-4df0-b1b4-7dbf77f7610e already mounted on /boot
.......
mount: LABEL=kiku already mounted on /mpoint
nothing was mounted
swap
这个需要解释一下,分区的时候为什么至少要分一个/跟swap,因为Linux的文件系统结构是倒树型的的,而/就是这个树的顶端。所以的东西都在/的下面,所以单独分/不会落下东西的,但是/下面没有swap,它是自己独立出来的,作为虚拟内存的概念,当我们的物理内存不够用的时候,就会调用这些swap的空间。所以swap是在本地硬盘的空间,而且硬盘的读写比内存慢得多得多,所以不是swap分得越多,用得越多越好,不是这样的。一般情况下
内存2G
swap 2-3G
内存4G swap3-5G 内存8G swap4-6G 内存16G swap 6-8G
内存32-64G
不超过16G
云芳你怎么看?
还有更直接的方法就是RAM的两倍。
大牛你怎么看?
那有个建议是这样说,swap用逻辑卷来做,就可以避免上面的分多少的问题了,不过了我把swap卸载下来,扩容一下再swapon上去。简单省事。
下面先操作一个简单的制作一个swap文件让系统用
创建一个文件
[root@kikupotter3 ~]# dd if=/dev/zero of=/swapfile bs=1024 count=65536
记录了65536+0 的读入
记录了65536+0 的写出
67108864字节(67 MB)已复制,0.254279 秒,264 MB/秒 做成swap,格式化
[root@kikupotter3 ~]# mkswap -f /swapfile
Setting up swapspace version 1, size = 65532 KiB
no label, UUID=edf26f59-791d-4120-aa7c-9bc269577b86
然后开始启用并且加入开机启动
[root@kikupotter3 ~]# swapon /swapfile
vim /etc/fstab //添加
/swapfile swap swap defaults 0 0
等下次开启重启的时候,我们到/proc/swap就能看到它了。或者mount -a
[root@kikupotter3 etc]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 2064376 0 -1
/swapfile file 65528 0 -2
看到了么 类型还是文件呀,嘿嘿。上面一个是分区,那至少来说支持分区分文件的类型。
然后再做个裸机卷的,再伸缩一下,调整大小。这个可以放在lvm那里做。
下面来raid,磁盘冗余阵列
我们先做实验再解释这个东西。
先到各自对应版本的驱动下面看看有没有对应raid的.ko文件,这里的话默认就支持下面几种。
[root@kikupotter3 md]# pwd
/lib/modules/2.6.32-220.el6.x86_64/kernel/drivers/md
[root@kikupotter3 md]# ls raid*
raid0.ko raid10.ko raid1.ko raid456.ko
分区先准备一下,还是有fdisk命令,那这一次是把4个ide硬盘都分区了,而且都只分成一个主分区。唯一跟前面有区别的就是我该了一个分区类型
Command (m for help): t
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
改成raid支持的类型。这个是前期必须的工作哦!
Device Boot Start End Blocks Id System
/dev/sda1 1 130 1044193+ fd Linux raid autodetect
Device Boot Start End Blocks Id System
/dev/sdb1 1 130 1044193+ fd Linux raid autodetect
Device Boot Start End Blocks Id System
/dev/sdc1 1 130 1044193+ fd L Device Boot Start End Blocks Id System
/dev/sdd1 1 130 1044193+ fd Linux raid autodetect
inux raid autodetect
查看/proc/mdstat
[root@kikupotter3 ~]# cat /proc/mdstat
Personalities :
unused devices: <none>
现在下面还没有,那么我们另位开一个终端
[root@kikupotter3 ~]# watch -n0.5 "cat /proc/mdstat"Every 0.5s: cat /proc/mdstat Thu Nov 1 06:38:07 2012
Personalities :
unused devices: <none>
/实时的看,每隔0.5s看一次。
用另位一个终端进行操作
[root@kikupotter3 ~]# mdadm -C /dev/md0 -l 1 -n /dev/sda1 /dev/sdb1 -x 1 /dev/sdc1
mdadm: invalid number of raid devices: /dev/sda1
[root@kikupotter3 ~]# mdadm -C /dev/md0 -l 1 -n 2 /dev/sda1 /dev/sdb1 -x 1 /dev/sdc1
mdadm: /dev/sda1 appears to contain an ext2fs file system
size=313236K mtime=Thu Nov 1 05:30:54 2012
mdadm: Note: this array has metadata at the start and
may not be suitable as a boot device. If you plan to
store '/boot' on this device please ensure that
your boot-loader understands md/v1.x metadata, or use
--metadata=0.90
Continue creating array?
Continue creating array? (y/n) y
mdadm: Defaulting to version 1.2 metadata
mdadm: array /dev/md0 started.
有图有真相:
还有一张成功的图:
这个是RAID1.
那么在/dev/下面就有一个md0刚刚生成的。
[root@kikupotter3 ~]# ll /dev/md0
brw-rw----. 1 root disk 9, 0 11月 1 06:42 /dev/md0
那么上面的动作只是把sda1 sdb1 sdc1 做成一个整体的md0了而已,还未格式化 文件系统
[root@kikupotter3 ~]# mkfs.ext3 /dev/md0
好了可以挂载使用了
[root@kikupotter3 ~]# mount /dev/md0 /mnt
[root@kikupotter3 ~]# blkid /dev/md0
/dev/md0: UUID="dc1a7b6f-17c6-4629-9417-c6e411df8d29" TYPE="ext3" [root@kikupotter3 ~]# df -h
文件系统 容量 已用 可用 已用%% 挂载点
/dev/mapper/VolGroup-lv_root
5.5G 1.3G 4.0G 24% /
tmpfs 499M 0 499M 0% /dev/shm
/dev/vda1 485M 31M 429M 7% /boot
/dev/md0 1004M 18M 936M 2% /mnt
下面一步最关键了,我们来看看什么加冗余,什么是阵列,最直观的看图。
还是打开监控端
[root@kikupotter3 ~]# watch -n0.5 "cat /proc/mdstat"cat\/proc/mdstat
运行命令
[root@kikupotter3 ~]# mdadm -f /dev/md0 /dev/sda1
然后你看:
观察这张图跟上面第一张图的区别。
能发现几点,sda1由于某种原因坏点以后,sdc1顶了上去,而且未造成数据的丢失。那必须有几个的小磁盘组成一个这样的md0设备,而且必须要有空余的即冗余以保证事故后的恢复。
那raid有好几种不同的级别,不同的级别方式是不一样的。
levels 0, 1, 4, 5, 6, 10, and linear,共7种形式。
那raid 到底有什么样的功能呢?
1 .提高硬盘的读写效率,通重来说,几个磁盘所组成的阵列,数据是分散在上面的,读写的时候,都是一起工作,那样的效率比当个大容量磁盘要快好多。
2.数据不容易丢失,因为这个是raid最重要的功能,单点故障不会导致整个数据丢失。但是如果都坏了的话,那就很难说了。
我们这里所使用的都是软件形式的raid,那么实现中更多的是软硬件结合,或者是纯硬件的设备。
剩下的部分要留给大牛来给我们说了,小弟的学识很浅薄只能到这里了,没有实际的生产经验。
还剩下最后一个部分 lvm,我之前就有写过一篇写的还可以,条例还比较强的说。
把原文整理重发吧。实在困了,刚刚坐着睡着了,真心是一晚没睡。。剩下的一些,下次补上。
逻辑卷我原本听来就是跟wins下的卷弄成一样咯,大家都是卷嘛。wins下新建一个分区就是添加一个卷,还可以设置卷名等等。逻辑卷也有,添加卷跟卷名。怎么办?
当然有办法:
其实:wins下面的卷只单纯分区,格式化后就能用了,就是一次分区,或者我们把它形象的说成一级分区;那逻辑卷是不是有好“几级分区”,是的,把磁盘做成逻辑卷一共做了三次哦!所以我们形象得说逻辑卷是三级分区。
好了,知道逻辑卷之后再来使用一下lvm这个工具,lvm(logical volume manager)逻辑卷管理工具。对逻辑卷进行四种管理动作
allocating disks 分配磁盘
striping 条带化
mirroring 镜像
resizing logical volumes. 自由定义逻辑卷大小。
当然这四个动作完全可以不用GUI的界面做,强烈推荐命令行操作!简单,容易记。
逻辑卷的制作步骤:(声明:本图片来源于redhat 文档网站)
pv(物理卷8e)---------->vg (虚拟硬盘)----------->lv(逻辑卷)
pv:我们可以把一个磁盘分成多个独立的物理卷,标记为8e;
vg:把多个独立的物理卷放到一个卷组里面管理,把物理卷揉成了一个整体;
lv:再把卷组这个整体进行以指定区单位的大小进行分配。最终形成逻辑卷
注意:/boot不能做在逻辑卷上的,因为grub不认lv,谁叫它搞得那么复杂呀。所以做系统的时候如果采用逻辑卷的方案要把/boot单独分出来。
逻辑卷的特点
伸缩自如,特别是在主分区做成逻辑分区的时候,要是/(根)不够的情况下就可以增加容量咯,哪个独立分区的很少用但有占了挺大的空间那就缩小一些。
特别注意: 增大逻辑卷的量不能超过,物理卷的实际大小;缩小逻辑卷后的大小不能小于所在操作的逻辑卷真实文件量的大小,比如2G的/home,我只用了500M那么 你一定不能缩成比500M小,否则你懂的,建议不原来的大一些,看需求吧,缩成600M就好了。下面就把剩余的56M在分给part_one!
实验环境:
KVM+RHEL6.0 添加一个磁盘分区如下。8个等大的分区。实验先用
/dev/sda5 ,/dev/sda6
Device Boot Start End Blocks Id System
/dev/sda1 1 1 8001 83 Linux
/dev/sda2 2 522 4184932+ 5 Extended
/dev/sda5 2 66 522081 8e Linux LVM
/dev/sda6 67 131 522081 8e Linux LVM
/dev/sda7 132 196 522081 83 Linux
/dev/sda8 197 261 522081 83 Linux
/dev/sda9 262 326 522081 83 Linux
/dev/sda10 327 391 522081 83 Linux
/dev/sda11 392 456 522081 83 Linux
/dev/sda12 457 521 522081 83 Linux
现在来看看做个逻辑卷需要那些命令。
制作逻辑卷的命令规则:
pv+动作
vg+动作
lv +动作
第一步:制作物理卷
pv(物理卷)+动作
pvcreate //创建物理卷
[root@localhost ~]# pvcreate /dev/sda5
Physical volume "/dev/sda5" successfully createpvs //查看物理卷
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a- 509.84m 509.84mpvscan //扫描系统上的物理卷
[root@localhost ~]# pvscan
PV /dev/sda5 lvm2 [509.84 MiB]
Total: 1 [509.84 MiB] / in use: 0 [0 ] / in no VG: 1 [509.84 MiB]pvdisplay //显示物理卷的详细信息
[root@localhost ~]# pvdisplay
"/dev/sda5" is a new physical volume of "509.84 MiB"
--- NEW Physical volume ---
PV Name /dev/sda5 //物理卷名
VG Name
PV Size 509.84 MiB //物理卷大小
Allocatable NO //不可分配
PE Size 0 // PE的大小
Total PE 0 //总PE数
Free PE 0 // 空闲PE
Allocated PE 0 // 分配的PE
PV UUID oKjG81-6OeW-BDZh-RLQ3-9rd0-kckI-dus810 //唯一ID
第二步:卷组的命令
vg(卷组)+动作
vgcreate //记住卷组是有名字的呀,所以你建的时候记得要给弄个好名字。
[root@localhost ~]# vgcreate kiku /dev/sda5
Volume group "kiku" successfully created
分析:如果要增加第二个pv咋办,还create吗?好像有点不合情理,kiku已经有了,我还create /dev/sda6?
vgextend kiku /dev/sda6 //很合理吧,在已经有的kiku组里增加/dev/sda6,extend就是扩增,扩展的意思。
[root@localhost ~]# vgextend kiku /dev/sda6
No physical volume label read from /dev/sda6
Physical volume "/dev/sda6" successfully created
Volume group "kiku" successfully extendedvgs //查看卷组
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
kiku 1 0 0 wz--n- 508.00m 508.00m
vgscan //扫描系统上的卷组,他会去读所有的pv然后确定pv是否有相应的组,然后更新出来
[root@localhost ~]# vgscan
Reading all physical volumes. This may take a while...
Found volume group "kiku" using metadata type lvm2vgdisplay //看卷组的详细信息
[root@localhost ~]# vgdisplay
--- Volume group ---
VG Name kiku //物理卷名
System ID
Format lvm2 //版本是2哦!
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 //当前PV个数
Act PV 1 // 在或定的pv个数
VG Size 508.00 MiB //vg大小
PE Size 4.00 MiB //PE的大小
Total PE 127 //总PE
Alloc PE / Size 0 / 0 //分配的PE
Free PE / Size 127 / 508.00 MiB //空闲PE
VG UUID pybc9p-zjkG-9Fe1-yGM6-9m7t-g9Dw-wQ7S48
第三步:生成逻辑卷
原理:假如PE=4M(分配单元,区),意思是把所有的pv容量加在一起然后以一个PE为单位进行分割,逻辑卷的大小就是靠指定的PE个数来确定。所以分出来的逻辑卷肯定是PE的整数倍。
lvcreate -n data -l 80 卷组
-n 指定lv的名字,-l指定pe的块数
现在我准备建3个lv, part_one, part_two, part_three,占80PE,大小是320M。
[root@localhost ~]# lvcreate -n part_one -l 80 kiku
Logical volume "part_one" created
[root@localhost ~]# lvcreate -n part_two -l 80 kiku
Logical volume "part_two" created
[root@localhost ~]# lvcreate -n part_three -l 80 kiku
Logical volume "part_three" created
80X4=320M,说明是用PE个数来确定的!
[root@localhost ~]# lvdisplay | grep "LV Size"
LV Size 320.00 MiB
LV Size 320.00 MiB
LV Size 320.00 MiB
现在我们的都做完逻辑上的分区了,那么肯定还差一步,创建文件系统。
mkfs.ext4 /dev/卷名/data
[root@localhost ~]# mkfs.ext4 /dev/kiku/part_one
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=1024 (log=0)
分块大小=1024 (log=0)
Stride=0 blocks, Stripe width=0 blocks
81920 inodes, 327680 blocks
16384 blocks (5.00%) reserved for the super user
第一个数据块=1
Maximum filesystem blocks=67633152
40 block groups
8192 blocks per group, 8192 fragments per group
2048 inodes per group
Superblock backups stored on blocks:
8193, 24577, 40961, 57345, 73729, 204801, 221185
正在写入inode表: 完成
Creating journal (8192 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 36 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
做下一tune2fs
[root@localhost ~]# tune2fs -i 0 -c 0 /dev/kiku/part_one
tune2fs 1.41.12 (17-May-2010)
Setting maximal mount count to -1
Setting interval between checks to 0 second 如果要开机自动挂载那么;这一部分就涉及了文件系统的管理哦!
#blkid // 这个命令很好用
/dev/vda1: UUID="efd0f0d2-f8ce-4e39-a253-c1c7c1ccc85c" TYPE="ext4"
/dev/vda2: UUID="a4c93ea1-cab7-457f-a821-1d7491f7586f" TYPE="swap"
/dev/sda5: UUID="oKjG81-6OeW-BDZh-RLQ3-9rd0-kckI-dus810" TYPE="LVM2_member"
/dev/sda6: UUID="rN4kQz-RwXW-bByF-ysfn-I592-epwt-NFdkzn" TYPE="LVM2_member"
/dev/mapper/kiku-part_one: UUID="d19698f5-2672-4e1d-b1c0-6b2454ba3493" TYPE="ext4"
[root@localhost ~]# cd /etc/
[root@localhost etc]# cp fstab fstab.bak //养成习惯先备份!
cp:是否覆盖"fstab.bak"? y
[root@localhost etc]# vim fstab mount --a //开机自动挂载咯:成功
[root@localhost ~]vim /etc/fstab
/dev/mapper/kiku-part_one /part_one ext4 defaults 0 0
mount -a //看看有没有自动挂载。
[root@localhost etc]# mount -a /dev/mapper/kiku-part_one
mount: /dev/mapper/kiku-part_one already mounted or /part_one busy
mount: according to mtab, /dev/mapper/kiku-part_one is already mounted on /part_one
问题思考:这些步骤做完了,那么基本上没问题了。one,two ,three 都等大而且可用.那么可能用的时候你发现,one ,不够用了!!!而three还有很多没用,而且很少热动他,现在可以考虑把,three缩小给one。
以下几点务必上心:
扩大可以热操作;但是缩小一定冷操作!
扩大不能超过pv值;缩小不能大于文件容量!
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
kiku 2 3 0 wz--n- 1016.00m 56.00m
[root@localhost ~]# vgdisplay | grep "PE"
PE Size 4.00 MiB
Total PE 254
Alloc PE / Size 240 / 960.00 MiB
Free PE / Size 14 / 56.00 MiB
语法:lvextend -L +1G(增量) 或者4G(绝对值) /dev/卷名/data
[root@localhost ~]# lvextend -L +56M /dev/kiku/part_one
Extending logical volume part_one to 376.00 MiB
Logical volume part_one successfully resized
查看结果:
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
kiku 2 3 0 wz--n- 1016.00m 0
[root@localhost ~]# vgdisplay | grep "PE"
PE Size 4.00 MiB
Total PE 254
Alloc PE / Size 254 / 1016.00 MiB
Free PE / Size 0 / 0
[root@localhost ~]# lvdisplay | grep "Size"
LV Size 376.00 MiB
LV Size 320.00 MiB
LV Size 320.00 MiB
[root@localhost ~]# lvdisplay | grep "LE"
Current LE 94
Current LE 80
Current LE 80
resize2fs /dev/卷名/逻辑卷名 大小
我们来仔细看一下这resize2fs到底有什么用:
[root@studnet20 ~]# man resize2fs
NAME
resize2fs - ext2/ext3/ext4 file system resizer(用来做ext2,3,4重新定义大小的工具)
SYNOPSIS
resize2fs [ -fFpPM ] [ -d debug-flags ] [ -S RAID-stride ] device [
size ]
DESCRIPTION
The resize2fs program will resize ext2, ext3, or ext4 file systems.(这个程序将会调整ext2,3,4的文件系统大小) It can be used to enlarge or shrink an unmounted file system located on device(可以用来扩大或缩小没有挂载的文件系统!!很重要哦!). If the filesystem is mounted, it can be used to expand the size of the mounted filesystem(如果该文件系统已经挂载了,哪这个工具只能用来扩展文件系统的大小!!), assuming the kernel supports on-line resizing.(而且还需要内核的支持才能线上调节) (As of this writing, the Linux 2.6 kernel supports on-line resize for filesystems mounted using ext3 only.)2.6内核,只支持ext3的在线操作!
缩小要卸载:
从上到下缩小。文件系统--->分区,分区一定不能盖过文件系统。
root@localhost ~]# resize2fs /dev/kiku/part_one 300M //先从文件系统开始操作
resize2fs 1.41.12 (17-May-2010)
请先运行 'e2fsck -f /dev/kiku/part_one'.
他说要先做一下e2fsck -f 的动作才行!
[root@localhost ~]# e2fsck -f /dev/kiku/part_one
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/kiku/part_one: 11/96256 files (0.0% non-contiguous), 22405/385024 blocks
做完之后继续:
[root@localhost ~]# resize2fs /dev/kiku/part_one 300M
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/kiku/part_one to 307200 (1k) blocks.
The filesystem on /dev/kiku/part_one is now 307200 blocks long.
文件系统做完之后,该做分区上的动作了,现在对逻辑卷缩小!
[root@localhost ~]# lvreduce -L 300M /dev/kiku/part_one
WARNING: Reducing active logical volume to 300.00 MiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce part_one? [y/n]: y
Reducing logical volume part_one to 300.00 MiB
Logical volume part_one successfully resized
日志提示已经成功咯!
现在的话我想不用逻辑卷了,把实验环境卸掉。那么跟缩小的思路差不多,要成上面开始:
卸载+remove
卸载lv ------>卸载vg----------->卸载pv
这样做完就能释放/dev/sda5 /dev/sda6
vgreduce 卷名 /dev/sdb6 // 要脱掉lv然后在删除。
[root@localhost ~]# lvremove /dev/kiku/part_one
Do you really want to remove active logical volume part_one? [y/n]: y
Logical volume "part_one" successfully removed[root@localhost ~]# lvs //part_one已经没了哦
LV VG Attr LSize Origin Snap% Move Log Copy% Convert
part_three kiku -wi a-320.00m
part_two kiku -wi-a- 320.00m
[root@localhost ~]# vgremove kiku //卸载卷组
Volume group "kiku" successfully removed
[root@localhost ~]# pvremove /dev/sda5 //最后卸载物理卷
Labels on physical volume "/dev/sda5" successfully wiped
[root@localhost ~]# pvremove /dev/sda6
Labels on physical volume "/dev/sda6" successfully wiped 总算罗嗦完了,这就是菜鸟能之所以能完成实验的原因,慢慢看,慢慢想,慢慢做。熬夜做好的。
希望看的朋友多留些建议。谢谢,先去睡觉了哦!
【文章原创作者:武汉seo服务 http://www.5h5q.com提供,感谢支持】