磁盘和文件系统管理

磁盘和文件系统管理(一)

1.管理磁盘及分区
1.1检测并确认新磁盘
vfdisk命令
     ■ 格式:fdisk  -l  [磁盘设备]
[root@localhost ~]# fdisk -l
Disk /dev/sda: 64.4 GB, 64424509440 bytes
255 heads, 63 sectors/track, 7832 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
 Device   Boot      Start       End    Blocks    Id   System
/dev/sda1   *           1        13    104391    83   Linux
/dev/sda2              14      7832    62806117+   8e   Linux LVM
Disk /dev/sdb: 85.8 GB, 85899345920 bytes
255 heads, 63 sectors/track, 10443 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Disk /dev/sdb doesn't contain a valid partition table     <==新磁盘未包含有效的分区表
对于已有的分区,将通过列表的方式输出以下信息:
➣   Device:分区的设备文件名称。
➣   Boot:是否是引导分区,是则有“*”标识。
➣   Start:该分区在硬盘中的起始位置(柱面数)。
➣   End:该分区在硬盘中的结束位置(柱面数)。
➣   Blocks:分区的大小,以Blocks(块)为单位,默认的块大小为1024字节。
➣   Id:分区类型的ID标记号,对于EXT3分区为83,LVM分区为8e。
➣   System:分区类型
注意分区类型的概念在windows中是没有的,分区类型与文件系统类型应一致,这样管理磁盘文件系统时才不容易引起混乱。
 
1.2 规划硬盘中的分区
vfdisk命令
     ■ 用途:在交互式的操作环境中管理磁盘分区
     ■ 格式:fdisk  [磁盘设备]
v交互模式中的常用指令
     ■ m:查看操作指令的帮助信息
     ■ p:列表查看分区信息
     ■ n:新建分区
     ■ d:删除分区
     ■ t:变更分区类型
     ■ w:保存分区设置并退出
     ■ q:放弃分区设置并退出
[root@localhost ~]# fdisk /dev/sdb
Device contains neither a valid DOS partition table, nor Sun, SGI or OSF disklabel
Building a new DOS disklabel. 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)
Command (m for help):      <==输入特定的分区操作指令
 
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)
#在非交互式模式中可以执行“fdisk -l /dev/sdb”查看磁盘sdb的分区情况,而在进入“fdisk /dev/sdb”交互式模式后中只需要按p键即可(因为是新的磁盘,所以暂时没有分区信息)
Command (m for help): p
 
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: 0xa8c7f783
 
   Device Boot      Start         End      Blocks   Id  System
 
v硬盘规划示例
     ■ 为主机新增一块20GB的SCSI硬盘
     ■ 对该硬盘进行分区:
      ●  划分2个主分区,各2GB,剩余空间作为扩展分区
      ●  在扩展分区中建立2个逻辑分区,容量分别为2GB、10GB
      ●  将第1个逻辑分区的类型改为swap
      ●  确认分区设置情况,保存退出
     ■ 使用partprobe探测硬盘分区的变化
#需要注意的是,由于硬盘中的主分区数目只有4个,因此主分区和扩展分区的序号也就限制在1~4,而逻辑分区从5开始。
 
1) 下面开始创建两个主分区,,每个大小是2G。首先创建第一个主分区(dev/sdb1)
Command (m for help): n     <==开始创建第1个主分区
Command action
   e   extended
   p   primary partition (1-4)
p      <==选择创建的为主分区
Partition number (1-4): 1        <==设置第1个主分区的编号为sdb1
First cylinder (1-2610, default 1):       <==直接回车接受默认值
Using default value 1
Last cylinder, +cylinders or +size{K,M,G} (1-2610, default 2610): +2000M       <==指定大小为2G
 
2) 按照类似的步骤创建第二个主分区(dev/sdb2) 
Command (m for help): n       <==开始创建第2个主分区
Command action
   e   extended
   p   primary partition (1-4)
p       <==选择创建的为主分区
Partition number (1-4): 2      <==设置第2个主分区的编号为sdb2
First cylinder (257-2610, default 257):         <==直接回车接受默认值
Using default value 257
Last cylinder, +cylinders or +size{K,M,G} (257-2610, default 2610): +2000M        <==指定大小为2G
 
Command (m for help): p    <==查看分区情况
 
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: 0x21e5b84e
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         256     2056288+  83  Linux
/dev/sdb2             257         512     2056320   83  Linux
 
3) 接下来开始创建扩展分区,将剩余的所有容量都划为扩展分区(sdb4)
Command (m for help): n
Command action
   e   extended
   p   primary partition (1-4)
