Sadık KILIÇ

Web Tabanlı Hafıza Yerleşimi

solaris11 zfs notları

ZFS’i temel anlamda kurcamak için solaris 11 t4 sparc bir sunucu üzerinde bazı denemeler/çalışmalar yaptım.

root@T4:~# uname -a
SunOS T4 5.11 11.0 sun4v sparc sun4v

Fiziksel Diskler:
format komutunun çıktısından mevcut fiziksel diskler ve boyutları öğrenilebilir. Test ettiğim sistemde format komutunun çıktısı aşağıdaki gibi.

root@T4:/# format
Searching for disks...done
 
AVAILABLE DISK SELECTIONS:
0. c0t5000CCA0253CB86Cd0 solaris
/scsi_vhci/disk@g5000cca0253cb86c
/dev/chassis//SYS/MB/HDD0/disk
1. c0t5000CCA0253C33D0d0
/scsi_vhci/disk@g5000cca0253c33d0
/dev/chassis//SYS/MB/HDD1/disk
2. c0t5000CCA02537F538d0
/scsi_vhci/disk@g5000cca02537f538
/dev/chassis//SYS/MB/HDD2/disk
3. c0t50015179596F4C9Dd0
/scsi_vhci/disk@g50015179596f4c9d
/dev/chassis//SYS/MB/HDD3/disk
4. c0t5000CCA025393F44d0
/scsi_vhci/disk@g5000cca025393f44
/dev/chassis//SYS/MB/HDD4/disk
5. c0t5000CCA02538FD50d0
/scsi_vhci/disk@g5000cca02538fd50
/dev/chassis//SYS/MB/HDD5/disk
6. c0t5000CCA02505249Cd0
/scsi_vhci/disk@g5000cca02505249c
/dev/chassis//SYS/MB/HDD6/disk
7. c0t50015179596F4D07d0
/scsi_vhci/disk@g50015179596f4d07
/dev/chassis//SYS/MB/HDD7/disk
Specify disk (enter its number):

Ctrl + C ‘ye basarak format komutundan çıkın.

Yukarda görüldüğü gibi toplam 8 Tane fiziksel disk mevcut. 5 adet 558g, 2 adet279g, sistemin kurulu olduğu bir tane 1x558g disk var.

Not: format komutuyla disklerinizi göremiyorsanız önce devfsadm komutunu çalıştırmayı deneyebilirsiniz.

root@T4:~# devfsadm
root@T4:~# format

zfs Temel komutlar:
Zfs pool(havuz) ları hakkında şu komutlar ile bilgi edinilebilir.

  • zpool list [pool adi]
  • zpool status [pool adi]
  • zfs list [pool adi]
  • zfs get all [filesystem adi]
  • zpool iostat -v

 

  • zpool list komutuyla mevcut pool lar listelenir.
root@T4:~# zpool list
NAME SIZE ALLOC FREE CAP DEDUP HEALTH ALTROOT
rpool 556G 69.6G 486G 12% 1.00x ONLINE -

Sistemde sadece solaris 11’in kurulu olduğu rpool isimli pool mevcut. Yukarda rpool isimli pool’un toplam kapasitesi, kullanılan ve boş alanlar görülebiliyor.

  • zpool status komutuyla pool’a dahil olan device ismi, raid bilgisi ve varsa hatalar görülebilir.
root@T4:~# zpool status data1
  pool: data1
 state: ONLINE
  scan: none requested
config:
 
        NAME                     STATE     READ WRITE CKSUM
        data1                    ONLINE       0     0     0
          c0t50015179596F4C9Dd0  ONLINE       0     0     0
 
errors: No known data errors

 

  • 279GB’lık disklerden birini kullanarak data1 isimli pool oluşturmak için.
root@T4:~# zpool create data1 c0t50015179596F4C9Dd0

data1 isimli bir pool oluşturduk. zpool list ve zpool status çıktıları şöyle olacaktır.

NAME   SIZE  ALLOC  FREE  CAP  DEDUP  HEALTH  ALTROOT
data1  278G    85K  278G   0%  1.00x  ONLINE  -
rpool  556G  69.6G  486G  12%  1.00x  ONLINE  -
root@T4:~# zpool status data1
  pool: data1
 state: ONLINE
  scan: none requested
config:
 
        NAME                     STATE     READ WRITE CKSUM
        data1                    ONLINE       0     0     0
          c0t50015179596F4C9Dd0  ONLINE       0     0     0
 
errors: No known data errors
  • data1 pool’una attach parametresiyle yeni bir disk eklersek sistem bu iki diski mirror olarak kullanır.
zpool attach data1 c0t50015179596F4C9Dd0 c0t50015179596F4D07d0
root@T4:~# zpool status data1
  pool: data1
 state: ONLINE
  scan: resilvered 86.5K in 0h0m with 0 errors on Mon Mar 25 19:15:42 2013
