概述
Ubuntu软件包分为4种:main、restricted、universe(公共的)、multiverse(多元化的)。
其中main和universe的软件提供源代码。
Ubuntu软件包位于Ubuntu镜像站点的目录树中。
· dists/:本目录包含发行版与预发行版的软件包
· pool/:包含运行于各种软件架构的二进制软件包,生成这些二进制软件包的源码包
· indices/:维护人员文件和重载文件
· project/: 供开发人员使用,这里包含的软件包均处于alpha测试阶段
问题:如何控制Ubuntu去哪个目录下载或更新?
我们从/etc/apt/sources.list中摘一段看看。
debhttp://hk.archive.ubuntu.com/ubuntu/ maverick main restricted
打开站点:hk.archive.ubuntu.com,可以看到上述的四个目录,即:dist/, pool/, indices/和project/。而下载软件一般会去dist/(应该会是首选)或者pool/。
dist/的第一级子目录包含很多发行版的目录,如hardy,Karmic,Lucid和maverick(10.10)。进入maverick-security目录,其中是四个子目录,即main/, multiverse/, restricted/和universe/。我想,上面一条命令的意思就是去main/和restricted/中查找软件吧。
发行版
Ubuntu的发行版:
Hardy Heron |
8.04 |
Intrepid Ibex |
8.10 |
Jaunty Jackalope |
9.04 |
Karmic Koala |
9.10 |
Lucid Lynx |
10.04 LTS (支持3年) |
Maverick Meerkat |
10.10 |
利用chroot可以在不同的终端同时运行不同版本的Ubuntu。问题:如何实现?
虚拟软件包
定义:具有相近功能的软件组成。安装其中任意一个就能完成指定的功能。如:exim/exim4/postfix/sendmail就属于一个虚拟软件包mail-transport-agent(邮件传输代理)。
利用update-alternatives 指定虚拟软件包中的首选软件。 问题:试一下!
如何阻止软件包升级
(step1) dpkg --get-selections \* > selections.txt
(step2) 编辑selections.txt,如:libc6 install -> libc6 hold
(step3) dpkg --set-selections < selections.txt
或者:
echolibc6 hold | dpkg --set-selections
或者:
利用dselect。 问题:试一下!
APT工具 (the Advanced Packaging Tool)
· apt-get
· apt-cache
· apt-cdrom
APT还是dselect和aptitude的后台程序。
Ø 下面几条命令的区别。s
· apt-get update |
更新源里的软件包信息到本机 |
· apt-get upgrade |
只升级那些有更新版本的软件包,但只获取Depends类型的软件包,忽略 Recommends和Suggests的软件包。 |
· apt-get dist-upgrade |
对整个系统升级 |
dselect的用法
内核升级后会出现两个内核,可以用下面的命令去删除老的那个
dpkg--purge --force-remove-essential linux-image-2.6.35-22-generic-pae
创建文件系统的方案
邮件服务器与网页服务器的/home和/var应该要有比较多的空间。
而日志服务器则要让/var和/var/log有足够的空间。
<原则>
² 保持一个小的root文件系统(/),将目录树的其余部分分散到其他分区。root文件系统受损的机会与其容量成正比,小型root文件系统比较不容易受损。
² 将/boot文件系统独立于一个小分区,而且该分区的位置一定要在1024-cylinder之前。
² 将/var独立出来。给它可容纳日志文件的足够空间,但不宜过多。日志文件轮替机制(rotation)会尽量保持所有文件的大小在合理范围内,并自动删掉过期的日志文件。独立的/var文件系统可避免轮替机制意外失效时,成长过量的日志文件排挤了系统其余部分所需的磁盘空间。
² 将/tmp独立出来。其容量依应用程序实际需求而定,一般而言,它应该要足以容纳所有用户同时活动时所产生出来的全部临时文件。
² 将/usr独立出来。其容量要大到足以应付重编译内核的需求。独立的/usr使得其他工作站可透过read-only NFS共享此文件系统。
² 在多人使用的系统中将/home独立出来。如果用量庞大,应该将它放在一个磁盘阵列子系统。
² 换空间至少是主存储器容量的两倍大。如果主存储器容量不大(少于64MB),则应该让交换空间有三倍或四倍于主存储器的容量。
Linux规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda1、hda2、hda3、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。因此,Linux 下面每一个硬盘总共最多有 16 个分区。
很多时候,如果你使用了ubuntu光盘自带的安装工具分区,会出现很多问题。如果遇到问题过不去,推荐两个办法:
1 在live CD的环境中,在终端下直接用sudo fdisk /dev/xxx来分区,然后w保存后reboot,之后再进安装工具,手工编辑注册表时它认得的就是你编辑的分区表,不用修改直接下一步即可。 (如何实现)
2 你也可以同样用livecd的fdisk分好区后,用光盘上的livecd installer程序,在命令行下安装。不过这个安装程序只需要你挂载/和swap。那么其他分区怎么办呢?可以先在分好,也可以安装完系统再分。如果将其他分区挂载到希望的目录下?举个例子。如果你想把/ home/user挂载到新的sda8分区下,可以这样做:
首先,将/dev/sda8 mount到 /mnt/sda8中。如果没有这个目录就自己mkdir。
然后,cp -R /home/user/* /mnt/sda8/user,和cp -R /home/user/.* /mnt/sda8/user
最后修改/etc/fstab,增加一行/dev/sda8 /home ext3 defaults 0 2(参数自己确定)即可。
1) 扩展硬盘,然后将某个目录挂载过去。
2) 重装系统后,再挂载home/和usr/目录。
3) 安装系统后,如何手工分区。指更细致地分区。
增加一块硬盘的方案
增加一块硬盘1.5 G,并把/home/挂过去。
在vmware中添加了一块硬盘后,用fdisk –l查看。
root@patrick:~# fdisk -l
Disk /dev/sda: 19.3 GB, 19327352832 bytes
255 heads, 63 sectors/track, 2349 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: 0x000a2169
Device Boot Start End Blocks Id System
/dev/sda1 * 1 16 123904 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 16 259 1952768 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3 259 502 1952768 82 Linux swap / Solaris
Partition 3 does not end on cylinder boundary.
/dev/sda4 502 2083 12694529 5 Extended
/dev/sda5 502 989 3905536 83 Linux
/dev/sda6 989 1110 975872 83 Linux
/dev/sda7 1110 2083 7811072 83 Linux
Disk /dev/sdb: 1610 MB, 1610612736 bytes
255 heads, 63 sectors/track, 195 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: 0x00000000
Disk /dev/sdb doesn't contain a valid partition table
使用fdisk/dev/sdb创建新的分区
我创建一个大小为1G的ext3分区。
注意指定最后一个柱面时,可以输入分区的大小,前面别忘输入+号,如:+1G。
root@patrick:~# fdisk -l
Disk /dev/sda: 19.3 GB, 19327352832 bytes
255 heads, 63 sectors/track, 2349 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: 0x000a2169
Device Boot Start End Blocks Id System
/dev/sda1 * 1 16 123904 83 Linux
Partition 1 does not end on cylinder boundary.
/dev/sda2 16 259 1952768 83 Linux
Partition 2 does not end on cylinder boundary.
/dev/sda3 259 502 1952768 82 Linux swap / Solaris
Partition 3 does not end on cylinder boundary.
/dev/sda4 502 2083 12694529 5 Extended
/dev/sda5 502 989 3905536 83 Linux
/dev/sda6 989 1110 975872 83 Linux
/dev/sda7 1110 2083 7811072 83 Linux
Disk /dev/sdb: 1610 MB, 1610612736 bytes
255 heads, 63 sectors/track, 195 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: 0x23a64b04
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 83 Linux
别忘了格式化,使用命令mkfs.ext3/dev/sdb1。
下面把home/挂载(mount)到/dev/sdb1上。
Step1) mount /dev/sdb1 /mnt/sdb1 (事先创建目录/mnt/sdb1)
Step2) 这里就有个如何拷贝home/下面所有东西到/mnt/sdb1/中的问题。
# cd /home
#find . -depth -print0 | afio -p -xv -0a /mnt/sdb1
Step3) umount /home
Step4) mount/dev/sdb1 /home
Step5) 修改/etc/fstab,加入:
#/home was remounted on /dev/sdb1
/dev/sdb1 /home ext3 defaults 0 2
注意一个问题,我硬盘在sdb上用剩余空间创建了另一个分区/dev/sdb2。fdisk命令退出时,显示这样的信息。
Disk /dev/sdb: 1610 MB, 1610612736 bytes
255 heads, 63 sectors/track, 195 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: 0x23a64b04
Device Boot Start End Blocks Id System
/dev/sdb1 1 132 1060258+ 83 Linux
/dev/sdb2 133 195 506047+ 83 Linux
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 usedat
the next reboot or after you run partprobe(8) or kpartx(8)
Syncing disks.
root@patrick:/home/patrick# partprobe
Warning: Unable to open /dev/sr0 read-write (Read-only filesystem). /dev/sr0 has been openedread-only.
这里使用了命令partprobe来刷新硬盘的分区表。
/var无法umount。直接挂载/var/log。
Step1) mount /dev/sdb2 /mnt/sdb2
Step2) cd /var/log && find . –depth –print0| afio –p –xv -0a /mnt/sdb2
Step3) mount /dev/sdb2 /var/log
Step4) root@patrick:~# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda7 ext4 7.4G 2.0G 5.1G 28% /
none devtmpfs 1001M 240K 1001M 1% /dev
none tmpfs 1007M 0 1007M 0% /dev/shm
none tmpfs 1007M 84K 1007M 1% /var/run
none tmpfs 1007M 0 1007M 0% /var/lock
/dev/sr0 iso9660 628M 628M 0 100% /mnt/cdrom
/dev/sda6 ext4 938M 18M 874M 2% /tmp
/dev/sda1 ext4 118M 27M 85M 24% /boot
/dev/sda2 ext4 1.9G 36M 1.8G 3% /home
/dev/sda5 ext4 3.7G 364M 3.2G 11% /var
/dev/sdb2 ext4 479M 33M 422M 8% /var/log
如何验证?
# lsof /dev/sdb2
备份的方式
当然可以先检查一下备份/boot需要多少的磁盘空间。
$ sudo dump –S/boot
备份整个文件系统
1) $ cd /boot
$ sudo dump -0u –f/mnt/backup/dumpfiles/boot.dump /boot
Level=0: 完整备份
2) $ sudo dd if=/dev/zero of=./test.img bs=1M count=10
3) $ sudo dump -1u –f /mnt/backup/dumpfiles/boot.dump.1/boot
Level=1: 差异备份
4) patrick@patrick:/boot$cat /var/lib/dumpdates
/dev/sda1 0 ThuJul 7 12:04:18 2011 +0800
/dev/sda1 1 ThuJul 7 12:12:25 2011 +0800
开始恢复。
1) 查看一下备份文件内的文件
$ cd/mnt/backup/dumpfiles
$ restore –t –f boot.dump
还可以查看dump操作的基本信息,如:何时做的备份、备份的目标和Level。
2)还可以比较已备份的文件与现有文件的差异
$ cd /boot
$ mvvmlinuz-2.6.35-22-generic-pae vmlinuz-2.6.35-22-generic-pae.backup
$ patrick@patrick:/boot$restore -C -f /mnt/backup/dumpfiles/boot.dump /boot
Dump date: Thu Jul 7 12:04:18 2011
Dumped from: theepoch
Level 0 dump of/boot on patrick:/dev/sda1
Label: none
filesys = /boot
restore: unable tostat ./vmlinuz-2.6.35-22-generic-pae: No such file or directory
Some files weremodified! 1 compare errors
3) 恢复备份文件中的文件
$cd /mnt/backup
$ sudo restore –r –fdumpfiles/boot.dump
restore:./lost+found: File exists
$ sudo restore –r –fdumpfiles/boot.dump.1
备份单个目录/etc
$ dump -0j -fetc.dump.bz2 /etc
用交互方式恢复部分已备份的文件
$ cd/mnt/backup/etcrestore
$ sudo restore –i –f../dumpfiles/etc.dump.bz2 -- 压缩过的文件照样可以
先把需要解压缩的文件加入解压缩列表,然后键入extract。
查看inode的使用情况
df –i
软体磁盘阵列
RAID:Redundant Arrays of InexpensiveDisks 容错式廉价磁盘阵列
RAID-0 等量模式
在组成RAID-0时,每颗磁碟(Disk A与Disk B)都会先被分隔成小区块(chunk)。当有资料写入RAID时,资料会被先被切割成符合小区块的大小,然后依次一块一块地放置到不同的磁碟中。最终,DiskA和DiskB各存放了一半的数据。
RAID-0 中的资料没有备份。所以RAID-0只要有任意一颗磁碟损毁,在RAID上面的所有资料都会损失而无法读取。
RAID-1 映射模式
同一份资料被完整地保存在两颗磁碟上面。如果是不同容量的磁盘组成RAID-1时,那么总容量将以最小的那颗磁碟为主。
这种模式的写入效率会很差。在使用硬件RAID时,磁碟阵列卡会主动复制一份而不使用系统的IO做分配,效能方面会还可以。如果使用软件RAID,可能效能就不好了。但是,RAID-1的读取效率很好。
RAID-5 效能与资料备份的均衡方案
RAID-5至少需要三颗以上的磁碟才能组成RAID-5。RAID-5的资料写入有点类似RAID-0,不过每个循环的写入过程中,在每个磁碟还加入一个同位检查资料(Parity),这个资料会记录其他磁碟的备份资料,用于当有磁碟损毁时的救援。
每個循環寫入時,都會有部分的同位檢查碼 (parity) 被記錄起來,並且記錄的同位檢查碼每次都記錄在不同的磁碟, 因此,任何一個磁碟損毀時都能夠藉由其他磁碟的檢查碼來重建原本磁碟內的資料喔!不過需要注意的是, 由於有同位檢查碼,因此 RAID 5 的總容量會是整體磁碟數量減一顆。原本的 3 顆磁碟只會剩下 (3-1)=2 顆磁碟的容量。而且當損毀的磁碟數量大於等於兩顆時,這整組RAID 5 的資料就損毀了。 因為 RAID 5 預設僅能支援一顆磁碟的損毀情況。
实验
新增一块硬盘/dev/sdb,然后分成5个区。
Device Boot Start End Blocks Id System
/dev/sdb1 1 783 6289416 5 Extended
/dev/sdb5 1 132 1060227 83 Linux
/dev/sdb6 133 264 1060258+ 83 Linux
/dev/sdb7 265 396 1060258+ 83 Linux
/dev/sdb8 397 528 1060258+ 83 Linux
/dev/sdb9 529 660 1060258+ 83 Linux
然后建立了一个Level=5的soft RAID。
$ sudo mdadm - - create - - auto=yes /dev/md0 - - level=5 - - raid-devices=4
- - spare-devices=1 /dev/sdb{5,6,7,8,9}
$sudo mdadm - - detail /dev/md0
$ cat /proc/mdstat
Personalities :[raid6] [raid5] [raid4]
md0 : active raid5 sdb8[3] sdb9[4](S) sdb7[2] sdb6[1] sdb5[0]
3180480 blocks level 5, 64k chunk,algorithm 2 [4/4] [UUUU]
unused devices:<none>
格式化/dev/md0。
$ sudo mkfs –t ext4 /dev/md0
$sudo mkdir /mnt/raid
$ sudo mount /dev/md0 /mnt/raid
设置一块磁碟为错误的状态。
$ cd /mnt/raid
$ sudo tar –cv –f - /etc /var/log | tar –xv–f –
$ sudo mdadm - -manage /dev/md0 --fail/dev/sdb8
$ sudo mdadm - -detail /dev/md0
……
Number Major Minor RaidDevice State
0 8 21 0 active sync /dev/sdb5
1 8 22 1 active sync /dev/sdb6
2 8 23 2 active sync /dev/sdb7
3 8 25 3 active sync /dev/sdb9
4 8 24 - faulty spare /dev/sdb8
/dev/md0重启后不见了(补救方法:sudomdadm --stop /dev/md_d0,然后重新创建一个/dev/md0,数据不会丢失)。需要修改/etc/mdadm/mdadm.conf,加入如下一行。
ARRAY /dev/md0UUID=b29e5762:9c51ebc2:3e35b7cb:f33e956d
然后编辑/etc/fstab,加入下面一行。
/dev/md0 /mnt/raid ext4 defaults 0 2
$ sudo umount /dev/md0; sudo mount –a
LVM
扩展LVM(逻辑卷)
<扩展前的状态>
(1)
patrick@patrick:~$ sudo lvdisplay
---Logical volume ---
LVName /dev/vbirdvg/vbirdlv
VGName vbirdvg
LVUUID 2pR15U-lC2X-gSQN-ZvAk-VfF7-J0lE-n1HuZU
LVWrite Access read/write
LVStatus available
#open 1
LVSize 5.56 GiB
Current LE 356
Segments 4
Allocation inherit
Read ahead sectors auto
-currently set to 256
Block device 251:0
(2)
patrick@patrick:~$ df /mnt/lvm
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/mapper/vbirdvg-vbirdlv
5741020 153316 5296072 3% /mnt/lvm
我们看经过如下操作后,这些数值(红色)将如何变化。
(step 1) 增加一个分区:/dev/sdc9
patrick@patrick:~$ sudo fdisk /dev/sdc
patrick@patrick:~$ sudo partprobe
(step 2) 建物理卷(PV)
patrick@patrick:~$ sudo pvcreate /dev/sdc9
patrick@patrick:~$ sudo pvscan
PV/dev/sdc5 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV/dev/sdc6 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV/dev/sdc7 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV/dev/sdc8 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV/dev/sdc9 lvm2 [1.01GiB]
Total: 5 [6.57 GiB] / in use: 4 [5.56 GiB] / in no VG: 1 [1.01 GiB]
(step 3) 扩展逻辑组(vg)
patrick@patrick:~$ sudo vgextend vbirdvg/dev/sdc9
Volume group "vbirdvg" successfully extended
patrick@patrick:~$ sudo vgdisplay
--- 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
VGSize 6.56 GiB
PE Size 16.00 MiB
Total PE 420
Alloc PE / Size 356 / 5.56 GiB -- 356块PE已经分配给了vbirdlv
Free PE / Size 64 / 1.00 GiB -- 还有64块PE是空闲的(Free)
VG UUID UDbB4P-HxGz-lsIe-P3c6-nHG0-bS0e-wzha1S
(step 4) 扩展逻辑卷(lv)
patrick@patrick:~$ sudo lvresize -l +64/dev/vbirdvg/vbirdlv
Extending logical volume vbirdlv to 6.56 GiB
Logical volume vbirdlvsuccessfully resized
patrick@patrick:~$ sudo vgdisplay
--- Volume group ---
VG Name vbirdvg
System ID
Format lvm2
Metadata Areas 5
Metadata Sequence No 5
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 6.56 GiB
PE Size 16.00 MiB
Total PE 420
Alloc PE / Size 420 / 6.56 GiB
Free PE / Size 0 / 0
VG UUID UDbB4P-HxGz-lsIe-P3c6-nHG0-bS0e-wzha1S
patrick@patrick:~$ sudo lvdisplay
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdlv
VG Name vbirdvg
LV UUID 2pR15U-lC2X-gSQN-ZvAk-VfF7-J0lE-n1HuZU
LV Write Access read/write
LV Status available
# open 1
LV Size 6.56 GiB
Current LE 420
Segments 5
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:0
patrick@patrick:~$ sudo df /mnt/lvm
Filesystem 1K-blocks Used Available Use%Mounted on
/dev/mapper/vbirdvg-vbirdlv
5741020 153316 5296072 3% /mnt/lvm
关键问题是现在文件系统的大小并没有改变,仍然是5.6G。进入下一步。
(step 5) 改变文件系统的大小
查看一下文件系统的superblock的记录。
patrick@patrick:~$ sudo dumpe2fs/dev/vbirdvg/vbirdlv
……
Filesystem OS type: Linux
Inode count: 365040
Block count: 1458176
Reserved block count: 72908
Free blocks: 1396926
Free inodes: 363644
First block: 0
Block size: 4096 -- 这个并不是我们所说的PE
……
patrick@patrick:~$ sudo resize2fs /dev/vbirdvg/vbirdlv
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-lineresizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vbirdvg/vbirdlv to 1720320 (4k)blocks.
The filesystem on /dev/vbirdvg/vbirdlv is now 1720320 blocks long.
patrick@patrick:~$ sudo df /mnt/lvm
Filesystem 1K-blocks Used Available Use%Mounted on
/dev/mapper/vbirdvg-vbirdlv
6773300 154736 6277792 3% /mnt/lvm
到这里文件系统的大小才改变。
patrick@patrick:/mnt/lvm/etc$ sudo dumpe2fs/dev/vbirdvg/vbirdlv
dumpe2fs 1.41.12 (17-May-2010)
……
Inode count: 429936
Block count: 1720320 -- 之前是1458176
Reserved block count: 85193
Free blocks: 1396926
Free inodes: 363644
First block: 0
Block size: 4096
减小逻辑卷(LV)
patrick@patrick:/mnt/lvm/etc$ sudopvdisplay
……
--- Physical volume ---
PV Name /dev/sdc6
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 89
Free PE 0
Allocated PE 89
PV UUID dwoPTY-iiwE-VBgP-iCtz-tEPb-9O0I-trhYvM
……
我们想把这个分区抽出来。
patrick@patrick:/mnt/lvm/etc$ sudo pvscan
PV /dev/sdc5 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc6 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc7 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc8 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc9 VG vbirdvg lvm2 [1.00 GiB / 0 free]
Total: 5 [6.56 GiB] / in use: 5[6.56 GiB] / in no VG: 0 [0 ]
所以,缩小后的vbirdlv的大小应该是:1.39*3+1=5.17G。就5.1G好了。(反正数据大小远小于5.1G)。保留的大小不能大于5.17G,否则这个分区就抽不出来了。
patrick@patrick:/mnt/lvm/etc$ sudoresize2fs /dev/vbirdvg/vbirdlv 5100M
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vbirdvg/vbirdlv is mounted on /mnt/lvm; on-lineresizing required
On-line shrinking from 1720320 to 1305600 not supported.
可见,在线时无法改变。
patrick@patrick:/mnt$ sudo umount /mnt/lvm
patrick@patrick:/mnt$ sudo resize2fs /dev/vbirdvg/vbirdlv5100M
resize2fs 1.41.12 (17-May-2010)
Please run 'e2fsck -f /dev/vbirdvg/vbirdlv' first.
patrick@patrick:/mnt$ sudo e2fsck -f /dev/vbirdvg/vbirdlv
e2fsck 1.41.12 (17-May-2010)
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: 1396/429936 files (0.1% non-contiguous),65679/1720320 blocks
patrick@patrick:/mnt$ sudo resize2fs /dev/vbirdvg/vbirdlv 5100M
patrick@patrick:/mnt$ sudo mount -a
patrick@patrick:/mnt$ df /mnt/lvm
Filesystem 1K-blocks Used Available Use%Mounted on
/dev/mapper/vbirdvg-vbirdlv
5140896 153316 4728960 4% /mnt/lvm -- 之前为:6773300
文件系统的大小确实变小了。
但是LV的大小做没有相应的改变。
patrick@patrick:/mnt$ sudo lvdisplay
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdlv
VG Name vbirdvg
LV UUID 2pR15U-lC2X-gSQN-ZvAk-VfF7-J0lE-n1HuZU
LV Write Access read/write
LV Status available
# open 1
LV Size 6.56 GiB -- 我们要把它变成5.1G
Current LE 420
Segments 5
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:0
第一步:
patrick@patrick:/mnt$ sudo lvresize -l -89 /dev/vbirdvg/vbirdlv
WARNING: Reducing active andopen logical volume to 5.17 GiB
THIS MAY DESTROY YOUR DATA(filesystem etc.)
Do you really want to reduce vbirdlv? [y/n]: y
Reducing logical volume vbirdlvto 5.17 GiB
Logical volume vbirdlvsuccessfully resized
patrick@patrick:/mnt$ sudo lvdisplay
--- Logical volume ---
LV Name /dev/vbirdvg/vbirdlv
VG Name vbirdvg
LV UUID 2pR15U-lC2X-gSQN-ZvAk-VfF7-J0lE-n1HuZU
LV Write Access read/write
LV Status available
# open 1
LV Size 5.17 GiB
Current LE 331
Segments 4
Allocation inherit
Read ahead sectors auto
- currently set to 256
Block device 251:0
第二步:将/dev/sdc6移出VG
patrick@patrick:/mnt$ sudo pvdisplay
--- Physical volume ---
PV Name /dev/sdc5
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.43 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 89
Free PE 0
Allocated PE 89
PV UUID 5m9leM-X0Ge-55BR-ByOV-HEBH-SHoO-wbF5o0
--- Physical volume ---
PV Name /dev/sdc6
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 89
Free PE 0
Allocated PE 89
PV UUID dwoPTY-iiwE-VBgP-iCtz-tEPb-9O0I-trhYvM
--- Physical volume ---
PV Name /dev/sdc7
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 89
Free PE 0
Allocated PE 89
PV UUID cqXbxX-Zo1D-1Z8N-XD35-G51t-NYWZ-KQIAq6
--- Physical volume ---
PV Name /dev/sdc8
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 89
Free PE 25
Allocated PE 64
PV UUID Hi3cpG-pps0-9xG5-vJ05-o5k6-v7yg-5u8Ivc
--- Physical volume ---
PV Name /dev/sdc9
VG Name vbirdvg
PV Size 1.01 GiB / not usable 11.41 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 64
Free PE 64
Allocated PE 0
PV UUID rjzRfo-sIV0-P9V7-y0lB-zWD8-IFjI-pPseUL
从上面的输出可以看出,/dev/sdc8和/dev/sdc9中各有25和64的空闲块(PE)。
试着将/dev/sdc6的PE移动到/dev/sdc8和/dev/sdc9。
patrick@patrick:/mnt$ sudo pvmove /dev/sdc6 /dev/sdc8 /dev/sdc9
patrick@patrick:/mnt$ sudo pvdisplay
……
--- Physical volume ---
PV Name /dev/sdc6
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes
PE Size 16.00 MiB
Total PE 89
Free PE 89
Allocated PE 0
PV UUID dwoPTY-iiwE-VBgP-iCtz-tEPb-9O0I-trhYvM
……
--- Physical volume ---
PV Name /dev/sdc8
VG Name vbirdvg
PV Size 1.40 GiB / not usable 11.46 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 89
Free PE 0
Allocated PE 89
PV UUID Hi3cpG-pps0-9xG5-vJ05-o5k6-v7yg-5u8Ivc
--- Physical volume ---
PV Name /dev/sdc9
VG Name vbirdvg
PV Size 1.01 GiB / not usable 11.41 MiB
Allocatable yes (but full)
PE Size 16.00 MiB
Total PE 64
Free PE 0
Allocated PE 64
PV UUID rjzRfo-sIV0-P9V7-y0lB-zWD8-IFjI-pPseUL
patrick@patrick:/mnt$ sudo vgreduce vbirdvg /dev/sdc6
Removed "/dev/sdc6" from volume group "vbirdvg"
把PV(/dev/sdc6)从VG(vbirdvg)中拿出来。
第三步,将PV(/dev/sdc6)删除
patrick@patrick:/mnt$ sudo pvremove /dev/sdc6
Labels on physical volume"/dev/sdc6" successfully wiped
patrick@patrick:/mnt$ sudo pvscan
PV /dev/sdc5 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc7 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc8 VG vbirdvg lvm2 [1.39 GiB / 0 free]
PV /dev/sdc9 VG vbirdvg lvm2 [1.00 GiB / 0 free]
Total: 4 [5.17 GiB] / in use: 4[5.17 GiB] / in no VG: 0 [0 ]
安装Apache2
上次安装apache时,将三个MPM(Multi-Processing Module)都安装上去了。这次我们只安装apache2-mpm-woker。
patrick@patrick:/etc/cron.daily$sudo aptitude installapache2
The following NEWpackages will be installed:
apache2 apache2-mpm-worker{a}apache2-utils{a} apache2.2-bin{a} apache2.2-common{a} libapr1{a} libaprutil1{a}libaprutil1-dbd-sqlite3{a} libaprutil1-ldap{a}
0 packagesupgraded, 9 newly installed, 0 to remove and 90 not upgraded.
Need to get 3,289kBof archives. After unpacking 10.1MB will be used.
Do you want tocontinue? [Y/n/?] y
。。。。。。
建立一个虚拟主机
1) 在/etc/apache2/sites-available/中建立一个配置文件,如blog.mytest.com。这个文件定义了DocumentRoot(网站的根目录),还有日志文件的路径。
2) 执行下面的命令
$sudo a2dissite default && sudo a2ensite blog.mytest.com
$sudo /etc/init.d/apache2 restart
3) 在/etc/apache2/sites-enable/中,连接文件自动指向:../sites-available/blog.mytest.com。
patrick@patrick:/etc/apache2/sites-enabled$ls -l
total 0
lrwxrwxrwx 1 root root 342011-07-17 14:54 blog.mytest.com -> ../sites-available/blog.mytest.com