e       <==选择创建的为扩展分区
Partition number (1-4): 4       <==选择4作为扩展分区的编号“sdb4”
First cylinder (513-2610, default 513): 
Using default value 513
Last cylinder, +cylinders or +size{K,M,G} (513-2610, default 2610):     <==不指定容量代表使用剩余的所有空间
Using default value 2610
 
4) 接下来在扩展分区中建立第1个逻辑分区(dev/sdb5) 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l         <==选择创建为逻辑分区
First cylinder (513-2610, default 513): 
Using default value 513
Last cylinder, +cylinders or +size{K,M,G} (513-2610, default 2610): +2000M     指定第1个逻辑分区的大小为2G
 
5) 按照类似的步骤创建第2个逻辑分区(dev/sdb6),指定大小为10G,然后输入“p‘命令查看分区情况 
Command (m for help): n
Command action
   l   logical (5 or over)
   p   primary partition (1-4)
l
First cylinder (769-2610, default 769): 
Using default value 769
Last cylinder, +cylinders or +size{K,M,G} (769-2610, default 2610): +10000M      <==指定第2个逻辑分区的大小为10G
 
Command (m for help): p        <==查看分区情况
 
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: 0x21e5b84e
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         256     2056288+  83  Linux
/dev/sdb2             257         512     2056320   83  Linux
/dev/sdb4             513        2610    16852185    5  Extended
/dev/sdb5             513         768     2056288+  83  Linux
/dev/sdb6             769        2044    10249438+  83  Linux
 
6) 删除已经创建的逻辑分区/dev/sdb6
Command (m for help): d      <==进入删除指定分区的操作
Partition number (1-6): 6      <==选择需要删除的分区序号
 
7)更改分区的类型,将第1个逻辑分区/dev/sdb5变更为Swap交换分区(新建分区的默认文件系统类型为EXT3,EXT3文件系统的ID号为83、SWAP文件系统的ID号为82)
Command (m for help): t
Partition number (1-5): 5
Hex code (type L to list codes): 82
Changed system type of partition 5 to 82 (Linux swap / Solaris)
 
Command (m for help): p
 
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: 0x21e5b84e
 
   Device Boot      Start         End      Blocks   Id  System
/dev/sdb1               1         256     2056288+  83  Linux
/dev/sdb2             257         512     2056320   83  Linux
/dev/sdb4             513        2610    16852185    5  Extended
/dev/sdb5             513         768     2056288+  82  Linux swap / Solaris <==已经将分区类型变更为交换分区
 
8)使用”w“和”p“命令退出fdisk分区工具
Command (m for help): w       <==保存分区操作并退出
The partition table has been altered!
Calling ioctl() to re-read partition table.
Syncing disks.
 
Command (m for help): q       <==不保存(放弃)分区操作并退出
 
9)使用partprobe命令重新检测新的分区表情况,或者使用”reboot“命令重启系统生效
[root@sky ~]# partprobe /dev/sdb
或者
[root@sky ~]# reboot
 
 
2. 管理文件系统
2.1 创建文件系统
将新硬盘分好区以后,还需要对分区进行格式化(即创建文件系统),并挂载到Linux系统中的指定目录下,然后才能用于存储文件、目录等数据
首先来看一下如何格式化一个分区,在Linux系统中,格式化分区的主要命令工具为mkfs,通过实际操作演示格式化ext3文件系统的过程。
 
vmkfs命令
     ■ 用途:Make Filesystem,创建文件系统(格式化)
     ■ 格式:mkfs -t 文件系统类型 分区设备
[root@localhost ~]# ls  /sbin/mkfs*
/sbin/mkfs             /sbin/mkfs.ext2        /sbin/mkfs.msdos
/sbin/mkfs.cramfs      /sbin/mkfs.ext3        /sbin/mkfs.vfat
[root@localhost ~]# mkfs -t ext3 /dev/sdb1      <==作为其他几个分区命令的前端工具,通过“-t ...”选项指定文件系统类型
 
vmkswap命令
     ■ 用途:make Swap,创建交换文件系统
     ■ 格式:mkswap 分区设备
 
[root@localhost ~]# mkswap /dev/sdb5    <==将分区/dev/sdb5创建为交换分区
Setting up swapspace version 1, size = 2006929 Kb
[root@localhost ~]# cat /proc/meminfo | grep "SwapTotal    <==查看总交换分区的大小
SwapTotal:     2097144 kB  
[root@localhost ~]# swapon /dev/sdb5      <==启用交换分区/dev/sdb5
[root@localhost ~]# cat /proc/meminfo | grep "SwapTotal       <==确认交换分区大小已增加
SwapTotal:     4057032 kB
[root@localhost ~]# swapoff /dev/sdb5    <==停用交换分区/dev/sdb5
#如果希望系统下次启动时自动加载新建的交换分区,那么必须修改/etc/fstab文件:
[root@sky ~]# vim /etc/fstab
/dev/sdb5        swap    swap    defaults    0 0
 
