วันอาทิตย์ที่ 24 พฤศจิกายน พ.ศ. 2562

ภาพรวม

ภาพรวม


อ้างอิงจาก
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_72/rzaks/rzakspdf.pdf

iSeries : Work Management เป็น  "พื้นฐาน" อีกเรื่อง ที่ผมอ่านแล้ว
เห็นภาพ  "การทำงานของ OS"
ทำให้พอจะเข้าใจ  การทำงานของ OS อื่นๆ ได้ระดับหนึ่ง ด้วย เช่น Windows , iOS

ผมเคยอ่านของ Windows พบว่า  มีศัพท์และเนื้อหา "มากเกินไป"
จนไม่สามารถ ใช้เวลาเหมาะสมเพื่อ "เห็นภาพรวมได้"
(สงสัย RAM ส่วนตัว น้อยไป)

เอาล่ะ คิดว่า  คนอื่นๆ หลายคน คงมีปัญหาเดียวกับผมแล้วกัน

(ในมุมมองผม)  ผมมอง เนื้อหา แบ่งออกเป็น
1. ภาพรวม -> ศัพท์/นิยาม "หลัก" อะไรบ้าง  เกี่ยวข้องกันอย่างไร ?
      ต้องจำให้ได้  มันจะเกี่ยวโยงกัน หมด - ถ้ามีน้อย ก็ง่าย
2. แต่ละ  "ศัพท์" มีการ "จัดการ" (Management) อย่างไร ?
      จะเกิด ศัพท์เฉพาะ ในกลุ่ม "หลัก" เพิ่มขึ้นมา

หนังสือ จะมีเทคนิคนำเสนอ หลายแบบ
เช่น Step by Step, หลักการ -> บอกวิธี , ถาม-ตอบ, เล่าเป็นนิยาย
ชอบแบบไหน ก็เลือก ให้เหมาะกับตนเองครับ
บางเล่ม จะพบว่า  เหมือนอ่านซ้ำ  ก็ไม่ต้องบ่น ว่าเขาเขียนซ้ำ น๊ะครับ (จงใจเลยล่ะ)

Tip   ถ้า เนื้อหา "มาก" ถ้าจะจำได้ ต้องฟังหรืออ่านผ่านตา หลายรอบ
        ที่แผนกฯ จะได้ยินผม เล่าเรื่องนี้ ซ้ำๆ (หลายรอบ)
        คนฟัง เบื่อ(ฟังซ้ำ)  คนพูด ก็เบื่อเหมือนกัน (ทำไมต้องพูดซ้ำ) 555

สารบัญ จัดเรียงอย่างไร ?


  • การใช้งานใน iSeries   มีอะไรเกิดขึ้นบ้าง = "Job"
  • รู้ภาพรวมกัน = "Concept"
  • วิธีจัดการ แต่ละเรื่อง - Management 

การใช้งานใน iSeries   มีอะไรเกิดขึ้นบ้าง = "Job"

    Job 's Life
    Job ชนิด Batch (งานส่วนใหญ่ของ OS) จะเริ่มต้นจาก (ส่ง) Submit Job  ไปที่ Sub-System (ชื่อกลุ่ม)
            ผ่าน Job Queue
    รายงาน (Spool File) ที่เกิดจะถูกส่งไป Output Queue
    Sub-System ตามชื่อ = แบ่งย่อย System ออกเป็นกลุ่ม   มักใช้เพื่อแบ่ง Memory หรือวิธีทำงาน
    ก่อนงานจะเริ่มทำ  เราสามารถกำหนด "ขั้นตอน" ก่อนการเกิดได้ (prestart job)

รู้ภาพรวมกัน = "Concept"

    จากขั้นต้น พบว่า การใช้  ต้องตั้งค่าต่างๆมากมาย
    default = ค่าพื้นฐานที่กำหนดให้ 
    เช่น   ทุก job จะต้องระบุ
        Output Queue - ถ้าไม่ตั้งค่า  ให้ใช้ค่า Default = QPRINT
        Job Queue - ถ้าไม่ระบุค่า  ให้ใช้ค่า Default = QBATCH  เป็นต้น
    System Value = ค่า set up พืื้นฐาน
    เช่น    เริ่มต้นเปิด SubSystem ตัวควบคุม ชื่ออะไร (QCTLSBSD)
              (เริ่มต้น) โปรแกรมแรก ชื่ออะไร  (QSTRUPPGM)  ชุดคำสั่งจะเขียนเป็นโปรแกรม CL
                    IBM มีเขียนไว้ให้  สามารถปรับได้