config:
 
        NAME                       STATE     READ WRITE CKSUM
        data1                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            c0t50015179596F4C9Dd0  ONLINE       0     0     0
            c0t50015179596F4D07d0  ONLINE       0     0     0
 
errors: No known data errors

Yukardaki mirror-0 yazısından bu iki diskin mirror çalıştığını anlıyoruz. data1 pool’una iki tane diskten daha mirror oluştursaydık onları da mirror-1 olarak görecektik.


 

  • Tanımlanmış bir pool’u kaldırmak

Mevcut bir pool’u kaldırmak için zpool destroy kullanılır. data1 isimli pool’u kaldıralım.

zpool destroy data1
  • Mirror

Yukarda 1 disk ile data1 isimli pool oluşturup, bu pool’a yeni bir disk attach ederek dolaylı yoldan mirror oluşturduk. Esasında iki (veya daha fazla) diskten zfs mirror oluşturmak için zpool create mirror kullanılır.

  • data1 isimli pool’u mirror olacak şekilde yeniden oluşturmak için;
zpool create data1 mirror c0t50015179596F4C9Dd0 c0t50015179596F4D07d0

zpool status data1 yazarak duruma tekrar bakalım.

root@T4:~# zpool status data1
  pool: data1
 state: ONLINE
  scan: none requested
config:
 
        NAME                       STATE     READ WRITE CKSUM
        data1                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            c0t50015179596F4C9Dd0  ONLINE       0     0     0
            c0t50015179596F4D07d0  ONLINE       0     0     0
 
errors: No known data errors

zfs list komutuyla pool’un kapasitesine bakarsak, diskleri mirror’ladığımız için kapasitenin tek bir diskin kapasitene eşit olduğunu görülebilir.

root@T4:~# zfs list data1
NAME   USED  AVAIL  REFER  MOUNTPOINT
data1   85K   274G    31K  /data1

 

  • concatenated/striped depolama

data1’i create ederken mirror kullanmasaydık, diskleri stripe edecekti. yani pool’un toplam kapasitesi disklerin toplam kapasitesi olacaktı.

root@T4:~# zpool create data2 c0t5000CCA0253C33D0d0 c0t5000CCA02537F538d0 c0t5000CCA025393F44d0
'data2' successfully created, but with no redundancy; failure of one
device will cause loss of the pool

Yukarda 3 tane 558GB’lık diskten toplam kapasitesi 1.60T olan data2 isimli pool oluştu. zfs bize olası bir disk arızasında veri kaybı olacağını hatırlattıyor.


 

  • raidZ
  • raidz, raid5 benzeri bir disk arrayidir. raidz1’de 1 tane parity diski bulunur. Yani disklerden birinde olabilecek veri kaybı tolere edilebilir. raidz2’de iki parity diski raidz3’de 3 parity diski bulunur.

3 tane 558GB kapasiteli disk ile data2 isimli raidz1 pool’u oluştururmak istiyorum ama öncesinde data2 isimli pool’u kaldıralım

root@T4:~# zpool destroy data2

aşağıdaki komut dizisiyle raidz pool oluşturalım;

root@T4:~# zpool create data2 raidz1 c0t5000CCA0253C33D0d0 c0t5000CCA02537F538d0 c0t5000CCA025393F44d0

zfs list ve zpool status komutları ile duruma bakacak olursak;

root@T4:~# zpool list
NAME    SIZE  ALLOC   FREE  CAP  DEDUP  HEALTH  ALTROOT
data1   278G    85K   278G   0%  1.00x  ONLINE  -
data2  1.62T   239K  1.62T   0%  1.00x  ONLINE  -
rpool   556G  70.1G   486G  12%  1.00x  ONLINE  -

Yukarda görüldüğü gibi data2 pool’unun kapasitesi 1.62T. data2 pool’u 3 tane 558GB kapasiteli diskten oluşuyor ve zpool list komutu toplam disk boyutunu gösteriyor. Ama disklerden birisi parity için kullanıldığından kullanılabilir alan 2 diskin toplam kapasitesine eşit olmalı. zfs list komutu bunu bize gösteriyor.

root@T4:~# zfs list data2
NAME   USED  AVAIL  REFER  MOUNTPOINT
data2  117K  1.07T  34.6K  /data2

Yukardaki çıktıya göre data2 isimli pool’da kullanılabilir alan 1.07T belirtilmiş.

zpool status komutuyla mevcut tüm pool’lara bakacak olursak;

root@T4:~# zpool status
  pool: data1
 state: ONLINE
  scan: none requested