2.2 挂载、卸载文件系统
vmount命令
     ■ 用途:挂载文件系统、ISO镜像到指定文件夹
     ■ 格式:mount  [ -t 类型 ]  存储设备  挂载点目录
                mount  -o loop  ISO镜像文件  挂载点目录
vumount命令
     ■ 用途:卸载已挂载的文件系统
     ■ 格式:umount  存储设备位置
                umount  挂载点目录
 
v硬盘分区挂载、卸载示例
     ■ 建立挂载点目录:/mailbox
     ■ 挂载分区设备:/dev/sdb1
     ■ 访问分区设备:
      ●  挂载点目录/mailbox中创建文件进行测试
      ●  查看/mailbox目录中的内容
     ■ 查看磁盘挂载情况(mount)
     ■ 卸载分区设备:/dev/sdb1
[root@localhost ~]# mkdir /mailbox        <==建立挂载点目录
[root@sky ~]# mount /dev/cdrom /mailbox/ <==挂载光盘设备
mount: block device /dev/sr0 is write-protected, mounting read-only
 
[root@localhost ~]# mount      <==查看挂载情况
/dev/mapper/vg_sky-lv_root on / type ext4 (rw)
……
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
/dev/sr0 on /mailbox type iso9660 (ro)
 
v卸载文件系统
[root@localhost ~]# umount /mailbox       <==通过挂载目录卸载
[root@localhost ~]# umount /dev/cdrom       <==通过设备文件卸载
 
v设置文件系统的自动挂载 
     ■ /etc/fstab配置文件:包含了需要开机后自动挂载的文件系统记录
[root@localhost ~]# vi  /etc/fstab
/dev/VolGroup00/LogVol00   /           ext3      defaults         1    1
LABEL=/boot                /boot       ext3      defaults         1    2
devpts                     /dev/pts    devpts   gid=5,mode=620   0    0
tmpfs                      /dev/shm    tmpfs     defaults         0    0
proc                       /proc       proc      defaults         0    0
sysfs                      /sys        sysfs     defaults         0    0
/dev/VolGroup00/LogVol01   swap        swap      defaults         0    0
系统中的“/etc/fstab”文件可以视为mount命令的配置文件
第一字段:设备位置
第二字段:挂载点
第三字段:文件系统类型,如ext3、swap等
第四字段:挂载参数,即mount命令“-o”选项后可使用的参数,如defaults、rw等
第五字段:表示文件系统是否需要dump备份(dump是一个备份工具),一般设为1时表示需要,设为0时将被dump所忽略
第六字段:该数字用于决定在系统启动时进行磁盘检查的顺序,0不进行检查,1优先,2其次。对于根分区应设为1,其它分区设为2
 
#设置自动挂载示例
每次重新开机后,能够自动将/dev/sdb1分区挂载到/mailbox目录
[root@localhost ~]# vi /etc/fstab    <==设置开机自动挂载
/dev/sdb1        /mailbox        ext3        default        0    0
[root@localhost ~]# mount /dev/sdb1 /mailbox    <==手动挂载sdb1分区
[root@localhost ~]# mount | tail -1   
/dev/sdb1 on /mailbox type ext3 (rw)
[root@localhost ~]# umount /mailbox     <==卸载/mailbox挂载
  
查看磁盘使用情况
vdf命令
     ■ 格式:df  [选项]  [文件]
[root@sky ~]# df -hT
文件系统    类型      容量  已用  可用 已用%% 挂载点
/dev/mapper/vg_sky-lv_root ext4     18G  3.8G   13G  23% /
tmpfs        tmpfs    491M   72K  491M   1% /dev/shm
/dev/sda1     ext4    485M   34M  427M   8% /boot
/dev/sdb1     ext3    2.0G   35M  1.8G   2% /mailbox
 
 
磁盘和文件系统管理(二)
1. LVM逻辑卷管理
1.1 LVM概述
vLogical Volume Manager,逻辑卷管理
     ■ 作用:动态调整磁盘容量,从而提高磁盘管理的灵活性
     ■ 需要注意:
      ●  /boot分区用于存放引导文件,不能基于LVM创建
v图形界面管理工具
     ■ system-config-lvm