วิธีจัดการ แต่ละเรื่อง - Management 

1.เปิดเครื่องคอมพ์  ให้ OS ทำงานนั่นแหละ  = "IPL"  Intial Program Load
        คำที่ใช้กันใน PC คือ Boot เครื่อง
        ตย. ขั้นตอนที่ทำในขั้นตอน IPL

  • Starts the QSPL subsystem for spooled work.
  • Releases the QS36MRT and QS36EVOKE job queues if they were held (these are used by the System/36 environment). 
  • Starts Operational Assistant cleanup, if allowed. 
  • Starts all print writers unless user specified not to on the IPL Options display. 
  • Starts the QSERVER and QUSRWRK subsystems. 
  • If the controlling subsystem is QCTL, it starts the QINTER, QBATCH, and QCMN subsystems.


2.สถานะเครื่อง  เปิดครบ, ทำงานปรกติ มั๊ย  (Monitor System Activity)
         ตรวจซะหน่อย 
         เช่น   เครื่องช้า เพราะ Disk เต็ม, กำลัง update OS ต้องรอให้เสร็จก่อน, ...

3.รู้จักแต่ละชื่อ + จัดการ ต่างๆ  (ใน OS)
   Job = หน่วยย่อยการของการจัดการ
      จัดการทั่วไป  สร้าง,ปิด Job
      Job  ต้องผ่าน Queue,  อยู่ใน Sub-System,  คุณสมบัติตาม Job-Description
      Job ชนิด Batch, Interactive
      ก่อน Job จะเริ่มงาน (มีให้ทำอะไรมั๊ย) = Prestart Job
      จัดกลุ่ม ... ด้วย Class
      จัดการ Thread (หน่วยย่อย ของงานในระดับ CPU) - ลึกไป
  Sub-System  แบ่งกลุ่มงาน  ใช้แบ่ง Memory
       แยกเป็น 2 กลุ่ม
       ง่าย (เครื่องขนาดเล็ก)    เริ่มต้นผ่าน sbssys = QBASE    แล้วจะเปิดใช้ Sub-System เท่าที่จำเป็น
       ปรกติ (เครื่องขนาดใหญ่)    เริ่มต้นผ่าน sbssys = QCTL     จะแยก Sub-System  (memory) ตามงาน เช่น  QINTER,QBATCH,QCMD,QSPL

  Job  Log = บันทึกประวัติ ใช้ดู  ย้อนหลัง
  Output Queue = รายงานทุกตัวจะเก็บในนี้ก่อน (คล้าย Folder)

  Schedule = จัดตารางเวลา  ... ใช้งานซับซ้อน ก็วุ่นเอาเรื่องอยู่
  Job Queue = การสั่งงาน จะมาเข้าคิว ที่นี่ก่อนเสมอ
  Memory Pool - จัดการ Memory
  Job  Accounting
  Workload Group


วันเสาร์ที่ 23 พฤศจิกายน พ.ศ. 2562

Backup and Recovery (Save/Restore)

Backup and Recovery (Save/Restore)

เรื่องพูดกันจริงๆ  จะยาวมาก (IBM แยกหนังสือมาหนึ่งเล่มเลย)
https://www.ibm.com/support/knowledgecenter/ssw_ibm_i_73/rzai8/sc415345.pdf
พูดย่อๆ  คงประมาณนี้
  • วางแผนการ Backup  - รองรับ(ฉุกเฉิน)ได้ระดับไหน
  • วิธีทำประจำวัน  กับ  วิธีทำเมื่อต้องการ Recovery

วางแผนการ Backup  - รองรับได้ระดับไหน

