1.系统在初始化时如何识别硬盘
系统在初始化时根据Master Boot Record(MBR)中的信息来识别硬盘, 包括:
- 可执行文件用来载入操作系统(即MBR中前446bytes的Boot Loader程序)
- Partiton table(16x4=64bytes) 每个分区表储存以下三个信息:
- Partition id 常见的有以下几种
- 0x5(or 0xf) -Extended
- 0x82 -Linux swap
- 0x83 -Linux
- 0x8e -Linux LVM
- 0xfd -Linux RAID auto
- 分区的起始磁柱
- 分区中有多少个磁柱
- Partition id 常见的有以下几种
2.硬盘分区
- 当四个主分区不够用时,拿其它一个分区作为扩展分区来增加额外的分区.
- Linux kernel支持的最大分区数
- IDE硬盘最多支持63个分区
- SCSI硬盘最多支持15个分区
- 硬盘分区的目的:1. 方便用户分类存放资料 2.提升性能(碎片与缩小搜索文件范围)
3.方便磁盘的quota操作 4.方便文件的备份与恢复
3.建立分区
- 使用fdisk 建立磁盘分区 例: # fdisk /dev/sda 回车后输入m,查看操作帮助 (1个磁柱大小为8M)
- partprobe 重新初始化kernel在内存中的分区表:因为分区完成后会提示kernel仍使用旧的分区表
4.格式化分区
每个分区包含:引导扇区(boot sector)、superblock及普通数据块,每隔一些数量的block会形成group。其中super block用来记录这个分区总共切成多少块,有多少inode,已经用掉多少个块多少个inode等信息,一旦super block损坏,这个分区将无法使用,所有在一个分区里,每隔一些block就会备份一个superblock.
mke2fs [options] device
- -b 设定每个datablock是多少bytes (预设为1024bytes=1K)
- -c 在格式化前检查是否有损坏的块
- -i 指定每个inode大小
- -N 设定inode的总数量
- -m 指定要保留多少百分比的空间给root帐号(默认5%)
- -L 为分区设卷标
- -j 格式化成ext3分区
5.将ext2分区转成ext3
ext2和ext3的对比 :
- ext2和ext3磁盘格式基本相同,只是ext3会将硬盘的最后一块空间拿来存放journel记录。
- ext2写入信息到硬盘时,并非马上写入,而是先写到Buffer(缓冲区)里,当Buffer满时才会写入硬盘。
- ext3同样也是将信息先写到Buffer,当Buffer写满时,要通知资料写入硬盘前会先通知journel.然后才把资料写入硬盘。当信息写入硬盘后还会再次通知journel.
- 在ext2中,系统在开机时会先检查valid bit(有效位),如果valid bit值为1代表文件系统在关机前有做卸载,即正常关机。值为0就非正常关机。在非正常关机时系统在开机过程中会重新检查硬盘中的资料,这样比较耗时。
- 而在ext3中,如果出现非正常关机,系统在开机时先检查journel中的记录,得知是否还有尚未完成移动的资料。这样比较省时。
- tune2fs -j device --ext2转换到ext3
dumpe2fs device | more --查看分区信息 - ext3 的三种journal模式
- ordered --预设模式,只记录Inode table中的信息。
- journaled --会记录资料中本身的信息,需要大量空间来做记录。
- writeback --不会记录Inode table中的信息,但可能较好的性能。
6. 给分区设卷标
e2label /dev/hda1 yourlabel --设定hda1分区卷标
e2label /dev/hda1 --查看hda1分区的卷标
7. mount 和 umount
把磁盘对应到某个目录,对应的那个目录就叫mount point ,这个对应的动作就叫mount。
mount -L LABEL mount_point 使用卷标的方式挂载
mount [-t vfstype] [-o options] device mount_point
- -t vfstype(vfat , ext2, ext3, iso9660, etc) 这部分通常不用,Linux kernel自己会判断。
- -o options
- suid 允许使用suid或sgid权限
- dev 允许建立device files
- exec , noexec 挂载后可/不可运行里面的可执行文件
- auto 电脑开机时自动挂载
- nouser 只允许root挂载
- async 不同步,即在写入资料时先写在buffer再写入硬盘
- loop 挂载光盘设备
- ro 挂载后以只读访问
- rw
- remount
- 在挂载ext2/ext3分区时如果未加参数,系统自动加的参数为
rw, suid , dev , exec ,auto ,nouser ,async
umount device 或 umount mount_point
如果文件系统在使用中就没办法卸载,这时可以使用 fuser 查看谁在使用,并结束进程 .如:
# fuser -v /mnt/win_c 查看
# fuser -km /mnt/win_c 结束对这个文件系统的所有操作
用remount更改已挂载文件系统的属性 ,例;
mount -o remount,ro /mnt/win_c
8. 挂载网络资源
UNIX/Linux 网络资源分两种: NFS(Network file system) 和 SMB
NFS 是Unix/Linux主机之间共享方式
SMB 是unix/linux 和 win间的共享方式
NFS
showmount -e ip 查看共享资源
mount ip:/shared/dir /mnt/nfs 挂载
SMB
smbclient -L ip -N 查看
mount //ip/share_name /mnt/smb -o username=account%password 挂载
9. /etc/fstab
栏位说明
device mount_point FS_type options dump_freq fsck_order
-----------------------------------------------------------------------
LABEL=/ / 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
proc /proc proc defaults 0 0
LABEL=SWAP-hda9 swap swap defaults 0 0
-----------------------------------------------------------------------
dump_freq: 0=never , 1=每天 , 2=2天 ,
fsck_order:开机时检查文件系统的完整性 : 0=忽略不检查, 1=首个,2=第2....,9 如果检查顺序相同就按从上到下的顺序.
10.自动挂载 /etc/auto.master
automounter是一个系统进程,它能够自动挂载并监控目录. 默认自动挂载60秒后卸载,以便降低网络负荷.
举例:
1. 编辑/etc/auto.master ,加入下面一行:
/mnt/nfs /etc/auto.nfs --timeout=60
2. /etc/并无auto.nfs文件
cp /etc/auto.misc /etc/auto.nfs
vi /etc/auto.nfs
复制#linux -ro,soft,intr ftp.example.org:/pub/linux
粘贴后进行实际情况编辑
栏2的soft:指是指NFS服务器发生故障时会传回错误信息通知使用者
intr:指允许中断
保存退出
3. service autofs restart 重启automounter的服务
11. ext2和ext3文件系统中可以设定的属性 :它们都支持一些特殊的属性以便控制文件的特性
lsattr 显示文件属性
chattr 改变文件属性
chattr +|-|=attribute[attribute ...] file [file ...]
chattr = file [file ..] 拿掉文件设定的所有属性
ext2/ext3文件系统属性
- A 当文件被修改时,存取的时间记录不变
- a 使文件只允许做追加,不允许原来的内容被覆盖
- d 系统在使用dump时,不备份该文件
- i 使文件永远不变,不能删文件,也不能重命名
- j 让系统把文件信息记录在ext3的journel里,并忽略ext3挂载成ordered或writeback模式
- S 当文件被修改时立即做同步动作,写入硬盘.
12. 虚拟内存 :可以用一个分区或一个文件做虚拟内存
基本设定:
- 建立swap分区或文件,建swap分区时,分区ID设为 82
- 使用mkswap 命令对swap分区或文件写入特定的标识
- 在/etc/fstab里加入记录,以便系统挂载swap
- 如果是swap分区 ,使用命令swapon -a 激活swap分区
swapon -a命令会读取/etc/fstab,根据fstab文件记录启用所有swap patition
如果是swap文件 ,语法 swapon swapfile
swapon -s 检查swap当前使用情况
建立swap文件: # dd if=/dev/zero of=/swapfile bs=1M count=100
说明: dd 命令用来转换并复制文件, if是input file的缩写; of是output file的缩写;
bs是block size的缩写, count=100建立100个block.
13. 文件系统维护
- fsck 检查文件系统的完整性(检查前先做umount操作)
- 检查到有损坏的文件会放到 /lost+found 目录作备份
- 操作系统发生严重错误时,会以 sulogin 的方式启动
sulogin的模式下可以照常执行指令.所以在这种模式下还可以修改之前配置错误的文档
注意:这个模式下的根目录read-only方式挂载, 所以需要重新挂载:
mount -o remount,rw device - tune2fs -j 将ext2文件格式转为ext3
- dumpe2fs 查看文件系统目前状态
- sync 将Buffer中的资料写入硬盘,避免不正常关机资料遗失。
14.添加新硬盘
- 用fdisk分区
- 分区后用partprobe重载分区表
- 格式化
- 如果要用LABEL表示法,为硬盘添加卷标
- 建立挂载点,将硬盘挂载
- 写入/etc/fstab让开机自动mount
![](http://img.zemanta.com/pixy.gif?x-id=a7531ef3-84d2-8a5e-88ae-9fdebd7b4fec)