vLVM机制的基本概念
     ■ PV(Physical Volume,物理卷)
      ●  整个硬盘,或使用fdisk等工具建立的普通分区
      ●  包括许多默认4MB大小的PE(Physical Extent,基本单元)
     ■ VG(Volume Group,卷组)
      ●  一个或多个物理卷组合而成的整体
     ■ LV(Logical Volume,逻辑卷)
      ●  从卷组中分割出的一块空间,用于建立文件系统
1)物理卷,以/dev/sdb1、/dev/sdc1、/dev/sdd1、/dev/sde1 为例
2)卷组,画一个矩形框圈住 /dev/sdb1、/dev/sdc1、/dev/sdd1 这3个物理卷作为一个整体,即示意卷组
3)逻辑卷,擦去矩形框内的3个物理卷名(表示磁盘底层布局是透明的,划分逻辑卷时无需知道具体由哪些物理卷组成),从卷组矩形框划出2块小空间,作为2个独立的逻辑卷
 
1.2 LVM的管理命令
v主要命令的语法
     ■ pvcreate  设备名
     ■ vgcreate  卷组名  物理卷名1 物理卷名2
     ■ lvcreate   -L  大小  -n  逻辑卷名  卷组名
     ■ lvextend  -L  +大小  /dev/卷组名/逻辑卷名 
 
LVM应用示例 
v需求描述
     ■ 公司准备在Internet中搭建邮件服务器(RHEL5系统平台),面向全国各地的员工及部分VIP客户提供电子邮箱空间。由于用户数量众多,邮件存储需要大量的空间,考虑到动态扩容的需要,计划增加两块SCSI硬盘并构建LVM逻辑卷(挂载到“/mailbox”目录下)专门用于存放邮件数据
v推荐步骤:
     ■ PV → VG → LV → 格式化 → 挂载使用文件系统
 
创建LVM文件系统的基本过程(3个步骤):先PV,再VG,最后LV:
1. 每块硬盘均规划为1个主分区,并转换为物理卷
2. 组合这两个物理卷,创建名为mail_store的卷组
3. 在该卷组中创建名为mail的逻辑卷
4. 创建ext3文件系统,并挂载到/mail目录
 
创建物理卷——pvcreate
v1. 转化物理卷
     ■ 使用fdisk命令规划两个分区,将类型设置为“8e”
      ●  /dev/sdb1、/dev/sdc1
     ■ 使用pvcreate命令转换上述分区为物理卷
[root@localhost ~]# fdisk -l /dev/sdb /dev/sdc | grep "LVM"      <==正确分区结果
/dev/sdb1               1        9660    77593918+  8e  Linux LVM
/dev/sdc1               1        9660    77593918+  8e  Linux LVM 
 
[root@localhost ~]# pvcreate /dev/sdb1
 Physical volume "/dev/sdb1" successfully created
[root@localhost ~]# pvcreate /dev/sdc1
  Physical volume "/dev/sdc1" successfully created
 
创建卷组——vgcreate
v2. 创建卷组
     ■ 使用vgcreate命令创建卷组mail_store
      ●  包括物理卷:/dec/sdb1、/dev/sdc1
[root@localhost ~]# vgcreate mail_store /dev/sdb1 /dev/sdc1    <==新建一个名为“mail_store”的卷组,包括两个物理卷:sdb1、sdc1
  Volume group "mail_store" successfully created 
 
创建逻辑卷——lvcreate
v3. 创建逻辑卷
     ■ 使用lvcreate命令创建逻辑卷 mail
      ●  从卷组mail_store上划出60GB空间
     ■ 使用mkfs命令创建ext3文件系统
[root@localhost ~]# lvcreate  -L  60G  -n  mail  mail_store <==在“mail_store”卷组中创建一个名为mail的逻辑卷,大小为60G
  /dev/cdrom: open failed: Read-only file system
  Logical volume "mail" created
[root@localhost ~]# mkfs -t ext3 /dev/mail_store/mail <==格式化mail逻辑卷
……
#按上述操作创建逻辑卷后,系统会自动建立”/dev/卷组名/逻辑卷名“的逻辑卷设备文件,即 /dev/mail_store/mail
 
v为逻辑卷扩容
     ■ 使用lvextend命令为逻辑卷 mail扩充容量
      ●  从卷组 mail_store 上再划出10GB给逻辑卷mail
     ■ 使用resize2fs命令更新系统识别的文件系统大小
[root@localhost ~]#  lvextend -L +10G  /dev/mail_store/mail
[root@localhost ~]#  resize2fs /dev/mail_store/mail
 
