📄 conf-sanity.sh
字号:
facet="mds" rm -f ${facet}active add_facet $facet echo "the name for node and mds is the same" do_lmc --add mds --node ${facet}_facet --mds ${facet}_facet \ --dev $MDSDEV --size $MDSSIZE || return $? do_lmc --add lov --mds ${facet}_facet --lov lov1 --stripe_sz \ $STRIPE_BYTES --stripe_cnt $STRIPES_PER_OBJ \ --stripe_pattern 0 || return $? add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE facet="client" add_facet $facet --lustre_upcall $UPCALL do_lmc --add mtpt --node ${facet}_facet --mds mds_facet \ --lov lov1 --path $MOUNT echo "mount lustre" start_ost start_mds mount_client $MOUNT check_mount || return 41 cleanup || return $? echo "Success!" XMLCONFIG=$OLDXMLCONFIG}run_test 10 "mount lustre with the same name for node and mds"test_11() { OLDXMLCONFIG=$XMLCONFIG XMLCONFIG="conf11.xml" [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG add_mds mds --dev $MDSDEV --size $MDSSIZE add_ost ost --dev $OSTDEV --size $OSTSIZE add_client client mds --path $MOUNT --ost ost_svc || return $? echo "Default lov config success!" [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG add_mds mds --dev $MDSDEV --size $MDSSIZE add_ost ost --dev $OSTDEV --size $OSTSIZE add_client client mds --path $MOUNT && return $? echo "--add mtpt with neither --lov nor --ost will return error" echo "" echo "Success!" XMLCONFIG=$OLDXMLCONFIG}run_test 11 "use default lov configuration (should return error)"test_12() { OLDXMLCONFIG=$XMLCONFIG XMLCONFIG="batch.xml" BATCHFILE="batchfile" # test double quote [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG [ -f "$BATCHFILE" ] && rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions \"-I 128\"" >> $BATCHFILE # --mkfsoptions "-I 128" do_lmc -m $XMLCONFIG --batch $BATCHFILE || return $? if [ `sed -n '/>-I 128</p' $XMLCONFIG | wc -l` -eq 1 ]; then echo "matched double quote success" else echo "matched double quote fail" return 1 fi rm -f $XMLCONFIG rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions \"-I 128" >> $BATCHFILE # --mkfsoptions "-I 128 do_lmc -m $XMLCONFIG --batch $BATCHFILE && return $? echo "unmatched double quote should return error" # test single quote rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions '-I 128'" >> $BATCHFILE # --mkfsoptions '-I 128' do_lmc -m $XMLCONFIG --batch $BATCHFILE || return $? if [ `sed -n '/>-I 128</p' $XMLCONFIG | wc -l` -eq 1 ]; then echo "matched single quote success" else echo "matched single quote fail" return 1 fi rm -f $XMLCONFIG rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions '-I 128" >> $BATCHFILE # --mkfsoptions '-I 128 do_lmc -m $XMLCONFIG --batch $BATCHFILE && return $? echo "unmatched single quote should return error" # test backslash rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions \-\I\ \128" >> $BATCHFILE # --mkfsoptions \-\I\ \128 do_lmc -m $XMLCONFIG --batch $BATCHFILE || return $? if [ `sed -n '/>-I 128</p' $XMLCONFIG | wc -l` -eq 1 ]; then echo "backslash followed by a whitespace/letter success" else echo "backslash followed by a whitespace/letter fail" return 1 fi rm -f $XMLCONFIG rm -f $BATCHFILE echo "--add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp" > $BATCHFILE echo "--add mds --node $HOSTNAME --mds mds1 --mkfsoptions -I\ 128\\" >> $BATCHFILE # --mkfsoptions -I\ 128\ do_lmc -m $XMLCONFIG --batch $BATCHFILE && return $? echo "backslash followed by nothing should return error" rm -f $BATCHFILE XMLCONFIG=$OLDXMLCONFIG}run_test 12 "lmc --batch, with single/double quote, backslash in batchfile"test_13() { OLDXMLCONFIG=$XMLCONFIG XMLCONFIG="conf13-1.xml" # check long uuid will be truncated properly and uniquely echo "To generate XML configuration file(with long ost name): $XMLCONFIG" [ -f "$XMLCONFIG" ] && rm -f $XMLCONFIG do_lmc --add net --node $HOSTNAME --nid $HOSTNAME --nettype tcp do_lmc --add mds --node $HOSTNAME --mds mds1_name_longer_than_31characters do_lmc --add mds --node $HOSTNAME --mds mds2_name_longer_than_31characters if [ ! -f "$XMLCONFIG" ]; then echo "Error:no file $XMLCONFIG created!" return 1 fi EXPECTEDMDS1UUID="e_longer_than_31characters_UUID" EXPECTEDMDS2UUID="longer_than_31characters_UUID_2" FOUNDMDS1UUID=`awk -F"'" '/<mds .*uuid=/' $XMLCONFIG | sed -n '1p' \ | sed "s/ /\n\r/g" | awk -F"'" '/uuid=/{print $2}'` FOUNDMDS2UUID=`awk -F"'" '/<mds .*uuid=/' $XMLCONFIG | sed -n '2p' \ | sed "s/ /\n\r/g" | awk -F"'" '/uuid=/{print $2}'` [ -z "$FOUNDMDS1UUID" ] && echo "MDS1 UUID empty" && return 1 [ -z "$FOUNDMDS2UUID" ] && echo "MDS2 UUID empty" && return 1 if ([ $EXPECTEDMDS1UUID = $FOUNDMDS1UUID ] && [ $EXPECTEDMDS2UUID = $FOUNDMDS2UUID ]) || \ ([ $EXPECTEDMDS1UUID = $FOUNDMDS2UUID ] && [ $EXPECTEDMDS2UUID = $FOUNDMDS1UUID ]); then echo "Success:long uuid truncated successfully and being unique." else echo "Error:expected uuid for mds1 and mds2: $EXPECTEDMDS1UUID; $EXPECTEDMDS2UUID" echo "but: found uuid for mds1 and mds2: $FOUNDMDS1UUID; $FOUNDMDS2UUID" return 1 fi rm -f $XMLCONFIG XMLCONFIG=$OLDXMLCONFIG}run_test 13 "check new_uuid of lmc operating correctly"test_13b() { OLDXMLCONFIG=$XMLCONFIG XMLCONFIG="conf13-1.xml" SECONDXMLCONFIG="conf13-2.xml" # check multiple invocations for lmc generate same XML configuration file rm -f $XMLCONFIG echo "Generate the first XML configuration file" gen_config echo "mv $XMLCONFIG to $SECONDXMLCONFIG" sed -e "s/mtime[^ ]*//" $XMLCONFIG > $SECONDXMLCONFIG || return $? echo "Generate the second XML configuration file" gen_config # don't compare .xml mtime, it will always be different if [ `sed -e "s/mtime[^ ]*//" $XMLCONFIG | diff - $SECONDXMLCONFIG | wc -l` -eq 0 ]; then echo "Success:multiple invocations for lmc generate same XML file" else echo "Error: multiple invocations for lmc generate different XML file" return 1 fi rm -f $XMLCONFIG $SECONDXMLCONFIG XMLCONFIG=$OLDXMLCONFIG}run_test 13b "check lmc generates consistent .xml file"test_14() { rm -f $XMLCONFIG # create xml file with --mkfsoptions for ost echo "create xml file with --mkfsoptions for ost" add_mds mds --dev $MDSDEV --size $MDSSIZE add_lov lov1 mds --stripe_sz $STRIPE_BYTES\ --stripe_cnt $STRIPES_PER_OBJ --stripe_pattern 0 add_ost ost --lov lov1 --dev $OSTDEV --size $OSTSIZE \ --mkfsoptions "-Llabel_conf_14" add_client client mds --lov lov1 --path $MOUNT FOUNDSTRING=`awk -F"<" '/<mkfsoptions>/{print $2}' $XMLCONFIG` EXPECTEDSTRING="mkfsoptions>-Llabel_conf_14" if [ "$EXPECTEDSTRING" != "$FOUNDSTRING" ]; then echo "Error: expected: $EXPECTEDSTRING; found: $FOUNDSTRING" return 1 fi echo "Success:mkfsoptions for ost written to xml file correctly." # mount lustre to test lconf mkfsoptions-parsing echo "mount lustre" start_ost start_mds mount_client $MOUNT || return $? if [ -z "`do_facet ost1 dumpe2fs -h $OSTDEV | grep label_conf_14`" ]; then echo "Error: the mkoptions not applied to mke2fs of ost." return 1 fi cleanup echo "lconf mkfsoptions for ost success" gen_config}run_test 14 "test mkfsoptions of ost for lmc and lconf"cleanup_15() { trap 0 [ -f $MOUNTLUSTRE ] && echo "remove $MOUNTLUSTRE" && rm -f $MOUNTLUSTRE if [ -f $MOUNTLUSTRE.sav ]; then echo "return original $MOUNTLUSTRE.sav to $MOUNTLUSTRE" mv $MOUNTLUSTRE.sav $MOUNTLUSTRE fi}# this only tests the kernel mount command, not anything about lustre.test_15() { MOUNTLUSTRE=${MOUNTLUSTRE:-/sbin/mount.lustre} start_ost start_mds echo "mount lustre on ${MOUNT} without $MOUNTLUSTRE....." if [ -f "$MOUNTLUSTRE" ]; then echo "save $MOUNTLUSTRE to $MOUNTLUSTRE.sav" mv $MOUNTLUSTRE $MOUNTLUSTRE.sav && trap cleanup_15 EXIT INT if [ -f $MOUNTLUSTRE ]; then skip "$MOUNTLUSTRE cannot be moved, skipping test" return 0 fi fi mount_client $MOUNT && error "mount succeeded" && return 1 echo "mount lustre on $MOUNT without $MOUNTLUSTRE failed as expected" cleanup_15 cleanup || return $?}run_test 15 "zconf-mount without /sbin/mount.lustre (should return error)"test_16() { TMPMTPT="${TMP}/conf16" if [ ! -e "$MDSDEV" ]; then log "no $MDSDEV existing, so mount Lustre to create one" setup check_mount || return 41 cleanup || return $? fi [ -f "$MDSDEV" ] && LOOPOPT="-o loop" log "change the mode of $MDSDEV/OBJECTS,LOGS,PENDING to 555" do_facet mds "mkdir -p $TMPMTPT && mount $LOOPOPT -t $FSTYPE $MDSDEV $TMPMTPT && chmod 555 $TMPMTPT/{OBJECTS,LOGS,PENDING} && umount $TMPMTPT" || return $? log "mount Lustre to change the mode of OBJECTS/LOGS/PENDING, then umount Lustre" setup check_mount || return 41 cleanup || return $? log "read the mode of OBJECTS/LOGS/PENDING and check if they has been changed properly" EXPECTEDOBJECTSMODE=`do_facet mds "debugfs -R 'stat OBJECTS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` EXPECTEDLOGSMODE=`do_facet mds "debugfs -R 'stat LOGS' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` EXPECTEDPENDINGMODE=`do_facet mds "debugfs -R 'stat PENDING' $MDSDEV 2> /dev/null" | grep 'Mode: ' | sed -e "s/.*Mode: *//" -e "s/ *Flags:.*//"` if [ "$EXPECTEDOBJECTSMODE" = "0777" ]; then log "Success:Lustre change the mode of OBJECTS correctly" else error "Lustre does not change mode of OBJECTS properly" fi if [ "$EXPECTEDLOGSMODE" = "0777" ]; then log "Success:Lustre change the mode of LOGS correctly" else error "Lustre does not change mode of LOGS properly" fi if [ "$EXPECTEDPENDINGMODE" = "0777" ]; then log "Success:Lustre change the mode of PENDING correctly" else error "Lustre does not change mode of PENDING properly" fi}run_test 16 "verify that lustre will correct the mode of OBJECTS/LOGS/PENDING"test_17() { if [ ! -e "$MDSDEV" ]; then echo "no $MDSDEV existing, so mount Lustre to create one" setup check_mount || return 41 cleanup || return $? fi echo "Remove mds config log" do_facet mds "debugfs -w -R 'unlink CONFIGS/$FSNAME-MDT0000' $MDSDEV || return \$?" || return $? start_ost start_mds && return 42 gen_config}run_test 17 "Verify failed mds_postsetup won't fail assertion (2936) (should return errs)"test_18() { [ -f $MDSDEV ] && echo "remove $MDSDEV" && rm -f $MDSDEV echo "mount mds with large journal..." local myMDSSIZE=2000000 OLD_MDS_MKFS_OPTS=$MDS_MKFS_OPTS MDS_MKFS_OPTS="--mgs --mdt --fsname=$FSNAME --device-size=$myMDSSIZE --param sys.timeout=$TIMEOUT $MDSOPT" gen_config echo "mount lustre system..." setup check_mount || return 41 echo "check journal size..." FOUNDSIZE=`do_facet mds "debugfs -c -R 'stat <8>' $MDSDEV" | awk '/Size: / { print $NF; exit;}'` if [ $FOUNDSIZE -gt $((32 * 1024 * 1024)) ]; then log "Success: mkfs creates large journals. Size: $((FOUNDSIZE >> 20))M" else error "expected journal size > 32M, found $((FOUNDSIZE >> 20))M" fi cleanup || return $? MDS_MKFS_OPTS=$OLD_MDS_MKFS_OPTS gen_config}run_test 18 "check mkfs creates large journals"test_19a() { start_mds || return 1 stop_mds -f || return 2}run_test 19a "start/stop MDS without OSTs"test_19b() { start_ost || return 1 stop_ost -f || return 2}run_test 19b "start/stop OSTs without MDS"test_20() { # first format the ost/mdt start_ost start_mds mount_client $MOUNT check_mount || return 43 rm -f $DIR/$tfile remount_client ro $MOUNT || return 44 touch $DIR/$tfile && echo "$DIR/$tfile created incorrectly" && return 45 [ -e $DIR/$tfile ] && echo "$DIR/$tfile exists incorrectly" && return 46 remount_client rw $MOUNT || return 47 touch $DIR/$tfile [ ! -f $DIR/$tfile ] && echo "$DIR/$tfile missing" && return 48 MCNT=`grep -c $MOUNT /etc/mtab` [ "$MCNT" -ne 1 ] && echo "$MOUNT in /etc/mtab $MCNT times" && return 49 umount_client $MOUNT stop_mds stop_ost}run_test 20 "remount ro,rw mounts work and doesn't break /etc/mtab"test_21a() { start_mds start_ost stop_ost stop_mds}run_test 21a "start mds before ost, stop ost first"test_21b() { start_ost start_mds stop_mds stop_ost}run_test 21b "start ost before mds, stop mds first"test_21c() { start_ost start_mds start_ost2 stop_ost
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -