linux 磁盘和文件系统管理
一. 磁盘和文件系统原理
1. 磁盘组成
- 圆形的磁盘盘片(主要记录数据的部分);
- 机械手臂,与在机械手臂上的磁盘读取头(可擦写磁盘盘上的数据);
- 主轴马达,可以转动磁盘盘,让机械手臂的读取头在磁盘盘上读写数据
2. 磁盘盘片介绍
- 扇区(Sector)为最小的物理储存单位,每个扇区为 512 bytes;
- 将扇区组成一个圆,这个圆叫磁道,再由多个同心磁道组成磁柱(Cylinder),磁柱是分割槽(partition)的最小单位;
- 第一个扇区最重要,里面有:(1)主要启动区(Master boot record, MBR)及分割表(partition table), 其中 MBR 占有 446 bytes,而 partition table 则占有 64 bytes。
3. 磁盘容量计算
- 磁盘容量 = 每个柱面包含的磁道数量 * 每个磁道包含的扇区数量 * 每个扇区的容量(512字节) * 柱面的数量
- 磁盘容量 = 磁道数量 * 扇区数量 * 512字节 * 柱面数
4. 磁盘占满的原因:
linux系统使用磁盘是通过block块去访问的,block块分为两种,一种是写真实数据的block块,另一种是写inode的block块,inode写入的是文件的原数据,即文件的权限信息等。
1、真实写数据的block块满;df -h 可以查看真实存储是否满;
2、inode节点满;df -i 可以查看inode是否满;
5. superblock、inode、block的作用总结
- superblock:记录此 filesystem 的整体信息,包括inode/block的总量、使用量、剩余量, 以及文件系统的格式与相关信息等;
- inode:记录文件的属性,一个文件占用一个inode,同时记录此文件的数据所在的 block 号码;
- block:实际记录文件的内容,若文件太大时,会占用多个 block 。
6. 磁盘接口名称
- /dev/sd[a-p][1-15]:为SCSI, SATA, U盘, Flash闪盘等接口的磁盘文件名;
- /dev/hd[a-d][1-63]:为 IDE 接口的磁盘文件名;
7. 磁盘分区补充
- 主要分割与扩展分配最多可以有四笔(硬盘的限制)
- 扩展分配最多只能有一个(操作系统的限制)
- 逻辑分割是由扩展分配持续切割出来的分割槽;
- 能够被格式化后,作为数据存取的分割槽为主要分割与逻辑分割。扩展分配无法格式化;
- 逻辑分割的数量依操作系统而不同,在Linux系统中,IDE硬盘最多有59个逻辑分割(5号到63号), SATA硬盘则有11个逻辑分割(5号到15号)。
二. 文件系统的简单操作
1. df:列出文件系统的整体磁盘使用量
[root@www ~]# df [-ahikHTm] [目录或文件名] 选项与参数: -a :列出所有的文件系统,包括系统特有的 /proc 等文件系统; -k :以 KBytes 的容量显示各文件系统; -m :以 MBytes 的容量显示各文件系统; -h :以人们较易阅读的 GBytes, MBytes, KBytes 等格式自行显示; -H :以 M=1000K 取代 M=1024K 的进位方式; -T :连同该 partition 的 filesystem 名称 (例如 ext3) 也列出; -i :不用硬盘容量,而以 inode 的数量来显示
2. du:评估文件系统的磁盘使用量(常用在推估目录所占容量)
[root@www ~]# du [-ahskm] 文件或目录名称 选项与参数: -a :列出所有的文件与目录容量,因为默认仅统计目录底下的文件量而已。 -h :以人们较易读的容量格式 (G/M) 显示; -s :列出总量而已,而不列出每个各别的目录占用容量; -S :不包括子目录下的总计,与 -s 有点差别。 -k :以 KBytes 列出容量显示; -m :以 MBytes 列出容量显示;
3. 硬链接和软链接
#硬链接的特点:不能跨 Filesystem;不能 link 目录。 #硬链接都指向了一个inode。 #软链接是快捷方式。 [root@www ~]# ln [-sf] 来源文件 目标文件 选项与参数: -s :如果不加任何参数就进行连结,那就是hard link,至于 -s 就是symbolic link -f :如果 目标文件 存在时,就主动的将目标文件直接移除后再创建! #关于目录的link数量 #新的目录的 link 数为 2 ,而上一级目录的 link 数则会添加 1。
软链接
ln -s [源绝对路径] [目标路径]
1、相当于快捷方式;
2、删除目标文件,源文件无影响;
3、删除源文件,目标文件失效;
4、不论修改源或者目标文件,文件内容都变;
5、源文件和目标文件的inode号不同;
6、软链接的目标文件的inode号是指向源文件的文件名的;
7、软链接可以跨分区;
硬链接
ln [源绝对路径] [目标路径]
1、删除目标文件,源文件无影响;
2、删除源文件,目标文件无影响;
3、不论修改源或者目标文件,文件内容都变;
4、源文件和目标文件的inode号相同;
5、硬链接的目标文件的inode号是指向的源文件的inode号的;
6、硬链接不可以跨分区;
三. 磁盘的分区、格式化、检验与挂载
1. linux系统新增一块硬盘要做的事情
- 对磁盘进行分割,以创建可用的 partition ;
- 对该 partition 进行格式化( format ),以创建系统可用的 filesystem;
- 在 Linux 系统上,需要创建挂载点 ( 亦即是目录 ),并将他挂载上来;
2. 磁盘分区
1)2TB以下(包括2TB)磁盘分区请使用fdisk命令
[root@www ~]# fdisk [-l] 装置名称 选项与参数: -l :输出后面接的装置所有的 partition 内容。若仅有 fdisk -l 时, 则系统将会把整个系统内能够搜寻到的装置的 partition 均列出来。
[root@www ~]# fdisk 装置名称
分区完成后记得操作如下命令: [root@www ~]# partprobe # 这个玩意儿很重要的啦!不要忘记让核心升级 partition table 喔!
2)2TB以上(不包括2TB)磁盘分区请使用parted
[root@www ~]# parted [装置] [命令 [参数]] 选项与参数: 命令功能: 新增分割:mkpart [primary|logical|extended] [ext3|vfat] 开始 结束 分割表 :print 删除分割:rm [partition]
范例一:以 parted 列出目前本机的分割表数据 [root@www ~]# parted /dev/hdc print Model: IC35L040AVER07-0 (ide) <==硬盘接口与型号 Disk /dev/hdc: 41.2GB <==磁盘文件名与容量 Sector size (logical/physical): 512B/512B <==每个扇区的大小 Partition Table: msdos <==分割表形式 Number Start End Size Type File system Flags 1 32.3kB 107MB 107MB primary ext3 boot 2 107MB 10.6GB 10.5GB primary ext3 3 10.6GB 15.8GB 5240MB primary ext3 4 15.8GB 41.2GB 25.3GB extended 5 15.8GB 16.9GB 1045MB logical linux-swap 6 16.9GB 18.9GB 2056MB logical ext3 7 18.9GB 19.2GB 263MB logical linux-swap [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] # [1] Number:这个就是分割槽的号码啦!举例来说,1号代表的是 /dev/hdc1 的意思; # [2] Start:起始的磁柱位置在这颗磁盘的多少 MB 处?有趣吧!他以容量作为单位喔! # [3] End:结束的磁柱位置在这颗磁盘的多少 MB 处? # [4] Size:由上述两者的分析,得到这个分割槽有多少容量; # [5] Type:就是分割槽的类型,有primary, extended, logical等类型; # [6] File system:就如同 fdisk 的 System ID 之意。 范例二:创建一个约为 512MB 容量的逻辑分割槽 [root@www ~]# parted /dev/hdc mkpart logical ext3 19.2GB 19.7GB # 请参考前一表格的命令介绍,因为我们的 /dev/hdc7 在 19.2GB 位置结束, # 所以我们当然要由 19.2GB 位置处继续下一个分割,这样懂了吧? [root@www ~]# parted /dev/hdc print .....前面省略..... 7 18.9GB 19.2GB 263MB logical linux-swap 8 19.2GB 19.7GB 502MB logical <==就是刚刚创建的啦! 范例三:将刚刚创建的第八号磁盘分区槽删除掉吧! [root@www ~]# parted /dev/hdc rm 8 # 这样就删除了!实在很厉害!所以这个命令的下达要特别注意! # 因为...命令一下去就立即生效了~如果写错的话,会哭死~
3. 磁盘格式化
[root@www ~]# mkfs [-t 文件系统格式] 装置文件名 选项与参数: -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效)
[root@www ~]# mkfs [-t 文件系统格式] 装置文件名 选项与参数: -t :可以接文件系统格式,例如 ext3, ext2, vfat 等(系统有支持才会生效) 范例一:请将上个小节当中所制作出来的 /dev/hdc6 格式化为 ext3 文件系统 [root@www ~]# mkfs -t ext3 /dev/hdc6 mke2fs 1.39 (29-May-2006) Filesystem label= <==这里指的是分割槽的名称(label) OS type: Linux Block size=4096 (log=2) <==block 的大小配置为 4K Fragment size=4096 (log=2) 251392 inodes, 502023 blocks <==由此配置决定的inode/block数量 25101 blocks (5.00%) reserved for the super user First data block=0 Maximum filesystem blocks=515899392 16 block groups 32768 blocks per group, 32768 fragments per group 15712 inodes per group Superblock backups stored on blocks: 32768, 98304, 163840, 229376, 294912 Writing inode tables: done Creating journal (8192 blocks): done <==有日志记录 Writing superblocks and filesystem accounting information: done This filesystem will be automatically checked every 34 mounts or 180 days, whichever comes first. Use tune2fs -c or -i to override. # 这样就创建起来我们所需要的 Ext3 文件系统了!简单明了! [root@www ~]# mkfs[tab][tab] mkfs mkfs.cramfs mkfs.ext2 mkfs.ext3 mkfs.msdos mkfs.vfat # 按下两个[tab],会发现 mkfs 支持的文件格式如上所示!可以格式化 vfat 喔!
[root@www ~]# mke2fs [-b block大小] [-i block大小] [-L 标头] [-cj] 装置 选项与参数: -b :可以配置每个 block 的大小,目前支持 1024, 2048, 4096 bytes 三种; -i :多少容量给予一个 inode 呢? -c :检查磁盘错误,仅下达一次 -c 时,会进行快速读取测试; 如果下达两次 -c -c 的话,会测试读写(read-write),会很慢~ -L :后面可以接标头名称 (Label),这个 label 是有用的喔!e2label命令介绍会谈到~ -j :本来 mke2fs 是 EXT2 ,加上 -j 后,会主动加入 journal 而成为 EXT3。
4. 磁盘检验
磁盘检验需要先卸载目标磁盘分区
[root@www ~]# fsck [-t 文件系统] [-ACay] 装置名称 选项与参数: -t :如同 mkfs 一样,fsck 也是个综合软件而已!因此我们同样需要指定文件系统。 不过由于现今的 Linux 太聪明了,他会自动的透过 superblock 去分辨文件系统, 因此通常可以不需要这个选项的啰!请看后续的范例说明。 -A :依据 /etc/fstab 的内容,将需要的装置扫瞄一次。/etc/fstab 于下一小节说明, 通常启动过程中就会运行此一命令了。 -a :自动修复检查到的有问题的扇区,所以你不用一直按 y 啰! -y :与 -a 类似,但是某些 filesystem 仅支持 -y 这个参数! -C :可以在检验的过程当中,使用一个直方图来显示目前的进度! EXT2/EXT3 的额外选项功能:(e2fsck 这支命令所提供) -f :强制检查!一般来说,如果 fsck 没有发现任何 unclean 的旗标,不会主动进入 细部检查的,如果您想要强制 fsck 进入细部检查,就得加上 -f 旗标啰! -D :针对文件系统下的目录进行优化配置。
[root@www ~]# badblocks -[svw] 装置名称 选项与参数: -s :在屏幕上列出进度 -v :可以在屏幕上看到进度 -w :使用写入的方式来测试,建议不要使用此一参数,尤其是待检查的装置已有文件时! [root@www ~]# badblocks -sv /dev/hdc6 Checking blocks 0 to 2008093 Checking for bad blocks (read-only test): done Pass completed, 0 bad blocks found.
5. 硬件的卸载与挂载
[root@www ~]# mount -a [root@www ~]# mount [-l] [root@www ~]# mount [-t 文件系统] [-L Label名] [-o 额外选项] \ [-n] 装置文件名 挂载点 选项与参数: -a :依照配置文件 /etc/fstab 的数据将所有未挂载的磁盘都挂载上来 -l :单纯的输入 mount 会显示目前挂载的信息。加上 -l 可增列 Label 名称! -t :与 mkfs 的选项非常类似的,可以加上文件系统种类来指定欲挂载的类型。 常见的 Linux 支持类型有:ext2, ext3, vfat, reiserfs, iso9660(光盘格式), nfs, cifs, smbfs(此三种为网络文件系统类型) -n :在默认的情况下,系统会将实际挂载的情况实时写入 /etc/mtab 中,以利其他程序 的运行。但在某些情况下(例如单人维护模式)为了避免问题,会刻意不写入。 此时就得要使用这个 -n 的选项了。 -L :系统除了利用装置文件名 (例如 /dev/hdc6) 之外,还可以利用文件系统的标头名称 (Label)来进行挂载。最好为你的文件系统取一个独一无二的名称吧! -o :后面可以接一些挂载时额外加上的参数!比方说账号、密码、读写权限等: ro, rw: 挂载文件系统成为只读(ro) 或可擦写(rw) async, sync: 此文件系统是否使用同步写入 (sync) 或异步 (async) 的 内存机制,请参考文件系统运行方式。默认为 async。 auto, noauto: 允许此 partition 被以 mount -a 自动挂载(auto) dev, nodev: 是否允许此 partition 上,可创建装置文件? dev 为可允许 suid, nosuid: 是否允许此 partition 含有 suid/sgid 的文件格式? exec, noexec: 是否允许此 partition 上拥有可运行 binary 文件? user, nouser: 是否允许此 partition 让任何使用者运行 mount ?一般来说, mount 仅有 root 可以进行,但下达 user 参数,则可让 一般 user 也能够对此 partition 进行 mount 。 defaults: 默认值为:rw, suid, dev, exec, auto, nouser, and async remount: 重新挂载,这在系统出错,或重新升级参数时,很有用!
范例一:用默认的方式,将刚刚创建的 /dev/hdc6 挂载到 /mnt/hdc6 上面! [root@www ~]# mkdir /mnt/hdc6 [root@www ~]# mount /dev/hdc6 /mnt/hdc6 [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/hdc6 1976312 42072 1833836 3% /mnt/hdc6 # 看起来,真的有挂载!且文件大小约为 2GB 左右啦!
范例二:观察目前『已挂载』的文件系统,包含各文件系统的Label名称 [root@www ~]# mount -l /dev/hdc2 on / type ext3 (rw) [/1] proc on /proc type proc (rw) sysfs on /sys type sysfs (rw) devpts on /dev/pts type devpts (rw,gid=5,mode=620) /dev/hdc3 on /home type ext3 (rw) [/home] /dev/hdc1 on /boot type ext3 (rw) [/boot] tmpfs on /dev/shm type tmpfs (rw) none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw) sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw) /dev/hdc6 on /mnt/hdc6 type ext3 (rw) [vbird_logical] # 除了实际的文件系统外,很多特殊的文件系统(proc/sysfs...)也会被显示出来! # 值得注意的是,加上 -l 选项可以列出如上特殊字体的标头(label)喔
范例三:将你用来安装 Linux 的 CentOS 原版光盘拿出来挂载! [root@www ~]# mkdir /media/cdrom [root@www ~]# mount -t iso9660 /dev/cdrom /media/cdrom [root@www ~]# mount /dev/cdrom /media/cdrom # 你可以指定 -t iso9660 这个光盘片的格式来挂载,也可以让系统自己去测试挂载! # 所以上述的命令只要做一个就够了!但是目录的创建初次挂载时必须要进行喔! [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/hdd 4493152 4493152 0 100% /media/cdrom # 因为我的光驱使用的是 /dev/hdd 的 IDE 接口之故!
范例四:格式化后挂载软盘到 /media/floppy/ 目录中。 [root@www ~]# mkfs -t vfat /dev/fd0 # 我们格式化软盘成为 Windows/Linux 可共同使用的 FAT 格式吧! [root@www ~]# mkdir /media/floppy [root@www ~]# mount -t vfat /dev/fd0 /media/floppy [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/fd0 1424 164 1260 12% /media/floppy
范例五:找出你的闪盘装置文件名,并挂载到 /mnt/flash 目录中 [root@www ~]# fdisk -l .....中间省略..... Disk /dev/sda: 8313 MB, 8313110528 bytes 59 heads, 58 sectors/track, 4744 cylinders Units = cylinders of 3422 * 512 = 1752064 bytes Device Boot Start End Blocks Id System /dev/sda1 1 4745 8118260 b W95 FAT32 # 从上的特殊字体,可得知磁盘的大小以及装置文件名,知道是 /dev/sda1 [root@www ~]# mkdir /mnt/flash [root@www ~]# mount -t vfat -o iocharset=cp950 /dev/sda1 /mnt/flash [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on .....中间省略..... /dev/sda1 8102416 4986228 3116188 62% /mnt/flash
范例六:将 / 重新挂载,并加入参数为 rw 与 auto [root@www ~]# mount -o remount,rw,auto /
范例七:将 /home 这个目录暂时挂载到 /mnt/home 底下: [root@www ~]# mkdir /mnt/home [root@www ~]# mount --bind /home /mnt/home [root@www ~]# ls -lid /home/ /mnt/home 2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /home/ 2 drwxr-xr-x 6 root root 4096 Sep 29 02:21 /mnt/home [root@www ~]# mount -l /home on /mnt/home type none (rw,bind)
[root@www ~]# umount [-fn] 装置文件名或挂载点 选项与参数: -f :强制卸除!可用在类似网络文件系统 (NFS) 无法读取到的情况下; -n :不升级 /etc/mtab 情况下卸除。
范例八:将本章之前自行挂载的文件系统全部卸除: [root@www ~]# mount .....前面省略..... /dev/hdc6 on /mnt/hdc6 type ext3 (rw) /dev/hdd on /media/cdrom type iso9660 (rw) /dev/sda1 on /mnt/flash type vfat (rw,iocharset=cp950) /home on /mnt/home type none (rw,bind) # 先找一下已经挂载的文件系统,如上所示,特殊字体即为刚刚挂载的装置啰! [root@www ~]# umount /dev/hdc6 <==用装置文件名来卸除 [root@www ~]# umount /media/cdrom <==用挂载点来卸除 [root@www ~]# umount /mnt/flash <==因为挂载点比较好记忆! [root@www ~]# umount /dev/fd0 <==用装置文件名较好记! [root@www ~]# umount /mnt/home <==一定要用挂载点!因为挂载的是目录
范例九:找出 /dev/hdc6 的 label name,并用 label 挂载到 /mnt/hdc6 [root@www ~]# dumpe2fs -h /dev/hdc6 Filesystem volume name: vbird_logical .....底下省略..... # 找到啦!标头名称为 vbird_logical 啰! [root@www ~]# mount -L "vbird_logical" /mnt/hdc6
四. 配置启动时自动挂载
1. 配置启动挂载的前提
- 根目录 / 是必须挂载的﹐而且一定要先于其它 mount point 被挂载进来。
- 其它 mount point 必须为已创建的目录﹐可任意指定﹐但一定要遵守必须的系统目录架构原则
- 所有 mount point 在同一时间之内﹐只能挂载一次。
- 所有 partition 在同一时间之内﹐只能挂载一次。
- 如若进行卸除﹐您必须先将工作目录移到 mount point(及其子目录) 之外。
2. 配置启动挂载
配置启动自动挂载的方式是,将需要挂载的设备按格式写入 /etc/fstab 内。blkid可以查看uuid。
[root@www ~]# cat /etc/fstab # Device Mount point filesystem parameters dump fsck LABEL=/1 / ext3 defaults 1 1 LABEL=/home /home ext3 defaults 1 2 LABEL=/boot /boot ext3 defaults 1 2 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 LABEL=SWAP-hdc5 swap swap defaults 0 0 # 上述特殊字体的部分与实际磁盘有关!其他则是虚拟文件系统或 # 与内存置换空间 (swap) 有关。
#第一栏:磁盘装置文件名或该装置的 Label #第二栏:挂载点 (mount point) #第三栏:磁盘分区槽的文件系统 #第四栏:文件系统参数 参数 内容意义 async/sync 异步/同步 配置磁盘是否以异步方式运行!默认为 async(效能较佳) auto/noauto 自动/非自动 当下达 mount -a 时,此文件系统是否会被主动测试挂载。默认为 auto。 rw/ro 可擦写/只读 让该分割槽以可擦写或者是只读的型态挂载上来,如果你想要分享的数据是不给用户随意变更的, 这里也能够配置为只读。则不论在此文件系统的文件是否配置 w 权限,都无法写入喔! exec/noexec 可运行/不可运行 限制在此文件系统内是否可以进行『运行』的工作?如果是纯粹用来储存数据的, 那么可以配置为 noexec 会比较安全,相对的,会比较麻烦! user/nouser 允许/不允许使用者挂载 是否允许用户使用 mount 命令来挂载呢?一般而言,我们当然不希望一般身份的 user 能使用 mount 啰,因为太不安全了,因此这里应该要配置为 nouser 啰! suid/nosuid 具有/不具有 suid 权限 该文件系统是否允许 SUID 的存在?如果不是运行文件放置目录,也可以配置为 nosuid 来取消这个功能! usrquota 注意名称是『 usrquota 』不要拼错了!这个是在启动 filesystem 支持磁盘配额模式,更多数据我们在第四篇再谈。 grpquota 注意名称是『grpquota』,启动 filesystem 对群组磁盘配额模式的支持。 defaults 同时具有 rw, suid, dev, exec, auto, nouser, async 等参数。 基本上,默认情况使用 defaults 配置即可! #第五栏:能否被 dump 备份命令作用 dump 是一个用来做为备份的命令, 我们可以透过 fstab 指定哪个文件系统必须要进行 dump 备份! 0 代表不要做 dump 备份, 1 代表要每天进行 dump 的动作。 2 也代表其他不定日期的 dump 备份动作, 通常这个数值不是 0 就是 1 啦! #第六栏:是否以 fsck 检验扇区 启动的过程中,系统默认会以 fsck 检验我们的 filesystem 是否完整 (clean)。 不过,某些 filesystem 是不需要检验的,例如内存置换空间 (swap) ,或者是特殊文件系统例如 /proc 与 /sys 等等。所以,在这个字段中,我们可以配置是否要以 fsck 检验该 filesystem 喔。 0 是不要检验, 1 表示最早检验(一般只有根目录会配置为 1), 2 也是要检验,不过 1 会比较早被检验啦! 一般来说,根目录配置为 1 ,其他的要检验的 filesystem 都配置为 2 就好了
3. loop挂载的应用
loop一般的用处有两点:
1)挂载镜像文件
[root@www ~]# ll -h /root/centos5.2_x86_64.iso -rw-r--r-- 1 root root 4.3G Oct 27 17:34 /root/centos5.2_x86_64.iso # 看到上面的结果吧!这个文件就是映象档,文件非常的大吧! [root@www ~]# mkdir /mnt/centos_dvd [root@www ~]# mount -o loop /root/centos5.2_x86_64.iso /mnt/centos_dvd [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /root/centos5.2_x86_64.iso 4493152 4493152 0 100% /mnt/centos_dvd # 就是这个项目! .iso 映象文件内的所有数据可以在 /mnt/centos_dvd 看到! [root@www ~]# ll /mnt/centos_dvd total 584 drwxr-xr-x 2 root root 522240 Jun 24 00:57 CentOS <==瞧!就是DVD的内容啊! -rw-r--r-- 8 root root 212 Nov 21 2007 EULA -rw-r--r-- 8 root root 18009 Nov 21 2007 GPL drwxr-xr-x 4 root root 2048 Jun 24 00:57 images .....底下省略..... [root@www ~]# umount /mnt/centos_dvd/ # 测试完成!记得将数据给他卸除!
2)挂载大文件(模拟分区)
##创建大文件 [root@www ~]# dd if=/dev/zero of=/home/loopdev bs=1M count=512 512+0 records in <==读入 512 笔数据 512+0 records out <==输出 512 笔数据 536870912 bytes (537 MB) copied, 12.3484 seconds, 43.5 MB/s # 这个命令的简单意义如下: # if 是 input file ,输入文件。那个 /dev/zero 是会一直输出 0 的装置! # of 是 output file ,将一堆零写入到后面接的文件中。 # bs 是每个 block 大小,就像文件系统那样的 block 意义; # count 则是总共几个 bs 的意思。 [root@www ~]# ll -h /home/loopdev -rw-r--r-- 1 root root 512M Oct 28 02:29 /home/loopdev ##格式化大文件 [root@www ~]# mkfs -t ext3 /home/loopdev mke2fs 1.39 (29-May-2006) /home/loopdev is not a block special device. Proceed anyway? (y,n) y <==由于不是正常的装置,所以这里会提示你! Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) 131072 inodes, 524288 blocks 26214 blocks (5.00%) reserved for the super user .....以下省略..... ##挂载大文件--模拟分区 [root@www ~]# mount -o loop /home/loopdev /media/cdrom/ [root@www ~]# df Filesystem 1K-blocks Used Available Use% Mounted on /home/loopdev 507748 18768 462766 4% /media/cdrom
4. swap的临时建置
[root@www ~]# fdisk /dev/hdc Command (m for help): n First cylinder (2303-5005, default 2303): <==这里按[enter] Using default value 2303 Last cylinder or +size or +sizeM or +sizeK (2303-5005, default 5005): +256M Command (m for help): p Device Boot Start End Blocks Id System .....中间省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 83 Linux <==新增的项目 Command (m for help): t <==修改系统 ID Partition number (1-7): 7 <==从上结果看到的,七号partition Hex code (type L to list codes): 82 <==改成 swap 的 ID Changed system type of partition 7 to 82 (Linux swap / Solaris) Command (m for help): p Device Boot Start End Blocks Id System .....中间省略..... /dev/hdc6 2053 2302 2008093+ 83 Linux /dev/hdc7 2303 2334 257008+ 82 Linux swap / Solaris Command (m for help): w # 此时就将 partition table 升级了! [root@www ~]# partprobe # 这个玩意儿很重要的啦!不要忘记让核心升级 partition table 喔! [root@www ~]# mkswap /dev/hdc7 Setting up swapspace version 1, size = 263172 kB <==非常快速! [root@www ~]# free total used free shared buffers cached Mem: 742664 684592 58072 0 43820 497144 -/+ buffers/cache: 143628 599036 Swap: 1020088 96 1019992 # 我有 742664K 的物理内存,使用 684592K 剩余 58072K ,使用掉的内存有 # 43820K / 497144K 用在缓冲/缓存的用途中。 # 至于 swap 已经存在了 1020088K 啰!这样会看了吧?! [root@www ~]# swapon /dev/hdc7 [root@www ~]# free total used free shared buffers cached Mem: 742664 684712 57952 0 43872 497180 -/+ buffers/cache: 143660 599004 Swap: 1277088 96 1276992 <==有添加啰!看到否? [root@www ~]# swapon -s Filename Type Size Used Priority /dev/hdc5 partition 1020088 96 -1 /dev/hdc7 partition 257000 0 -2 # 上面列出目前使用的 swap 装置有哪些的意思!
[root@www ~]# dd if=/dev/zero of=/tmp/swap bs=1M count=128 128+0 records in 128+0 records out 134217728 bytes (134 MB) copied, 1.7066 seconds, 78.6 MB/s [root@www ~]# ll -h /tmp/swap -rw-r--r-- 1 root root 128M Oct 28 15:33 /tmp/swap [root@www ~]# mkswap /tmp/swap Setting up swapspace version 1, size = 134213 kB # 这个命令下达时请『特别小心』,因为下错字节控制,将可能使您的文件系统挂掉! [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45584 261284 -/+ buffers/cache: 143992 598672 Swap: 1277088 96 1276992 [root@www ~]# swapon /tmp/swap [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45604 261284 -/+ buffers/cache: 143972 598692 Swap: 1408152 96 1408056 [root@www ~]# swapon -s Filename Type Size Used Priority /dev/hdc5 partition 1020088 96 -1 /dev/hdc7 partition 257000 0 -2 /tmp/swap file 131064 0 -3 [root@www ~]# swapoff /tmp/swap [root@www ~]# swapoff /dev/hdc7 [root@www ~]# free total used free shared buffers cached Mem: 742664 450860 291804 0 45660 261284 -/+ buffers/cache: 143916 598748 Swap: 1020088 96 1019992 <==回复成最原始的样子了!