Linux系统管理技术手册第七章习题实践
很抱歉,前段时间一直出差,书太重,不可能带着跑,所以习题实践中断了一段时间,不过我不会放弃这个计划的。
好了,废话少说。第七章习题较多,最后一个题目难度很大,按照书的前言描述,这应该可以当作一个学期的课程设计,所以暂时不实现(其实是我不善于编程,所以完成需要一个程序需要很长的时间)
E7.1 列出SCSI的所有种类。每种SCSI该用什么样的连接器?不考虑连接器的差异,不同SCSI版本之间有哪些兼容性问题?
A:如果这个题目回退到10年前,也许他的确需要引起重视,我记得01年我刚接触到一台带有SCSI磁盘的低端存储用来做实验时,就需要自己设置ID号,自己跳线,自己连接终结端子。而现在,这一切都对我们透明了,我们只需要简单的把SCSI/SATA/SAS硬盘插入到对应的插槽就好了,不用考虑不同SCSI版本的兼容性,不用考虑SCSI种类的兼容性。一切看上去都是那么完美。
最开始的时候,窄的SCSI线(8位)和宽SCSI(16位)有混用的情况,SCSI-1和ultra-SCSI也有混用的情况,这些当时都需要考虑兼容性问题。现在恐怕没有谁这么去用了吧?比如,我们还能找到8位的SCSI线吗?
So,这个问题现在不重要了。
E7.2 硬盘格式化和硬盘分区之间有什么区别?分区和创建文件系统之间有什么区别?
A:如果这样定义也许会比较好点:硬盘格式化就是硬盘初始化,比如设定磁盘的磁盘标签格式(GPT,MSDOS,Sundisk,etc)。分区说的是将硬盘分成特定大小的逻辑空间,而创建文件系统就是在逻辑空间里写满特定文件系统的元数据信息。
E7.3 列出以下环境下,在一个硬盘上创建一个文件系统所要用到的命令和参数
- 硬盘用户保存home目录;
- 硬盘用于交换区;
- 硬盘用在一个很大的垃圾邮件站点存储邮件队列;
- 硬盘装有一个MySQL InnoDB数据库。
A:假定这个分区是/dev/sda3
home目录保存的是用户的数据,文件大小也不会趋向某一个区段,那就采取最基本的创建文件系统方式好了,不过这里可以把默认的5%保留空间拿走,以腾出更多的空间来保存数据。那么命令就是mkfs.ext3 -m 0 /dev/sda3
交换分区,采取创建交换分区的特有指令,首先把分区的ID设置为82,然后执行mkswap /dev/sda3,最后激活它.swapon /dev/sda3
邮件队列的特点是,文件多,文件体积小,因此我们尽可能的增加inode数量,减小block size的大小。推荐指令如下:
mkfs.ext3 -b 1024 -m 0 /dev/sda3
MySQL InnoDB 已经支持裸设备,当然直接使用裸设备效率会更高。具体可以移步到官方说明。
E7.4 LVM工具软件功能强大,但是如果没有搞得清楚就可能发生混淆。联系实际,说明如何成功地从一个卷组删除一个设备,并加入到另外一个卷组。
A:说说话,实际工作中,LVM的活干得很多,设置包括了LVM的紧急救援,恢复工作。但是对于迁移,还真没有实实在在的在生产环境中做过。所以,这里只能是理论上了。
首先得要查看当前要删除的设备(当然是一个PV了)是否已经在使用了,这个可以通过pvscan和pvdisplay指令可以获得。如果没有在使用,那就比较容易了,直接用vgreduce vgname pvname(path)的方式先从该卷组中,删除掉。
然后通过vgextend vgname pvname(path)的方式加入就可以了。
如果在使用,则需要通过查看LV的信息,看看是哪几个LV在使用,则需要迁移数据。删除对应的LV,接下来的指令同上。
♥ E7.5 使用书面印刷的或者Internet上的资源。确定性能最好的SCSI硬盘和IDE硬盘,评测这些硬盘所采取的评测指标能反映出一台繁忙的Linux服务器把它用作引导盘的情况吗?您会为SCSI花多少钱?您从多花的钱上得到了多高的性能提升(如果有的话)?
A:呃,这个题目,我似乎只能自行飘过。也许CIO们会感兴趣吧。
♥ E7.6 在给您的系统增加一块硬盘。让新硬盘的一个分区备份根分区,安装一个内核,并从该分区引导。记录下完成此项任务所有的步骤。
A:
- 对硬盘进行分区,创建文件系统,然后挂载,比如挂载在/newroot目录下。
- 把当前系统的根分区拷贝过来,拷贝需要技巧,仅仅只要拷贝根分区下的目录,对于独立出来的分区,比如/usr,/var等就不要拷贝了。
- 修改/newroot/etc/fstab把根分区的挂载设定为当前新硬盘的分区。
- 拷贝需要安装的内核包到/newroot目录。
- chroot /newroot
- 安装内核
- 修改/boot/grub/menu.lst文件,增加当前新系统的引导入口。
- 调试。
♥ E7.7 什么是超级块?它有什么用?在内核的头文件中查出ext2fs超级块的结构定义,并讨论结构中每一个域所代表的含义。
A:超级块结构表示一个文件系统。它包含管理文件系统所需的信息,包括文件系统名称(比如 ext2)、文件系统的大小和状态、块设备的引用和元数据信息(比如空闲列表等等)。
在/usr/include/linux/ext2_fs.h里有super_block的定义,如下:
struct ext2_super_block {
__le32 s_inodes_count; /* Inodes count */
__le32 s_blocks_count; /* Blocks count */
__le32 s_r_blocks_count; /* Reserved blocks count */
__le32 s_free_blocks_count; /* Free blocks count */
__le32 s_free_inodes_count; /* Free inodes count */
__le32 s_first_data_block; /* First Data Block */
__le32 s_log_block_size; /* Block size */
__le32 s_log_frag_size; /* Fragment size */
__le32 s_blocks_per_group; /* # Blocks per group */
__le32 s_frags_per_group; /* # Fragments per group */
__le32 s_inodes_per_group; /* # Inodes per group */
__le32 s_mtime; /* Mount time */
__le32 s_wtime; /* Write time */
__le16 s_mnt_count; /* Mount count */
__le16 s_max_mnt_count; /* Maximal mount count */
__le16 s_magic; /* Magic signature */
__le16 s_state; /* File system state */
__le16 s_errors; /* Behaviour when detecting errors */
__le16 s_minor_rev_level; /* minor revision level */
__le32 s_lastcheck; /* time of last check */
__le32 s_checkinterval; /* max. time between checks */
__le32 s_creator_os; /* OS */
__le32 s_rev_level; /* Revision level */
__le16 s_def_resuid; /* Default uid for reserved blocks */
__le16 s_def_resgid; /* Default gid for reserved blocks */
/*
* These fields are for EXT2_DYNAMIC_REV superblocks only.
*
* Note: the difference between the compatible feature set and
* the incompatible feature set is that if there is a bit set
* in the incompatible feature set that the kernel doesn't
* know about, it should refuse to mount the filesystem.
*
* e2fsck's requirements are more strict; if it doesn't know
* about a feature in either the compatible or incompatible
* feature set, it must abort and not try to meddle with
* things it doesn't understand...
*/
__le32 s_first_ino; /* First non-reserved inode */
__le16 s_inode_size; /* size of inode structure */
__le16 s_block_group_nr; /* block group # of this superblock */
__le32 s_feature_compat; /* compatible feature set */
__le32 s_feature_incompat; /* incompatible feature set */
__le32 s_feature_ro_compat; /* readonly-compatible feature set */
__u8 s_uuid[16]; /* 128-bit uuid for volume */
char s_volume_name[16]; /* volume name */
char s_last_mounted[64]; /* directory where last mounted */
__le32 s_algorithm_usage_bitmap; /* For compression */
/*
* Performance hints. Directory preallocation should only
* happen if the EXT2_COMPAT_PREALLOC flag is on.
*/
__u8 s_prealloc_blocks; /* Nr of blocks to try to preallocate*/
__u8 s_prealloc_dir_blocks; /* Nr to preallocate for dirs */
__u16 s_padding1;
/*
* Journaling support valid if EXT3_FEATURE_COMPAT_HAS_JOURNAL set.
*/
__u8 s_journal_uuid[16]; /* uuid of journal superblock */
__u32 s_journal_inum; /* inode number of journal file */
__u32 s_journal_inum; /* inode number of journal file */
__u32 s_journal_dev; /* device number of journal file */
__u32 s_journal_dev; /* device number of journal file */
__u32 s_last_orphan; /* start of list of inodes to delete */
__u32 s_last_orphan; /* start of list of inodes to delete */
__u32 s_hash_seed[4]; /* HTREE hash seed */
__u32 s_hash_seed[4]; /* HTREE hash seed */
__u8 s_def_hash_version; /* Default hash version to use */
__u8 s_def_hash_version; /* Default hash version to use */
__u8 s_reserved_char_pad;
__u8 s_reserved_char_pad;
__u16 s_reserved_word_pad;
__u16 s_reserved_word_pad;
__le32 s_default_mount_opts;
__le32 s_default_mount_opts;
__le32 s_first_meta_bg; /* First metablock block group */
__le32 s_first_meta_bg; /* First metablock block group */
__u32 s_reserved[190]; /* Padding to the end of the block */
__u32 s_reserved[190]; /* Padding to the end of the block */
};
后面的注释已经写得比较清楚了,就不用再解释了。
网络上详细剖析ext2文件系统的文档也不少。
♥ E7.8 使用mdadm及其-f选项模拟RAID盘阵中一块硬盘发生故障。从这个盘阵删除该硬盘,然后添加回去。每一步/proc/mdstat显示怎么样的信息?
A:
root@wgzhao-nb:~# mdadm --detail /dev/md0 /dev/md0: Version : 00.90 Creation Time : Thu Dec 24 16:11:11 2009 Raid Level : raid1 Array Size : 2097088 (2048.28 MiB 2147.42 MB) Used Dev Size : 2097088 (2048.28 MiB 2147.42 MB) Raid Devices : 2 Total Devices : 2 Preferred Minor : 0 Persistence : Superblock is persistent Update Time : Thu Dec 24 16:11:55 2009 State : clean Active Devices : 2 Working Devices : 2 Failed Devices : 0 Spare Devices : 0 UUID : 32c53f31:ddeb40ff:06694991:8b2cae0c (local to host wgzhao-nb) Events : 0.18 Number Major Minor RaidDevice State 0 8 32 0 active sync /dev/sdc 1 8 16 1 active sync /dev/sdb root@wgzhao-nb:~# mdadm -f /dev/md0 /dev/sdb mdadm: set /dev/sdb faulty in /dev/md0 root@wgzhao-nb:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[2](F) sdc[0] 2097088 blocks [2/1] [U_] unused devices: <none> root@wgzhao-nb:~# mdadm --remove /dev/md0 /dev/sdb mdadm: hot removed /dev/sdb root@wgzhao-nb:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdc[0] 2097088 blocks [2/1] [U_] unused devices: </none><none> root@wgzhao-nb:~# mdadm -a /dev/md0 /dev/sdb mdadm: added /dev/sdb root@wgzhao-nb:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[2] sdc[0] 2097088 blocks [2/1] [U_] [====>................] recovery = 21.4% (451008/2097088) finish=0.2min speed=112752K/sec unused devices: </none><none> root@wgzhao-nb:~# cat /proc/mdstat Personalities : [linear] [multipath] [raid0] [raid1] [raid6] [raid5] [raid4] [raid10] md0 : active raid1 sdb[1] sdc[0] 2097088 blocks [2/2] [UU] unused devices: </none><none> </none>
E7.9 ext3fs文件系统上的inode保存哪些信息?列出代表文件/etc/motd的inode的内容。这个文件的文件名保存在什么地方(诸如hexdump和ls -i这样的名录可能会有帮助)
A:inode包含以下几个域:
- 文件属主。分成单个属主和组属主。
- 文件类型:普通文件、目录、设备文件、FIFO等
- 访问权限
- 文件访问时间:上次的文件修改/访问/inode修改时间
- 链接数:至少是1
- 文件数据块的地址表
- 文件大小

原创文章,转载请注明: 转载自Linux|系统管理|WEB开发
本文链接地址: Linux系统管理技术手册第七章习题实践




近期评论