ให้นึกถึงการ save บน PC ของแต่ละคน
  1. ไม่เคยทำ! -> เริ่มทำซะ
  2. อืม ทำแล้ว  เมื่อ 3 เดือนที่แล้ว ... ถ้า Disk เสียวันนี้  ข้อมูลใหม่ใน 3 เดือนหายหมด!
          ไม่ทำบ่อย เพราะ file ใหญ่มาก ทำทีหนึ่ง ใช้เวลา 2-3 ชม เชียวน๊ะ
  3. ทำทุกวันเลย   copy D:\ ทั้ง Drive ไปที่  External Disk, Server
          ทำตอนเที่ยง (PC ต้องเปิดเครื่องทิ้งไว้)
          ใช้เทคนิค Save เฉพาะส่วนที่เปลี่ยนแปลง
  4. (ยุคสมัยนี้ 2019/11) เก็บ file บน Server เท่านั้น  ไม่เก็บที่ PC- Admin เป็นคนดูแลให้ 
  5.  เก็บบน Cloud  ที่การันตีว่า 99.999 ไม่เสีย (ผู้ให้บริการ หรือ Admin ดูแล
จะเห็นว่า  "แผนการ Backup" มีรายละเอียดพอสมควร
สำหรับคนทั่วไป  จะทำข้อ 3  สำหรับ PC ที่ต่อผ่านเครือข่าย (ในบ้าน,องค์กร,...) จะทำ 4 กับ 5

โดยหนังสือ IBM ที่อ่าน  การจัดการ "อย่างดี" ครับ
เอาไว้  มีเวลา จะมาคุยรายละเอียดกัน ภายหลัง

ยุคสมัยนี้ (2019/11)  ถ้าทำข้อ 4 หรือ 5

คำสั่งที่เกี่ยวข้อง

วันนี้(สำหรับ iSeries)  จะพูดถึง  พื้นฐาน + งานที่ต้องทำ Recovery ครับ

เกี่ยวกับ การ Save
ที่ใช้บ่อย  คือ SavXXX    เช่น    SavObj , SavLib
สำหรับบางหน่วยงาน  ใช้  CpyToTap

เกี่ยวกับ การ Recovery (Restore)
ที่ใช้บ่อย  คือ RstXXX    เช่น    RstObj , RstLib
สำหรับบางหน่วยงาน  ใช้  CpyFrmTap

สำหรับ History บางระบบ ใช้คำสั่งนี้ CpyFrmTap , CpyToTap    (ตั้งชื่อการ save ได้)
DSPTAP   *LABEL ต่างกับ DSPTAP   *SAVRST

เรียนรู้จาก งานปัจจุบัน

จำลองเหตุการณ์-1   ใช้ SavFile  ส่ง Pgm,File  ขนาดเล็กจาก A3xxx ไปที่ A3yyy

Src : CrtSavf   (savfile) -> SavObj to SavFile -> SndNetf  (savfile)
Target : CrtSavf  (savfile) ->  WrkNetF +  RcvNetf to (savfile)   *ADD, *REPLACE
-> RstObj from (savfile) New, Replace /  มี-ไม่มีสิทธิ์

จำลองเหตุการณ์-2   นำ Lib จาก A3yyy  ไปติดตั้งที่  Japan (จำลองใช้ A3xxx)
Src : Save obj  เข้า Tape/Cartridge จริง
Target : RstLib จาก Tape/Cartridge จริง to New, Replace /  มี-ไม่มีสิทธิ์

จำลองเหตุการณ์-3  User Req Data 3 ปีที่แล้ว (อยู่ใน History Tape/Cartridge) A3xxx  มาติดตั้ง
                                ที่ A3zzz
                (คล้าย -2) แต่ระบบ Hist  จะ save โดยใช้ cmd  CpyToTap   (ช่วยตั้งชื่อ)
Src : หา Tape/Cartridge ตำแหน่ง DSPTAP   *LABEL
Target : CpyFrmTap

จำลองเหตุการณ์-4   เผลอ "ลบ" Source Code โปรแกรม , ต้องการได้ Source Code ของ 3 วันที่แล้ว
     Save ประจำวันจะ save ด้วยคำสั่ง SavLib   โดยแผน Backup จะแยก Tape เป็น 7 ชุดๆละ 1 วัน
  - สอบถาม SysOpr เลือก Tape (/Cartridge/Virtual Tape) ที่ตรงกับวันที่ต้องการ
- RstObj จาก Tape

วันศุกร์ที่ 22 พฤศจิกายน พ.ศ. 2562

Printer , Spool

Printer & Spool

Concept

การพิมพ์  จะต้องมีองค์ประกอบขั้นต้นตามนี้
A. สร้าง Printer Device
     จับคู่ Printer เครื่องจริง กับ  ชื่อ Printer Device  (iSeries มองผ่าน ชื่อนี้)

B. สั่งให้ Printer Device ทำงาน
     จับคู่ Printer Device + Output Queue (OutQ) + Message Queue (MsgQ)
  • OutQ = ที่เก็บ Spool File  มักจะสร้างให้เรียกใช้/จำง่าย
    เช่น  ชื่อเหมือน Printer Device   เป็นต้น
  • MsgQ = ช่องทางที่ iSeries จะพูดผ่าน ("ให้ตั้งกระดาษ ก่อนแล้วกด I" เป็นต้น)
    เช่น  *Default = QSYSOPR , MsgQ ของ UserProfile , MsgQ ของ WorkStation
C. Spool ที่จะพิมพ์ อยู่ใน OutQ ข้อ B.
D. จัดการกับ "กระดาษ" (Form)

A. สร้าง Printer Device
    จับคู่ Printer เครื่องจริง กับ  ชื่อ Printer Device

     ปรกติ จะทำโดย SysOpr -   Dev ก็แค่รู้ไว้ครับ บางจุดถ้ารู้ก็จัดการได้
     ทำได้หลายวิธี
  1. (ใช้บ่อย) ต่อ Printer เครื่องจริง ผ่าน PC ที่ลง sw: CA/400
    sw จะทำหน้าที่ติดต่อกับ iSeries ให้   (ถ้าปิด PC ก็จะพิมพ์ไม่ได้)
  2. ผ่าน กล่องเล็กๆ (Network Emulator) ต่อหลัง Printer เครื่องจริง มีช่องใส่สาย Network 
    กล่องเล็กๆ ทำหน้าที่ "ตั้งชื่อ IP Address"  (แทนการใช้ sw:CA/400)
    - มักใช้กับ  Line Printer (เครื่องพิมพ์ ความเร็วสูง)  หรือ ไม่ต้องการต่อกับ PC
  3. (วิธีเก่า  น่าจะไม่มีให้เห็นแล้ว) การต่อสายโดยตรงจาก iSeries มาที่ Printer
    ตัวสายโดยตรงจาก iSeries จะมี  รหัสติดต่อ เช่น  ControllerID=?
    Printer จะต้องมีการ Set Address (ระหว่าง 0-7) ที่ตัว Printer (รุ่นเก่า ด้วย dip switch, รุ่นถัดมา Printer จะมีหน้าจอให้ Set, ถัดไป ทำผ่าน Telnet หรือ remote ไปที่ กล่อง/printer)
ในที่นี้จะอธิบายการสร้างข้อ 1 ครับ

          สร้างผ่าน sw: CA/400  ทำเหมือนกับ สร้าง WorkStation
          โดยเปลี่ยน จาก Display เป็น Printer


เมื่อกด [Setup]  จะปรากฏหน้าจอนี้
เมื่อสร้างเสร็จ 
CA/400  จะแสดงหน้าจอ Panel (Printer) และ หน้าจอ Config ของ Printer Device
(แทนหน้าจอ เข้าใช้งาน)
      *** จุดนี้ จะ auto ทำข้อ  B. ให้ด้วย โดยสร้าง OutQ ที่ชื่อเหมือน Printer ให้

  • Panel Printer - กด Start/Stop ได้


ด้าน iSeries จะสร้าง Printer Device โดยสามารถดูได้ผ่าน คำสั่งนี้ (cmd)

DSPDEVD  QBP034A


เนื่องจากตอนสร้าง ระบุ MsgQ = QSYSOPR  จะบันทึกตามนั้น


การสร้างแบบนี้  CA/400 จะ auto Start Printer Writer ให้ (ทำข้อ B. ให้ด้วย)

B. สั่งให้ Printer Device ทำงาน
    จับคู่ Printer Device + Output Queue (OutQ) + Message Queue (MsgQ)

    # จากข้างต้น  มันทำงานไปแล้ว ต้อง  หยุดการทำงานก่อน
       ด้วยคำสั่ง (cmd) EndWtr  QBP034A

สั่งผ่านคำสั่ง(cmd) StrPrtWtr  QBP034A



    OutQ = *DEV   หมายถึง  ชื่อใช้ตาม DEV (ด้านบน)
    MsgQ = *DEVD   หมายถึง   ไปดูที่ Device Description

การตรวจดูสถานะ  ด้วยคำสั่ง  WrkCfgSts  *Dev  QBP034A




D. จัดการกับ "กระดาษ" (Form ,MsgQ)

       iSeries จะไม่รู้ว่า   
  • "ใส่กระดาษ"  ถูกต้องหรือไม่ ? 
    Printer จำขนาดกระดาษถูกต้องหรือไม่ ?
    กระดาษ A4  ยาว 11.7 นิ้ว, B4 ยาว 13.9 นิ้ว, กระดาษ Inv-Tag ยาว ...
    Printer ต้อง Load (จำ)  ความยาว เมื่อ กดปุ่ม FormFeed จะ  เลื่อนกระดาษตามที่จำไว้
    Tip  รูปแบบกระดาษ ควรจะตั้งชื่อ  FormType
  • "(ตรวจ) บรรทัดแรก  "พิมพ์"   ถูกตำแหน่งหรือไม่ ?"
    ถ้าไม่ตรง ก็ปรับแล้ว  ทดสอบพิมพ์ซ้ำ  เมื่อตรงให้พิมพ์ปรกติ
       วิธีสื่อสารคือ  หยุดถาม  "คนสั่งพิมพ์"  ผ่าน MsgQ
  • "ใส่กระดาษ"  ถูกต้องหรือไม่ ?   Load from Type ...
    ตรวจจากชื่อ  FormType   ใน แต่ละ Spool File
    Spool ตัวใหม่ ถ้าพบว่า FormType ไม่เหมือนก่อนหน้า  จะถาม
  • "(ตรวจ) บรรทัดแรก  "พิมพ์"   ถูกตำแหน่งหรือไม่ ?"  Verify Alignment ... 
    เปลี่ยน FormType ต้อง  "ตรวจเสมอ"
สังเกต  สั่งพิมพ์ที่ Laser Printer  ซึ่งส่วนใหญ่  ใส่กระดาษ A4 - คำถามข้างต้น ดูไม่จำเป็นต้องถาม

FAQ

Q1: Printer เครื่องจริง นี้   Printer Device ชื่ออะไร ?
A1: Thai SysOpr มักจะเปลี่ยนชื่อ PC  เป็น นำหน้าด้วย "Q"

Q2: จะพิมพ์  ต้องส่ง/โอน Spool ไปที่ OutQ ชื่ออะไร (ที่ผูกกับ Printer Device นี้)
A2: ถ้า Printer Dev  Start แล้ว   ใช้คำสั่ง   WrkWtr  xxxx    ดูว่า  OutQ อะไร ผูกกับ Printer
       ถ้า Printer Dev  ยังไม่ Start  สั่ง Start ด้วย    StrPrtWtr   xxxx    เปลี่ยน OutQ ที่จุดนี้ได้

Q3: ทำอย่างไร ก็ไม่พิมพ์ (ทำข้างบนครบแล้ว)
A3: ตรวจเพิ่ม  รายละเอียด (ปรกติไม่ตรวจกัน)
       Printer Dev ถูกลบ หรือ Vary Off  ? ,มีใคร Hold  Writer ,Hold  OutQ หรือไม่ ?

Q4: ตั้งกระดาษ ยุ่งยากมาก มีวิธี "ลดเวลามั๊ย"
A4: ชนิดกระดาษ มีไม่กี่แบบ  และ  ตำแหน่งกระดาษเริ่มต้น มักจะตายตัว
       เมื่อตั้งถูกต้องแล้ว  ให้   "ขีดเส้น" จุดเริ่มต้นไว้