1. Linux磁盘管理
磁盘作为计算机系统最重要的设备,操作系统、数据等等都要存储在其中,因为磁盘管理的好坏对整个系统至关重要。Linux系统下将磁盘作为一个文件管理,放置在/dev目录下。
磁盘是块设备:block ,存取单位“块”。
磁盘设备的设备文件命名:/dev/DEV_FILE
不同磁盘标识:a-z,aa,ab…例如/dev/sda, /dev/sdb, ... /dev/sdaa,/dev/sdab...
同一设备上的不同分区:1,2, .../dev/sda1, /dev/sda5
① 设备识别
在liunx系统要能看到这个磁盘设备,才能进行下一步操作。fdsik -l
② 设备分区
在识别后使用fdisk或者其他分区工具。分区后可以创建PV、VG和LV
当然标准分区可以不创建PV,也可以不进行分区,直接整块磁盘进行格式化。(暂未找到这样操作对磁盘是否有影响。
③ 文件系统类型格式化
mfs.ext4(ext3,2,ext4dev)格式化成应的系统格式
格式化
④ 在/etc/fstab 文件中创建条目
在fstab中写入,系统启动时添加分区和文件系统挂载条目。
挂载分区(设备) 文件挂载点 分区格式(文件系统类型)挂载选项 dump和fsck
defaults: 所有选项全部使用默认配置,包括rw, suid, dev, exec, auto, nouser, 和 async
fstab的第五列是表示dump选项,dump工具通过这个选项位置上的数字来决定文件系统是否需要备份。如果是0,dump就会被忽略,事实上,大多数的dump设置都是0。而第六列是fsck选项,fsck命令通过检测该字段来决定文件系统通过什么顺序来扫描检查,根文件系统/对应该字段的值应该为1,其他文件系统应该为2。若文件系统无需在启动时扫描检查,则设置该字段为0。
uuid是设备唯一标识符,在多块磁盘时候磁盘顺序可能会在启动时变化,可以考虑使用uuid识别。
fstab
如果不重启系统,可以使用mount –a
⑤ mount 挂载新的文件系统
mount临时手动挂载文件系统 mount /dev/sda1 /home/test
详细使用可以参考mount
2. Linux磁盘挂载(标准分区)
关于磁盘分区可以分为系统安装和安装后两种情况。这里主要讨论系统安装后新加的磁盘如何分区?分为以下几步:
1.)查看现有磁盘情况
df –hT看到现有磁盘使用情况
查看文件系统情况
fdisk –l 可以查看到系统中识别磁盘和分区情况
磁盘识别和分区
2.)磁盘分区
[zkml@test ~]$ sudo fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel with disk identifier 0x3771e93c.
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 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
x extra functionality (experts only)
Command (m for help): n #新建
Command action
e extended
p primary partition (1-4)
p #主分区
Partition number (1-4): 1 #第一个分区
First cylinder (1-2610, default 1): #磁盘开始位置
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): #可以填写+10G分区大小
Using default value 2610
Command (m for help): t #可以修改分区系统类型ID 83标准分区 8e lvm分区。默认标准分区可以不操作
Selected partition 1
Hex code (type L to list codes):
Hex code (type L to list codes): 83
Command (m for help): w #保存分区信息
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
以上就是分区后并保存分区信息的情况,有的会在最后看到reboot字样需要重启分区表才能生效。如果不重启可以执行partprobe,重新读取分区。
如果是整块磁盘用来做一个完整的使用,也可以不分区,跳过这一步直接格式化。
分区情况
如果直接格式化使用fdisk –l 看不到分区情况的。
3.)磁盘格式化
格式化命令
使用对应的格式化命令格式化。如果不格式化挂载报错
未格式化
[zkml@test ~]$ mkfs.ext4 /dev/sdb1 ##格式化
mke2fs 1.41.12 (17-May-2010)
mkfs.ext4: 权限不够 while trying to determine filesystem size
[zkml@test ~]$ sudo mkfs.ext4 /dev/sdb1
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
1310720 inodes, 5241198 blocks
262059 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
160 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 20 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
4.)磁盘挂载
格式化和故障
[zkml@test ~]$ sudo mount /dev/sdb1 /home/test1
[zkml@test ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root 18G 3.0G 14G 19% /
tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sdb1 20G 172M 19G 1% /home/test1
格式化后可以直接使用mount进行挂载,此时挂载只是临时性,如果重启会丢失。
5.)fstab创建条目,保证系统重启磁盘挂载生效
#
# /etc/fstab
# Created by anaconda on Thu May 17 10:59:52 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/vg_test-lv_root / ext4 defaults 1 1
UUID=105e32e6-52c8-412d-8db7-55408556c842 /boot ext4 defaults 1 2
/dev/mapper/vg_test-lv_swap swap swap defaults 0 0
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
关于每个参数含义参考上文。这里建议使用uuid
fstab
如果省略第4步,直接编辑fstab 不重启情况下可以使用
mount –a
6.)分区删除
查看分区情况后,先取消挂载,在删除分区,再删除fstab条目
[zkml@test ~]$ umount /dev/sdb1 #卸载挂载文件 权限问题
umount: only root can unmount UUID=fb936972-48e1-4114-a0e1-32c2fa2478ba from /home/test1
[zkml@test ~]$ sudo umount /dev/sdb1
[zkml@test ~]$ fdisk /dev/sdb #管理分区
Unable to open /dev/sdb
[zkml@test ~]$ sudo fdisk /dev/sdb
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 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
x extra functionality (experts only)
Command (m for help): d #删除分区,因为此硬盘只有一个分区直接删除
Selected partition 1
Command (m for help): w #保存分区修改情况
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
[zkml@test ~]$ sudo fdisk -l
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x3771e93c
Device Boot Start End Blocks Id System
[zkml@test ~]$ sudo vi /etc/fstab #删除fstab中条目
[zkml@test ~]$ sudo mount -a #fstab生效
[zkml@test ~]$ sudo fdisk -l
Disk /dev/sdb: 21.5 GB, 21474836480 bytes
255 heads, 63 sectors/track, 2610 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: 0x3771e93c
Device Boot Start End Blocks Id System
3. Linux磁盘挂载(LVM)
3.1 磁盘挂载
操作步骤查看磁盘情况和标准分区一样。在磁盘分区步骤中,修改如下地方。
Command (m for help): t #可以修改分区系统类型ID 83标准分区 8e lvm分区。默认标准分区可以不操作
Selected partition 1
Hex code (type L to list codes):
Hex code (type L to list codes): 8e
LVM
-
创建PV
PV命令
[zkml@test ~]$ pv
pvchange pvck pvcreate pvdisplay pvmove pvremove pvresize pvs pvscan
新建/dev/sdb1 /dev/sdb1 /dev/sdb2 /dev/sdb3
[zkml@test ~]$ sudo pvcreate /dev/sdb /dev/sdb1 /dev/sdb2 /dev/sdb3
Device /dev/sdb not found (or ignored by filtering). #当对sdb磁盘分区后不再单独作为一个分区。
Physical volume "/dev/sdb1" successfully created
Physical volume "/dev/sdb2" successfully created
Physical volume "/dev/sdb3" successfully created
[zkml@test ~]$ sudo pvs #查看PV情况 简化的 可以使用pvdisplay查看完整的
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_test lvm2 a-- 19.51g 0
/dev/sdb1 lvm2 a-- 5.01g 5.01g
/dev/sdb2 lvm2 a-- 10.00g 10.00g
/dev/sdb3 lvm2 a-- 4.98g 4.98g
pvdisplay
pvcreate
当对sdb重新分区后,可以看到sdb的pv还是存在。当我们重新构建pv后不再存在
- 创建VG
[zkml@test ~]$ vg #查看vg一些命令
vgcfgbackup vgck vgdisplay vgimport vgmknodes vgrename vgsplit
vgcfgrestore vgconvert vgexport vgimportclone vgreduce vgs
vgchange vgcreate vgextend vgmerge vgremove vgscan
[zkml@test ~]$ sudo vgs #查看vg情况
VG #PV #LV #SN Attr VSize VFree
vg_test 1 2 0 wz--n- 19.51g 0
[zkml@test ~]$ sudo vgcreate vg0 /dev/sdb1 /dev/sdb2 #创建vg0
Volume group "vg0" successfully created
[zkml@test ~]$ sudo vgs #查看备份vg情况
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 15.01g 15.01g
vg_test 1 2 0 wz--n- 19.51g 0
如果不创建VG,在pv上面直接格式化使用,那么和标准分区是一样的。
当多个物理卷组合成一个卷组后时,LVM会在所有的物理卷上做类似格式化的工作,将每个物理卷切成一块一块的空间,这一块一块的空间就称为PE(Physical Extent ),它的默认大小是4MB。
由于受内核限制的原因,一个逻辑卷(Logic Volume)最多只能包含65536个PE(Physical Extent),所以一个PE的大小就决定了逻辑卷的最大容量,4 MB 的PE决定了单个逻辑卷最大容量为 256 GB,若希望使用大于256G的逻辑卷,则创建卷组时需要指定更大的PE。在Red Hat Enterprise Linux AS 4中PE大小范围为8 KB 到 16GB,并且必须总是 2 的倍数。
vgcreate -s 16M lvm_vg /dev/sdb{5,6,7,8} 使用-s来指定PE大小16 M X 65536=1T
- 创建LV
[zkml@test ~]$ lv #和lv相关的命令
lvchange lvdisplay lvmchange lvmdump lvmsar lvrename lvscan
lvconvert lvextend lvmconf lvmetad lvreduce lvresize
lvcreate lvm lvmdiskscan lvmsadc lvremove lvs
[zkml@test ~]$ sudo lvcreate -L 12G -n date vg0 #创建lv
Logical volume "date" created
[zkml@test ~]$ sudo lvs #查看lv
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
date vg0 -wi-a----- 12.00g
lv_root vg_test -wi-ao---- 17.51g
lv_swap vg_test -wi-ao---- 2.00g
[zkml@test ~]$ sudo vgs #查看vg
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 15.01g 3.01g
vg_test 1 2 0 wz--n- 19.51g 0
格式化+挂载(修改fstab)跟标准分区相同
[zkml@test ~]$ sudo mkfs.ext4 /dev/vg0/date
[zkml@test ~]$ sudo mkdir /date
[zkml@test ~]$ sudo mount /dev/vg0/date /date/
[zkml@test ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root 18G 3.0G 14G 19% /
tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/mapper/vg0-date 12G 158M 12G 2% /date
同卷组一样,逻辑卷在创建的过程中也被分成了一块一块的空间,这些空间称为LE(Logical Extents),在同一个卷组中,LE的大小和PE是相同的,并且一一对应。
3.2 磁盘大小修改
为了验证磁盘大小修改不会影响到现有文件,创建测试文件:
[zkml@test ~]$ cd /date
[zkml@test date]$ sudo mkdir test
[zkml@test date]$ cd test/
[zkml@test test]$ ll
总用量 0
[zkml@test test]$ sudo touch test
[zkml@test test]$ ll
总用量 0
-rw-r--r-- 1 root root 0 8月 2 16:02 test
[zkml@test test]$ sudo vi test
3.2.1 增加分区的大小
1.)VG分区还有剩余空间
验证卷组大小vgs扩展逻辑卷lvextend扩展文件系统大小resize2fs
[zkml@test ~]$ sudo vgs #查看卷组大小是否还有剩余空间
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 15.01g 3.01g
vg_test 1 2 0 wz--n- 19.51g 0
[zkml@test ~]$ sudo lvextend -L +1G /dev/vg0/date #增加lv
Extending logical volume date to 13.00 GiB
Logical volume date successfully resized
[zkml@test ~]$ sudo vgs #查看卷组
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 15.01g 2.01g
vg_test 1 2 0 wz--n- 19.51g 0
[zkml@test ~]$ sudo lvs #查看lv
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
date vg0 -wi-ao---- 13.00g
lv_root vg_test -wi-ao---- 17.51g
lv_swap vg_test -wi-ao---- 2.00g
[zkml@test ~]$ df -Th #验证文件系统
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root ext4 18G 3.0G 14G 19% /
tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
/dev/mapper/vg0-date ext4 12G 158M 12G 2% /date
[zkml@test ~]$ sudo resize2fs /dev/vg0/date #增加文件系统
resize2fs 1.41.12 (17-May-2010)
Filesystem at /dev/vg0/date is mounted on /date; on-line resizing required
old desc_blocks = 1, new_desc_blocks = 1
Performing an on-line resize of /dev/vg0/date to 3407872 (4k) blocks.
The filesystem on /dev/vg0/date is now 3407872 blocks long.
[zkml@test ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root ext4 18G 3.0G 14G 19% /
tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
/dev/mapper/vg0-date ext4 13G 158M 12G 2% /date
sudo lvextend -l +100%FREE /dev/vg0/date
将vg0所有剩余都扩展到date中
2.)VG没有剩余空间,增加VG空间
验证卷大小vgs扩展VG大小(新的PV)vgextend
[zkml@test ~]$ sudo lvs
LV VG Attr LSize Pool Origin Data% Move Log Cpy%Sync Convert
date vg0 -wi-ao---- 15.01g
lv_root vg_test -wi-ao---- 17.51g
lv_swap vg_test -wi-ao---- 2.00g
[zkml@test ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 1 0 wz--n- 15.01g 0
vg_test 1 2 0 wz--n- 19.51g 0
[zkml@test ~]$ sudo vgextend vg0 /dev/sdb3
Volume group "vg0" successfully extended
[zkml@test ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 3 1 0 wz--n- 19.98g 4.98g
vg_test 1 2 0 wz--n- 19.51g 0
3.2.2 减小分区的大小(要注意减小时数据有可能出现丢失)
剩余的空间一定要大于已经使用的空间,否则会丢失,因此需要做好数据备份。格式化是操作一定要慎重
卸载文件系统umount检查文件系统fsck e2fsck减小文件系统 resize2fs减小逻辑卷(lv)lvreduce能减低卷组的大小吗?vgreduce待测试
[zkml@test ~]$ sudo umount /date/
[zkml@test ~]$ df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root ext4 18G 3.0G 14G 19% /
tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
[zkml@test ~]$ sudo resize2fs -p /dev/vg0/date 6G #这里是减少到6G
请先运行 'e2fsck -f /dev/vg0/date'. #需要检查文件系统
[zkml@test ~]$ sudo e2fsck -f /dev/vg0/date
e2fsck 1.41.12 (17-May-2010)
第一步: 检查inode,块,和大小
第二步: 检查目录结构
第3步: 检查目录连接性
Pass 4: Checking reference counts
第5步: 检查簇概要信息
/dev/vg0/date: 13/991232 files (0.0% non-contiguous), 102660/3934208 blocks
[zkml@test ~]$ sudo resize2fs -p /dev/vg0/date 6G
resize2fs 1.41.12 (17-May-2010)
Resizing the filesystem on /dev/vg0/date to 1572864 (4k) blocks.
Begin pass 2 (max = 32768)
正在重定位块 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 121)
正在扫描inode表 XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/vg0/date is now 1572864 blocks long.
[zkml@test ~]$ sudo lvreduce -L 6G /dev/vg0/date
WARNING: Reducing active logical volume to 6.00 GiB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce date? [y/n]: y
Reducing logical volume date to 6.00 GiB
Logical volume date successfully resized
[zkml@test ~]$ mount /dev/vg0/date /date/
mount: only root can do that
[zkml@test ~]$ sudo mount /dev/vg0/date /date/
[zkml@test ~]$ sudo df -hT
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root ext4 18G 3.0G 14G 19% /
tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
/dev/mapper/vg0-date ext4 6.0G 152M 5.5G 3% /date
还可以使用如下不需要卸载文件系统:使用lvreduce 在使用resize2fs调整。
lvreduce+resize2fs
VG的减小用去掉pv达到,要想去掉pv必须,使用lvremove会出现数据丢失情况。
[zkml@test ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_test lvm2 a-- 19.51g 0
/dev/sdb1 vg0 lvm2 a-- 5.01g 0
/dev/sdb2 vg0 lvm2 a-- 10.00g 0
/dev/sdb3 vg0 lvm2 a-- 4.98g 0
[zkml@test ~]$ sudo umount /date
[zkml@test ~]$ sudo vgreduce vg0 /dev/sdb3 #无法降低vg 因为sdb3正在使用
Physical volume "/dev/sdb3" still in use
[zkml@test ~]$ sudo umount /date
umount: /date: not mounted
[zkml@test ~]$ df –hT #查看我们文件系统已经卸载了
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root ext4 18G 3.0G 14G 19% /
tmpfs tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 ext4 485M 33M 427M 8% /boot
[zkml@test ~]$ sudo lvremove /dev/vg0/date
Do you really want to remove active logical volume date? [y/n]: y
Logical volume "date" successfully removed
[zkml@test ~]$ sudo pvs
PV VG Fmt Attr PSize PFree
/dev/sda2 vg_test lvm2 a-- 19.51g 0
/dev/sdb1 vg0 lvm2 a-- 5.01g 5.01g
/dev/sdb2 vg0 lvm2 a-- 10.00g 10.00g
/dev/sdb3 vg0 lvm2 a-- 4.98g 4.98g
[zkml@test ~]$ sudo vgreduce vg0 /dev/sdb3 通过这两步操作我们知道只有pv显示为剩余才能删除vg中的pv
Removed "/dev/sdb3" from volume group "vg0"
[zkml@test ~]$ sudo vgs
VG #PV #LV #SN Attr VSize VFree
vg0 2 0 0 wz--n- 15.01g 15.01g
vg_test 1 2 0 wz--n- 19.51g 0
[zkml@test ~]$ sudo lvcreate -l +100%FREE -n date vg0
Logical volume "date" created
[zkml@test ~]$ sudo mount /dev/vg0/date /date/
mount: you must specify the filesystem type
[zkml@test date]$ sudo mkfs.ext4 /dev/vg0/date 因为重新格式化数据丢失
[zkml@test date]$ sudo mount /dev/vg0/date /date/
VG可以先减少LV(lvreduce)注意减少的大小,要大于要减少PV的大小,再使用vgreduce减少pv 在使用pvremove移除。如果移除时候还可以使用pvmove将文件迁移到其他pv中,迁移时候接受的pv要大于移除的pv。
所有的减少都需要注意如下:
总PV大小>=总的VG>=总的LV>=文件系统中的大小
在使用resize2fs是减小文件系统到多大,不是减小多大。如果想指定减少多大时候,可以先使用lvreduce 再使用resize2fs 直接调整。
3.3 Swap大小修改
- 1. 关闭已经设置的swap:
[root@localhost ~]# swapon -s #查看swap设置
Filename Type Size Used Priority
/dev/dm-1 partition 2097144 0 -1
[root@localhost ~]# free –m #查看内存和swap使用情况
total used free shared buffers cached
Mem: 1877 1504 373 0 12 51
-/+ buffers/cache: 1440 436
Swap: 2047 0 2047
[root@localhost ~]# swapoff /dev/dm-1 #关闭swap,后面的参数是我们使用swapon –s查看到的Filename
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1877 1502 374 0 12 51
-/+ buffers/cache: 1439 438
Swap: 0 0 0
- 2. 增大swap大小
[root@localhost ~]# swapon /dev/dm-1
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/home/swap file 1023992 0 -1
/dev/dm-1 partition 2097144 0 -2
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1877 1804 72 0 7 339
-/+ buffers/cache: 1456 420
Swap: 3047 0 3047
[root@localhost ~]# dd if=/dev/zero of=/home/swap1 bs=1024 count=1024000
记录了1024000+0 的读入
记录了1024000+0 的写出
1048576000字节(1.0 GB)已复制,2.48002 秒,423 MB/秒
[root@localhost ~]# mkswap /home/swap1
Setting up swapspace version 1, size = 1023996 KiB
no label, UUID=927ff5be-7def-4578-a512-01e5bf7605bb
[root@localhost ~]# swapon /home/swap1
[root@localhost ~]# free -m
total used free shared buffers cached
Mem: 1877 1806 70 0 7 339
-/+ buffers/cache: 1459 418
Swap: 4047 0 4047
[root@localhost ~]# swapon -s
Filename Type Size Used Priority
/home/swap file 1023992 0 -1
/dev/dm-1 partition 2097144 0 -2
/home/swap1 file 1023992 0 -3
- 缩小Swap分区
lvreduce命令收缩逻辑卷。
[root@getlnx14uat ~]# lvreduce -L 8G /dev/mapper/VolGroup00-LogVol01
WARNING: Reducing active logical volume to 8.00 GB
THIS MAY DESTROY YOUR DATA (filesystem etc.)
Do you really want to reduce LogVol01? [y/n]: y
Reducing logical volume LogVol01 to 8.00 GB
Logical volume LogVol01 successfully resized
[root@getlnx14uat ~]# mkswap /dev/mapper/VolGroup00-LogVol01 #格式化
Setting up swapspace version 1, size = 8589930 kB
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
[root@getlnx14uat ~]# swapon /dev/mapper/VolGroup00-LogVol01
[root@getlnx14uat ~]# swapon -s
Filename Type Size Used Priority
/dev/mapper/VolGroup00-LogVol01 partition 8388600 0 -1
以上所有的操作都需要在fstab中增加swap的条目(如下),否则重启机器都会失效
/dev/mapper/vg_test-lv_swap swap swap defaults 0 0
3.4 删除LVM
umount 文件系统——移除LV(lvremove)—— 移除VG(vgremove)——移除PV(pvremove)
3.5 LVM快照
LVM快照左图为最初建立系统快照区的状况,LVM 会预留一个区域 (左图的左侧三个PE 区块) 作为数据存放处。此时快照区内并没有任何数据,而快照区与系统区共享所有的PE 数据, 因此你会看到快照区的内容与文件系统是一模一样的。等到系统运作一阵子后,假设A 区域的数据被更动了 (上面右图所示),则更动前系统会将该区域的数据移动到快照区,所以在右图的快照区被占用了一块PE 成为A,而其他B 到I 的区块则还是与文件系统共享!
lvcreate -L 80M -s -n lv1snap /dev/vg0/date (-s用来创建快照)
说明:为/dev/vg0/date 创建一个大小为80M,名称为lv1snap 的快照
将刚才创建的快照挂载查看:mnt/lv1 和/mnt/snapshot 是一模一样的。
挂载快照
对snapshot 里的资料进行打包备份,准备还原
打包快照
卸载并移除snapshot分区
卸载并移除snapshot分区
卸载并格式化/mnt/lv1,清空数据
卸载并格式化/mnt/lv1,清空数据
恢复数据
恢复数据
对lv1的修改量不能超过快照的大小,由于原始数据会被搬移到快照区,如果你的快照区不够大,若原始资料被更动的实际数据量比快照区大,那么快照区当然容纳不了,这时候快照功能会失效!
4. 超大磁盘(大于2TB)
entOS 6.x 无法使用fdisk分区大于2TB的磁盘。原因在于MBR分区表只支持2T磁盘。使用parted命令将MBR分区表,改为GPT分区表。如果linux没有parted命令,可以yum install parted
lsblk 查看磁盘分区情况:
lsblk
[zkml@test ~]$ sudo parted /dev/sdc
GNU Parted 2.1
使用 /dev/sdc
Welcome to GNU Parted! Type 'help' to view a list of commands.
(parted) mklabel gpt #转换未GPT
警告: The existing disk label on /dev/sdc will be destroyed and all data on this disk will be lost. Do you want to continue?
是/Yes/否/No? yes
(parted) mkpart #分区
分区名称? []? data
文件系统类型? [ext2]? ext4
起始点? 0
结束点? -1 表示整块磁盘,如果需要其他大小可以设置其他值,1代表1000K 根据要分区大小设置。
警告: The resulting partition is not properly aligned for best performance.
忽略/Ignore/放弃/Cancel? I
(parted) P #查看分区情况
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
1 17.4kB 2199GB 2199GB data
(parted) quit
信息: You may need to update /etc/fstab.
[zkml@test ~]$ sudo mkfs.ext4 /dev/sdc1 #格式化
mke2fs 1.41.12 (17-May-2010)
文件系统标签=
操作系统:Linux
块大小=4096 (log=2)
分块大小=4096 (log=2)
Stride=0 blocks, Stripe width=0 blocks
134217728 inodes, 536870407 blocks
26843520 blocks (5.00%) reserved for the super user
第一个数据块=0
Maximum filesystem blocks=4294967296
16384 block groups
32768 blocks per group, 32768 fragments per group
8192 inodes per group
Superblock backups stored on blocks:
32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208,
4096000, 7962624, 11239424, 20480000, 23887872, 71663616, 78675968,
102400000, 214990848, 512000000
正在写入inode表: 完成
Creating journal (32768 blocks): 完成
Writing superblocks and filesystem accounting information: 完成
This filesystem will be automatically checked every 39 mounts or
180 days, whichever comes first. Use tune2fs -c or -i to override.
[zkml@test ~]$ sudo mount /dev/sdc1 /test2/ #挂载
[zkml@test ~]$ df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/vg_test-lv_root 18G 2.9G 14G 18% /
tmpfs 1.9G 84K 1.9G 1% /dev/shm
/dev/sda1 485M 33M 427M 8% /boot
/dev/sdc1 2.0T 199M 1.9T 1% /test2
[zkml@test ~]$ sudo umount /test2/
[zkml@test ~]$ sudo parted /dev/sdc
(parted) rm #删除
分区编号? 1
(parted) p
Model: ATA VBOX HARDDISK (scsi)
Disk /dev/sdc: 2199GB
Sector size (logical/physical): 512B/512B
Partition Table: gpt
Number Start End Size File system Name 标志
(parted)
paeted相关命令
Parted中其他命令,根据需要学习如何使用即可。mkpart和mkpartfs 都可以分区后面带有格式化,可以直接挂在使用。前面的需要格式化后才能挂载。Toggle可以用来设置lvm。
特别注意:
CentOS 自带的 e2fsprogs 版本为1.41.12较低,无法创建16TB以上的文件系统,手工下载最新的e2fsprogs源码包,进行编译安装,然后使用mkfs.ext4 命令进行磁盘格式化。
关于磁盘管理还有软raid,后面学习后再补充
网友评论