還是把鏈接貼一下:Storage Administration Guide,Logical Volume Manager Administration
當然翻譯的不是很好,補充幾點,這裏將做幾個實驗把,fdisk這個工具的使用,raid,lvm等的用法,內容比較多,希望大家能耐心的看完! 來先看一下實驗環境,一臺RHEL6.2的虛擬機子,添加了四塊1GB的ide硬盤,有圖有真相。
我們按照上頭的順序從ext3開始講吧。
ext3 日誌文件系統
1 | 用fdisk 進行分區 |
2 | 格式化文件系統 |
3 | 打標籤 |
4 | 創建掛載點 |
5 | 加入開機啓動/etc/fstab |
[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
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
我們先就是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來獲取幫助
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來獲取幫助
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 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):
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):
Command (m for help): w
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
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/sda /dev/sda1 /dev/sda2 /dev/sda3 /dev/sda4
刪除分區也很簡單
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
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 ~]#
/dev/sda /dev/sda1 /dev/sda2 /dev/sda3
[root@kikupotter3 ~]#
分區完了,第二步就是格式化文件系統,紅色部分字體重點看一下哦!
[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.
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.
最後一個提示是問你要不要做一下 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.
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.
[root@kikupotter3 ~]# e2label /dev/sda1 kiku
其實blkid是很強大的能夠打印出本地塊設備的屬性,默認情況下可以打出所有,這裏只是用到一下部分的內容,/dev/disk/下存的信息就是blkid用的 。
[root@kikupotter3 ~]# blkid -L kiku
/dev/sda1
/dev/sda1
[root@kikupotter3 ~]# findfs LABEL=kiku
/dev/sda1
/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"
/dev/sda1: LABEL="kiku" UUID="b47853df-11b0-407e-aa2a-762f5b4fb36e" SEC_TYPE="ext2" TYPE="ext3"
LABEL=kiku /mpoint ext3 default 0 0
[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
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/秒
記錄了65536+0 的讀入
記錄了65536+0 的寫出
67108864字節(67 MB)已複製,0.254279 秒,264 MB/秒
[root@kikupotter3 ~]# mkswap -f /swapfile
Setting up swapspace version 1, size = 65532 KiB
no label, UUID=edf26f59-791d-4120-aa7c-9bc269577b86
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
vim /etc/fstab //添加
/swapfile swap swap defaults 0 0
[root@kikupotter3 etc]# cat /proc/swaps
Filename Type Size Used Priority
/dev/dm-1 partition 2064376 0 -1
/swapfile file 65528 0 -2
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
/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
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)
Selected partition 1
Hex code (type L to list codes): fd
Changed system type of partition 1 to fd (Linux raid autodetect)
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
/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
[root@kikupotter3 ~]# cat /proc/mdstat
Personalities :
unused devices: <none>
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看一次。
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.
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
brw-rw----. 1 root disk 9, 0 11月 1 06:42 /dev/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 ~]# 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
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 create
Physical volume "/dev/sda5" successfully create
[root@localhost ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a- 509.84m 509.84m
PV VG Fmt Attr PSize PFree
/dev/sda5 lvm2 a- 509.84m 509.84m
[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]
PV /dev/sda5 lvm2 [509.84 MiB]
Total: 1 [509.84 MiB] / in use: 0 [0 ] / in no VG: 1 [509.84 MiB]
[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
"/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
Volume group "kiku" successfully created
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 extended
No physical volume label read from /dev/sda6
Physical volume "/dev/sda6" successfully created
Volume group "kiku" successfully extended
[root@localhost ~]# vgs
VG #PV #LV #SN Attr VSize VFree
kiku 1 0 0 wz--n- 508.00m 508.00m
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 lvm2
Reading all physical volumes. This may take a while...
Found volume group "kiku" using metadata type lvm2
[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
--- 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
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
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.
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.
[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
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
/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
[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
/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
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
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
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
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的在線操作!
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.
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
日誌提示已經成功咯!
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
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
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
希望看的朋友多留些建議。謝謝,先去睡覺了哦!