config:
 
        NAME                       STATE     READ WRITE CKSUM
        data1                      ONLINE       0     0     0
          mirror-0                 ONLINE       0     0     0
            c0t50015179596F4C9Dd0  ONLINE       0     0     0
            c0t50015179596F4D07d0  ONLINE       0     0     0
 
errors: No known data errors
 
  pool: data2
 state: ONLINE
  scan: none requested
config:
 
        NAME                       STATE     READ WRITE CKSUM
        data2                      ONLINE       0     0     0
          raidz1-0                 ONLINE       0     0     0
            c0t5000CCA0253C33D0d0  ONLINE       0     0     0
            c0t5000CCA02537F538d0  ONLINE       0     0     0
            c0t5000CCA025393F44d0  ONLINE       0     0     0
 
errors: No known data errors
 
  pool: rpool
 state: ONLINE
  scan: none requested
config:
 
        NAME                       STATE     READ WRITE CKSUM
        rpool                      ONLINE       0     0     0
          c0t5000CCA0253CB86Cd0s0  ONLINE       0     0     0
 
errors: No known data errors

Görüldüğü gibi 3 tane pool var. Sistemin kurulu olduğu rpool, 2 tane diskten oluşturduğumuz ve mirror olan data1, 3 tane diskten oluşturduğumuz data2 isimli ve raidz1 olan pool’ları mevcut.


 

Not: zfs üzerinde df -k yeride daha doğru sonuç almak için zfs list kullanılması öneriliyor.


 

  • zfs parametreleri

zfs get all veya zfs get all [dataset ismi] ile zfs değişkenleri görülebilir ve zfs set ile değiştirilebilir.

root@T4:~# zfs get all data1 
NAME   PROPERTY              VALUE                  SOURCE
data1  type                  filesystem             -
data1  creation              Mon Mar 25 23:45 2013  -
data1  used                  85K                    -
data1  available             274G                   -
data1  referenced            31K                    -
data1  compressratio         1.00x                  -
data1  mounted               yes                    -
data1  quota                 none                   default
data1  reservation           none                   default
data1  recordsize            128K                   default
data1  mountpoint            /data1                 default
data1  sharenfs              off                    default
data1  checksum              on                     default
data1  compression           off                    default
data1  atime                 on                     default
data1  devices               on                     default
data1  exec                  on                     default
data1  setuid                on                     default
data1  readonly              off                    default
data1  zoned                 off                    default
data1  snapdir               hidden                 default
data1  aclmode               discard                default
data1  aclinherit            restricted             default
data1  canmount              on                     default
data1  xattr                 on                     default
data1  copies                1                      default
data1  version               5                      -
data1  utf8only              off                    -
data1  normalization         none                   -
data1  casesensitivity       mixed                  -
data1  vscan                 off                    default
data1  nbmand                off                    default
data1  sharesmb              off                    default
data1  refquota              none                   default
data1  refreservation        none                   default
data1  primarycache          all                    default
data1  secondarycache        all                    default
data1  usedbysnapshots       0                      -
data1  usedbydataset         31K                    -
data1  usedbychildren        54K                    -
data1  usedbyrefreservation  0                      -
data1  logbias               latency                default
data1  dedup                 off                    default
data1  mlslabel              none                   -
data1  sync                  standard               default
data1  encryption            off                    -
data1  keysource             none                   default
data1  keystatus             none                   -
data1  rekeydate             -                      default
data1  rstchown              on                     default
data1  shadow                none                   -

mesela mountpint değerini değiştirmek için;

zfs set mountpoint="/yeni_mount_noktasi" data1

 

  • disk i/o istatistiklerini görmek

istatikler için zpool iostat kullanılabilir.

root@T4:~# zpool iostat -v
                              capacity     operations    bandwidth
pool                       alloc   free   read  write   read  write
-------------------------  -----  -----  -----  -----  -----  -----
data1                        94K   278G      0      0      0      5
  mirror                     94K   278G      0      0      0      5
    c0t50015179596F4C9Dd0      -      -      0      0      2     27
    c0t50015179596F4D07d0      -      -      0      0      2     27
-------------------------  -----  -----  -----  -----  -----  -----
data2                       176K  1.62T      0      0      5     26
  raidz1                    176K  1.62T      0      0      5     26
    c0t5000CCA0253C33D0d0      -      -      0      0     35    399
    c0t5000CCA02537F538d0      -      -      0      0     35    399
    c0t5000CCA025393F44d0      -      -      0      0     37    400
-------------------------  -----  -----  -----  -----  -----  -----
rpool                      70.1G   486G      0      0  1.76K  1.40K
  c0t5000CCA0253CB86Cd0s0  70.1G   486G      0      0  1.76K  1.40K
-------------------------  -----  -----  -----  -----  -----  -----

, ,

Leave a Reply

Your email address will not be published. Required fields are marked *