2. 设置磁盘配额
2.1 磁盘配额概述
v实现磁盘限额的条件
     ■ 需要Linux内核支持
     ■ 安装quota软件包
vLinux磁盘限额的特点
作用范围:针对指定的文件系统(分区)
     ■ 限制对象:用户帐号、组帐号
     ■ 限制类型:
      ●  磁盘容量(默认单位为KB)
      ●  文件数量
     ■ 限制方法:软限制、硬限制 
 
2.2磁盘配额管理
启用磁盘配额支持
v启用文件系统的配额支持
     ■ 添加usrquota、grpquota挂载参数 
[root@localhost ~]# vi /etc/fstab     <==修改mail逻辑卷的挂载配置
/dev/sdb1      /mailbox        ext3   default,usrquota,grpquota   0  0
[root@localhost ~]# mount  /mailbox   
[root@localhost ~]# mount  | tail -1
/dev/sdb1 on /mailbox type ext3 (rw,usrquota,grpquota)
 
v检测磁盘配额并创建配额文件
     ■ 使用quotacheck命令创建配额文件
      ●  quotacheck -ugcv 文件系统
      ●  quotacheck -augcv
-u、-g:检测用户、组配额
-c:创建配额数据文件
-v:显示执行过程信息
-a:检测所有可用的分区
[root@localhost ~]# quotacheck  -ugcv  /dev/sdb1
quotacheck: Scanning /dev/sdb1 [/mailbox] 
……
done
[root@localhost ~]# ls -l /mailbox/aquota.*
-rw------- 1 root root 6144 09-14 12:04 /mailbox/aquota.group     <==组配额文件
-rw------- 1 root root 6144 09-14 12:04 /mailbox/aquota.user      <==用户配额文件
 
v编辑用户和组帐号的配额设置
     ■ 使用edquota命令编辑配额设置
      ●  edquota -u 用户名
      ●  edquota -g 组名
[root@localhost ~]# edquota -u zhangsan <==对用户张三进行配额设置
Disk quotas for user zhangsan (uid 501):
  Filesystem         blocks       soft        hard           inodes      soft       hard
  /dev/sdb1            0             80000    100000        0              40         50
第3列:磁盘容量软限制
第4列:磁盘容量硬限制
第6列:文件个数软限制
第7列:文件个数硬限制
 
[root@localhost ~]# edquota -g users <==对user组进行配额设置
Disk quotas for group users (gid 100):
  Filesystem         blocks       soft        hard       inodes      soft       hard
  /dev/sdb1           252             0         1024000  39             0           0
 
v启用、关闭文件系统的配额功能
     ■ 使用quotaon、quotaoff命令
[root@localhost ~]# quotaon -ugv /mailbox <==启用mailbox逻辑卷配额限制
/dev/sdb1 [/mailbox]: group quotas turned on
/dev/sdb1 [/mailbox]: user quotas turned on
[root@localhost ~]# quotaoff -ugv /mailbox <==关闭mailbox逻辑卷配额限制
/dev/sdb1 [/mailbox]: group quotas turned off
/dev/sdb1 [/mailbox]: user quotas turned off
 
v验证磁盘配额功能
     ■ 必须切换到设置配额的分区(挂载目录)
     ■ 创建指定数量的文件:使用touch命令,或cp命令
     ■ 创建指定容量的文件:使用dd命令,或cp命令
[zhangsan@mail ~]$ cd /mailbox
[zhangsan@mail mailbox]$ dd if=/dev/zero of=myfile bs=1M count=120
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
dd: 写入 “myfile”: 超出磁盘限额
……
 
v查看配额使用情况
     ■ 侧重用户、组帐号角度:使用quota命令
      ●  quota -u 用户名
      ●  quota -g 组名
     ■ 侧重文件系统角度:使用repquota
      ●  repquota 文件系统
      ●  repquota -a
[root@localhost ~]# quota -u zhangsan
Disk quotas for user zhangsan (uid 515):
     Filesystem  blocks   quota   limit   grace   files   quota   limit   grace
      /dev/sdb1  100000*  80000  100000               1      40      50
[root@localhost ~]# quota -g users
Disk quotas for group users (gid 10): none
[root@localhost ~]# repquota /mailbox
*** Report for user quotas on device /dev/sdb1
Block grace time: 3days; Inode grace time: 3days
                        Block limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --  176200       0       0              4     0     0
zhangsan  +-  100000   80000  100000  2days       1    40    50
 
 





posted @ 2015-05-26 19:15  Hello-Sky  阅读(479)  评论(0编辑  收藏  举报