- 论坛徽章:
- 1
|
F50:[/]#lsvg -l vg00
vg00:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
ibmdata jfs2 300 300 1 open/syncd /data
loglv00 jfs2log 1 1 1 open/syncd N/A
raw raw 2 2 1 closed/syncd N/A
raw1 raw 3 3 1 closed/syncd N/A
loglv处于open状态时,是不能rm的·
F50:[/]#umount /data
F50:[/]#lsvg -l vg00
vg00:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
ibmdata jfs2 300 300 1 closed/syncd /data
loglv00 jfs2log 1 1 1 closed/syncd N/A
raw raw 2 2 1 closed/syncd N/A
raw1 raw 3 3 1 closed/syncd N/A
F50:[/]#rmlv loglv00
Warning, all data contained on logical volume loglv00 will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)? y
rmlv: Logical volume loglv00 is removed.
此时mount /data是不能成功的,所以必须重建一个loglv,除此之外,也可以通过修改/etc/filesystems 文件将指定的loglv指向另一个完好的loglv设备,以下是重建loglv的过程:
F50:[/]#mklv -y loglv00 -t jfslog datavg vg00 1
loglv00
F50:[/]#lspv -l hdisk1
hdisk1:
LV NAME LPs PPs DISTRIBUTION MOUNT POINT
loglv00 1 1 00..01..00..00..00 N/A
F50:[/]#logform /dev/loglv00
logform: destroy /dev/loglv00 (y)?
F50:[/]#mount /data
Replaying log for /dev/ibmdata.
mount: 0506-324 Cannot mount /dev/ibmdata on /data: The media is not formatted or the format is not correct.
F50:[/]#lsvg -l vg00
vg00:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
ibmdata jfs2 300 300 1 closed/syncd /data
loglv00 jfslog 1 1 1 closed/syncd N/A
raw raw 2 2 1 closed/syncd N/A
raw1 raw 3 3 1 closed/syncd N/A
F50:[/]#rmlv loglv00
Warning, all data contained on logical volume loglv00 will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)? y
rmlv: Logical volume loglv00 is removed.
F50:[/]#mklv -y loglv00 -t jfslog2 vg00 1
loglv00
F50:[/]#logform /dev/loglv00
logform: destroy /dev/loglv00 (y)?
F50:[/]#mount /data
Replaying log for /dev/ibmdata.
mount: 0506-324 Cannot mount /dev/ibmdata on /data: The media is not formatted or the format is not correct.
F50:[/]#lsvg -l vg00
vg00:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
ibmdata jfs2 300 300 1 closed/syncd /data
loglv00 jfslog2 1 1 1 closed/syncd N/A
raw raw 2 2 1 closed/syncd N/A
raw1 raw 3 3 1 closed/syncd N/A
F50:[/]#mount /data
Replaying log for /dev/ibmdata.
mount: 0506-324 Cannot mount /dev/ibmdata on /data: The media is not formatted or the format is not correct.
F50:[/]#fsck /dev/ibmdata
The current volume is: /dev/ibmdata
Primary superblock is valid.
J2_LOGREDO:log redo processing for /dev/ibmdata
J2_LOGREDO:logredo: /dev/loglv00 is not a log file
j2_logredo.cpp: ERROR in openFilesystems line 1747, openLog
j2_logredo.cpp: ERROR in j2_logredo line 665, openFilesystems
Failure replaying log: -8
exec module "/sbin/helpers/jfs2/logredo" failed.
logredo failed (rc=248). fsck continuing.
Primary superblock is valid.
*** Phase 1 - Initial inode scan
*** Phase 2 - Process remaining directories
*** Phase 3 - Process remaining files
*** Phase 4 - Check and repair inode allocation map
*** Phase 5 - Check and repair block allocation map
File system is clean.
F50:[/]#mount /data
Replaying log for /dev/ibmdata.
mount: 0506-324 Cannot mount /dev/ibmdata on /data: The media is not formatted or the format is not correct.
F50:[/]#rmlv loglv00
Warning, all data contained on logical volume loglv00 will be destroyed.
rmlv: Do you wish to continue? y(es) n(o)? y
rmlv: Logical volume loglv00 is removed.
F50:[/]#lspv
hdisk0 000af70dca7ae679 vg00 active
hdisk1 000af70dca7aea4d vg00 active
hdisk2 000af70d4d50358c rootvg active
F50:[/]#reducevg vg00 hdisk1
F50:[/]#mklv -y loglv00 -t jfs2log vg00 1
loglv00
F50:[/]#logform /dev/loglv00
logform: destroy /dev/rloglv00 (y)?
F50:[/]#mount /data
F50:[/]#lsvg -l vg00
vg00:
LV NAME TYPE LPs PPs PVs LV STATE MOUNT POINT
ibmdata jfs2 300 300 1 open/syncd /data
loglv00 jfs2log 1 1 1 open/syncd N/A
raw raw 2 2 1 closed/syncd N/A
raw1 raw 3 3 1 closed/syncd N/A
F50:[/]#cd /data
F50:[/data]#ls
ML gcc lost+found lsof snap.pax.Z
在以上过程中,发生了几个错误:
1,把jfs2log类型配成了jfslog,因为文件系统为jfs2,所以必须使用jfs2log
2,按照ibm建议,loglv最好不要和文件系统建在同一个pv上,但是以上把loglv建立在hdisk1上时,却始终不能mount文件系统,不知道是什么原因?
AIX file systems by default are journaled, so every time a write operation is carried out, the system will first log all the changes that it is going to make in the log file,then it will carry out the update, and then it will compare the actual change to the logged
changes. If the two are consistent the operation is considered successful and the log entry can then be discarded. Note: ONLY inode changes are logged and not the changes for the data blocks. This is because it is far more important to be able to recover the structure of the file system, which is what the inodes will allow, rather than the individual data blocks.
AIX memory maps files in current use. Any writes to files are done first in memory and at a later stage are written out to disk when the sync system call runs - every minute.
由以上可知,当文件系统需要修改数据时,先将inode的变化记录在loglv中,待到内存中修改完数据 需要写回硬盘的时候,需要与loglv中inode变化 进行比较(同步),如果一致,即写回硬盘保存,如果不同,则不能写回。写回硬盘后,loglv中的该记录就可以丢弃。loglv可重用,即是循环使用。有点类似于非归档模式下oracle数据库redolog。
loglv只记录inode的变化,而不记录数据变化。
fsck的时候是否需要读取jfslog的内容呢?
需要··
fsck 命令检查下列的不连贯性:
- 分配给多个文件的块或者段。
- 包含交叠块或者段数目的索引节点。
- 包含超出范围的块或者段数目的索引节点。
- 在对文件的目录引用数量和文件链接计数之间的差异。
- 非法分配的块或者段。
- 包含在磁盘映射中标记为空闲的块或者段数量的索引节点。
- 包含被破坏的块或者段数目的索引节点。
- 在索引节点中不是最后磁盘地址的段。检查不会被用于压缩文件系统。
- 包含一个段的超过 32KB 段的文件。检查不会被用于压缩文件系统。
- 尺寸检查:
- 块的不正确数量。
- 目录的大小不是 512 字节的整数倍。
这些检查不被用于压缩的文件系统。
- 目录检查:
- 目录条目包含一个在索引节点映射中被标记为空闲的索引节点号。
- 超出范围的索引节点号。
- 点(.)链接丢失或未指向其本身。
- 点点(..)链接丢失或未指向父目录。
- 没有引用的文件或者不可到达的目录。
- 不连贯的磁盘映射。
- 不连贯的索引节点映射。
如果您允许,那些孤立的文件和目录(那些无法到达的)可以通过将它们加到在文件系统根目录下的 lost+found 子目录下面使它们重新连接起来。指定的名称是索引节点号。如果您不允许 fsck 命令重新配属一个孤立的文件,它会请求破坏这个文件的许可。
除了它的消息之外,fsck 命令会通过它的出口值来记录检查和修复的结果
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/16252/showart_104376.html |
|